diff --git a/.gitignore b/.gitignore index d42aee61f4caf9d716977a21353bf598c3092220..32f43c2430e66a26c0100ade3e1685f1836d458a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store /nbproject/private/ .phplint-cache +*.swp diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 9ffc7d0ef4fea39a70ff8fde2a893f070c23044a..2d31b89bbd63bd459b1721e911e979820bcb0e60 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'); @@ -121,12 +124,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"); @@ -156,9 +153,16 @@ class installer_dist extends installer_base { } $reject_sender_login_mismatch = ''; + $reject_authenticated_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'; + $reject_sender_login_mismatch = ', reject_sender_login_mismatch'; + $reject_authenticated_sender_login_mismatch = 'reject_authenticated_sender_login_mismatch, '; } + + # placeholder includes comment char + $stress_adaptive_placeholder = '#{stress_adaptive} '; + $stress_adaptive = (isset($server_ini_array['mail']['stress_adaptive']) && ($server_ini_array['mail']['stress_adaptive'] == 'y')) ? '' : $stress_adaptive_placeholder; + unset($server_ini_array); $postconf_placeholders = array('{config_dir}' => $config_dir, @@ -168,6 +172,8 @@ class installer_dist extends installer_base { '{rbl_list}' => $rbl_list, '{greylisting}' => $greylisting, '{reject_slm}' => $reject_sender_login_mismatch, + '{reject_aslm}' => $reject_authenticated_sender_login_mismatch, + $stress_adaptive_placeholder => $stress_adaptive, ); $postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/fedora_postfix.conf.master', 'tpl/fedora_postfix.conf.master'); diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 324fe06e9adb2183cc7621216f6fe1ddfa93dd7a..342a583facb64e433a8410abf136c570f7e34df2 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -102,9 +102,16 @@ class installer extends installer_base } $reject_sender_login_mismatch = ''; + $reject_authenticated_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'; + $reject_sender_login_mismatch = ', reject_sender_login_mismatch'; + $reject_authenticated_sender_login_mismatch = 'reject_authenticated_sender_login_mismatch, '; } + + # placeholder includes comment char + $stress_adaptive_placeholder = '#{stress_adaptive} '; + $stress_adaptive = (isset($server_ini_array['mail']['stress_adaptive']) && ($server_ini_array['mail']['stress_adaptive'] == 'y')) ? '' : $stress_adaptive_placeholder; + unset($server_ini_array); $postconf_placeholders = array('{config_dir}' => $config_dir, @@ -114,6 +121,8 @@ class installer extends installer_base '{rbl_list}' => $rbl_list, '{greylisting}' => $greylisting, '{reject_slm}' => $reject_sender_login_mismatch, + '{reject_aslm}' => $reject_authenticated_sender_login_mismatch, + $stress_adaptive_placeholder => $stress_adaptive, ); $postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/gentoo_postfix.conf.master', 'tpl/gentoo_postfix.conf.master'); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 15ab5b6e91c7dded34c8a5285d5a87424a4b474e..07dd5cc690f36cb46d6556e1a67cd9dae38c416e 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'); @@ -118,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'); - if(!is_dir($cf['vmail_mailbox_base'])) mkdir($cf['vmail_mailbox_base']); //* Creating virtual mail user and group @@ -167,9 +164,16 @@ class installer_dist extends installer_base { } $reject_sender_login_mismatch = ''; + $reject_authenticated_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'; + $reject_sender_login_mismatch = ', reject_sender_login_mismatch'; + $reject_authenticated_sender_login_mismatch = 'reject_authenticated_sender_login_mismatch, '; } + + # placeholder includes comment char + $stress_adaptive_placeholder = '#{stress_adaptive} '; + $stress_adaptive = (isset($server_ini_array['mail']['stress_adaptive']) && ($server_ini_array['mail']['stress_adaptive'] == 'y')) ? '' : $stress_adaptive_placeholder; + unset($server_ini_array); $postconf_placeholders = array('{config_dir}' => $config_dir, @@ -179,6 +183,8 @@ class installer_dist extends installer_base { '{rbl_list}' => $rbl_list, '{greylisting}' => $greylisting, '{reject_slm}' => $reject_sender_login_mismatch, + '{reject_aslm}' => $reject_authenticated_sender_login_mismatch, + $stress_adaptive_placeholder => $stress_adaptive, ); $postconf_tpl = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/opensuse_postfix.conf.master', 'tpl/opensuse_postfix.conf.master'); diff --git a/install/install.php b/install/install.php index 9dff3facf2e71a085e1cbc0994eb7cc8e967957b..fc6f9e10c0766c8ac049050c9fbea6ef4b7e3205 100644 --- a/install/install.php +++ b/install/install.php @@ -150,6 +150,8 @@ if (!$inst->get_php_version()) die('ISPConfig requieres PHP '.$inst->min_php."\n $retval=shell_exec("which which"); if (empty($retval)) die ("ISPConfig requieres which \n"); +$inst->check_prerequisites(); + swriteln($inst->lng(' Following will be a few questions for primary configuration so be careful.')); swriteln($inst->lng(' Default values are in [brackets] and can be accepted with <ENTER>.')); swriteln($inst->lng(' Tap in "quit" (without the quotes) to stop the installer.'."\n\n")); @@ -574,6 +576,12 @@ if($install_mode == 'standard' || strtolower($inst->simple_query('Install ISPCon $inst->install_ispconfig_interface = false; } +// Create SSL certs for non-webserver(s)? +if(!file_exists('/usr/local/ispconfig/interface/ssl/ispserver.crt')) { + if(strtolower($inst->simple_query('Do you want to create SSL certs for your server?', array('y', 'n'), 'y')) == 'y') + $inst->make_ispconfig_ssl_cert(); +} + $inst->install_ispconfig(); //* Configure DBServer diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 265dd8c58330de8e96ad4c3449820f42c4ac62b5..4d462e6d485e51a94ce24fddc98f6f2253242d13 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1,7 +1,7 @@ <?php /* -Copyright (c) 2007-2010, Till Brehm, projektfarm Gmbh +Copyright (c) 2007-2019, Till Brehm, projektfarm GmbH All rights reserved. Redistribution and use in source and binary forms, with or without modification, @@ -198,6 +198,18 @@ class installer_base { if (($conf['apache']['installed'] && is_file($conf['apache']["vhost_conf_enabled_dir"]."/000-ispconfig.vhost")) || ($conf['nginx']['installed'] && is_file($conf['nginx']["vhost_conf_enabled_dir"]."/000-ispconfig.vhost"))) $this->ispconfig_interface_installed = true; } + + //** Check prerequisites + public function check_prerequisites() { + $msg = ''; + + if(version_compare(phpversion(), '5.4', '<')) $msg .= "PHP Version 5.4 or newer is required. The currently used PHP version is ".phpversion().".\n"; + if(!function_exists('curl_init')) $msg .= "PHP Curl Module is missing.\n"; + if(!function_exists('mysqli_connect')) $msg .= "PHP MySQLi Module is nmissing.\n"; + if(!function_exists('mb_detect_encoding')) $msg .= "PHP Multibyte Module (MB) is missing.\n"; + + if($msg != '') die($msg); + } public function force_configure_app($service, $enable_force=true) { $force = false; @@ -235,21 +247,27 @@ class installer_base { 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(); + //** Check for unwanted plugins + if ($this->db->getDatabaseType() == 'mysql' && $this->db->getDatabaseVersion(true) >= 8) { + // component approach since MySQL 8.0 + $unwanted_components = [ + 'file://component_validate_password', + ]; + $sql_components = $this->db->queryAllRecords("SELECT * FROM mysql.component where component_urn IN ?", $unwanted_components); + if(is_array($sql_components) && !empty($sql_components)) { + foreach ($sql_components as $component) { + $component_name = parse_url($component['component_urn'], PHP_URL_HOST); + echo "Login in to MySQL and disable '{$component_name}' with:\n\n UNINSTALL COMPONENT '{$component['component_urn']}';\n\n"; + } + die(); + } + } else { + $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 @@ -308,6 +326,15 @@ class installer_base { 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); } + + // add correct administrative rights to IPSConfig user (SUPER is deprecated and unnecessarily powerful) + if ($this->db->getDatabaseType() == 'mysql' && $this->db->getDatabaseVersion(true) >= 8) { + // there might be more needed on replicated db environments, this was not tested + $query = 'GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO ?@?'; + if(!$this->db->query($query, $conf['mysql']['ispconfig_user'], $from_host)) { + $this->error('Unable to grant administrative 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']); @@ -737,11 +764,16 @@ 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)) { 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 +781,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= '.escapeshellarg($full_file_name).' &> /dev/null', + __FILE__, __LINE__, 'chmod on '.$full_file_name, 'chmod on '.$full_file_name.' failed'); + caselog('chgrp '.escapeshellarg($postfix_group).' '.escapeshellarg($full_file_name).' &> /dev/null', + __FILE__, __LINE__, 'chgrp on '.$full_file_name, 'chgrp on '.$full_file_name.' failed'); + } public function configure_jailkit() { @@ -955,6 +994,11 @@ class installer_base { $this->error("The postfix configuration directory '$config_dir' does not exist."); } + //* Get postfix version + exec('postconf -d mail_version 2>&1', $out); + $postfix_version = preg_replace('/.*=\s*/', '', $out[0]); + unset($out); + //* mysql-virtual_domains.cf $this->process_postfix_config('mysql-virtual_domains.cf'); @@ -964,6 +1008,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'); @@ -1028,12 +1075,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"); @@ -1063,12 +1104,28 @@ class installer_base { } $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'; + $reject_authenticated_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_sender_login_mismatch,'; + $reject_authenticated_sender_login_mismatch = 'reject_authenticated_sender_login_mismatch, '; + } + + # placeholder includes comment char + $stress_adaptive_placeholder = '#{stress_adaptive}'; + $stress_adaptive = (isset($server_ini_array['mail']['stress_adaptive']) && ($server_ini_array['mail']['stress_adaptive'] == 'y')) ? '' : $stress_adaptive_placeholder; + + $reject_unknown_client_hostname=''; + if (isset($server_ini_array['mail']['reject_unknown']) && ($server_ini_array['mail']['reject_unknown'] == 'client' || $server_ini_array['mail']['reject_unknown'] == 'client_helo')) { + $reject_unknown_client_hostname=',reject_unknown_client_hostname'; } + $reject_unknown_helo_hostname=''; + if ((!isset($server_ini_array['mail']['reject_unknown'])) || $server_ini_array['mail']['reject_unknown'] == 'helo' || $server_ini_array['mail']['reject_unknown'] == 'client_helo') { + $reject_unknown_helo_hostname=',reject_unknown_helo_hostname'; + } + unset($server_ini_array); - $tmp = str_replace('.','\.',$conf['hostname']); + $myhostname = str_replace('.','\.',$conf['hostname']); $postconf_placeholders = array('{config_dir}' => $config_dir, '{vmail_mailbox_base}' => $cf['vmail_mailbox_base'], @@ -1077,13 +1134,43 @@ class installer_base { '{rbl_list}' => $rbl_list, '{greylisting}' => $greylisting, '{reject_slm}' => $reject_sender_login_mismatch, - '{myhostname}' => $tmp, + '{reject_aslm}' => $reject_authenticated_sender_login_mismatch, + '{myhostname}' => $myhostname, + $stress_adaptive_placeholder => $stress_adaptive, + '{reject_unknown_client_hostname}' => $reject_unknown_client_hostname, + '{reject_unknown_helo_hostname}' => $reject_unknown_helo_hostname, ); $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 + //* Merge version-specific postfix config + if(version_compare($postfix_version , '2.5', '>=')) { + $configfile = 'postfix_2-5.conf'; + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $content = strtr($content, $postconf_placeholders); + $postconf_commands = array_merge($postconf_commands, array_filter(explode("\n", $content))); + } + if(version_compare($postfix_version , '2.10', '>=')) { + $configfile = 'postfix_2-10.conf'; + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $content = strtr($content, $postconf_placeholders); + $postconf_commands = array_merge($postconf_commands, array_filter(explode("\n", $content))); + } + if(version_compare($postfix_version , '3.0', '>=')) { + $configfile = 'postfix_3-0.conf'; + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $content = strtr($content, $postconf_placeholders); + $postconf_commands = array_merge($postconf_commands, array_filter(explode("\n", $content))); + } + if(version_compare($postfix_version , '3.3', '>=')) { + $configfile = 'postfix_3-3.conf'; + $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/'.$configfile.'.master', 'tpl/'.$configfile.'.master'); + $content = strtr($content, $postconf_placeholders); + $postconf_commands = array_merge($postconf_commands, array_filter(explode("\n", $content))); + } + //* These postconf commands will be executed on installation only if($this->is_update == false) { $postconf_commands = array_merge($postconf_commands, array( @@ -1390,7 +1477,7 @@ class installer_base { 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")); + array_splice($new_options, $i+1, 0, array("check_recipient_access proxy:mysql:${quoted_config_dir}/mysql-verify_recipients.cf")); break; } } @@ -1399,7 +1486,6 @@ class installer_base { $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 @@ -1638,8 +1724,33 @@ class installer_base { 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'"); + if(! isset($mail_config['reject_sender_login_mismatch'])) { + $mail_config['reject_sender_login_mismatch'] = 'n'; + } + $options = preg_split("/,\s*/", exec("postconf -h smtpd_sender_restrictions")); + $new_options = array(); + foreach ($options as $key => $value) { + $value = trim($value); + if ($value == '') continue; + if (preg_match('/tag_as_(originating|foreign)\.re/', $value)) { + continue; + } + if (preg_match('/reject_(authenticated_)?sender_login_mismatch/', $value)) { + continue; + } + $new_options[] = $value; + } + if ($mail_config['reject_sender_login_mismatch'] == 'y') { + array_splice($new_options, 0, 0, array('reject_authenticated_sender_login_mismatch')); + for ($i = 0; isset($new_options[$i]); $i++) { + if ($new_options[$i] == 'permit_mynetworks') { + array_splice($new_options, $i+1, 0, array('reject_sender_login_mismatch')); + break; + } + } + } + exec("postconf -e 'smtpd_sender_restrictions = ".implode(", ", $new_options)."'"); $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); $new_options = array(); @@ -1805,7 +1916,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); } @@ -2414,6 +2530,16 @@ class installer_base { $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); + 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()); if($this->is_update == true) { $tpl->setVar('logging',get_logging_state()); @@ -2558,34 +2684,254 @@ class installer_base { if(!@is_link($vhost_conf_enabled_dir.'/000-apps.vhost')) { symlink($vhost_conf_dir.'/apps.vhost', $vhost_conf_enabled_dir.'/000-apps.vhost'); } + } + } + private function curl_request($url, $use_ipv6 = false) { + $set_headers = [ + 'Connection: Close', + 'User-Agent: ISPConfig/3', + 'Accept: */*' + ]; + + $ch = curl_init($url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); + curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); + curl_setopt($ch, CURLOPT_HTTPHEADER, $set_headers); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($ch, CURLOPT_MAXREDIRS, 5); + + if($use_ipv6) { + if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V6')) { + curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6); + } + } else { + if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) { + curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); + } } + + $response = curl_exec($ch); + curl_close($ch); + + return $response; } public function make_ispconfig_ssl_cert() { - global $conf,$autoinstall; + global $conf, $autoinstall; - $install_dir = $conf['ispconfig_install_dir']; + //* Get hostname from user entry or shell command */ + if($conf['hostname'] !== 'localhost' && $conf['hostname'] !== '') { + $hostname = $conf['hostname']; + } else { + $hostname = exec('hostname -f'); + } + + // Check dns a record exist and its ip equal to server public ip + $svr_ip4 = $this->curl_request('https://ispconfig.org/remoteip.php', false); + $svr_ip6 = $this->curl_request('https://ispconfig.org/remoteip.php', true); + + if(function_exists('idn_to_ascii')) { + if(defined('IDNA_NONTRANSITIONAL_TO_ASCII') && defined('INTL_IDNA_VARIANT_UTS46') && constant('IDNA_NONTRANSITIONAL_TO_ASCII')) { + $hostname = idn_to_ascii($hostname, IDNA_NONTRANSITIONAL_TO_ASCII, INTL_IDNA_VARIANT_UTS46); + } else { + $hostname = idn_to_ascii($hostname); + } + } + $dns_ips = array(); + if (checkdnsrr($hostname, 'A')) { + $dnsa=dns_get_record($hostname, DNS_A); + if($dnsa) { + foreach ($dnsa as $rec) { + $dns_ips[] = $rec['ip']; + } + } + } + if (checkdnsrr($hostname, 'AAAA')) { + $dnsaaaa=dns_get_record($hostname, DNS_AAAA); + if($dnsaaaa) { + foreach ($dnsaaaa as $rec) { + $dns_ips[] = $rec['ip']; + } + } + } + + // Request for certs if no LE SSL folder for server fqdn exist + $le_live_dir = '/etc/letsencrypt/live/' . $hostname; + if (!@is_dir($le_live_dir) && ( + ($svr_ip4 && in_array($svr_ip4, $dns_ips)) || ($svr_ip6 && in_array($svr_ip6, $dns_ips)) + )) { + + // This script is needed earlier to check and open http port 80 or standalone might fail + // Make executable and temporary symlink latest letsencrypt pre, post and renew hook script before install + if(file_exists(dirname(getcwd()) . '/server/scripts/letsencrypt_pre_hook.sh')) { + symlink(dirname(getcwd()) . '/server/scripts/letsencrypt_pre_hook.sh', '/usr/local/bin/letsencrypt_pre_hook.sh'); + } + if(file_exists(dirname(getcwd()) . '/server/scripts/letsencrypt_post_hook.sh')) { + symlink(dirname(getcwd()) . '/server/scripts/letsencrypt_post_hook.sh', '/usr/local/bin/letsencrypt_post_hook.sh'); + } + if(file_exists(dirname(getcwd()) . '/server/scripts/letsencrypt_renew_hook.sh')) { + symlink(dirname(getcwd()) . '/server/scripts/letsencrypt_renew_hook.sh', '/usr/local/bin/letsencrypt_renew_hook.sh'); + } + chown('/usr/local/bin/letsencrypt_pre_hook.sh', 'root'); + chown('/usr/local/bin/letsencrypt_post_hook.sh', 'root'); + chown('/usr/local/bin/letsencrypt_renew_hook.sh', 'root'); + chmod('/usr/local/bin/letsencrypt_pre_hook.sh', 0700); + chmod('/usr/local/bin/letsencrypt_post_hook.sh', 0700); + chmod('/usr/local/bin/letsencrypt_renew_hook.sh', 0700); + + // Check http port 80 status as it cannot be determined at post hook stage + $port80_status=exec('true &>/dev/null </dev/tcp/127.0.0.1/80 && echo open || echo close'); + + // Set pre-, post- and renew hook + $pre_hook = "--pre-hook \"letsencrypt_pre_hook.sh\""; + $renew_hook = " --renew-hook \"letsencrypt_renew_hook.sh\""; + if($port80_status == 'close') { + $post_hook = " --post-hook \"letsencrypt_post_hook.sh\""; + $hook = $pre_hook . $post_hook . $renew_hook; + } else { + $hook = $pre_hook . $renew_hook; + } + + // Get the default LE client name and version + $le_client = explode("\n", shell_exec('which letsencrypt certbot /root/.local/share/letsencrypt/bin/letsencrypt /opt/eff.org/certbot/venv/bin/certbot')); + $le_client = reset($le_client); - $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'; + // Check for Neilpang acme.sh as well + $acme = explode("\n", shell_exec('which /usr/local/ispconfig/server/scripts/acme.sh /root/.acme.sh/acme.sh')); + $acme = reset($acme); - if(!@is_dir($install_dir.'/interface/ssl')) mkdir($install_dir.'/interface/ssl', 0755, true); + // Attempt to use Neilpang acme.sh first, as it is now the preferred LE client + if (is_executable($acme)) { + + if($conf['nginx']['installed'] == true) { + exec("$acme --issue --nginx -d $hostname $renew_hook"); + } elseif($conf['apache']['installed'] == true) { + exec("$acme --issue --apache -d $hostname $renew_hook"); + } + // Else, it is not webserver, so we use standalone + else { + exec("$acme --issue --standalone -d $hostname $hook"); + } + + // Define LE certs name and path, then install them + if (!@is_dir($le_live_dir)) mkdir($le_live_dir, 0755, true); + $acme_cert = "--cert-file $le_live_dir/cert.pem"; + $acme_key = "--key-file $le_live_dir/privkey.pem"; + $acme_ca = "--ca-file $le_live_dir/chain.pem"; + $acme_chain = "--fullchain-file $le_live_dir/fullchain.pem"; + exec("$acme --install-cert -d $hostname $acme_cert $acme_key $acme_ca $acme_chain"); + + // Else, we attempt to use the official LE certbot client certbot + } else { + + // But only if it is otherwise available + if(is_executable($le_client)) { + + // Get its version info due to be used for webroot arguement issues + $le_info = exec($le_client . ' --version 2>&1', $ret, $val); + if(preg_match('/^(\S+|\w+)\s+(\d+(\.\d+)+)$/', $le_info, $matches)) { + $le_version = $matches[2]; + } + + // Define certbot commands + $acme_version = '--server https://acme-v0' . (($le_version >=0.22) ? '2' : '1') . '.api.letsencrypt.org/directory'; + $certonly = 'certonly --agree-tos --non-interactive --expand --rsa-key-size 4096'; + + // If this is a webserver + if($conf['nginx']['installed'] == true) + exec("$le_client $certonly $acme_version --nginx --email postmaster@$hostname $renew_hook"); + elseif($conf['apache']['installed'] == true) + exec("$le_client $certonly $acme_version --apache --email postmaster@$hostname $renew_hook"); + // Else, it is not webserver, so we use standalone + else + exec("$le_client $certonly $acme_version --standalone --email postmaster@$hostname -d $hostname $hook"); + } + } + } + + //* Define and check ISPConfig SSL folder */ + $ssl_dir = $conf['ispconfig_install_dir'].'/interface/ssl'; + if(!@is_dir($ssl_dir)) mkdir($ssl_dir, 0755, true); + + $ssl_crt_file = $ssl_dir.'/ispserver.crt'; + $ssl_csr_file = $ssl_dir.'/ispserver.csr'; + $ssl_key_file = $ssl_dir.'/ispserver.key'; + $ssl_pem_file = $ssl_dir.'/ispserver.pem'; + + $date = new DateTime(); + + // If the LE SSL certs for this hostname exists + if (is_dir($le_live_dir) && in_array($svr_ip, $dns_ips)) { + + // Backup existing ispserver ssl files + if (file_exists($ssl_crt_file)) rename($ssl_crt_file, $ssl_crt_file . '-' .$date->format('YmdHis') . '.bak'); + if (file_exists($ssl_key_file)) rename($ssl_key_file, $ssl_key_file . '-' .$date->format('YmdHis') . '.bak'); + if (file_exists($ssl_pem_file)) rename($ssl_pem_file, $ssl_pem_file . '-' .$date->format('YmdHis') . '.bak'); + + // Create symlink to LE fullchain and key for ISPConfig + symlink($le_live_dir.'/fullchain.pem', $ssl_crt_file); + symlink($le_live_dir.'/privkey.pem', $ssl_key_file); - $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"); + + // We can still use the old self-signed method + $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("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'); + // Build ispserver.pem file and chmod it + exec("cat $ssl_key_file $ssl_crt_file > $ssl_pem_file; chmod 600 $ssl_pem_file"); + + // Extend LE SSL certs to postfix + if ($conf['postfix']['installed'] == true && strtolower($this->simple_query('Symlink ISPConfig LE SSL certs to postfix?', array('y', 'n'), 'y')) == 'y') { + + // Define folder, file(s) + $cf = $conf['postfix']; + $postfix_dir = $cf['config_dir']; + if(!is_dir($postfix_dir)) $this->error("The postfix configuration directory '$postfix_dir' does not exist."); + $smtpd_crt = $postfix_dir.'/smtpd.cert'; + $smtpd_key = $postfix_dir.'/smtpd.key'; + + // Backup existing postfix ssl files + if (file_exists($smtpd_crt)) rename($smtpd_crt, $smtpd_crt . '-' .$date->format('YmdHis') . '.bak'); + if (file_exists($smtpd_key)) rename($smtpd_key, $smtpd_key . '-' .$date->format('YmdHis') . '.bak'); + + // Create symlink to ISPConfig SSL files + symlink($ssl_crt_file, $smtpd_crt); + symlink($ssl_key_file, $smtpd_key); + } + + // Extend LE SSL certs to pureftpd + if ($conf['pureftpd']['installed'] == true && strtolower($this->simple_query('Symlink ISPConfig LE SSL certs to pureftpd? Creating dhparam file takes some times.', array('y', 'n'), 'y')) == 'y') { + + // Define folder, file(s) + $pureftpd_dir = '/etc/ssl/private'; + if(!is_dir($pureftpd_dir)) mkdir($pureftpd_dir, 0755, true); + $pureftpd_pem = $pureftpd_dir.'/pure-ftpd.pem'; + + // Backup existing pureftpd ssl files + if (file_exists($pureftpd_pem)) rename($pureftpd_pem, $pureftpd_pem . '-' .$date->format('YmdHis') . '.bak'); + + // Create symlink to ISPConfig SSL files + symlink($ssl_pem_file, $pureftpd_pem); + if (!file_exists("$pureftpd_dir/pure-ftpd-dhparams.pem")) + exec("cd $pureftpd_dir; openssl dhparam -out dhparam2048.pem 2048; ln -sf dhparam2048.pem pure-ftpd-dhparams.pem"); + } + + exec("chown -R root:root $ssl_dir"); } @@ -3008,6 +3354,20 @@ class installer_base { 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 executable then unlink and symlink letsencrypt pre, post and renew hook scripts + chown($install_dir.'/server/scripts/letsencrypt_pre_hook.sh', 'root'); + chown($install_dir.'/server/scripts/letsencrypt_post_hook.sh', 'root'); + chown($install_dir.'/server/scripts/letsencrypt_renew_hook.sh', 'root'); + chmod($install_dir.'/server/scripts/letsencrypt_pre_hook.sh', 0700); + chmod($install_dir.'/server/scripts/letsencrypt_post_hook.sh', 0700); + chmod($install_dir.'/server/scripts/letsencrypt_renew_hook.sh', 0700); + if(is_link('/usr/local/bin/letsencrypt_pre_hook.sh')) unlink('/usr/local/bin/letsencrypt_pre_hook.sh'); + if(is_link('/usr/local/bin/letsencrypt_post_hook.sh')) unlink('/usr/local/bin/letsencrypt_post_hook.sh'); + if(is_link('/usr/local/bin/letsencrypt_renew_hook.sh')) unlink('/usr/local/bin/letsencrypt_renew_hook.sh'); + symlink($install_dir.'/server/scripts/letsencrypt_pre_hook.sh', '/usr/local/bin/letsencrypt_pre_hook.sh'); + symlink($install_dir.'/server/scripts/letsencrypt_post_hook.sh', '/usr/local/bin/letsencrypt_post_hook.sh'); + symlink($install_dir.'/server/scripts/letsencrypt_renew_hook.sh', '/usr/local/bin/letsencrypt_renew_hook.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'); @@ -3348,5 +3708,3 @@ class installer_base { } } - -?> diff --git a/install/lib/mysql.lib.php b/install/lib/mysql.lib.php index c24a454d040e0d5bb6b4d8b613da99a9aae04158..1085ed0d5b2c04cd97bcc5968f371afec5e0dc35 100644 --- a/install/lib/mysql.lib.php +++ b/install/lib/mysql.lib.php @@ -761,6 +761,41 @@ class db break; } } + + /** + * Get the database type (mariadb or mysql) + * + * @access public + * @return string 'mariadb' or string 'mysql' + */ + + public function getDatabaseType() { + $tmp = $this->queryOneRecord('SELECT VERSION() as version'); + if(stristr($tmp['version'],'mariadb')) { + return 'mariadb'; + } else { + return 'mysql'; + } + } + + /** + * Get the database version + * + * @access public + * @param bool $major_version_only = true will return the major version only, e.g. 8 for MySQL 8 + * @return string version number + */ + + public function getDatabaseVersion($major_version_only = false) { + $tmp = $this->queryOneRecord('SELECT VERSION() as version'); + $version = explode('-', $tmp['version']); + if($major_version_only == true) { + $version_parts = explode('.', $version[0]); + return $version_parts[0]; + } else { + return $version[0]; + } + } } diff --git a/install/sql/incremental/upd_0089.sql b/install/sql/incremental/upd_0089.sql new file mode 100644 index 0000000000000000000000000000000000000000..08ae33e1705dc532483a86ef10834147898c221f --- /dev/null +++ b/install/sql/incremental/upd_0089.sql @@ -0,0 +1,77 @@ +-- 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 + +-- 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'; + +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'; + +-- 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`; + +-- 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; + +-- 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 `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; + +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; + +-- 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; + +ALTER TABLE `directive_snippets` ADD `update_sites` ENUM('y','n') NOT NULL DEFAULT 'n' ; + +-- Add DNSSEC Algorithm setting +ALTER TABLE `dns_soa` ADD `dnssec_algo` SET('NSEC3RSASHA1','ECDSAP256SHA256') NULL DEFAULT NULL AFTER `dnssec_wanted`; +UPDATE `dns_soa` SET `dnssec_algo` = 'NSEC3RSASHA1' WHERE `dnssec_algo` IS NULL AND dnssec_initialized = 'Y'; +UPDATE `dns_soa` SET `dnssec_algo` = 'ECDSAP256SHA256' WHERE `dnssec_algo` IS NULL AND dnssec_initialized = 'N'; +ALTER TABLE `dns_soa` CHANGE `dnssec_algo` `dnssec_algo` SET('NSEC3RSASHA1','ECDSAP256SHA256') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'ECDSAP256SHA256'; + +-- Fix issue #5635 +ALTER TABLE `client_template` CHANGE `ssh_chroot` `ssh_chroot` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; +ALTER TABLE `client_template` CHANGE `web_php_options` `web_php_options` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; + +-- add option to forward in lda, default to forward in mta except for existing forwards +ALTER TABLE `mail_user` ADD `forward_in_lda` enum('n','y') NOT NULL default 'n' AFTER `cc`; +UPDATE `mail_user` set `forward_in_lda` = 'y' where `cc` != ''; \ 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 9eefff363080228f1412f34a6734ce27ab072fc5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/install/sql/incremental/upd_dev_collection.sql +++ b/install/sql/incremental/upd_dev_collection.sql @@ -1,64 +0,0 @@ --- 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 - --- 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'; - -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'; - --- 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`; - --- 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 ''; - --- 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 `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`; - -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; - --- 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 c35d55331a9dec0da083d82fe9fd78323b152c92..08fa18c371b1e43d324e8330507ee0a462a7c582 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` text NOT NULL DEFAULT '', + `id_rsa` text, `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', @@ -330,7 +330,7 @@ CREATE TABLE `client_template` ( `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', + `web_php_options` varchar(255) NOT NULL DEFAULT '', `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', @@ -345,7 +345,7 @@ CREATE TABLE `client_template` ( `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', + `ssh_chroot` varchar(255) NOT NULL DEFAULT '', `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', @@ -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 ; @@ -625,6 +626,7 @@ CREATE TABLE `dns_soa` ( `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_algo` SET('NSEC3RSASHA1','ECDSAP256SHA256') NOT NULL DEFAULT 'ECDSAP256SHA256', `dnssec_last_signed` BIGINT NOT NULL DEFAULT '0', `dnssec_info` TEXT NULL, PRIMARY KEY (`id`), @@ -1038,7 +1040,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` text NOT NULL default '', + `cc` text, + `forward_in_lda` enum('n','y') NOT NULL default 'n', `sender_cc` varchar(255) NOT NULL default '', `homedir` varchar(255) NOT NULL default '', `autoresponder` enum('n','y') NOT NULL default 'n', @@ -2068,7 +2071,6 @@ CREATE TABLE `web_domain` ( `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, `last_quota_notification` date NULL default NULL, `rewrite_rules` mediumtext, @@ -2500,7 +2502,7 @@ 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'); +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\ndnssec_algo=ECDSAP256SHA256\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'); -- -------------------------------------------------------- diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index 14f0f10da275e560cdeb51e3b10472dedf146dd7..b07bb03f41e73d8cca958bd283b8ab0c23b96094 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -1,4 +1,3 @@ - ###################################################### # This virtual host contains the configuration # for the ISPConfig apps vhost @@ -15,6 +14,50 @@ SetHandler None </FilesMatch> + # 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 -TLSv1 -TLSv1.1 + <tmpl_else> + <tmpl_var name="ssl_comment">SSLProtocol All -SSLv2 -SSLv3 + </tmpl_if> + <tmpl_var name="ssl_comment">SSLCertificateFile /usr/local/ispconfig/interface/ssl/ispserver.crt + <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-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 + </tmpl_if> + <tmpl_if name='apache_version' op='>=' value='2.4.11' format='version'> + <tmpl_var name="ssl_comment">SSLSessionTickets Off + </tmpl_if> + + <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" + 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> + <IfVersion < 2.4.7> + Header set Strict-Transport-Security "max-age=15768000" + </IfVersion> + RequestHeader unset Proxy early + </IfModule> + + <tmpl_if name='apache_version' op='>=' value='2.3.3' format='version'> + <tmpl_var name="ssl_comment">SSLUseStapling On + <tmpl_var name="ssl_comment">SSLStaplingResponderTimeout 5 + <tmpl_var name="ssl_comment">SSLStaplingReturnResponderErrors Off + </tmpl_if> + <IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule> @@ -78,6 +121,4 @@ RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P] {/tmpl_if} - - </VirtualHost> diff --git a/install/tpl/apache_ispconfig.conf.master b/install/tpl/apache_ispconfig.conf.master index ff744741ff2a7f67953e70c3f4b0350f00fb2911..688283f50ebd76108ba4e882f67ea4e6b8cfccd8 100644 --- a/install/tpl/apache_ispconfig.conf.master +++ b/install/tpl/apache_ispconfig.conf.master @@ -146,3 +146,28 @@ NameVirtualHost *:443 NameVirtualHost {tmpl_var name="ip_address"}:{tmpl_var name="port"} </tmpl_loop> +<tmpl_if name='apache_version' op='>=' value='2.3.3' format='version'> +<IfModule mod_ssl.c> + <tmpl_var name="ssl_comment">SSLStaplingCache shmcb:/var/run/ocsp(128000) +</IfModule> +</tmpl_if> + +<Directory /var/www/php-cgi-scripts> + AllowOverride None + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all denied + <tmpl_else> + Order Deny,Allow + Deny from all + </tmpl_if> +</Directory> + +<Directory /var/www/php-fcgi-scripts> + AllowOverride None + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all denied + <tmpl_else> + Order Deny,Allow + Deny from all + </tmpl_if> +</Directory> diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index 61e9a588593756e8671c1062ae7dd89eb71ffb51..cc177f5c480e4bb453867ea164a365603b945960 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 @@ -111,29 +111,3 @@ NameVirtualHost *:<tmpl_var name="vhost_port"> <tmpl_var name="ssl_comment">SSLStaplingReturnResponderErrors Off </tmpl_if> </VirtualHost> - -<tmpl_if name='apache_version' op='>=' value='2.3.3' format='version'> -<IfModule mod_ssl.c> - <tmpl_var name="ssl_comment">SSLStaplingCache shmcb:/var/run/ocsp(128000) -</IfModule> -</tmpl_if> - -<Directory /var/www/php-cgi-scripts> - AllowOverride None - <tmpl_if name='apache_version' op='>' value='2.2' format='version'> - Require all denied - <tmpl_else> - Order Deny,Allow - Deny from all - </tmpl_if> -</Directory> - -<Directory /var/www/php-fcgi-scripts> - AllowOverride None - <tmpl_if name='apache_version' op='>' value='2.2' format='version'> - Require all denied - <tmpl_else> - Order Deny,Allow - Deny from all - </tmpl_if> -</Directory> diff --git a/install/tpl/debian6_dovecot2.conf.master b/install/tpl/debian6_dovecot2.conf.master index 80709cfe36e4b0be34c68b658e396b5c563b4566..1080eeb5599706a7c1361def9500c621e6808480 100644 --- a/install/tpl/debian6_dovecot2.conf.master +++ b/install/tpl/debian6_dovecot2.conf.master @@ -7,8 +7,10 @@ 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_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 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 a2925913727ddce3eb053ff045196824b824136b..60a1263e48e3d3e218c8ab9cf7f957a1ffca6fa7 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 169826747d01281c3de5838cc869004fc32e68aa..07128357e4d5441addb8757927e869e6af51be47 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -1,12 +1,12 @@ 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} -virtual_uid_maps = mysql:/etc/postfix/mysql-virtual_uids.cf -virtual_gid_maps = mysql:/etc/postfix/mysql-virtual_gids.cf +virtual_uid_maps = proxy:mysql:/etc/postfix/mysql-virtual_uids.cf +virtual_gid_maps = proxy:mysql:/etc/postfix/mysql-virtual_gids.cf sender_bcc_maps = proxy:mysql:{config_dir}/mysql-virtual_outgoing_bcc.cf inet_protocols=all inet_interfaces = all @@ -14,21 +14,23 @@ 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 -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 +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{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 smtpd_tls_key_file = {config_dir}/smtpd.key transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{config_dir}/mysql-virtual_transports.cf -relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf -relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf +relay_domains = proxy:mysql:{config_dir}/mysql-virtual_relaydomains.cf +relay_recipient_maps = proxy: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_recipient_restrictions +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 $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $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 -smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf +smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit +smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf +smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks{rbl_list}, permit_sasl_authenticated, reject_unauth_pipelining {reject_unknown_client_hostname}, permit +smtpd_etrn_restrictions = permit_mynetworks, reject +smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit smtpd_client_message_rate_limit = 100 maildrop_destination_concurrency_limit = 1 maildrop_destination_recipient_limit = 1 @@ -39,10 +41,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 2acd757fbd36edbc3b9d377b0dfda9671c7fcfbc..4b9bb5c6a9cc1bc142bd45468af930758b598444 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 1c78e858beb5475f21ee6b85c00785c423f878bb..a580f6a04268fdb9698e00270e6666399bdbd495 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -1,30 +1,32 @@ 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} -virtual_uid_maps = mysql:/etc/postfix/mysql-virtual_uids.cf -virtual_gid_maps = mysql:/etc/postfix/mysql-virtual_gids.cf +virtual_uid_maps = proxy:mysql:/etc/postfix/mysql-virtual_uids.cf +virtual_gid_maps = proxy:mysql:/etc/postfix/mysql-virtual_gids.cf sender_bcc_maps = proxy:mysql:{config_dir}/mysql-virtual_outgoing_bcc.cf 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 -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_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{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 smtpd_tls_key_file = {config_dir}/smtpd.key transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{config_dir}/mysql-virtual_transports.cf -relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf -relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf +relay_domains = proxy:mysql:{config_dir}/mysql-virtual_relaydomains.cf +relay_recipient_maps = proxy: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_recipient_restrictions +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 $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $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 -smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf +smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit +smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf +smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks{rbl_list}, permit_sasl_authenticated, reject_unauth_pipelining {reject_unknown_client_hostname}, permit +smtpd_etrn_restrictions = permit_mynetworks, reject +smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit smtpd_client_message_rate_limit = 100 maildrop_destination_concurrency_limit = 1 maildrop_destination_recipient_limit = 1 @@ -35,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 diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index 84d404d15b0bc63e4b5edb469c04f478b3070018..d0ed3d69f78e749a0d92656e770d6c5a5f43d3ee 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -1,29 +1,31 @@ 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} -virtual_uid_maps = mysql:/etc/postfix/mysql-virtual_uids.cf -virtual_gid_maps = mysql:/etc/postfix/mysql-virtual_gids.cf +virtual_uid_maps = proxy:mysql:/etc/postfix/mysql-virtual_uids.cf +virtual_gid_maps = proxy:mysql:/etc/postfix/mysql-virtual_gids.cf 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 -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_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{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 smtpd_tls_key_file = {config_dir}/smtpd.key transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{config_dir}/mysql-virtual_transports.cf -relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf -relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf +relay_domains = proxy:mysql:{config_dir}/mysql-virtual_relaydomains.cf +relay_recipient_maps = proxy: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_recipient_restrictions +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 $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $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 -smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf +smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit +smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf +smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks{rbl_list}, permit_sasl_authenticated, reject_unauth_pipelining {reject_unknown_client_hostname}, permit +smtpd_etrn_restrictions = permit_mynetworks, reject +smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit smtpd_client_message_rate_limit = 100 maildrop_destination_concurrency_limit = 1 maildrop_destination_recipient_limit = 1 @@ -34,10 +36,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/mysql-virtual_alias_domains.cf.master b/install/tpl/mysql-virtual_alias_domains.cf.master index e55fd8ea8df088457ba43a01c8df62a33e888b6f..26b14ac00da538ba9253fe937cb6a4f79bec5942 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 0000000000000000000000000000000000000000..e55fd8ea8df088457ba43a01c8df62a33e888b6f --- /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/mysql-virtual_email2email.cf.master b/install/tpl/mysql-virtual_email2email.cf.master index 17e1cdf0bf93c91370183d62947d277b54e02015..87553d5f9d8ce8b121c47fa96b5acb11a573e712 100644 --- a/install/tpl/mysql-virtual_email2email.cf.master +++ b/install/tpl/mysql-virtual_email2email.cf.master @@ -2,6 +2,4 @@ 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 cc AS email FROM mail_user WHERE email = '%s' AND cc != '' AND (forward_in_lda = 'n' OR disabledeliver = 'y') 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 97825f9ffc9c492e68f8703efce25f00b79d66e7..281bedb07b531177f46a0e13a208ddc4c955bfb1 100644 --- a/install/tpl/mysql-virtual_mailboxes.cf.master +++ b/install/tpl/mysql-virtual_mailboxes.cf.master @@ -2,4 +2,4 @@ user = {mysql_server_ispconfig_user} password = {mysql_server_ispconfig_password} dbname = {mysql_server_database} 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} +query = select CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') from mail_user where login = '%s' and postfix = 'y' and disabledeliver = 'n' and server_id = {server_id} diff --git a/install/tpl/named.conf.options.master b/install/tpl/named.conf.options.master index f13976ffd6db31f72447c1d0d57be7d2935a556d..88c0e06493493f9493bfccb733e9bba74de22d25 100644 --- a/install/tpl/named.conf.options.master +++ b/install/tpl/named.conf.options.master @@ -5,9 +5,9 @@ options { // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 - // If your ISP provided one or more IP addresses for stable - // nameservers, you probably want to use them as forwarders. - // Uncomment the following block, and insert the addresses replacing + // If your ISP provided one or more IP addresses for stable + // nameservers, you probably want to use them as forwarders. + // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { @@ -21,8 +21,9 @@ options { dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; + + allow-transfer {none;}; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; }; - diff --git a/install/tpl/nginx_apps.vhost.master b/install/tpl/nginx_apps.vhost.master index a22b1aab46b71b28fca3668fdf696154f365ed3f..2680b209a2522b8ef4455ffb73f4f835c3e66477 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 aad670e97a8a74d022eb3c0c11927c559bd858d6..dbe44d7064861eae187731a39e5ced7d120affd3 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 62c9939819547aeffe28ebac3a6dfc2135187e9e..9624c05684e4564f49613cf101a5eef60e2fdc8e 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 f2d2a4403b4cc89f79626789b779ae7c3e6d1ab9..9065e9fa037036bade4f9460576e6151d9c39ab4 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -1,32 +1,34 @@ 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} -virtual_uid_maps = mysql:/etc/postfix/mysql-virtual_uids.cf -virtual_gid_maps = mysql:/etc/postfix/mysql-virtual_gids.cf +virtual_uid_maps = proxy:mysql:/etc/postfix/mysql-virtual_uids.cf +virtual_gid_maps = proxy:mysql:/etc/postfix/mysql-virtual_gids.cf sender_bcc_maps = proxy:mysql:{config_dir}/mysql-virtual_outgoing_bcc.cf 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 -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_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{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 smtpd_tls_key_file = {config_dir}/smtpd.key transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:{config_dir}/mysql-virtual_transports.cf -relay_domains = mysql:{config_dir}/mysql-virtual_relaydomains.cf -relay_recipient_maps = mysql:{config_dir}/mysql-virtual_relayrecipientmaps.cf +relay_domains = proxy:mysql:{config_dir}/mysql-virtual_relaydomains.cf +relay_recipient_maps = proxy: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_recipient_restrictions +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 $virtual_uid_maps $virtual_gid_maps $smtpd_client_restrictions $smtpd_sender_restrictions $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 -smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual_client.cf +smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit +smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf +smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks{rbl_list}, permit_sasl_authenticated, reject_unauth_pipelining {reject_unknown_client_hostname}, permit +smtpd_etrn_restrictions = permit_mynetworks, reject +smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit smtpd_client_message_rate_limit = 100 maildrop_destination_concurrency_limit = 1 maildrop_destination_recipient_limit = 1 @@ -37,10 +39,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/postfix_2-10.conf.master b/install/tpl/postfix_2-10.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..d77f37e0a07bdedea1d15c629a07c871ba496b0c --- /dev/null +++ b/install/tpl/postfix_2-10.conf.master @@ -0,0 +1,5 @@ +# Postfix configuration for version 2.10 and up +smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination + +# This is supported in version 2.9, but lets not create another conf file for it +address_verify_sender_ttl = 15686s diff --git a/install/tpl/postfix_2-5.conf.master b/install/tpl/postfix_2-5.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..132c80822e488b6b123e88002f1092e7dbd5b633 --- /dev/null +++ b/install/tpl/postfix_2-5.conf.master @@ -0,0 +1,13 @@ +# Postfix configuration for version 2.5 and up + +# These will make postfix adapt more to load spikes +#{stress_adaptive} in_flow_delay = ${stress?3}${stress:1}s +#{stress_adaptive} smtp_connect_timeout = ${stress?10}${stress:30}s +#{stress_adaptive} smtp_helo_timeout = ${stress?10}${stress:60}s +#{stress_adaptive} smtp_mail_timeout = ${stress?10}${stress:60}s +#{stress_adaptive} smtpd_error_sleep_time = ${stress?1}${stress:2}s +#{stress_adaptive} smtpd_hard_error_limit = ${stress?1}${stress:10} +#{stress_adaptive} smtpd_recipient_overshoot_limit = ${stress?60}${stress:600} +#{stress_adaptive} smtpd_soft_error_limit = ${stress?2}${stress:5} +#{stress_adaptive} smtpd_timeout = ${stress?10}${stress:60}s + diff --git a/install/tpl/postfix_3-0.conf.master b/install/tpl/postfix_3-0.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..aa205679ad7818e0a19621a8f930e5838250d161 --- /dev/null +++ b/install/tpl/postfix_3-0.conf.master @@ -0,0 +1,13 @@ +# Postfix configuration for version 3.0 and up + +# These will make postfix adapt more to load spikes +#{stress_adaptive} in_flow_delay = ${stress?{3}:{1}}s +#{stress_adaptive} smtp_connect_timeout = ${stress?{10}:{30}}s +#{stress_adaptive} smtp_helo_timeout = ${stress?{10}:{60}}s +#{stress_adaptive} smtp_mail_timeout = ${stress?{10}:{60}}s +#{stress_adaptive} smtpd_error_sleep_time = ${stress?{1}:{2}}s +#{stress_adaptive} smtpd_hard_error_limit = ${stress?{1}:{10}} +#{stress_adaptive} smtpd_recipient_overshoot_limit = ${stress?{60}:{600}} +#{stress_adaptive} smtpd_soft_error_limit = ${stress?{2}:{5}} +#{stress_adaptive} smtpd_timeout = ${stress?{10}:{60}}s + diff --git a/install/tpl/postfix_3-3.conf.master b/install/tpl/postfix_3-3.conf.master new file mode 100644 index 0000000000000000000000000000000000000000..01b3e7f59058a3867d1a093f013e5cbaad1afc2a --- /dev/null +++ b/install/tpl/postfix_3-3.conf.master @@ -0,0 +1,4 @@ +# Postfix configuration for version 3.3 and up + +# 3.2 and earlier should not have this set when using reject_unverified_recipient +enable_original_recipient = no diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index d6dfa18f47f61ed5598c56edb8d6bc81f15732c0..c42966a01c12bd90906d4795f79de1184eb3bf11 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -36,6 +36,7 @@ backups_include_into_web_quota=n reseller_can_use_options=n web_php_options=no,fast-cgi,mod,php-fpm show_aps_menu=n +client_protection=y [tools] @@ -51,7 +52,6 @@ custom_login_link= dashboard_atom_url_admin=https://www.ispconfig.org/atom dashboard_atom_url_reseller=https://www.ispconfig.org/atom dashboard_atom_url_client=https://www.ispconfig.org/atom -monitor_key= tab_change_discard=n tab_change_warning=n use_loadindicator=y diff --git a/install/uninstall.php b/install/uninstall.php index fdac79d61ec3800f994e8e2e4014ca5e86960399..37cbe05f866a8cce939551f2f290c5cbb965cb91 100644 --- a/install/uninstall.php +++ b/install/uninstall.php @@ -88,6 +88,9 @@ if($do_uninstall == 'yes') { exec('rm -rf /usr/local/ispconfig'); // Delete various other files + @unlink("/usr/local/bin/letsencrypt_post_hook.sh"); + @unlink("/usr/local/bin/letsencrypt_pre_hook.sh"); + @unlink("/usr/local/bin/letsencrypt_renew_hook.sh"); @unlink("/usr/local/bin/ispconfig_update.sh"); @unlink("/usr/local/bin/ispconfig_update_from_svn.sh"); @unlink("/var/spool/mail/ispconfig"); diff --git a/install/update.php b/install/update.php index 3b3cf969ef3cefa8e8ad76c6eed31a0da75969e0..f0ac80c14ba50fb8aafbd1739dc3661d4c053a73 100644 --- a/install/update.php +++ b/install/update.php @@ -188,6 +188,8 @@ $inst = new installer(); if (!$inst->get_php_version()) die('ISPConfig requieres PHP '.$inst->min_php."\n"); $inst->is_update = true; +$inst->check_prerequisites(); + echo "This application will update ISPConfig 3 on your server.\n\n"; //* Make a backup before we start the update @@ -534,6 +536,12 @@ if ($inst->install_ispconfig_interface) { } } +// Create SSL certs for non-webserver(s)? +if(!file_exists('/usr/local/ispconfig/interface/ssl/ispserver.crt')) { + if(strtolower($inst->simple_query('Do you want to create SSL certs for your server?', array('y', 'n'), 'y')) == 'y') + $inst->make_ispconfig_ssl_cert(); +} + $inst->install_ispconfig(); // Cleanup diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php index be6c15666c0d4facb9acbe2f2ebcfaab54f2ace9..631bd430dafb6cb4a67d2e10d11c383ee4208493 100755 --- a/interface/lib/app.inc.php +++ b/interface/lib/app.inc.php @@ -49,7 +49,7 @@ class app { private $_loaded_classes = array(); private $_conf; private $_security_config; - + public $loaded_plugins = array(); public function __construct() { @@ -58,7 +58,7 @@ class app { if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS']) || isset($_REQUEST['s']) || isset($_REQUEST['s_old']) || isset($_REQUEST['conf'])) { die('Internal Error: var override attempt detected'); } - + $this->_conf = $conf; if($this->_conf['start_db'] == true) { $this->load('db_'.$this->_conf['db_type']); @@ -70,21 +70,21 @@ class app { } $this->uses('functions'); // we need this before all others! $this->uses('auth,plugin,ini_parser,getconf'); - + } public function __get($prop) { if(property_exists($this, $prop)) return $this->{$prop}; - + $this->uses($prop); if(property_exists($this, $prop)) return $this->{$prop}; else trigger_error('Undefined property ' . $prop . ' of class app', E_USER_WARNING); } - + public function __destruct() { session_write_close(); } - + public function initialize_session() { //* Start the session if($this->_conf['start_session'] == true) { @@ -118,7 +118,7 @@ class app { } else { session_set_cookie_params(0,'/',$cookie_domain,$cookie_secure,true); // until browser is closed } - + session_set_save_handler( array($this->session, 'open'), array($this->session, 'close'), array($this->session, 'read'), @@ -127,7 +127,7 @@ class app { array($this->session, 'gc')); session_start(); - + //* Initialize session variables if(!isset($_SESSION['s']['id']) ) $_SESSION['s']['id'] = session_id(); if(empty($_SESSION['s']['theme'])) $_SESSION['s']['theme'] = $conf['theme']; @@ -135,7 +135,7 @@ class app { } } - + public function uses($classes) { $cl = explode(',', $classes); if(is_array($cl)) { @@ -160,7 +160,7 @@ class app { } } } - + public function conf($plugin, $key, $value = null) { if(is_null($value)) { $tmpconf = $this->db->queryOneRecord("SELECT `value` FROM `sys_config` WHERE `group` = ? AND `name` = ?", $plugin, $key); @@ -284,6 +284,7 @@ class app { $this->tpl->setVar('datalog_changes_end_txt', $this->lng('datalog_changes_end_txt')); $this->tpl->setVar('datalog_changes_count', $datalog['count']); $this->tpl->setLoop('datalog_changes', $datalog['entries']); + $this->tpl->setVar('datalog_changes_close_txt', $this->lng('datalog_changes_close_txt')); } else { $this->tpl->setVar('app_version', ''); } @@ -349,7 +350,7 @@ class app { 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'); $proxy_panel_allowed = $sec_config['reverse_proxy_panel_allowed']; @@ -380,7 +381,7 @@ class app { unset($forwarded_host); } } - + return $cookie_domain; } @@ -389,7 +390,7 @@ class app { //** Initialize application (app) object //* possible future = new app($conf); $app = new app(); -/* +/* split session creation out of constructor is IMHO better. otherwise we have some circular references to global $app like in getconfig property of App - RA @@ -398,7 +399,7 @@ $app->initialize_session(); // load and enable PHP Intrusion Detection System (PHPIDS) $ids_security_config = $app->getconf->get_security_config('ids'); - + if(is_dir(ISPC_CLASS_PATH.'/IDS') && !defined('REMOTE_API_CALL') && ($ids_security_config['ids_anon_enabled'] == 'yes' || $ids_security_config['ids_user_enabled'] == 'yes' || $ids_security_config['ids_admin_enabled'] == 'yes')) { $app->uses('ids'); $app->ids->start(); diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php index 014feec8c319cef6fa5585c5cc91fc3185cc5490..feab66cd936bbbbb8df15d49e39c9564fb13e6b0 100644 --- a/interface/lib/classes/db_mysql.inc.php +++ b/interface/lib/classes/db_mysql.inc.php @@ -1106,6 +1106,76 @@ class db } } + /** + * Get the database type (mariadb or mysql) + * + * @access public + * @return string 'mariadb' or string 'mysql' + */ + + public function getDatabaseType() { + $tmp = $this->queryOneRecord('SELECT VERSION() as version'); + if(stristr($tmp['version'],'mariadb')) { + return 'mariadb'; + } else { + return 'mysql'; + } + } + + /** + * Get the database version + * + * @access public + * @param bool $major_version_only = true will return the major version only, e.g. 8 for MySQL 8 + * @return string version number + */ + + public function getDatabaseVersion($major_version_only = false) { + $tmp = $this->queryOneRecord('SELECT VERSION() as version'); + $version = explode('-', $tmp['version']); + if($major_version_only == true) { + $version_parts = explode('.', $version[0]); + return $version_parts[0]; + } else { + return $version[0]; + } + } + + /** + * Get a mysql password hash + * + * @access public + * @param string cleartext password + * @return string Password hash + */ + + public function getPasswordHash($password) { + + $password_type = 'password'; + + /* Disabled until caching_sha2_password is implemented + if($this->getDatabaseType() == 'mysql' && $this->getDatabaseVersion(true) >= 8) { + // we are in MySQL 8 mode + $tmp = $this->queryOneRecord("show variables like 'default_authentication_plugin'"); + if($tmp['default_authentication_plugin'] == 'caching_sha2_password') { + $password_type = 'caching_sha2_password'; + } + } + */ + + if($password_type == 'caching_sha2_password') { + /* + caching_sha2_password hashing needs to be implemented, have not + found valid PHP implementation for the new password hash type. + */ + } else { + $password_hash = '*'.strtoupper(sha1(sha1($password, true))); + } + + return $password_hash; + } + + } /** diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php index 6f310284dc6ca052f9b86cd5515987f194ad2ff0..6436e6e792a04aba37ccc56864dc55134f459673 100644 --- a/interface/lib/classes/remoting_lib.inc.php +++ b/interface/lib/classes/remoting_lib.inc.php @@ -131,7 +131,7 @@ class remoting_lib extends tform_base { $this->sys_userid = $user['userid']; $this->sys_default_group = $user['default_group']; $this->sys_groups = $user['groups']; - // we have to force admin priveliges for the remoting API as some function calls might fail otherwise. + // we have to force admin privileges for the remoting API as some function calls might fail otherwise. if($client_login == false) $_SESSION["s"]["user"]["typ"] = 'admin'; } diff --git a/interface/lib/classes/sites_database_plugin.inc.php b/interface/lib/classes/sites_database_plugin.inc.php index faf3fa30f7f36904a821c42280c7e52219aaf2be..68421d6083ddd0eafaf56c539bcb040d4917fe2c 100644 --- a/interface/lib/classes/sites_database_plugin.inc.php +++ b/interface/lib/classes/sites_database_plugin.inc.php @@ -49,8 +49,8 @@ class sites_database_plugin { $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 = ?, 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); + $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); } } diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php index bd9f70a626ef308391f5a0f8ef3ae04a35507311..91a855872c9600939ac338f2b5cbe5bd11513d73 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -336,11 +336,11 @@ class tform_base { } //* If the parameter 'valuelimit' is set - function applyValueLimit($limit, $values, $current_value = '') { + function applyValueLimit($formtype, $limit, $values, $current_value = '') { global $app; - // we mas have multiple limits, therefore we explode by ; first + // we may have multiple limits, therefore we explode by ; first // Example: "system:sites:web_php_options;client:web_php_options" $limits = explode(';',$limit); @@ -399,18 +399,31 @@ class tform_base { $tmp_key = $limit_parts[2]; $allowed = $allowed = explode(',',$tmp_conf[$tmp_key]); } + + if($formtype == 'CHECKBOX') { + if(strstr($limit,'force_')) { + // Force the checkbox field to be ticked and enabled + if($allowed[0] == $values[1]) { + $values = 'on'; + } + } else { + // Force the checkbox field to be unchecked and disabled + if($allowed[0] == $values[0]) { + $values = 'off'; + } + } + } else { + // add the current value to the allowed array + $allowed[] = $current_value; - // 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; + // 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 = $values_new; - } return $values; @@ -479,7 +492,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"], $val); + $field["value"] = $this->applyValueLimit($field['formtype'], $field['valuelimit'], $field["value"], $val); } switch ($field['formtype']) { @@ -521,8 +534,14 @@ class tform_base { break; case 'CHECKBOX': - $checked = ($val == $field['value'][1])?' CHECKED':''; - $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" $checked />\r\n"; + if($field["value"] == 'off') { + $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" disabled=\"disabled\" />\r\n"; + } elseif ($field["value"] == 'on') { + $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" disabled=\"disabled\" CHECKED />\r\n"; + } else { + $checked = ($val == $field['value'][1])?' CHECKED':''; + $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" $checked />\r\n"; + } break; case 'CHECKBOXARRAY': @@ -614,7 +633,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['default']); + $field["value"] = $this->applyValueLimit($field['formtype'], $field['valuelimit'], $field["value"], $field['default']); } switch ($field['formtype']) { @@ -651,9 +670,15 @@ class tform_base { break; case 'CHECKBOX': - // $checked = (empty($field["default"]))?'':' CHECKED'; - $checked = ($field["default"] == $field['value'][1])?' CHECKED':''; - $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" $checked />\r\n"; + if($field["value"] == 'off') { + $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" disabled=\"disabled\" />\r\n"; + } elseif ($field["value"] == 'on') { + $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" disabled=\"disabled\" CHECKED />\r\n"; + } else { + // $checked = (empty($field["default"]))?'':' CHECKED'; + $checked = ($field["default"] == $field['value'][1])?' CHECKED':''; + $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" $checked />\r\n"; + } break; case 'CHECKBOXARRAY': @@ -1333,8 +1358,7 @@ class tform_base { $record[$key] = $app->auth->crypt_password(stripslashes($record[$key]),'ISO-8859-1'); $sql_insert_val .= "'".$app->db->quote($record[$key])."', "; } elseif (isset($field['encryption']) && $field['encryption'] == 'MYSQL') { - $tmp = $app->db->queryOneRecord("SELECT PASSWORD(?) as `crypted`", stripslashes($record[$key])); - $record[$key] = $tmp['crypted']; + $record[$key] = $app->db->getPasswordHash($record[$key]); $sql_insert_val .= "'".$app->db->quote($record[$key])."', "; } else { $record[$key] = md5(stripslashes($record[$key])); @@ -1365,8 +1389,7 @@ class tform_base { $record[$key] = $app->auth->crypt_password(stripslashes($record[$key]),'ISO-8859-1'); $sql_update .= "`$key` = '".$app->db->quote($record[$key])."', "; } elseif (isset($field['encryption']) && $field['encryption'] == 'MYSQL') { - $tmp = $app->db->queryOneRecord("SELECT PASSWORD(?) as `crypted`", stripslashes($record[$key])); - $record[$key] = $tmp['crypted']; + $record[$key] = $app->db->getPasswordHash($record[$key]); $sql_update .= "`$key` = '".$app->db->quote($record[$key])."', "; } else { $record[$key] = md5(stripslashes($record[$key])); diff --git a/interface/lib/classes/tools_monitor.inc.php b/interface/lib/classes/tools_monitor.inc.php index ce3ffca1eba13e81ab2565eb6665fb0e4da31201..435ee220a8066070ac0a0801a6f27f4b8361a2b7 100644 --- a/interface/lib/classes/tools_monitor.inc.php +++ b/interface/lib/classes/tools_monitor.inc.php @@ -184,9 +184,10 @@ class tools_monitor { foreach($data as $key => $value) { if ($key != '') { + $memory = $app->functions->formatBytes($value); $html .= '<tr> <td>' . $key . ':</td> - <td>' . $value . '</td> + <td>' . $memory . '</td> </tr>'; } } diff --git a/interface/lib/lang/ar.lng b/interface/lib/lang/ar.lng index f8fd2b5a500479b4dff5741a0ded9410f648db78..8987866af06b677d01ead04d166957cf083b0af4 100644 --- a/interface/lib/lang/ar.lng +++ b/interface/lib/lang/ar.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/bg.lng b/interface/lib/lang/bg.lng index 049807e66da3712e215a7b6f62734ebaecdef900..1a288f3b957b3e1fbe3b9cbde8bd926092705227 100644 --- a/interface/lib/lang/bg.lng +++ b/interface/lib/lang/bg.lng @@ -159,4 +159,6 @@ $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'] = 'Ðеограничен'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/br.lng b/interface/lib/lang/br.lng index 3bab13ab3a40eb40f83e06798bf32d1332f9ffce..c11b825ae7bd8d5ac4a7c6b590abc2150c208dac 100644 --- a/interface/lib/lang/br.lng +++ b/interface/lib/lang/br.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/ca.lng b/interface/lib/lang/ca.lng index 6d48482cfc5f5c97825505de23a7fb80abd07aea..c3a5b340f687528db33177e7943cb653449dc71c 100644 --- a/interface/lib/lang/ca.lng +++ b/interface/lib/lang/ca.lng @@ -159,4 +159,6 @@ $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é'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index 93eeb671e5ffc32a0f9e19d647f42cbfcf569ece..058475169b173671f5bbfad3bbd7742c626a7e98 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng index 54091c14170786b83b4d68c79b801d3dff280c56..80704d3e5bf2114e833ef193d29f2bbac5dce296 100644 --- a/interface/lib/lang/de.lng +++ b/interface/lib/lang/de.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Bitte Server auswählen. Server ID muss > als 0 sein.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/dk.lng b/interface/lib/lang/dk.lng index cbb9fc5efdc46db92761845cca3164f8224c08c1..93c68617cf953dfacd075d6b0c2c29d527f840af 100644 --- a/interface/lib/lang/dk.lng +++ b/interface/lib/lang/dk.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng index 3e6c60c90f451a81acfed2b2e904c3df6074d422..3189500b01cf25696c68924defd105fe89f65d51 100644 --- a/interface/lib/lang/el.lng +++ b/interface/lib/lang/el.lng @@ -159,4 +159,6 @@ $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'] = 'ΑπεÏιόÏιστα'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng index b5b2ebcdae470767a4fe90494fca53fe974236e6..60c389481020fd2a72a0a73f16a124b01bff8716 100644 --- a/interface/lib/lang/en.lng +++ b/interface/lib/lang/en.lng @@ -160,4 +160,6 @@ $wb['security_check2_txt'] = 'failed.'; $wb['select_directive_snippet_txt'] = 'Directive Snippets'; $wb['select_master_directive_snippet_txt'] = 'Master Directive Snippets'; $wb['unlimited_txt'] = "Unlimited"; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng index b78499f80022dc44300273382d58c10dd86ae090..6d20c7b66522108874fc78fc7a3f067919f61b45 100644 --- a/interface/lib/lang/es.lng +++ b/interface/lib/lang/es.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng index 27749510bb0096803b629935fec60b6e23afcd3c..8f3c6bd0a19f2ee670b98fee8a33a4fa11598258 100644 --- a/interface/lib/lang/fi.lng +++ b/interface/lib/lang/fi.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/fr.lng b/interface/lib/lang/fr.lng index c302b32faa302e897af10b0aae59e993fbc0af48..728dea1eed74d603bf52ea961b09764b1d817760 100644 --- a/interface/lib/lang/fr.lng +++ b/interface/lib/lang/fr.lng @@ -159,4 +159,6 @@ $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é'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng index 3be5dc7e16ea3dfbdc161ac8d1196ccb368f87c3..e40f0a4c19162a3396ed24b651260b8bb386b654 100644 --- a/interface/lib/lang/hr.lng +++ b/interface/lib/lang/hr.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng index 3fc91bd60095011e8d867cc26b0a963c0e847ce4..d75563e3b9c517e2c1978e01ef5c2f246f3f9d98 100644 --- a/interface/lib/lang/hu.lng +++ b/interface/lib/lang/hu.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng index 13fbff1a0800e7484f367858a26b809409f96916..09ed444103a2e5145c3be8d8f0f2dc81837df30a 100644 --- a/interface/lib/lang/id.lng +++ b/interface/lib/lang/id.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng index 4a85a58e09266d2db52c2aaeff90667b9db77ef3..eb53245c4d8995d87d0a9b4916c25bf4cd12bbf4 100644 --- a/interface/lib/lang/it.lng +++ b/interface/lib/lang/it.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng index bb1290173c6a83bbcbceba6c2ff00f23442b99b5..723bf2e87adc4737ffc3c4ececd764e89c267a78 100644 --- a/interface/lib/lang/ja.lng +++ b/interface/lib/lang/ja.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng index a733142d49100c3b025c69ce20b387f00c74ecb9..0b7e4a0bbe32c958c09ef738b3ca26c2e09018d6 100644 --- a/interface/lib/lang/nl.lng +++ b/interface/lib/lang/nl.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng index ffbac09ef4008cf2bbbd0a0456a99ff758d6a9c5..300c8c9d83a6f6138a9b2cb6f3ba7136d18f15e4 100644 --- a/interface/lib/lang/pl.lng +++ b/interface/lib/lang/pl.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng index 195da8e61926311839005a8b7bf6be3ad1bd319c..6ea67a9d7056b0683ff01e9a71724f25fd5bbaab 100644 --- a/interface/lib/lang/pt.lng +++ b/interface/lib/lang/pt.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng index 1365a54172f3098dc1e8d5eba983730a46bc8c02..d67e4c9a8075059012981202f358dd0d19f1ea1c 100644 --- a/interface/lib/lang/ro.lng +++ b/interface/lib/lang/ro.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng index 19cdcf8a047170d3f36b310801ae3a1ffcd40318..fe9fef36440b61599993b48ebe60ccaae1dfc235 100644 --- a/interface/lib/lang/ru.lng +++ b/interface/lib/lang/ru.lng @@ -159,4 +159,6 @@ $wb['datalog_status_i_xmpp_user'] = 'Создать Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ XMP $wb['datalog_status_u_xmpp_user'] = 'Обновить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ XMPP'; $wb['datalog_status_d_xmpp_user'] = 'Удалить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ XMPP'; $wb['unlimited_txt'] = 'Безлимитный'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/se.lng b/interface/lib/lang/se.lng index 2d3146f03389ae3acae8fd72c36a1f5c1c89b386..f5ad7a4cb590f56087b61cca306e7002acbdbe1d 100644 --- a/interface/lib/lang/se.lng +++ b/interface/lib/lang/se.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng index ece15b3a22865520884ac048cd12e0ba679504aa..3ca7f2a2da9ef9765f2a839f11e0dc53dee4b213 100644 --- a/interface/lib/lang/sk.lng +++ b/interface/lib/lang/sk.lng @@ -159,4 +159,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng index 31e5f2fbef4e7c47d45321d8bcc3cd08c1701cee..7721a3c0cbb78e779eeb49d43fb4777ceced215a 100644 --- a/interface/lib/lang/tr.lng +++ b/interface/lib/lang/tr.lng @@ -160,4 +160,6 @@ $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'; -?> +$wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be > 0.'; +$wb['datalog_changes_close_txt'] = 'Close'; +?> \ No newline at end of file diff --git a/interface/lib/plugins/mail_user_filter_plugin.inc.php b/interface/lib/plugins/mail_user_filter_plugin.inc.php index ccf58b853c0bb3b9da0224b527558507f4a62ead..4f24042b303bca819da67de91ec4ab6c72933b03 100644 --- a/interface/lib/plugins/mail_user_filter_plugin.inc.php +++ b/interface/lib/plugins/mail_user_filter_plugin.inc.php @@ -137,8 +137,13 @@ class mail_user_filter_plugin { $content = ''; $content .= '### BEGIN FILTER_ID:'.$page_form->id."\n"; - //$content .= 'require ["fileinto", "regex", "vacation"];'."\n"; - + if($page_form->dataRecord["source"] == 'Header') { + $parts = explode(':',trim($page_form->dataRecord["searchterm"])); + $page_form->dataRecord["source"] = trim(array_shift($parts)); + $page_form->dataRecord["searchterm"] = trim(implode(':',$parts)); + unset($parts); + } + if($page_form->dataRecord["op"] == 'domain') { $content .= 'if address :domain :is "'.strtolower($page_form->dataRecord["source"]).'" "'.$page_form->dataRecord["searchterm"].'" {'."\n"; } elseif ($page_form->dataRecord["op"] == 'localpart') { @@ -152,33 +157,50 @@ class mail_user_filter_plugin { $content .= 'if size :over '.intval($page_form->dataRecord["searchterm"]).$unit.' {'."\n"; } else { - if($page_form->dataRecord["source"] == 'Header') { - $parts = explode(':',trim($page_form->dataRecord["searchterm"])); - $page_form->dataRecord["source"] = trim($parts[0]); - unset($parts[0]); - $page_form->dataRecord["searchterm"] = trim(implode(':',$parts)); - unset($parts); - } + $content .= 'if header :regex "'.strtolower($page_form->dataRecord["source"]).'" ["'; + + # special chars in sieve regex must be escaped with double-backslash + if($page_form->dataRecord["op"] == 'regex') { + # if providing a regex, special chars must already be quoted as intended; + # we will simply try to check for an obviously unquoted double-quote and handle that. + $patterns = array( '/([^\\\\]{2})"/', '/([^\\\\])\\\\"/' ); + $replace = array( '${1}\\\\\\\\"', '${1}\\\\\\\\"' ); + $searchterm = preg_replace( $patterns, $replace, $page_form->dataRecord["searchterm"] ); + } else { + $sieve_regex_escape = array( + '\\' => '\\\\\\', + '+' => '\\\\+', + '*' => '\\\\*', + '?' => '\\\\?', + '[' => '\\\\[', + '^' => '\\\\^', + ']' => '\\\\]', + '$' => '\\\\$', + '(' => '\\\\(', + ')' => '\\\\)', + '{' => '\\\\{', + '}' => '\\\\}', + '|' => '\\\\|', + '.' => '\\\\.', + # these (from preg_quote) should not be needed + #'=' => '\\\\=', + #'!' => '\\\\!', + #'<' => '\\\\<', + #'>' => '\\\\>', + #':' => '\\\\:', + #'-' => '\\\\-', + #'#' => '\\\\#', + ); + $searchterm = strtr( $page_form->dataRecord["searchterm"], $sieve_regex_escape ); - $content .= 'if header :regex ["'.strtolower($page_form->dataRecord["source"]).'"] ["'; - - $searchterm = preg_quote($page_form->dataRecord["searchterm"]); - $searchterm = str_replace( - array( - '"', - '\\[', - '\\]' - ), - array( - '\\"', - '\\\\[', - '\\\\]' - ), $searchterm); + } if($page_form->dataRecord["op"] == 'contains') { $content .= ".*".$searchterm; } elseif ($page_form->dataRecord["op"] == 'is') { $content .= "^".$searchterm."$"; + } elseif ($page_form->dataRecord["op"] == 'regex') { + $content .= $searchterm; } elseif ($page_form->dataRecord["op"] == 'begins') { $content .= "^".$searchterm.""; } elseif ($page_form->dataRecord["op"] == 'ends') { 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 3f9b0db5b6b7ef92fcbaf112ca4ea092d22872fb..56dc825fd41b75b6acc03d9e07824f30b5150919 100644 --- a/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php +++ b/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php @@ -46,12 +46,20 @@ class sites_web_vhost_domain_plugin { $vhostdomain_type = 'domain'; if($page_form->dataRecord['type'] == 'vhostalias') $vhostdomain_type = 'aliasdomain'; elseif($page_form->dataRecord['type'] == 'vhostsubdomain') $vhostdomain_type = 'subdomain'; - - // make sure that the record belongs to the clinet group and not the admin group when a dmin inserts it - // also make sure that the user can not delete domain created by a admin + + // make sure that the record belongs to the client group and not the admin group when a admin inserts it + // also make sure that the user can not delete domain created by a admin if client protection is enabled if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($page_form->dataRecord["client_group_id"])) { $client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]); - $app->db->query("UPDATE web_domain SET sys_groupid = ?, sys_perm_group = 'ru' WHERE domain_id = ?", $client_group_id, $page_form->id); + $app->uses('getconf'); + $global_config = $app->getconf->get_global_config('sites'); + if($global_config['client_protection'] == 'y') { + $app->db->query("UPDATE web_domain SET sys_groupid = ?, sys_perm_group = 'ru' WHERE domain_id = ?", $client_group_id, $page_form->id); + } else { + $sysuser = $app->db->queryOneRecord('SELECT userid FROM sys_user WHERE default_group = ?',$client_group_id); + $sysuser_id = (is_array($sysuser) && isset($sysuser['userid']) && $sysuser['userid'] > 0)?$sysuser['userid']:1; + $app->db->query("UPDATE web_domain SET sys_userid = ?, sys_groupid = ?, sys_perm_group = 'riud' WHERE domain_id = ?", $sysuser_id, $client_group_id, $page_form->id); + } } if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($page_form->dataRecord["client_group_id"])) { $client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]); @@ -62,7 +70,7 @@ class sites_web_vhost_domain_plugin { $web_config = $app->getconf->get_server_config($app->functions->intval($page_form->dataRecord['server_id']), 'web'); if(isset($app->tform) && is_object($app->tform)) $web_rec = $app->tform->getDataRecord($page_form->id); else $web_rec = $app->remoting_lib->getDataRecord($page_form->id); - + if($vhostdomain_type == 'domain') { $document_root = str_replace("[website_id]", $page_form->id, $web_config["website_path"]); $document_root = str_replace("[website_idhash_1]", $this->id_hash($page_form->id, 1), $document_root); @@ -97,7 +105,7 @@ class sites_web_vhost_domain_plugin { $document_root = str_replace("[client_idhash_2]", $this->id_hash($client_id, 2), $document_root); $document_root = str_replace("[client_idhash_3]", $this->id_hash($client_id, 3), $document_root); $document_root = str_replace("[client_idhash_4]", $this->id_hash($client_id, 4), $document_root); - + if($event_name == 'sites:web_vhost_domain:on_after_update') { if(($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) && isset($page_form->dataRecord["client_group_id"]) && $page_form->dataRecord["client_group_id"] != $page_form->oldDataRecord["sys_groupid"]) { @@ -257,7 +265,7 @@ class sites_web_vhost_domain_plugin { $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, "backup_format_web" => $backup_format_web, "backup_format_db" => $backup_format_db), 'database_id', $rec['database_id']); + $app->db->datalogUpdate('web_database', array("backup_interval" => $backup_interval, "backup_copies" => $backup_copies), 'database_id', $rec['database_id']); } unset($records); unset($rec); @@ -280,7 +288,7 @@ class sites_web_vhost_domain_plugin { $php_open_basedir = str_replace("[website_path]", $document_root, $web_config["php_open_basedir"]); $php_open_basedir = str_replace("[website_domain]", $app->functions->idn_encode($page_form->dataRecord['domain']), $php_open_basedir); $htaccess_allow_override = $web_config["htaccess_allow_override"]; - + $sql = "UPDATE web_domain SET system_user = ?, system_group = ?, document_root = ?, allow_override = ?, php_open_basedir = ? WHERE domain_id = ?"; $app->db->query($sql, $system_user, $system_group, $document_root, $htaccess_allow_override, $php_open_basedir, $page_form->id); } diff --git a/interface/web/admin/directive_snippets_edit.php b/interface/web/admin/directive_snippets_edit.php index b12da0a79bf28f000b0c11103db13482557608ad..e22a7cf42a2d7903121f6c87873c19a06f93a71f 100644 --- a/interface/web/admin/directive_snippets_edit.php +++ b/interface/web/admin/directive_snippets_edit.php @@ -75,6 +75,7 @@ class page_action extends tform_actions { $app->tpl->setVar("snippet", $this->dataRecord['snippet'], true); } } + $app->tpl->setVar("is_master", $is_master); parent::onShowEnd(); @@ -82,15 +83,41 @@ class page_action extends tform_actions { 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 bd9466c310ca87737154c16b251a8de4ca492398..bf7f2b7fe52d1effbbd810d46ab254104e282fb7 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/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index de2caf175023ca6718a1ae4c753a7f5980f6b998..bc2f05840bf441d5cd6fab35a2c221e94a665920 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -456,11 +456,13 @@ $form["tabs"]['mail'] = 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'), + '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', @@ -638,6 +640,17 @@ $form["tabs"]['mail'] = array( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'reject_unknown' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'helo', + 'value' => array( + 'helo' => 'reject_unknown_helo_txt', + 'client' => 'reject_unknown_client_txt', + 'client_helo' => 'reject_unknown_client_helo_txt', + 'none' => 'disabled_txt', + ) + ), 'mailbox_size_limit' => array( 'datatype' => 'INTEGER', 'formtype' => 'TEXT', @@ -654,12 +667,6 @@ $form["tabs"]['mail'] = array( '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', @@ -672,6 +679,18 @@ $form["tabs"]['mail'] = array( 'width' => '40', 'maxlength' => '255' ), + 'stress_adaptive' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), + 'mailbox_quota_stats' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), 'overquota_notify_admin' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', @@ -1814,6 +1833,18 @@ $form["tabs"]['jailkit'] = array( 'width' => '40', 'maxlength' => '1000' ), + 'jailkit_chroot_authorized_keys_template' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'validators' => array( 0 => array ( 'type' => 'REGEX', + 'regex' => '/^[a-zA-Z0-9\.\-\_\/\ ]*$/', + 'errmsg'=> 'jailkit_chroot_authorized_keys_template_error_regex'), + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '1000' + ), //################################# // END Datatable fields //################################# diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index 4dd069b613a99aa7bc694ceba6d656a785172fcc..d998c46015cc8c85b6b1bc44909c45f8becb89a7 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -148,6 +148,12 @@ $form["tabs"]['sites'] = array ( 'width' => '30', 'maxlength' => '255' ), + 'client_protection' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n', 1 => 'y') + ), 'vhost_subdomains' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', @@ -589,12 +595,6 @@ $form["tabs"]['misc'] = array ( 'default' => 'http://www.ispconfig.org/atom', 'value' => '' ), - 'monitor_key' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '' - ), 'tab_change_discard' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', @@ -795,4 +795,3 @@ $form['tabs']['dns_ca'] = array ( ) ) ); - diff --git a/interface/web/admin/lib/lang/ar_directive_snippets.lng b/interface/web/admin/lib/lang/ar_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng index 4123c113d18a4a8d298321fc5610dc805425659b..ed8e236071c42a01934b9a1cfa087901e77fd7c6 100644 --- a/interface/web/admin/lib/lang/ar_server_config.lng +++ b/interface/web/admin/lib/lang/ar_server_config.lng @@ -40,6 +40,11 @@ $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Mailbox Size Limit'; $wb['message_size_limit_txt'] = 'Message Size Limit'; $wb['ip_address_txt'] = 'IP Address'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng index b871fc930c23eb9327f607d14d2d44f702479975..6715b22bfc4b0ae1b113b4788b32e182a757153d 100644 --- a/interface/web/admin/lib/lang/ar_system_config.lng +++ b/interface/web/admin/lib/lang/ar_system_config.lng @@ -27,7 +27,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/bg_directive_snippets.lng b/interface/web/admin/lib/lang/bg_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng index 463d1c7b2a2e0c08b40bbe929412c8794c115869..71e5bfd5c6c5229e6864bd3f0bdca49668aeb46f 100644 --- a/interface/web/admin/lib/lang/bg_server_config.lng +++ b/interface/web/admin/lib/lang/bg_server_config.lng @@ -38,6 +38,11 @@ $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Mailbox Size Limit'; $wb['message_size_limit_txt'] = 'Message Size Limit'; $wb['ip_address_txt'] = 'IP адреÑ'; @@ -170,6 +175,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng index cf8e8c8273fc278b01ec2ef873e60b2445d9b94b..5511eb4a5acb7c541a2562cbb77087b6a1b6a877 100644 --- a/interface/web/admin/lib/lang/bg_system_config.lng +++ b/interface/web/admin/lib/lang/bg_system_config.lng @@ -19,7 +19,6 @@ $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)'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/br_directive_snippets.lng b/interface/web/admin/lib/lang/br_directive_snippets.lng index 43c46c69b972189158871e363aed78e153f57121..bc94b85b7d5919bc99d71d746fbb8accbedf4cec 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/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng index 65a2dc4fd754a3086d8c386b57936931dd5e3d55..e7b59e3cdbb99122565f4e83f4623f8a22b63533 100644 --- a/interface/web/admin/lib/lang/br_server_config.lng +++ b/interface/web/admin/lib/lang/br_server_config.lng @@ -51,6 +51,11 @@ $wb['relayhost_txt'] = 'Servidor de retransmissão'; $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $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'; @@ -179,6 +184,8 @@ $wb['connect_userid_to_webid_txt'] = 'Conectar o UID do usuário no sistema para $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['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'Configurações SSL'; $wb['permissions_txt'] = 'Permissões'; $wb['php_settings_txt'] = 'Configurações php'; @@ -311,3 +318,5 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng index eccac5d178b3e142e60226a0c12d1d580bb7d87e..a3748d5c446eced0abc172f2d101401973a03c14 100644 --- a/interface/web/admin/lib/lang/br_system_config.lng +++ b/interface/web/admin/lib/lang/br_system_config.lng @@ -38,7 +38,6 @@ $wb['use_domain_module_hint'] = 'Se você usar este módulo, os clientes podem s $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'; @@ -94,4 +93,5 @@ $wb['active_txt'] = 'Ativo'; $wb['btn_save_txt'] = 'Salvar'; $wb['btn_cancel_txt'] = 'Cancelar'; $wb['web_php_options_txt'] = 'Manipulador do php (Somente apache)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/ca_directive_snippets.lng b/interface/web/admin/lib/lang/ca_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/ca_server_config.lng b/interface/web/admin/lib/lang/ca_server_config.lng index 496df78f77719a6b8f774d4f2ce9e52878ff9585..effc175e85b921e3d654d57212c595b1a5f9af8b 100644 --- a/interface/web/admin/lib/lang/ca_server_config.lng +++ b/interface/web/admin/lib/lang/ca_server_config.lng @@ -51,6 +51,11 @@ $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Mailbox Size Limit'; $wb['message_size_limit_txt'] = 'Message Size Limit'; $wb['ip_address_txt'] = 'IP Address'; @@ -175,6 +180,8 @@ $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['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng index 17e4fd3db8e2c04e465cfea0e620b03a9f6f2457..81c2241c591de918876f406c35294b7be6708340 100644 --- a/interface/web/admin/lib/lang/ca_system_config.lng +++ b/interface/web/admin/lib/lang/ca_system_config.lng @@ -38,7 +38,6 @@ $wb['use_domain_module_hint'] = 'If you use the domain limits, your customers ca $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/cz_directive_snippets.lng b/interface/web/admin/lib/lang/cz_directive_snippets.lng index 1fd316583b0720863e5bd30660e01c702e242b20..26d17f64b366e474648be0e14043b477d9ae9a4e 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/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index fbc1d777c38db51e08644ad60c7aaf92d94f800c..6e4f4c7faafd114ba50560f411acbd6d59286c45 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -163,6 +163,8 @@ $wb['backup_mode_userzip'] = 'Zálohovánà vÅ¡ech souborů v adresáři web jak $wb['backup_mode_rootgz'] = 'Zálohovánà vÅ¡ech souborů v adresáři web jako uživatel root'; $wb['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(jednotlivé RBL databáze oddÄ›lujte Äárkou)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL NastavenÃ'; $wb['permissions_txt'] = 'Nastavit oprávnÄ›nÃ'; $wb['php_settings_txt'] = 'PHP NastavenÃ'; @@ -254,6 +256,11 @@ $wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['do_not_try_rescue_mongodb_txt'] = 'Zakázat MongoDB monitorovánÃ'; $wb['v6_prefix_txt'] = 'IPv6 Prefix'; $wb['vhost_rewrite_v6_txt'] = 'Rewrite IPv6 on Mirror'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index fb9f4cf843a9eb64ac62585d8c0de38103df30ac..45ddabf38dd972f3441f893e6669d2210f03d0b7 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -28,7 +28,6 @@ $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.'; @@ -95,4 +94,5 @@ $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)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/de_directive_snippets.lng b/interface/web/admin/lib/lang/de_directive_snippets.lng index 9e369f4b514708b62098bd0f4796b338c0b24df6..dbe3aaf8bda98214340064fb398fc6ec540120eb 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/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng index 1646360a7ad59cca871ffb39a87105b7a81ac0c5..9a236d92e1e8ef3178fcb123926b06e435e1c3c9 100644 --- a/interface/web/admin/lib/lang/de_server_config.lng +++ b/interface/web/admin/lib/lang/de_server_config.lng @@ -40,6 +40,11 @@ $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $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'; @@ -174,6 +179,8 @@ $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['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Einstellungen'; $wb['permissions_txt'] = 'Berechtigungen'; $wb['php_settings_txt'] = 'PHP Einstellungen'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 7e88eccd00ea2e777818a2355a6643bc52202958..082c6fb3a14612d03a4a8fa84748bf0968273223 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -35,7 +35,6 @@ $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'; @@ -99,4 +98,5 @@ $wb['active_txt'] = 'Aktiv'; $wb['btn_save_txt'] = 'Speichern'; $wb['btn_cancel_txt'] = 'Abbrechen'; $wb['web_php_options_txt'] = 'PHP Handler (Nur Apache)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/dk_directive_snippets.lng b/interface/web/admin/lib/lang/dk_directive_snippets.lng index 7b43dcd40b8059b344ca2155647296bab1fe13dd..1b158e5c8053714fbee35186f633e46fbc6eb532 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/dk_server_config.lng b/interface/web/admin/lib/lang/dk_server_config.lng index 476e43216105bb5ed402fb7c81d0a689c952f33d..41eaa1fe758ec8a072447278fe1236249538ae58 100644 --- a/interface/web/admin/lib/lang/dk_server_config.lng +++ b/interface/web/admin/lib/lang/dk_server_config.lng @@ -166,6 +166,8 @@ $wb['connect_userid_to_webid_txt'] = 'Forbinde Linux brugerid til webid'; $wb['connect_userid_to_webid_start_txt'] = 'Start ID for brugerid/webid forbinde'; $wb['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Adskille RBL\'er med kommaer)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Indstillinger'; $wb['permissions_txt'] = 'Tilladelser'; $wb['php_settings_txt'] = 'PHP Indstillinger'; @@ -256,6 +258,11 @@ $wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['backup_time_txt'] = 'Backup time'; $wb['do_not_try_rescue_mongodb_txt'] = 'Disable MongoDB monitoring'; $wb['v6_prefix_txt'] = 'IPv6 Prefix'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng index 2be15ca1a087bd17476a9b4d93e11426aded1dad..ed6837aaf0e198d7ea8e3a072c4a1dc9624b5c4a 100644 --- a/interface/web/admin/lib/lang/dk_system_config.lng +++ b/interface/web/admin/lib/lang/dk_system_config.lng @@ -33,7 +33,6 @@ $wb['use_domain_module_hint'] = 'Hvis du bruger domæne grænser, kan dine kunde $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/el_directive_snippets.lng b/interface/web/admin/lib/lang/el_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng index cf215b939e148c2707c55f7b348bb2d0d1cfaba8..491aa69cb6b82cc7800b169a9878de1232c044e9 100644 --- a/interface/web/admin/lib/lang/el_server_config.lng +++ b/interface/web/admin/lib/lang/el_server_config.lng @@ -40,6 +40,11 @@ $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'ΧÏήστης Relayhost'; $wb['relayhost_password_txt'] = 'Συνθηματικό Relayhost'; $wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'ÎŒÏιο χώÏου θυÏίδας'; $wb['message_size_limit_txt'] = 'Μήνυμα οÏίου χώÏου'; $wb['ip_address_txt'] = 'ΔιεÏθυνση IP'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng index 045e20d02105bbfbe3adbdec37b5d8d87e6c4280..54f8c49712998c95b4a71d5000e15f0237317db2 100644 --- a/interface/web/admin/lib/lang/el_system_config.lng +++ b/interface/web/admin/lib/lang/el_system_config.lng @@ -27,7 +27,6 @@ $wb['enable_custom_login_txt'] = 'Αποδοχή Ï€ÏοσαÏμοσμÎνου $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/en_directive_snippets.lng b/interface/web/admin/lib/lang/en_directive_snippets.lng index 8e8a63afe1e3a8e3d5cd7d60b0c46432db51f2b6..da164a531879a2687cd18d0d427dfa73c34fcdfa 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/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng index e12e1d40426ca203f7579865c791eb1b3235fa96..4858ed2eb8ce1a90b4f8fbccf08643a905e9d1a4 100644 --- a/interface/web/admin/lib/lang/en_server_config.lng +++ b/interface/web/admin/lib/lang/en_server_config.lng @@ -14,6 +14,7 @@ $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["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; $wb["website_path_txt"] = 'Website path'; $wb["website_symlinks_txt"] = 'Website symlinks'; $wb['website_symlinks_rel_txt'] = 'Make relative symlinks'; @@ -51,6 +52,16 @@ $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb["mailbox_size_limit_txt"] = 'Mailbox Size Limit'; $wb["message_size_limit_txt"] = 'Message Size Limit'; $wb["ip_address_txt"] = 'IP Address'; @@ -179,6 +190,8 @@ $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['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb["ssl_settings_txt"] = 'SSL Settings'; $wb["permissions_txt"] = 'Permissions'; $wb["php_settings_txt"] = 'PHP Settings'; @@ -269,6 +282,7 @@ $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['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; $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.'; diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index 27a5e58f28ef69c819f72bb93aefac13b9e93011..882e6c21c3220012c626cc14027d9b27d096391f 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -102,4 +102,5 @@ $wb['active_txt'] = 'Active'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/es_directive_snippets.lng b/interface/web/admin/lib/lang/es_directive_snippets.lng index 8e2a9270791b70c7a2a9d287496dc1645dd3420e..a5bb21b494464ba69e782120057824d53aef0572 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/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng index f34393169587445521f160bd3420c5244532bf9f..866871de9a35c0bf62b4f21ea86c6d795e64ca5a 100644 --- a/interface/web/admin/lib/lang/es_server_config.lng +++ b/interface/web/admin/lib/lang/es_server_config.lng @@ -230,7 +230,14 @@ $wb['pop3_imap_daemon_txt'] = 'Servicio POP3/IMAP'; $wb['rbl_error_regex'] = 'Por favor especifique nombres de host RBL válidos.'; $wb['realtime_blackhole_list_note_txt'] = '(Separe las listas RBL con una coma)'; $wb['realtime_blackhole_list_txt'] = 'Lista de filtrado en tiempo real'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['reject_sender_login_mismatch_txt'] = 'Rechazar remitente e inicio de sesión diferentes'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $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'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng index 96e1e4487a549bcd3d14be03d2c07550998da066..fce27f40a3753623fa9a61a374b1e29755271621 100644 --- a/interface/web/admin/lib/lang/es_system_config.lng +++ b/interface/web/admin/lib/lang/es_system_config.lng @@ -45,7 +45,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/fi_directive_snippets.lng b/interface/web/admin/lib/lang/fi_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng index 6eefadb45f44fbf9d8c69851a1d4fbd0214842e9..61edf1e6020d9aa724ed2e400019730798307720 100644 --- a/interface/web/admin/lib/lang/fi_server_config.lng +++ b/interface/web/admin/lib/lang/fi_server_config.lng @@ -38,6 +38,11 @@ $wb['relayhost_txt'] = 'Edelleenlähetyspalvelin'; $wb['relayhost_user_txt'] = 'Edelleenlähetyspalvelimen käyttäjätunnus'; $wb['relayhost_password_txt'] = 'Edelleenlähetyspalvelimen salasana'; $wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Postilaatikon koko'; $wb['message_size_limit_txt'] = 'Viestien enimmäiskoko'; $wb['ip_address_txt'] = 'IP-osoite'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng index b6102f7f62e8e224d96c8a818d0f4abec2d32375..fbf2f67db1c8781eac9545358bae343ec2e41096 100644 --- a/interface/web/admin/lib/lang/fi_system_config.lng +++ b/interface/web/admin/lib/lang/fi_system_config.lng @@ -27,7 +27,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/fr_directive_snippets.lng b/interface/web/admin/lib/lang/fr_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng index 88717952099a752ca420245a0566b1cf3d508d47..657a4e1b54bb4027661ef8353167711b44f125e8 100644 --- a/interface/web/admin/lib/lang/fr_server_config.lng +++ b/interface/web/admin/lib/lang/fr_server_config.lng @@ -165,6 +165,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL’s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -256,6 +258,11 @@ $wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $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'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng index 38e2573044b93340c8cb496387d16f0d9f5e6086..56d1b239f5068bec0f88242856ca6201ac8776df 100644 --- a/interface/web/admin/lib/lang/fr_system_config.lng +++ b/interface/web/admin/lib/lang/fr_system_config.lng @@ -27,7 +27,6 @@ $wb['use_domain_module_hint'] = 'Si vous utilisez ce module, vos utilisateurs pe $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/hr_directive_snippets.lng b/interface/web/admin/lib/lang/hr_directive_snippets.lng index 077896577db3f9b8aec8aad5f33966bd1780ea6c..5709d6075d24c0811c5b51cdc3c04b98a89c3bf1 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/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng index b36fd1348643d5833a2891a007373581e98fb8ac..c7be0b3df01d4d5c8331e2449e8219da984afce8 100644 --- a/interface/web/admin/lib/lang/hr_server_config.lng +++ b/interface/web/admin/lib/lang/hr_server_config.lng @@ -39,6 +39,11 @@ $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost korisnik'; $wb['relayhost_password_txt'] = 'Relayhost Å¡ifra'; $wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Dozvoljena veliÄina mailboxa'; $wb['message_size_limit_txt'] = 'Dozvoljena veliÄina emaila'; $wb['ip_address_txt'] = 'IP adresa'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL postavke'; $wb['permissions_txt'] = 'Dozvole'; $wb['php_settings_txt'] = 'PHP postavke'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng index ab8756e95621c3666a91d2c507700938e404f2fa..cd396706745b1d820d712e49b5f01bee5732d791 100644 --- a/interface/web/admin/lib/lang/hr_system_config.lng +++ b/interface/web/admin/lib/lang/hr_system_config.lng @@ -20,7 +20,6 @@ $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)'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/hu_directive_snippets.lng b/interface/web/admin/lib/lang/hu_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng index 789e86a64989643f0a039e5edc585bd869fd6b08..979eacb0e8d6f5aed08a64340cacdc283edbc5e5 100644 --- a/interface/web/admin/lib/lang/hu_server_config.lng +++ b/interface/web/admin/lib/lang/hu_server_config.lng @@ -38,6 +38,11 @@ $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Mailbox Size Limit'; $wb['message_size_limit_txt'] = 'Message Size Limit'; $wb['ip_address_txt'] = 'IP Address'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng index 4262b892099af4ec5e6d366ec53824b7c5ca7bad..c5484c67d15e1d9d0f200e0b02558c8a8e4f8803 100644 --- a/interface/web/admin/lib/lang/hu_system_config.lng +++ b/interface/web/admin/lib/lang/hu_system_config.lng @@ -28,7 +28,6 @@ $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.'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/id_directive_snippets.lng b/interface/web/admin/lib/lang/id_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng index ee197a4d0a9e9154c78b6c09363d8231c66f162e..717948646926f1eae04b9b25fa9701aedd4b47d4 100644 --- a/interface/web/admin/lib/lang/id_server_config.lng +++ b/interface/web/admin/lib/lang/id_server_config.lng @@ -40,6 +40,11 @@ $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Pengguna Relayhost'; $wb['relayhost_password_txt'] = 'Kata Sandi Relayhost'; $wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Batasan Ukuran Mailbox'; $wb['message_size_limit_txt'] = 'Batasan Ukuran Pesan'; $wb['ip_address_txt'] = 'Alamat IP'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng index fe545e7476f06ecc07e8499434024ac4aa853e6d..b0808f8835c5fcc782c5773443a2af6d2d1d8d4f 100644 --- a/interface/web/admin/lib/lang/id_system_config.lng +++ b/interface/web/admin/lib/lang/id_system_config.lng @@ -27,7 +27,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/it_directive_snippets.lng b/interface/web/admin/lib/lang/it_directive_snippets.lng index 5598aacecc152ca4c07d07a7e9ad5cd0e6af4c28..e9a473f92ecc562a54c57785cb4a2d3046c60f66 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/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng index cd71123720fffca2b2ed0f0d35ee11e55bcca809..9aa049a4889fafe0087addb56f6e94006a04a59a 100644 --- a/interface/web/admin/lib/lang/it_server_config.lng +++ b/interface/web/admin/lib/lang/it_server_config.lng @@ -165,6 +165,8 @@ $wb['backup_mode_userzip'] = 'Backup files siti web come utente web in formato z $wb['backup_mode_rootgz'] = 'Backup di tutti i files nella cartella sito come utente root'; $wb['realtime_blackhole_list_txt'] = 'Lista Real-Time Blackhole'; $wb['realtime_blackhole_list_note_txt'] = '(Separare RBL con le virgole)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'Impostazioni SSL'; $wb['permissions_txt'] = 'Permessi'; $wb['php_settings_txt'] = 'Impostazioni PHP'; @@ -256,6 +258,11 @@ $wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $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'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng index f261ba3e8127bcfe843a64c32c0d6a9a24bed76c..98be8b9a0b1ef4c9f0dbac0823ea9245db05f29b 100644 --- a/interface/web/admin/lib/lang/it_system_config.lng +++ b/interface/web/admin/lib/lang/it_system_config.lng @@ -20,7 +20,6 @@ $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)'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/ja_directive_snippets.lng b/interface/web/admin/lib/lang/ja_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng index 4ef8d13422baef55f4a63c3031bee07294a658a9..3de4d2ca1ab35fec48efad324b23d441c5ed18f5 100644 --- a/interface/web/admin/lib/lang/ja_server_config.lng +++ b/interface/web/admin/lib/lang/ja_server_config.lng @@ -40,6 +40,11 @@ $wb['relayhost_txt'] = 'リレーホスト'; $wb['relayhost_user_txt'] = 'リレーホストユーザー'; $wb['relayhost_password_txt'] = 'リレーホストパスワード'; $wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'メールボックスã®ã‚µã‚¤ã‚º'; $wb['message_size_limit_txt'] = 'メッセージã®æœ€å¤§ã‚µã‚¤ã‚º'; $wb['ip_address_txt'] = 'IPアドレス'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng index 96ce2d2ad64d66ba0f3fbcb8b5014c382642397c..c629f7cf92f138110e3e7f36b72fc00d02a10b1f 100644 --- a/interface/web/admin/lib/lang/ja_system_config.lng +++ b/interface/web/admin/lib/lang/ja_system_config.lng @@ -27,7 +27,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/nl_directive_snippets.lng b/interface/web/admin/lib/lang/nl_directive_snippets.lng index a4f610634e6008a36d19eea337d61b6f71552219..d216622c6f5c8701361d5b816f9e6811cac90374 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/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng index 5b5fcf122bf4350700f11285a66eb928b832a16b..7e3edc43982b99105169fe53309561d33cb7094c 100644 --- a/interface/web/admin/lib/lang/nl_server_config.lng +++ b/interface/web/admin/lib/lang/nl_server_config.lng @@ -40,6 +40,11 @@ $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost gebruiker'; $wb['relayhost_password_txt'] = 'Relayhost wachtwoord'; $wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Mailbox grootte limiet'; $wb['message_size_limit_txt'] = 'Message grootte limiet'; $wb['ip_address_txt'] = 'IP adres'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng index f9f59896bfc226da7d2839d62e28ae6676b632f6..88dce5ac51db4a24d37b5e799487d6b6a641882e 100644 --- a/interface/web/admin/lib/lang/nl_system_config.lng +++ b/interface/web/admin/lib/lang/nl_system_config.lng @@ -30,7 +30,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/pl_directive_snippets.lng b/interface/web/admin/lib/lang/pl_directive_snippets.lng index 4902bf3282ce2e1148d5e5a40c9c73c998c3ccdc..abef1e28faa56c89174aef76e87ad10fa53b7b1d 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/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng index 1d6caa8e5eff0879c14e9dac9e7c42d7e8a47441..294ed44ee7b76bfd5262676502e125cfff9d97a1 100644 --- a/interface/web/admin/lib/lang/pl_server_config.lng +++ b/interface/web/admin/lib/lang/pl_server_config.lng @@ -40,6 +40,11 @@ $wb['relayhost_txt'] = 'Adres Relayhost'; $wb['relayhost_user_txt'] = 'Użytkownik Relayhost'; $wb['relayhost_password_txt'] = 'HasÅ‚o Relayhost'; $wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Maksymalna wielkość skrzynki pocztowej'; $wb['message_size_limit_txt'] = 'Maksymalna wielkość wiadomoÅ›ci'; $wb['ip_address_txt'] = 'Adres IP'; @@ -172,6 +177,8 @@ $wb['backup_mode_userzip'] = 'Pliki kopii z prawami użytkownika jako zip'; $wb['backup_mode_rootgz'] = 'Twórz kopie wszystkich plików w katalogu web jako root'; $wb['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(oddziel RBL-e przecinkami)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'Ustawienia SSL'; $wb['permissions_txt'] = 'Uprawnienia'; $wb['php_settings_txt'] = 'Ustawienia PHP'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng index 5f49133f561589911d3e9095e7891ab98ca6e628..184991d794f7af9d3dd720dd74e36dc556ea9cc5 100644 --- a/interface/web/admin/lib/lang/pl_system_config.lng +++ b/interface/web/admin/lib/lang/pl_system_config.lng @@ -26,7 +26,6 @@ $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.'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/pt_directive_snippets.lng b/interface/web/admin/lib/lang/pt_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng index fcf7a23e88117d6f58b1cf75950fd5e4947f4944..8b9d78d151f8523a8d8aeeab5870f37335f089bb 100644 --- a/interface/web/admin/lib/lang/pt_server_config.lng +++ b/interface/web/admin/lib/lang/pt_server_config.lng @@ -39,6 +39,11 @@ $wb['relayhost_txt'] = 'Host Relay'; $wb['relayhost_user_txt'] = 'Utilizador do Host Relay'; $wb['relayhost_password_txt'] = 'Senha do Host Relay'; $wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Tamanho máximo da Caixa Postal'; $wb['message_size_limit_txt'] = 'Tamanho máximo de mensagem'; $wb['ip_address_txt'] = 'Endereço IP'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng index 10b87a40ae223ca364da96b44c5fad4543913016..31b3163807a9b8684e8062646b067329eefffbcc 100644 --- a/interface/web/admin/lib/lang/pt_system_config.lng +++ b/interface/web/admin/lib/lang/pt_system_config.lng @@ -27,7 +27,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/ro_directive_snippets.lng b/interface/web/admin/lib/lang/ro_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng index 2c3b4fdce48d33abc402d4312ba7f338c68e4b1e..a1ce64839ff9e1cf38ecd0442259a6fa150d07ab 100644 --- a/interface/web/admin/lib/lang/ro_server_config.lng +++ b/interface/web/admin/lib/lang/ro_server_config.lng @@ -39,6 +39,11 @@ $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Mailbox Size Limit'; $wb['message_size_limit_txt'] = 'Message Size Limit'; $wb['ip_address_txt'] = 'IP Address'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng index 56c7e40059a858ff89d41c80aed078db9b1a69e9..d6f6c6e68370cfd101b2357da58fd4cbf7369ec2 100644 --- a/interface/web/admin/lib/lang/ro_system_config.lng +++ b/interface/web/admin/lib/lang/ro_system_config.lng @@ -27,7 +27,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/ru_directive_snippets.lng b/interface/web/admin/lib/lang/ru_directive_snippets.lng index cfa09a02fcb1ea396c0c8a7257ae673a31e281fa..120a962d7ff5934de3b41c91dd4a41c4a03aa3f6 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/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng index f3f5a47c7d907006a4f4f4a80e62b163d4484c16..8583ccd43464be391edbe9d720d72d68a313a666 100644 --- a/interface/web/admin/lib/lang/ru_server_config.lng +++ b/interface/web/admin/lib/lang/ru_server_config.lng @@ -37,6 +37,11 @@ $wb['relayhost_txt'] = 'Relay-хоÑÑ‚'; $wb['relayhost_user_txt'] = 'Логин Relay-хоÑта'; $wb['relayhost_password_txt'] = 'Пароль Relay-хоÑта'; $wb['reject_sender_login_mismatch_txt'] = 'Отклонить при неÑовпадении Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÐµÐ»Ñ Ð¸ логина'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Лимит объема почтового Ñщика'; $wb['message_size_limit_txt'] = 'Лимит размера ÑообщениÑ'; $wb['ip_address_txt'] = 'IP-адреÑ'; @@ -172,6 +177,8 @@ $wb['backup_mode_userzip'] = 'Делать резервные копии web Ñ„ $wb['backup_mode_rootgz'] = 'Делать резервные копии вÑех файлов в веб-каталог как корневой пользователь'; $wb['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(РазделÑйте RBL запÑтыми)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'ÐаÑтройки SSL'; $wb['permissions_txt'] = 'РазрешениÑ'; $wb['php_settings_txt'] = 'Параметры PHP'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng index c0da3d894a8ebcfb8c6121a8011cfb79273dbc67..4505ca2089d90807e5a64c0cd8424f77342dc872 100644 --- a/interface/web/admin/lib/lang/ru_system_config.lng +++ b/interface/web/admin/lib/lang/ru_system_config.lng @@ -20,7 +20,6 @@ $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)'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/se_directive_snippets.lng b/interface/web/admin/lib/lang/se_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng index 634c3655a76d2c7a32dac14b8906275d940f4349..ff44861126f5b25bb1b453c5169791a7e6c63bb3 100644 --- a/interface/web/admin/lib/lang/se_server_config.lng +++ b/interface/web/admin/lib/lang/se_server_config.lng @@ -38,6 +38,11 @@ $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['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Mailbox Size Limit'; $wb['message_size_limit_txt'] = 'Message Size Limit'; $wb['ip_address_txt'] = 'IP Address'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng index bf24b9852b8b275da9a8d8f7b143271bf7d760c8..3d29084a097bc06bcbcfc01052bacef53d466709 100644 --- a/interface/web/admin/lib/lang/se_system_config.lng +++ b/interface/web/admin/lib/lang/se_system_config.lng @@ -27,7 +27,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/sk_directive_snippets.lng b/interface/web/admin/lib/lang/sk_directive_snippets.lng index 0616afad8b6c76c9eb284f57a673f6c35d286310..071d6f4fed2e32c912693d79f87e31c2e9879090 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/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng index 50c8c0b4c9d0bac3c70cc96802c8d430ab0ab2e3..1efac9e6e66db15bfcf572e06e136a3bb52b55e4 100644 --- a/interface/web/admin/lib/lang/sk_server_config.lng +++ b/interface/web/admin/lib/lang/sk_server_config.lng @@ -40,6 +40,11 @@ $wb['relayhost_txt'] = 'Relayhost'; $wb['relayhost_user_txt'] = 'Relayhost uživateľ'; $wb['relayhost_password_txt'] = 'Relayhost heslo'; $wb['reject_sender_login_mismatch_txt'] = 'Reject sender and login mismatch'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $wb['mailbox_size_limit_txt'] = 'Limit ve?kosti poÅ¡tovej schránky'; $wb['message_size_limit_txt'] = 'Limit ve?kosti správy'; $wb['ip_address_txt'] = 'IP Adresa'; @@ -172,6 +177,8 @@ $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['realtime_blackhole_list_txt'] = 'Real-time Blackhole List'; $wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Settings'; $wb['permissions_txt'] = 'Permissions'; $wb['php_settings_txt'] = 'PHP Settings'; @@ -310,4 +317,6 @@ $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng index 2fdce03e691badf87b628a17e21c66ee2d50995d..54edd2de4a5562481cdf344dba86684550576ee3 100644 --- a/interface/web/admin/lib/lang/sk_system_config.lng +++ b/interface/web/admin/lib/lang/sk_system_config.lng @@ -27,7 +27,6 @@ $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'; @@ -95,4 +94,5 @@ $wb['active_txt'] = 'Aktive'; $wb['btn_save_txt'] = 'Save'; $wb['btn_cancel_txt'] = 'Cancel'; $wb['web_php_options_txt'] = 'PHP Handler (Apache only)'; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/lib/lang/tr_directive_snippets.lng b/interface/web/admin/lib/lang/tr_directive_snippets.lng index 448d4536723307c96f69f5a704e7b9a889072536..4c1cebea4e503d632e193013817c5004d5fb7685 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/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng index 09aa3adf2d9bd484cd242db73f572a3b23230872..25380413fa36a2ad8d269c3642b45e2fd35bb004 100644 --- a/interface/web/admin/lib/lang/tr_server_config.lng +++ b/interface/web/admin/lib/lang/tr_server_config.lng @@ -51,6 +51,11 @@ $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['reject_sender_login_mismatch_txt'] = 'Gönderen ile Oturum Açmış Kullanıcı EÅŸleÅŸmiyorsa Reddedilsin'; +$wb['reject_unknown_txt'] = 'Reject unknown hostnames'; +$wb['tooltip_reject_unknown_txt'] = 'Requires hostnames to pass DNS checks. Not checked for authenticated users.'; +$wb['reject_unknown_helo_txt'] = 'Reject unknown helo hostnames'; +$wb['reject_unknown_client_txt'] = 'Reject unknown client hostnames'; +$wb['reject_unknown_client_helo_txt'] = 'Reject unknown helo and client hostnames'; $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'; @@ -179,6 +184,8 @@ $wb['connect_userid_to_webid_txt'] = 'Linux kullanıcıkodu webkoduna baÄŸlansı $wb['connect_userid_to_webid_start_txt'] = 'BaÄŸlanacak kullanıcıkodu/webkodu için baÅŸlangıç kodu'; $wb['realtime_blackhole_list_txt'] = 'Gerçek Zamanlı Karadelik Listesi (RBL)'; $wb['realtime_blackhole_list_note_txt'] = '(RBL adlarını virgül ile ayırarak yazın)'; +$wb['stress_adaptive_txt'] = 'Adapt to temporary load spikes'; +$wb['tooltip_stress_adaptive_txt'] = 'Enables Postfix stress-adaptive behavior.'; $wb['ssl_settings_txt'] = 'SSL Ayarları'; $wb['permissions_txt'] = 'Ä°zinler'; $wb['php_settings_txt'] = 'PHP Ayarları'; @@ -304,4 +311,6 @@ $wb['php_default_name_error_empty'] = 'Varsayılan PHP sürümü açıklaması b $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'; +$wb["jailkit_chroot_authorized_keys_template_txt"] = 'Jailkit authorized_keys template'; +$wb['jailkit_chroot_authorized_keys_template_error_regex'] = 'Invalid jaikit chroot authorized_keys template file.'; ?> diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng index afc8a9239f2df64b2b9ca3dabe6d10ca01ba44d7..ad9c01bc588efcecfd815e8a034b000cf4e35bd6 100644 --- a/interface/web/admin/lib/lang/tr_system_config.lng +++ b/interface/web/admin/lib/lang/tr_system_config.lng @@ -38,7 +38,6 @@ $wb['use_domain_module_hint'] = 'Bu modül kullanıldığında, müşteriler yal $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'; @@ -89,4 +88,5 @@ $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"; +$wb['client_protection_txt'] = 'Client protection'; ?> diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index 5214d14037ac98987929feaa713527abd87e2991..339ac2f2f5605d9b6ad0ccb2d2d462113aee3b4f 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -79,7 +79,7 @@ class page_action extends tform_actions { function onShowEdit() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); if($app->tform->errorMessage == '') { $app->uses('ini_parser,getconf'); @@ -115,7 +115,7 @@ class page_action extends tform_actions { function onUpdateSave($sql) { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); $app->uses('ini_parser,getconf'); if($conf['demo_mode'] != true) { diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php index 04db6717b0d3eb37aca9ae625d3d1a8154a0c982..941f6e0bbe90adbad455c37b270115477fcb666f 100644 --- a/interface/web/admin/system_config_edit.php +++ b/interface/web/admin/system_config_edit.php @@ -56,7 +56,7 @@ class page_action extends tform_actions { function onShowEdit() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); if($app->tform->errorMessage == '') { $app->uses('ini_parser,getconf'); @@ -96,7 +96,7 @@ class page_action extends tform_actions { if($available_dashlets_txt == '') $available_dashlets_txt = '------'; $app->tpl->setVar("available_dashlets_txt", $available_dashlets_txt); - + // Logo $sys_ini = $app->db->queryOneRecord("SELECT * FROM sys_ini WHERE sysini_id = ?", $this->id); if($sys_ini['custom_logo'] != ''){ @@ -133,7 +133,7 @@ class page_action extends tform_actions { function onUpdateSave($sql) { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); $app->uses('ini_parser,getconf'); $section = $app->tform->getCurrentTab(); @@ -156,6 +156,13 @@ class page_action extends tform_actions { */ $new_config = $app->tform->encode($this->dataRecord, $section); + + if($section == 'sites' && $new_config['client_protection'] != 'y' && $server_config_array['sites']['client_protection'] == 'y') { + $app->db->query("UPDATE `web_domain` SET `sys_userid` = (select `userid` FROM `sys_user` WHERE `default_group` = `web_domain`.`sys_groupid`), `sys_perm_group` = 'riud' WHERE `added_by` = 'admin' and sys_groupid > 0"); + } elseif($section == 'sites' && $new_config['client_protection'] != 'n' && $server_config_array['sites']['client_protection'] == 'n') { + $app->db->query("UPDATE `web_domain` SET `sys_userid` = 1, `sys_perm_group` = 'ru' WHERE `added_by` = 'admin'"); + } + if($section == 'sites' && $new_config['vhost_subdomains'] != 'y' && $server_config_array['sites']['vhost_subdomains'] == 'y') { // check for existing vhost subdomains, if found the mode cannot be disabled $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_domain` WHERE `type` = 'vhostsubdomain'"); @@ -198,13 +205,13 @@ class page_action extends tform_actions { "FROM dns_soa"; $app->db->query($sql); } - + //die(print_r($_FILES)); // Logo /* if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'])){ //print_r($_FILES); - + $path= $_FILES['file']['tmp_name']; $type = pathinfo($path, PATHINFO_EXTENSION); $data = file_get_contents($path); diff --git a/interface/web/admin/templates/directive_snippets_edit.htm b/interface/web/admin/templates/directive_snippets_edit.htm index ee4d2ab3cd84c6ce0a9f75e99d474f65cdfd3e54..b01e7e255c82007a9c974a794a84a0907ffc46d6 100644 --- a/interface/web/admin/templates/directive_snippets_edit.htm +++ b/interface/web/admin/templates/directive_snippets_edit.htm @@ -11,8 +11,8 @@ <div class="form-group"> <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> <br /> + Nginx {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOMAIN}</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>, <a href="javascript:void(0);" class="addPlaceholder">{DOMAIN}</a> <br /> PHP {tmpl_var name='variables_txt'}: <a href="javascript:void(0);" class="addPlaceholder">{WEBROOT}</a> </div></tmpl_if> </div> @@ -36,22 +36,25 @@ {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'}"> - + <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/directive_snippets_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/directive_snippets_list.php">{tmpl_var name='btn_cancel_txt'}</button> </div></div> <script language="JavaScript" type="text/javascript"> - + if(jQuery('#type').val() == 'nginx'){ jQuery('.nginx:hidden').show(); } else { jQuery('.nginx:visible').hide(); } - + if (jQuery('#type').val() != 'nginx' && jQuery('#type').val() != 'apache') { jQuery('#customer_viewable').closest('div.ctrlHolder:visible').hide(); jQuery('.php:visible').hide(); @@ -59,7 +62,7 @@ jQuery('#customer_viewable').closest('div.ctrlHolder:hidden').show(); jQuery('.php:hidden').show(); } - + jQuery('#type').change(function(){ if (jQuery(this).val() != 'nginx' && jQuery(this).val() != 'apache') { jQuery('#customer_viewable').closest('div.ctrlHolder:visible').hide(); @@ -74,5 +77,5 @@ jQuery('.nginx:visible').hide(); } }); - + </script> diff --git a/interface/web/admin/templates/server_config_jailkit_edit.htm b/interface/web/admin/templates/server_config_jailkit_edit.htm index b7a749147654c6fab6105400cafb7ec691d980c8..4b7028bd3b1449dd7eea31592af54b8234eac230 100644 --- a/interface/web/admin/templates/server_config_jailkit_edit.htm +++ b/interface/web/admin/templates/server_config_jailkit_edit.htm @@ -17,6 +17,9 @@ <div class="form-group"> <label for="jailkit_chroot_cron_programs" class="col-sm-3 control-label">{tmpl_var name='jailkit_chroot_cron_programs_txt'}</label> <div class="col-sm-9"><input type="text" name="jailkit_chroot_cron_programs" id="jailkit_chroot_cron_programs" value="{tmpl_var name='jailkit_chroot_cron_programs'}" class="form-control" /></div></div> + <div class="form-group"> + <label for="jailkit_chroot_authorized_keys_template" class="col-sm-3 control-label">{tmpl_var name='jailkit_chroot_authorized_keys_template_txt'}</label> + <div class="col-sm-9"><input type="text" name="jailkit_chroot_authorized_keys_template" id="jailkit_chroot_authorized_keys_template" value="{tmpl_var name='jailkit_chroot_authorized_keys_template'}" class="form-control" /></div></div> <input type="hidden" name="id" value="{tmpl_var name='id'}"> diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm index 6ba37104ef111f91d555c2fd8610e88f7dae6660..1e63cecca8b4a215ccf34e999576d513a3261a4b 100644 --- a/interface/web/admin/templates/server_config_mail_edit.htm +++ b/interface/web/admin/templates/server_config_mail_edit.htm @@ -99,6 +99,24 @@ <label for="message_size_limit" class="col-sm-3 control-label">{tmpl_var name='message_size_limit_txt'}</label> <div class="col-sm-6"><input type="text" name="message_size_limit" id="message_size_limit" value="{tmpl_var name='message_size_limit'}" class="form-control" /></div><div class="col-sm-3 input-sm"> MB </div></div> + <div class="form-group"> + <label for="realtime_blackhole_list" class="col-sm-3 control-label">{tmpl_var name='realtime_blackhole_list_txt'}</label> + <div class="col-sm-6"><input type="text" name="realtime_blackhole_list" id="realtime_blackhole_list" value="{tmpl_var name='realtime_blackhole_list'}" class="form-control" /></div><div class="col-sm-3 input-sm"> {tmpl_var name='realtime_blackhole_list_note_txt'} + </div></div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='reject_unknown_txt'}</label> + <div class="col-sm-9"><a href="#" data-toggle="tooltip" title="{tmpl_var name='tooltip_reject_unknown_txt'}"> + <select name="reject_unknown" id="reject_unknown" class="form-control"> + {tmpl_var name='reject_unknown'} + </select></a> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='stress_adaptive_txt'}</label> + <div class="col-sm-9"> + <a href="#" data-toggle="tooltip" title="{tmpl_var name='tooltip_stress_adaptive_txt'}">{tmpl_var name="stress_adaptive"}</a> + </div> + </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='mailbox_quota_stats_txt'}</label> <div class="col-sm-9"> @@ -106,10 +124,6 @@ </div> </div> <div class="form-group"> - <label for="realtime_blackhole_list" class="col-sm-3 control-label">{tmpl_var name='realtime_blackhole_list_txt'}</label> - <div class="col-sm-6"><input type="text" name="realtime_blackhole_list" id="realtime_blackhole_list" value="{tmpl_var name='realtime_blackhole_list'}" class="form-control" /></div><div class="col-sm-3 input-sm"> {tmpl_var name='realtime_blackhole_list_note_txt'} - </div></div> - <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='overquota_notify_admin_txt'}</label> <div class="col-sm-9"> {tmpl_var name='overquota_notify_admin'} diff --git a/interface/web/admin/templates/system_config_misc_edit.htm b/interface/web/admin/templates/system_config_misc_edit.htm index 31fafdc5453b9d403718f482212d441413d652c4..356d2e1b252e6803a3dd94c6f32f9f3c51e912f0 100644 --- a/interface/web/admin/templates/system_config_misc_edit.htm +++ b/interface/web/admin/templates/system_config_misc_edit.htm @@ -1,204 +1,229 @@ - <!-- - <div class="form-group"> - <label for="file" class="col-sm-3 control-label">{tmpl_var name='logo_txt'}</label> - <div class="col-sm-3 col-text"><input name="file" id="file" size="30" type="file" class="fileUpload" /></div><div class="col-sm-6"><button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" id="start_upload">{tmpl_var name='upload_txt'}</button></div> - </div> - <div class="form-group"> - <label for="dashboard_atom_url_admin" class="col-sm-3 control-label">{tmpl_var name='used_logo_txt'}</label> - <div class="col-sm-9" id="used_logo">{tmpl_var name='used_logo'}</div> - </div>--> - <div class="form-group"> - <label for="page_title" 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'}" size="" maxlength="" class="form-control" /></div></div> - <div class="form-group"> - <label for="page_title" class="col-sm-3 control-label">{tmpl_var name='custom_login_text_txt'}</label> - <div class="col-sm-9"><input type="text" name="custom_login_text" id="custom_login_text" value="{tmpl_var name='custom_login_text'}" size="" maxlength="" class="form-control" /></div></div> - <div class="form-group"> - <label for="page_title" class="col-sm-3 control-label">{tmpl_var name='custom_login_link_txt'}</label> - <div class="col-sm-9"><input type="text" name="custom_login_link" id="custom_login_link" value="{tmpl_var name='custom_login_link'}" size="" maxlength="" class="form-control" /></div></div> - <div class="form-group"> - <label for="dashboard_atom_url_admin" class="col-sm-3 control-label">{tmpl_var name='dashboard_atom_url_admin_txt'}</label> - <div class="col-sm-9"><input type="text" name="dashboard_atom_url_admin" id="dashboard_atom_url_admin" value="{tmpl_var name='dashboard_atom_url_admin'}" size="" maxlength="" class="form-control" /></div></div> - <div class="form-group"> - <label for="dashboard_atom_url_reseller" class="col-sm-3 control-label">{tmpl_var name='dashboard_atom_url_reseller_txt'}</label> - <div class="col-sm-9"><input type="text" name="dashboard_atom_url_reseller" id="dashboard_atom_url_reseller" value="{tmpl_var name='dashboard_atom_url_reseller'}" size="" maxlength="" class="form-control" /></div></div> - <div class="form-group"> - <label for="dashboard_atom_url_client" class="col-sm-3 control-label">{tmpl_var name='dashboard_atom_url_client_txt'}</label> - <div class="col-sm-9"><input type="text" name="dashboard_atom_url_client" id="dashboard_atom_url_client" value="{tmpl_var name='dashboard_atom_url_client'}" size="" maxlength="" class="form-control" /></div></div> - <div class="form-group"> - <label for="monitor_key" class="col-sm-3 control-label">{tmpl_var name='monitor_key_txt'}</label> - <div class="col-sm-9"><input type="text" name="monitor_key" id="monitor_key" value="{tmpl_var name='monitor_key'}" size="" maxlength="" class="form-control" /></div></div> - <div class="form-group"> - <label for="admin_dashlets_left" class="col-sm-3 control-label">{tmpl_var name='admin_dashlets_left_txt'}</label> - <div class="col-sm-9"><input type="text" name="admin_dashlets_left" id="admin_dashlets_left" value="{tmpl_var name='admin_dashlets_left'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} - </div></div> - <div class="form-group"> - <label for="admin_dashlets_right" class="col-sm-3 control-label">{tmpl_var name='admin_dashlets_right_txt'}</label> - <div class="col-sm-9"><input type="text" name="admin_dashlets_right" id="admin_dashlets_right" value="{tmpl_var name='admin_dashlets_right'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} - </div></div> - <div class="form-group"> - <label for="reseller_dashlets_left" class="col-sm-3 control-label">{tmpl_var name='reseller_dashlets_left_txt'}</label> - <div class="col-sm-9"><input type="text" name="reseller_dashlets_left" id="reseller_dashlets_left" value="{tmpl_var name='reseller_dashlets_left'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} - </div></div> - <div class="form-group"> - <label for="reseller_dashlets_right" class="col-sm-3 control-label">{tmpl_var name='reseller_dashlets_right_txt'}</label> - <div class="col-sm-9"><input type="text" name="reseller_dashlets_right" id="reseller_dashlets_right" value="{tmpl_var name='reseller_dashlets_right'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} - </div></div> - <div class="form-group"> - <label for="client_dashlets_left" class="col-sm-3 control-label">{tmpl_var name='client_dashlets_left_txt'}</label> - <div class="col-sm-9"><input type="text" name="client_dashlets_left" id="client_dashlets_left" value="{tmpl_var name='client_dashlets_left'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} - </div></div> - <div class="form-group"> - <label for="client_dashlets_right" class="col-sm-3 control-label">{tmpl_var name='client_dashlets_right_txt'}</label> - <div class="col-sm-9"><input type="text" name="client_dashlets_right" id="client_dashlets_right" value="{tmpl_var name='client_dashlets_right'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} - </div></div> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='tab_change_discard_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='tab_change_discard'} - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='tab_change_warning_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='tab_change_warning'}<br/>{tmpl_var name='tab_change_warning_note_txt'} - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='use_loadindicator_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='use_loadindicator'}<br/>{tmpl_var name='f5_to_reload_js_txt'} - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='use_combobox_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='use_combobox'}<br/>{tmpl_var name='f5_to_reload_js_txt'} - </div> - </div> - <div class="form-group"> - <label for="customer_no_template" class="col-sm-3 control-label">{tmpl_var name='customer_no_template_txt'}</label> - <div class="col-sm-9"><input type="text" name="customer_no_template" id="customer_no_template" value="{tmpl_var name='customer_no_template'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="customer_no_start" class="col-sm-3 control-label">{tmpl_var name='customer_no_start_txt'}</label> - <div class="col-sm-9"><input type="text" name="customer_no_start" id="customer_no_start" value="{tmpl_var name='customer_no_start'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="customer_no_counter" class="col-sm-3 control-label">{tmpl_var name='customer_no_counter_txt'}</label> - <div class="col-sm-9"><input type="text" name="customer_no_counter" id="customer_no_counter" value="{tmpl_var name='customer_no_counter'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="session_timeout" class="col-sm-3 control-label">{tmpl_var name='session_timeout_txt'}</label> - <div class="col-sm-9"><input type="text" name="session_timeout" id="session_timeout" value="{tmpl_var name='session_timeout'}" class="form-control" /></div></div> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='session_allow_endless_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='session_allow_endless'} - </div> - </div> - <div class="form-group"> - <label for="min_password_length" class="col-sm-3 control-label">{tmpl_var name='min_password_length_txt'}</label> - <div class="col-sm-9"><input type="text" name="min_password_length" id="min_password_length" value="{tmpl_var name='min_password_length'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="min_password_strength" class="col-sm-3 control-label">{tmpl_var name='min_password_strength_txt'}</label> - <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> - <div class="col-sm-9"> - {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> - </tmpl_if> - <tmpl_if name="error"> - <div id="errorMsg"><h3><tmpl_var name="error_txt"></h3><ol><tmpl_var name="error"></ol></div> - </tmpl_if> - - <input type="hidden" name="id" id="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/system_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_list.php">{tmpl_var name='btn_cancel_txt'}</button> - </div></div> +<!-- + <div class="form-group"> + <label for="file" class="col-sm-3 control-label">{tmpl_var name='logo_txt'}</label> + <div class="col-sm-3 col-text"><input name="file" id="file" size="30" type="file" class="fileUpload" /></div><div class="col-sm-6"><button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" id="start_upload">{tmpl_var name='upload_txt'}</button></div> + </div> + <div class="form-group"> + <label for="dashboard_atom_url_admin" class="col-sm-3 control-label">{tmpl_var name='used_logo_txt'}</label> + <div class="col-sm-9" id="used_logo">{tmpl_var name='used_logo'}</div> + </div>--> +<div class="form-group"> + <label for="page_title" 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'}" size="" maxlength="" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="page_title" class="col-sm-3 control-label">{tmpl_var name='custom_login_text_txt'}</label> + <div class="col-sm-9"><input type="text" name="custom_login_text" id="custom_login_text" value="{tmpl_var name='custom_login_text'}" size="" maxlength="" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="page_title" class="col-sm-3 control-label">{tmpl_var name='custom_login_link_txt'}</label> + <div class="col-sm-9"><input type="text" name="custom_login_link" id="custom_login_link" value="{tmpl_var name='custom_login_link'}" size="" maxlength="" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="dashboard_atom_url_admin" class="col-sm-3 control-label">{tmpl_var name='dashboard_atom_url_admin_txt'}</label> + <div class="col-sm-9"><input type="text" name="dashboard_atom_url_admin" id="dashboard_atom_url_admin" value="{tmpl_var name='dashboard_atom_url_admin'}" size="" maxlength="" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="dashboard_atom_url_reseller" class="col-sm-3 control-label">{tmpl_var name='dashboard_atom_url_reseller_txt'}</label> + <div class="col-sm-9"><input type="text" name="dashboard_atom_url_reseller" id="dashboard_atom_url_reseller" value="{tmpl_var name='dashboard_atom_url_reseller'}" size="" maxlength="" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="dashboard_atom_url_client" class="col-sm-3 control-label">{tmpl_var name='dashboard_atom_url_client_txt'}</label> + <div class="col-sm-9"><input type="text" name="dashboard_atom_url_client" id="dashboard_atom_url_client" value="{tmpl_var name='dashboard_atom_url_client'}" size="" maxlength="" class="form-control" /></div> +</div> +<label for="admin_dashlets_left" class="col-sm-3 control-label">{tmpl_var name='admin_dashlets_left_txt'}</label> +<div class="col-sm-9"><input type="text" name="admin_dashlets_left" id="admin_dashlets_left" value="{tmpl_var name='admin_dashlets_left'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} +</div> +</div> +<div class="form-group"> + <label for="admin_dashlets_right" class="col-sm-3 control-label">{tmpl_var name='admin_dashlets_right_txt'}</label> + <div class="col-sm-9"><input type="text" name="admin_dashlets_right" id="admin_dashlets_right" value="{tmpl_var name='admin_dashlets_right'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} + </div> +</div> +<div class="form-group"> + <label for="reseller_dashlets_left" class="col-sm-3 control-label">{tmpl_var name='reseller_dashlets_left_txt'}</label> + <div class="col-sm-9"><input type="text" name="reseller_dashlets_left" id="reseller_dashlets_left" value="{tmpl_var name='reseller_dashlets_left'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} + </div> +</div> +<div class="form-group"> + <label for="reseller_dashlets_right" class="col-sm-3 control-label">{tmpl_var name='reseller_dashlets_right_txt'}</label> + <div class="col-sm-9"><input type="text" name="reseller_dashlets_right" id="reseller_dashlets_right" value="{tmpl_var name='reseller_dashlets_right'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} + </div> +</div> +<div class="form-group"> + <label for="client_dashlets_left" class="col-sm-3 control-label">{tmpl_var name='client_dashlets_left_txt'}</label> + <div class="col-sm-9"><input type="text" name="client_dashlets_left" id="client_dashlets_left" value="{tmpl_var name='client_dashlets_left'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} + </div> +</div> +<div class="form-group"> + <label for="client_dashlets_right" class="col-sm-3 control-label">{tmpl_var name='client_dashlets_right_txt'}</label> + <div class="col-sm-9"><input type="text" name="client_dashlets_right" id="client_dashlets_right" value="{tmpl_var name='client_dashlets_right'}" size="" maxlength="" class="form-control" />{tmpl_var name='available_dashlets_note_txt'} {tmpl_var name="available_dashlets_txt"} + </div> +</div> +<div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='tab_change_discard_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='tab_change_discard'} + </div> +</div> +<div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='tab_change_warning_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='tab_change_warning'}<br/>{tmpl_var name='tab_change_warning_note_txt'} + </div> +</div> +<div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='use_loadindicator_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='use_loadindicator'}<br/>{tmpl_var name='f5_to_reload_js_txt'} + </div> +</div> +<div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='use_combobox_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='use_combobox'}<br/>{tmpl_var name='f5_to_reload_js_txt'} + </div> +</div> +<div class="form-group"> + <label for="customer_no_template" class="col-sm-3 control-label">{tmpl_var name='customer_no_template_txt'}</label> + <div class="col-sm-9"><input type="text" name="customer_no_template" id="customer_no_template" value="{tmpl_var name='customer_no_template'}" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="customer_no_start" class="col-sm-3 control-label">{tmpl_var name='customer_no_start_txt'}</label> + <div class="col-sm-9"><input type="text" name="customer_no_start" id="customer_no_start" value="{tmpl_var name='customer_no_start'}" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="customer_no_counter" class="col-sm-3 control-label">{tmpl_var name='customer_no_counter_txt'}</label> + <div class="col-sm-9"><input type="text" name="customer_no_counter" id="customer_no_counter" value="{tmpl_var name='customer_no_counter'}" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="session_timeout" class="col-sm-3 control-label">{tmpl_var name='session_timeout_txt'}</label> + <div class="col-sm-9"><input type="text" name="session_timeout" id="session_timeout" value="{tmpl_var name='session_timeout'}" class="form-control" /></div> +</div> +<div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='session_allow_endless_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='session_allow_endless'} + </div> +</div> +<div class="form-group"> + <label for="min_password_length" class="col-sm-3 control-label">{tmpl_var name='min_password_length_txt'}</label> + <div class="col-sm-9"><input type="text" name="min_password_length" id="min_password_length" value="{tmpl_var name='min_password_length'}" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="min_password_strength" class="col-sm-3 control-label">{tmpl_var name='min_password_strength_txt'}</label> + <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> + <div class="col-sm-9"> + {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> +</tmpl_if> +<tmpl_if name="error"> + <div id="errorMsg"> + <h3> + <tmpl_var name="error_txt"> + </h3> + <ol> + <tmpl_var name="error"> + </ol> + </div> +</tmpl_if> +<input type="hidden" name="id" id="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/system_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_list.php">{tmpl_var name='btn_cancel_txt'}</button> + </div> +</div> <!--<script language="JavaScript" type="text/javascript"> + var defaultLogo = '{tmpl_var name='default_logo'}'; + $(document).on('click', '#del_custom_logo', function(){ + delCustomLogo(); + }); - var defaultLogo = '{tmpl_var name='default_logo'}'; - $(document).on('click', '#del_custom_logo', function(){ - delCustomLogo(); - }); - - function delCustomLogo() { - var id = jQuery('input[name="id"]').val(); - - jQuery.getJSON('admin/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {'id': id, 'type': "delcustomlogo"}, function(data) { - //console.log(data); - $('#used_logo').html(defaultLogo); - $('#logo').css({ "background": "url("+data.data+") no-repeat", "width": data.width, "height": data.height }); - }); - } - - // Variable to store your files - var files; - // Add events - $('input[type="file"]').on('change', prepareUpload); - $('#start_upload').on('click', uploadFiles); - - // Grab the files and set them to our variable - function prepareUpload(event){ - files = event.target.files; - } - - // Catch the form submit and upload the files - function uploadFiles(event){ - event.stopPropagation(); // Stop stuff happening - event.preventDefault(); // Totally stop stuff happening - - var id = jQuery('input[name="id"]').val(); - - // Create a formdata object and add the files - var data = new FormData(); - $.each(files, function(key, value){ - data.append(key, value); - }); - - $.ajax({ - url: 'admin/ajax_get_json.php?id='+id+'&type=uploadfile', - type: 'POST', - data: data, - cache: false, - dataType: 'json', - processData: false, // Don't process the files - contentType: false, // Set content type to false as jQuery will tell the server its a query string request - success: function(data, textStatus, jqXHR){ - if(typeof data.error === 'undefined'){ - // Success so call function to process the form - //console.log(data); - $('#used_logo').html('<img src="'+data.data+'" /> <a href="#" class="btn btn-default formbutton-danger formbutton-narrow" style="margin:5px" id="del_custom_logo"><span class="icon icon-delete"></span></a>'); - $('#logo').css({ "background": "url("+data.data+") no-repeat", "width": data.width, "height": data.height }); - } else { - // Handle errors here - //console.log(data); - } - }, - error: function(jqXHR, textStatus, errorThrown){ - // Handle errors here - //console.log(data); - } - }); - } - -</script>--> + function delCustomLogo() { + var id = jQuery('input[name="id"]').val(); + + jQuery.getJSON('admin/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {'id': id, 'type': "delcustomlogo"}, function(data) { + //console.log(data); + $('#used_logo').html(defaultLogo); + $('#logo').css({ "background": "url("+data.data+") no-repeat", "width": data.width, "height": data.height }); + }); + } + + // Variable to store your files + var files; + // Add events + $('input[type="file"]').on('change', prepareUpload); + $('#start_upload').on('click', uploadFiles); + + // Grab the files and set them to our variable + function prepareUpload(event){ + files = event.target.files; + } + + // Catch the form submit and upload the files + function uploadFiles(event){ + event.stopPropagation(); // Stop stuff happening + event.preventDefault(); // Totally stop stuff happening + + var id = jQuery('input[name="id"]').val(); + + // Create a formdata object and add the files + var data = new FormData(); + $.each(files, function(key, value){ + data.append(key, value); + }); + + $.ajax({ + url: 'admin/ajax_get_json.php?id='+id+'&type=uploadfile', + type: 'POST', + data: data, + cache: false, + dataType: 'json', + processData: false, // Don't process the files + contentType: false, // Set content type to false as jQuery will tell the server its a query string request + success: function(data, textStatus, jqXHR){ + if(typeof data.error === 'undefined'){ + // Success so call function to process the form + //console.log(data); + $('#used_logo').html('<img src="'+data.data+'" /> <a href="#" class="btn btn-default formbutton-danger formbutton-narrow" style="margin:5px" id="del_custom_logo"><span class="icon icon-delete"></span></a>'); + $('#logo').css({ "background": "url("+data.data+") no-repeat", "width": data.width, "height": data.height }); + } else { + // Handle errors here + //console.log(data); + } + }, + error: function(jqXHR, textStatus, errorThrown){ + // Handle errors here + //console.log(data); + } + }); + } + + </script>--> diff --git a/interface/web/admin/templates/system_config_sites_edit.htm b/interface/web/admin/templates/system_config_sites_edit.htm index 82576d5e53308b0e2bac0e7e89dc5b9c2a481efe..c84b50e6b81ecb3304a4ef68bf8154013545ae89 100644 --- a/interface/web/admin/templates/system_config_sites_edit.htm +++ b/interface/web/admin/templates/system_config_sites_edit.htm @@ -26,6 +26,12 @@ <div class="form-group"> <label for="webftp_url" class="col-sm-3 control-label">{tmpl_var name='webftp_url_txt'}</label> <div class="col-sm-9"><input type="text" name="webftp_url" id="webftp_url" value="{tmpl_var name='webftp_url'}" class="form-control" /></div></div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='client_protection_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='client_protection'} + </div> + </div> <div class="form-group"> <label class="col-sm-3 control-label">{tmpl_var name='vhost_subdomains_txt'}</label> <div class="col-sm-9"> @@ -84,10 +90,10 @@ <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"> <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="admin/system_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/users_list.php">{tmpl_var name='btn_cancel_txt'}</button> diff --git a/interface/web/client/domain_edit.php b/interface/web/client/domain_edit.php index 094e1899be3b8b7eb16f0c1b322d092884d5e851..af7b900b9109a475b20b238c4060f4d5135c635f 100644 --- a/interface/web/client/domain_edit.php +++ b/interface/web/client/domain_edit.php @@ -67,7 +67,7 @@ class page_action extends tform_actions { function onShowEnd() { global $app, $conf, $wb; - + if($_SESSION["s"]["user"]["typ"] != 'admin' && $this->id == 0) { if(!$app->tform->checkClientLimit('limit_domainmodule')) { $app->uses('ini_parser,getconf'); @@ -100,7 +100,7 @@ class page_action extends tform_actions { $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); $client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); $client = $app->functions->htmlentities($client); - + // Fill the client select field $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ? ORDER BY client.company_name, client.contact_name, sys_group.name"; //die($sql); diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php index 17b9e623b66cda763d4db8561d101b5f33fcad8d..523507b108a981ad24c6315488a45479c4e955c9 100644 --- a/interface/web/client/form/client.tform.php +++ b/interface/web/client/form/client.tform.php @@ -985,42 +985,49 @@ $form["tabs"]['limits'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_muc', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_anon' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_anon', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_vjud' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_vjud', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_proxy' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_proxy', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_status' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_status', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_pastebin' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_pastebin', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_httparchive' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_httparchive', 'value' => array(0 => 'n', 1 => 'y') ), 'default_webserver' => array ( @@ -1087,67 +1094,77 @@ $form["tabs"]['limits'] = array ( ), 'default' => '', 'separator' => ',', - 'valuelimit' => 'system:sites:web_php_options', + 'valuelimit' => 'system:sites:web_php_options;client: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 ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_cgi', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_ssi' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_ssi', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_perl' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_perl', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_ruby' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_ruby', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_python' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_python', 'value' => array(0 => 'n', 1 => 'y') ), 'force_suexec' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'y', + 'valuelimit' => 'client:force_suexec', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_hterror' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_hterror', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_wildcard' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_wildcard', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_ssl' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_ssl', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_ssl_letsencrypt' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_ssl_letsencrypt', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_web_aliasdomain' => array ( @@ -1235,12 +1252,14 @@ $form["tabs"]['limits'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'y', + 'valuelimit' => 'client:limit_backup', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_directive_snippets' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_directive_snippets', 'value' => array(0 => 'n', 1 => 'y') ), 'default_dnsserver' => array ( @@ -1426,6 +1445,7 @@ $form["tabs"]['limits'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', + 'valuelimit' => 'client:limit_cron_type', 'value' => array('full' => 'Full Cron', 'chrooted' => 'Chrooted Cron', 'url' => 'URL Cron') ), 'limit_cron_frequency' => array ( @@ -1479,6 +1499,7 @@ $form["tabs"]['limits'] = array ( 'keyfield'=> 'template_id', 'valuefield'=> 'template_name' ), + 'valuelimit' => 'client:limit_openvz_vm_template_id', 'value' => array(0 => ' ') ), 'limit_aps' => array ( diff --git a/interface/web/client/form/client_template.tform.php b/interface/web/client/form/client_template.tform.php index 1da5cdafcd845b83401eeda28b0ceb7a00d2f0de..4a3405bbe5f622a8fce3328a3d16156626269021 100644 --- a/interface/web/client/form/client_template.tform.php +++ b/interface/web/client/form/client_template.tform.php @@ -401,42 +401,49 @@ $form["tabs"]['limits'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_muc', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_anon' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_anon', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_vjud' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_vjud', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_proxy' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_proxy', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_status' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_status', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_pastebin' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_pastebin', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_xmpp_httparchive' => array( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_xmpp_httparchive', 'value' => array(0 => 'n', 1 => 'y') ),/* 'default_webserver' => array ( @@ -495,67 +502,77 @@ $form["tabs"]['limits'] = array ( 'formtype' => 'CHECKBOXARRAY', 'default' => '', 'separator' => ',', - 'valuelimit' => 'system:sites:web_php_options', + 'valuelimit' => 'system:sites:web_php_options;client: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 ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_cgi', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_ssi' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_ssi', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_perl' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_perl', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_ruby' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_ruby', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_python' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_python', 'value' => array(0 => 'n', 1 => 'y') ), 'force_suexec' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'y', + 'valuelimit' => 'client:force_suexec', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_hterror' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_hterror', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_wildcard' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_wildcard', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_ssl' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_ssl', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_ssl_letsencrypt' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_ssl_letsencrypt', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_web_aliasdomain' => array ( @@ -646,12 +663,14 @@ $form["tabs"]['limits'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'y', + 'valuelimit' => 'client:limit_backup', 'value' => array(0 => 'n', 1 => 'y') ), 'limit_directive_snippets' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'CHECKBOX', 'default' => 'n', + 'valuelimit' => 'client:limit_directive_snippets', 'value' => array(0 => 'n', 1 => 'y') ),/* 'default_dnsserver' => array ( @@ -830,6 +849,7 @@ $form["tabs"]['limits'] = array ( 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', + 'valuelimit' => 'client:limit_cron_type', 'value' => array('full' => 'Full Cron', 'chrooted' => 'Chrooted Cron', 'url' => 'URL Cron') ), 'limit_cron_frequency' => array ( @@ -883,6 +903,7 @@ $form["tabs"]['limits'] = array ( 'keyfield'=> 'template_id', 'valuefield'=> 'template_name' ), + 'valuelimit' => 'client:limit_openvz_vm_template_id', 'value' => array(0 => ' ') ), 'limit_aps' => array ( diff --git a/interface/web/dashboard/dashlets/mailquota.php b/interface/web/dashboard/dashlets/mailquota.php index 4629d6a4630c23bea7fe6d71a3846ca76667da6d..a9434e58eaac846087c77738d9d131ebe4d51abe 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 dfb82d5c242bbe6ad8699e97db26855e1d378829..3fd5adbb85c5843bd51646304cb071f54f1eda33 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']); diff --git a/interface/web/dns/dns_soa_edit.php b/interface/web/dns/dns_soa_edit.php index ec5ba67c79de4e675647ab21ea1ba1b823118ce2..e17571e73612e8db511c303479aa3c87aed0ae8c 100644 --- a/interface/web/dns/dns_soa_edit.php +++ b/interface/web/dns/dns_soa_edit.php @@ -296,12 +296,17 @@ function onSubmit() { $this->dataRecord["xfer"] = preg_replace('/\s+/', '', $this->dataRecord["xfer"]); $this->dataRecord["also_notify"] = preg_replace('/\s+/', '', $this->dataRecord["also_notify"]); + + if(isset($this->dataRecord['dnssec_wanted']) && $this->dataRecord['dnssec_wanted'] == 'Y' && $this->dataRecord['dnssec_algo'] == '') $this->dataRecord['dnssec_algo'] = 'ECDSAP256SHA256'; //* Check if a secondary zone with the same name already exists $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_slave WHERE origin = ? AND server_id = ?", $this->dataRecord["origin"], $this->dataRecord["server_id"]); if($tmp["number"] > 0) { $app->error($app->tform->wordbook["origin_error_unique"]); } + + //* server_id must be > 0 + if(isset($this->dataRecord["server_id"]) && $this->dataRecord["server_id"] < 1) $app->tform->errorMessage .= $app->lng("server_id_0_error_txt"); } parent::onSubmit(); } diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php index 91b2307dc5126dc3650a1f3a38a754ea135151e9..b2320dc6bf98466d0cb6726870665ffb06a1e41d 100644 --- a/interface/web/dns/dns_wizard.php +++ b/interface/web/dns/dns_wizard.php @@ -339,6 +339,7 @@ if($_POST['create'] == 1) { $section = ''; $vars = array(); $vars['xfer']=''; + $vars['dnssec_algo']='ECDSAP256SHA256'; $dns_rr = array(); foreach($tpl_rows as $row) { $row = trim($row); @@ -398,6 +399,7 @@ if($_POST['create'] == 1) { $xfer = $vars['xfer']; $also_notify = $vars['also_notify']; $update_acl = $vars['update_acl']; + $dnssec_algo = $vars['dnssec_algo']; $serial = $app->validate_dns->increase_serial(0); $insert_data = array( @@ -420,7 +422,8 @@ if($_POST['create'] == 1) { "xfer" => $xfer, "also_notify" => $also_notify, "update_acl" => $update_acl, - "dnssec_wanted" => $enable_dnssec + "dnssec_wanted" => $enable_dnssec, + "dnssec_algo" => $dnssec_algo ); $dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id'); if($dns_soa_id > 0) $app->plugin->raiseEvent('dns:wizard:on_after_insert', $dns_soa_id); diff --git a/interface/web/dns/form/dns_soa.tform.php b/interface/web/dns/form/dns_soa.tform.php index cf0d143916c5fe2679777d1756ec96089bac9105..81389c4553f540a2f1ae367fdf7bf5858011bd7f 100644 --- a/interface/web/dns/form/dns_soa.tform.php +++ b/interface/web/dns/form/dns_soa.tform.php @@ -276,6 +276,15 @@ $form["tabs"]['dns_soa'] = array ( 'default' => 'Y', 'value' => array(0 => 'N', 1 => 'Y') ), + 'dnssec_algo' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOXARRAY', + 'separator' => ',', + 'default' => 'ECDSAP256SHA256', + 'value' => array('NSEC3RSASHA1' => '7 (NSEC3RSASHA1)','ECDSAP256SHA256' => '13 (ECDSAP256SHA256)'), + 'width' => '30', + 'maxlength' => '255' + ), 'dnssec_info' => array ( 'datatype' => 'TEXT', 'formtype' => 'TEXTAREA', diff --git a/interface/web/dns/lib/lang/ar_dns_soa.lng b/interface/web/dns/lib/lang/ar_dns_soa.lng index c9721cebc0e2de6bb770816a544e0b3b8dd3863d..8c13c59e8e67b1fd37768608289f51f01610d997 100644 --- a/interface/web/dns/lib/lang/ar_dns_soa.lng +++ b/interface/web/dns/lib/lang/ar_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/bg_dns_soa.lng b/interface/web/dns/lib/lang/bg_dns_soa.lng index 151e3ead11483260d8acabf8ac729d7b0a5324c4..9e9e8bf3f50ce64fb5c25ebf642efd6cea336c1f 100644 --- a/interface/web/dns/lib/lang/bg_dns_soa.lng +++ b/interface/web/dns/lib/lang/bg_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/br_dns_soa.lng b/interface/web/dns/lib/lang/br_dns_soa.lng index f5385c4706b98e51611e803341ac3ea1a4f35ac4..f1cb453e9959cf0b883cad31460a9982bd4d1ebe 100644 --- a/interface/web/dns/lib/lang/br_dns_soa.lng +++ b/interface/web/dns/lib/lang/br_dns_soa.lng @@ -41,4 +41,5 @@ $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'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/ca_dns_soa.lng b/interface/web/dns/lib/lang/ca_dns_soa.lng index 0b6759f07372f84c449c17942f8c4ca849225a53..ee2fdb07b64c3a188cca64d12fe20b6129c21f69 100644 --- a/interface/web/dns/lib/lang/ca_dns_soa.lng +++ b/interface/web/dns/lib/lang/ca_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_soa.lng b/interface/web/dns/lib/lang/cz_dns_soa.lng index cb35f0ef3bbe946036dd51179d8f5c0ef92ce730..ba6b2d4b52b6ac8d3d0ffa770ee5f02b2f5133fd 100644 --- a/interface/web/dns/lib/lang/cz_dns_soa.lng +++ b/interface/web/dns/lib/lang/cz_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'Když deaktivujete DNSSEC klÃÄe nebudou odstranÄ› $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'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/de_dns_soa.lng b/interface/web/dns/lib/lang/de_dns_soa.lng index 76d139391ddb580830e537c7050f09171d3bc943..14897b24e45fd86dbca1e4ddfc95d3317c6aae4b 100644 --- a/interface/web/dns/lib/lang/de_dns_soa.lng +++ b/interface/web/dns/lib/lang/de_dns_soa.lng @@ -41,4 +41,5 @@ $wb['xfer_error_regex'] = 'Zonentransfer: Verwenden Sie eine oder mehrere durch $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['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithmus'; ?> diff --git a/interface/web/dns/lib/lang/dk_dns_soa.lng b/interface/web/dns/lib/lang/dk_dns_soa.lng index 6a3d71d973588f748bbda7b7d566a23442ed8a8a..a4ff50f14fa3f705e59b6ba19472bf8bd5f7ad5d 100644 --- a/interface/web/dns/lib/lang/dk_dns_soa.lng +++ b/interface/web/dns/lib/lang/dk_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $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['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/el_dns_soa.lng b/interface/web/dns/lib/lang/el_dns_soa.lng index 4d8c876d28aab75d4c6e893dcd1667363f9cf758..aae62bef7618261ef0cb8e116287d33db8a68931 100644 --- a/interface/web/dns/lib/lang/el_dns_soa.lng +++ b/interface/web/dns/lib/lang/el_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/en_dns_soa.lng b/interface/web/dns/lib/lang/en_dns_soa.lng index 1729a4d0cbe9b2e3a311462517c1dc811e11460c..7d130b34b03223a5ef82db646e913d652b39bd17 100644 --- a/interface/web/dns/lib/lang/en_dns_soa.lng +++ b/interface/web/dns/lib/lang/en_dns_soa.lng @@ -41,4 +41,5 @@ $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; $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['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/es_dns_soa.lng b/interface/web/dns/lib/lang/es_dns_soa.lng index 23f4cc5ffcfb53f784333a43965cfdd740cbac0c..b1484e749a0258b43ed279ca159226a451badb81 100644 --- a/interface/web/dns/lib/lang/es_dns_soa.lng +++ b/interface/web/dns/lib/lang/es_dns_soa.lng @@ -41,4 +41,5 @@ $wb['update_acl_txt'] = 'Actualizar ACL'; $wb['xfer_error_regex'] = 'Notificar también a: Por favor, usa una dirección IP.'; $wb['xfer_txt'] = 'Permitir transferencia de zonas a<br />estas IP (lista separada por comas)'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/fi_dns_soa.lng b/interface/web/dns/lib/lang/fi_dns_soa.lng index 3e106259677bea687262bb3cc99098c89e901c9c..b34b2893fdf514db92a3da4c8f8692066aaca771 100644 --- a/interface/web/dns/lib/lang/fi_dns_soa.lng +++ b/interface/web/dns/lib/lang/fi_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/fr_dns_soa.lng b/interface/web/dns/lib/lang/fr_dns_soa.lng index da63faadbdea9adab67fa598a1331997d941d246..d2449c323e9a95cb966fd7f9497699a7044f51db 100644 --- a/interface/web/dns/lib/lang/fr_dns_soa.lng +++ b/interface/web/dns/lib/lang/fr_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/hr_dns_soa.lng b/interface/web/dns/lib/lang/hr_dns_soa.lng index b4a9f2f9b0ad77b8808ab250735d93de8486d451..d738ff1e184cb52628d8aa105c16cc92503a60bb 100644 --- a/interface/web/dns/lib/lang/hr_dns_soa.lng +++ b/interface/web/dns/lib/lang/hr_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/hu_dns_soa.lng b/interface/web/dns/lib/lang/hu_dns_soa.lng index 401961408864d7817ba7e8c5f4b4ecbc3b02d7c8..445de86d69c7c8d8f1d73a0fa49b5dcbe94e97c4 100644 --- a/interface/web/dns/lib/lang/hu_dns_soa.lng +++ b/interface/web/dns/lib/lang/hu_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/id_dns_soa.lng b/interface/web/dns/lib/lang/id_dns_soa.lng index c42890b71c1ae0cd010a138d54c21fd6e0016403..c9a43ad057a07bc4a12a16b6a90b737f9f58217b 100644 --- a/interface/web/dns/lib/lang/id_dns_soa.lng +++ b/interface/web/dns/lib/lang/id_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/it_dns_soa.lng b/interface/web/dns/lib/lang/it_dns_soa.lng index 7ca3cb1cb13f1f104d5aad6516d522735045182d..714c6c70566c3af03ee5395ccc5790a8b86273c9 100644 --- a/interface/web/dns/lib/lang/it_dns_soa.lng +++ b/interface/web/dns/lib/lang/it_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/ja_dns_soa.lng b/interface/web/dns/lib/lang/ja_dns_soa.lng index 3964f3fcdb73888f6c3208043b4cb7adf29e425e..7ab57997508202e5496ae098ccb59a2b0bf4c2b6 100644 --- a/interface/web/dns/lib/lang/ja_dns_soa.lng +++ b/interface/web/dns/lib/lang/ja_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/nl_dns_soa.lng b/interface/web/dns/lib/lang/nl_dns_soa.lng index 121339c00ca296b5b108516fb406c98edd4e7f4c..1f875df3c9007659806b6e48a22fb3f1497ba89e 100644 --- a/interface/web/dns/lib/lang/nl_dns_soa.lng +++ b/interface/web/dns/lib/lang/nl_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/pl_dns_soa.lng b/interface/web/dns/lib/lang/pl_dns_soa.lng index 1724c4c141c77a15d08c93021ca7ee2d3f189fe0..7502a592372707764358fde63333b8ef0938ee9d 100644 --- a/interface/web/dns/lib/lang/pl_dns_soa.lng +++ b/interface/web/dns/lib/lang/pl_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/pt_dns_soa.lng b/interface/web/dns/lib/lang/pt_dns_soa.lng index bdcc1660ff0e7f4b9a348ce678520aea214d8ed9..7b6ac864a163decd043ef4d35429c532a3df92ee 100644 --- a/interface/web/dns/lib/lang/pt_dns_soa.lng +++ b/interface/web/dns/lib/lang/pt_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/ro_dns_soa.lng b/interface/web/dns/lib/lang/ro_dns_soa.lng index 40607318f713d7a08f4d87dd24425e1b0f60e44e..9ae957f2406129be0f0b27645946c2efe6ab713e 100644 --- a/interface/web/dns/lib/lang/ro_dns_soa.lng +++ b/interface/web/dns/lib/lang/ro_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/ru_dns_soa.lng b/interface/web/dns/lib/lang/ru_dns_soa.lng index 7bd15cd63858f16b496326756fe8b652902e63b7..f6043010d4e021d4d677e6fca002456e924cb3f3 100644 --- a/interface/web/dns/lib/lang/ru_dns_soa.lng +++ b/interface/web/dns/lib/lang/ru_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'При отключении DNSSEC ключи не $wb['error_not_allowed_server_id'] = 'Выбранный Ñервер не доÑтупен Ð´Ð»Ñ Ñтой учетной запиÑи.'; $wb['soa_cannot_be_changed_txt'] = 'Зона (SOA) не может быть изменена. ПожалуйÑта, обратитеÑÑŒ к админиÑтратору, чтобы изменить зону.'; $wb['configuration_error_txt'] = 'ОШИБКРКОÐФИГУРÐЦИИ'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/se_dns_soa.lng b/interface/web/dns/lib/lang/se_dns_soa.lng index cfeb2f9fde36215601657786424c558134aeb70b..8e380f85a3f79c217c0fc0fb59009e6e197bc64d 100644 --- a/interface/web/dns/lib/lang/se_dns_soa.lng +++ b/interface/web/dns/lib/lang/se_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/sk_dns_soa.lng b/interface/web/dns/lib/lang/sk_dns_soa.lng index 79d49eee92d6136f143f0d8a477f66c2b5b3a663..c96399cc4ec4b433264bfa75e111d3b66334d467 100644 --- a/interface/web/dns/lib/lang/sk_dns_soa.lng +++ b/interface/web/dns/lib/lang/sk_dns_soa.lng @@ -41,4 +41,5 @@ $wb['dnssec_wanted_info'] = 'When disabling DNSSEC keys are not going to be dele $wb['error_not_allowed_server_id'] = 'The selected server is not allowed for this account.'; $wb['soa_cannot_be_changed_txt'] = 'Die Zone (SOA) kann nicht verändert werden. Bitte kontaktieren Sie ihren Administrator, um die Zone zu ändern.'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/lib/lang/tr_dns_soa.lng b/interface/web/dns/lib/lang/tr_dns_soa.lng index fd39de04f5e9742c3717bb77a33e6d25908a1a16..e5d55678cbd42f76353d2923d1c5d252c9c6d81a 100644 --- a/interface/web/dns/lib/lang/tr_dns_soa.lng +++ b/interface/web/dns/lib/lang/tr_dns_soa.lng @@ -41,4 +41,5 @@ $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.'; $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'; +$wb['dnssec_algo_txt'] = 'DNSSEC Algorithm'; ?> diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm index c34e8a341647dcb0972b7f784be7d3b26c8842a0..e16faac1aa5c4d9ea1641abb9f92ab70f631c5c4 100644 --- a/interface/web/dns/templates/dns_soa_edit.htm +++ b/interface/web/dns/templates/dns_soa_edit.htm @@ -136,6 +136,10 @@ <div class="col-sm-9"> {tmpl_var name='dnssec_wanted'}<br /><small>({tmpl_var name='dnssec_wanted_info'})</small> </div> + </div> + <div class="form-group"> + <label for="dnssec_algo" class="col-sm-3 control-label">{tmpl_var name='dnssec_algo_txt'}</label> + <div class="col-sm-9">{tmpl_var name='dnssec_algo'}</div> </div> <div class="form-group"> <label for="update_acl" class="col-sm-3 control-label">{tmpl_var name='dnssec_info_txt'}</label> diff --git a/interface/web/login/lib/lang/ar_login_as.lng b/interface/web/login/lib/lang/ar_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/ar_login_as.lng +++ b/interface/web/login/lib/lang/ar_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/bg_login_as.lng b/interface/web/login/lib/lang/bg_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/bg_login_as.lng +++ b/interface/web/login/lib/lang/bg_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/br_login_as.lng b/interface/web/login/lib/lang/br_login_as.lng index 72c2c97e408f995aedce3bff5c0b461d535f80e8..1dde30d907c295c97daa6fd55264833b9b8c896e 100644 --- a/interface/web/login/lib/lang/br_login_as.lng +++ b/interface/web/login/lib/lang/br_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'Já existe uma regra de firewall idêntica para $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/ca_login_as.lng b/interface/web/login/lib/lang/ca_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/ca_login_as.lng +++ b/interface/web/login/lib/lang/ca_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/cz_login_as.lng b/interface/web/login/lib/lang/cz_login_as.lng index 53629ac2a5127b46fd872adcec215632b5479dc2..1d99176adb151901e2d9a1e485cd87c15e73034e 100644 --- a/interface/web/login/lib/lang/cz_login_as.lng +++ b/interface/web/login/lib/lang/cz_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'Pro tento server již existuje záznam firewallu $wb['tcp_ports_error_regex'] = 'Znak nenà povole v definici TCP portu. Povolené symboly jsou ÄÃsla, : a ,.'; $wb['udp_ports_error_regex'] = 'Znak nenà povole v definici UDP portu. Povolené symboly jsou ÄÃsla, : a ,.'; $wb['login_as_or_logout_txt'] = 'Chcete se znovu pÅ™ihlásit jako uživatel {UTYPE} nebo se chcete odhlásit ?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/de_login_as.lng b/interface/web/login/lib/lang/de_login_as.lng index 4baa195d3a71735586dba972a96b968d0cbf70da..11fd4101636972a6bb5ec5850e804c350fb9df55 100644 --- a/interface/web/login/lib/lang/de_login_as.lng +++ b/interface/web/login/lib/lang/de_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'Es gibt bereits einen Firewalleintrag für diese $wb['tcp_ports_error_regex'] = 'Es sind nur Zahlen in der TCP Port Definition erlaubt. '; $wb['udp_ports_error_regex'] = 'Es sind nur Zahlen in der UDP Port Definition erlaubt., '; $wb['login_as_or_logout_txt'] = 'Wollen Sie sich wieder als {UTYPE} anmelden oder sich abmelden?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/dk_login_as.lng b/interface/web/login/lib/lang/dk_login_as.lng index bebcf165a7bf2a78b5ba13d7eb1d47d41c214e4c..b68874abbe4bec425b8577d862b9ce5a79b42950 100644 --- a/interface/web/login/lib/lang/dk_login_as.lng +++ b/interface/web/login/lib/lang/dk_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'Der er allerede en firewall post for denne serve $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/el_login_as.lng b/interface/web/login/lib/lang/el_login_as.lng index 435d3e9a69eeb7f79abbc9c30d98ecaf32913529..db16d0d6d31f10a2af1079e06ea637f7e8a61cfd 100644 --- a/interface/web/login/lib/lang/el_login_as.lng +++ b/interface/web/login/lib/lang/el_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'ΥπάÏχει ήδη μια εγγÏαφή Fire $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/en_login_as.lng b/interface/web/login/lib/lang/en_login_as.lng index d1f98c8806204e162954107caf753aa174153295..c849db3d04b724f0ae8a65de2dff4b6ca43e38f3 100644 --- a/interface/web/login/lib/lang/en_login_as.lng +++ b/interface/web/login/lib/lang/en_login_as.lng @@ -10,4 +10,6 @@ $wb["active_txt"] = 'Active'; $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> \ No newline at end of file diff --git a/interface/web/login/lib/lang/es_login_as.lng b/interface/web/login/lib/lang/es_login_as.lng index b7f3e21f987f2ca4016eeaf3834b4e5445983571..d0faac1b8029288c5c7b00659920175882b2a2c8 100644 --- a/interface/web/login/lib/lang/es_login_as.lng +++ b/interface/web/login/lib/lang/es_login_as.lng @@ -9,4 +9,6 @@ $wb['tcp_ports_error_regex'] = 'Caracteres no permitidos en la definición de pu $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['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/fi_login_as.lng b/interface/web/login/lib/lang/fi_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/fi_login_as.lng +++ b/interface/web/login/lib/lang/fi_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/fr_login_as.lng b/interface/web/login/lib/lang/fr_login_as.lng index 55c9f6df5b6a302d260b83c3e61b0f668d7f5154..0612b4a47f156332b447acea33fc082c3fc0679c 100644 --- a/interface/web/login/lib/lang/fr_login_as.lng +++ b/interface/web/login/lib/lang/fr_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $wb['tcp_ports_error_regex'] = 'Caractère non autorisé dans la règle de port TCP. Les caractères autorisés sont : les chiffres, « : » et « , ».'; $wb['udp_ports_error_regex'] = 'Caractère non autorisé dans la règle de port UDP. Les caractères autorisés sont : les chiffres, « : » et « , ».'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/hr_login_as.lng b/interface/web/login/lib/lang/hr_login_as.lng index bcd13040d38363cad1bddf8ed3953ad13edbbeb8..a5704bee2d74600a2e8a0b6f425f644b1be868df 100644 --- a/interface/web/login/lib/lang/hr_login_as.lng +++ b/interface/web/login/lib/lang/hr_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/hu_login_as.lng b/interface/web/login/lib/lang/hu_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/hu_login_as.lng +++ b/interface/web/login/lib/lang/hu_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/id_login_as.lng b/interface/web/login/lib/lang/id_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/id_login_as.lng +++ b/interface/web/login/lib/lang/id_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/it_login_as.lng b/interface/web/login/lib/lang/it_login_as.lng index 3fa23da2741f0911bc933af3a615b675507813b3..9675cd148878d3e60e5e4b5af679c09264a5fce2 100644 --- a/interface/web/login/lib/lang/it_login_as.lng +++ b/interface/web/login/lib/lang/it_login_as.lng @@ -9,4 +9,6 @@ $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['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/ja_login_as.lng b/interface/web/login/lib/lang/ja_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/ja_login_as.lng +++ b/interface/web/login/lib/lang/ja_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/nl_login_as.lng b/interface/web/login/lib/lang/nl_login_as.lng index d4d2715e7a664a3aa0b7b0b2b89503dc3caf546c..1710f0e4f875b070b55e7eb2802087dddb68ad9c 100644 --- a/interface/web/login/lib/lang/nl_login_as.lng +++ b/interface/web/login/lib/lang/nl_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/pl_login_as.lng b/interface/web/login/lib/lang/pl_login_as.lng index fd673484d7bfbbc44175d3939d12fb48c5a20593..2f1d818660ed99b3d90ec8085093bf3a90a680c2 100644 --- a/interface/web/login/lib/lang/pl_login_as.lng +++ b/interface/web/login/lib/lang/pl_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'Istnieje już wpis firewalla dla tego serwera.'; $wb['tcp_ports_error_regex'] = 'Niedozwolony znam w definicji portu TCP. Dozwolone sÄ… liczby, dwukropek i przecinek (: i ,)'; $wb['udp_ports_error_regex'] = 'Niedozwolony znam w definicji portu UDP. Dozwolone sÄ… liczby, dwukropek i przecinek (: i ,)'; $wb['login_as_or_logout_txt'] = 'Do you want to re-login as {UTYPE} or logout?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/pt_login_as.lng b/interface/web/login/lib/lang/pt_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/pt_login_as.lng +++ b/interface/web/login/lib/lang/pt_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/ro_login_as.lng b/interface/web/login/lib/lang/ro_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/ro_login_as.lng +++ b/interface/web/login/lib/lang/ro_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/ru_login_as.lng b/interface/web/login/lib/lang/ru_login_as.lng index 63031d4d09acfffe0ab3bc0f64997949a92294cd..b15812dce3ddc681914d0493720838d054743715 100644 --- a/interface/web/login/lib/lang/ru_login_as.lng +++ b/interface/web/login/lib/lang/ru_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'Уже еÑÑ‚ÑŒ Ñ‚Ð°ÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ бред $wb['tcp_ports_error_regex'] = 'ÐедопуÑтимый Ñимвол в указании tcp порта. Корректные Ñиволы - цифры, \\":\\" и \\",\\"'; $wb['udp_ports_error_regex'] = 'Ðекорректный Ñимвол в указании UDP порта. ДопуÑтимые Ñиволы - цифры, \\":\\" и \\",\\"'; $wb['login_as_or_logout_txt'] = 'Ð’Ñ‹ хотите заново войти как {UTYPE} или выйти?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/se_login_as.lng b/interface/web/login/lib/lang/se_login_as.lng index 17a82080dc9defec177c24ad06092da45f1a7e07..34b02cb1e9a959bb86c1b2a5df5a32c3ed137dd1 100644 --- a/interface/web/login/lib/lang/se_login_as.lng +++ b/interface/web/login/lib/lang/se_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/sk_login_as.lng b/interface/web/login/lib/lang/sk_login_as.lng index cf75b54b47a852400eec51271488e41ea64e69c4..f5bff0745f5d278ab2e73c63efc3009f3947f0bb 100644 --- a/interface/web/login/lib/lang/sk_login_as.lng +++ b/interface/web/login/lib/lang/sk_login_as.lng @@ -9,4 +9,6 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/lib/lang/tr_login_as.lng b/interface/web/login/lib/lang/tr_login_as.lng index 8a54a8efd9889f48caeebf2555d79c9ea66782f6..d2a3a4bfb3939d4152dd785d4bc241faaa7211b1 100644 --- a/interface/web/login/lib/lang/tr_login_as.lng +++ b/interface/web/login/lib/lang/tr_login_as.lng @@ -10,4 +10,6 @@ $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?'; +$wb['btn_reloginas_txt'] = 'Yes, re-login as %s'; +$wb['btn_nologout_txt'] = 'No, logout'; ?> diff --git a/interface/web/login/logout.php b/interface/web/login/logout.php index fa60fba63298f271f42036ce82ae34c8c4c6e9f8..cfe405498e495332ec88a92ddf9ff972ddb5b47c 100644 --- a/interface/web/login/logout.php +++ b/interface/web/login/logout.php @@ -54,9 +54,9 @@ 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-default" type="button" value="No, logout" data-load-content="login/logout.php?l=1"><span>No, logout</span></button> - </div> + <button class="btn btn-default formbutton-success" type="button" value="' . sprintf($wb['btn_reloginas_txt'], $utype) . '" data-submit-form="pageForm" data-form-action="/login/index.php"><span>' . sprintf($wb['btn_reloginas_txt'], $utype) . '</span></button> + <button class="btn btn-default formbutton-default" type="button" value="' . $wb['btn_nologout_txt'] . '" data-load-content="login/logout.php?l=1"><span>' . $wb['btn_nologout_txt'] . '</span></button> + </div> '; exit; } diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php index b46e43b98e9c7d9a87ddd0980c5dd7851c6c5fe4..85e310648b23d2942360aadbea9614cfebeb5862 100644 --- a/interface/web/mail/form/mail_user.tform.php +++ b/interface/web/mail/form/mail_user.tform.php @@ -189,6 +189,12 @@ $form["tabs"]['mailuser'] = array( 'width' => '30', 'maxlength' => '65535' ), + 'forward_in_lda' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') + ), 'sender_cc' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', @@ -199,7 +205,8 @@ $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'), ), 'default' => '', diff --git a/interface/web/mail/form/mail_user_filter.tform.php b/interface/web/mail/form/mail_user_filter.tform.php index b1370ecaa1349548c450bcfdffdf479a53bf41f6..0b10799163044b55e569509d6bab764d606c294a 100644 --- a/interface/web/mail/form/mail_user_filter.tform.php +++ b/interface/web/mail/form/mail_user_filter.tform.php @@ -94,8 +94,7 @@ $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', 'localpart' => 'localpart_txt', 'domain' => 'domain_txt') + 'value' => array('contains'=>'contains_txt', 'is'=>'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt', 'regex'=>'regex_txt', 'localpart'=>'localpart_txt', 'domain'=>'domain_txt') ), 'searchterm' => 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 829de6a749ee61bdebeb6f6bb27e8e37fea648cf..88b89d0fb417547f00e15857f30c6d9087286b12 100644 --- a/interface/web/mail/lib/lang/ar_mail_user.lng +++ b/interface/web/mail/lib/lang/ar_mail_user.lng @@ -40,6 +40,8 @@ $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['cc_txt'] = 'Send copy to'; $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; 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 9a15472e88734a485d954d89d58944a8a72a4516..bed377b2f63593b1f1e0acd926b41ae5761693cf 100644 --- a/interface/web/mail/lib/lang/ar_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ar_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/bg_mail_user.lng b/interface/web/mail/lib/lang/bg_mail_user.lng index 126ec603d22d3d754816487e7881e22ff20ed77d..bee86d8d3194fca098db9f028bb334c03b264692 100644 --- a/interface/web/mail/lib/lang/bg_mail_user.lng +++ b/interface/web/mail/lib/lang/bg_mail_user.lng @@ -40,6 +40,8 @@ $wb['name_optional_txt'] = '(По желание)'; $wb['autoresponder_active'] = 'Разреши автоматичен отговор'; $wb['cc_txt'] = 'Изпрати копие до:'; $wb['cc_error_isemail'] = 'Полето Ñ Ð˜Ð·Ð¿Ñ€Ð°Ñ‚Ð¸ копие до: не Ñъдържа валиден емайл адреÑ'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Домейн'; $wb['now_txt'] = 'Сега'; $wb['login_error_unique'] = 'Login is already taken.'; diff --git a/interface/web/mail/lib/lang/bg_mail_user_filter.lng b/interface/web/mail/lib/lang/bg_mail_user_filter.lng index 9eb3325c72dcc1c433fd6b38c82c0e6f447c48a5..ed7d137db0bbcb78f6379d956cf36557fc3a0adf 100644 --- a/interface/web/mail/lib/lang/bg_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/bg_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'МакÑималниÑÑ‚ брой на емайл $wb['subject_txt'] = 'Тема'; $wb['from_txt'] = 'От'; $wb['to_txt'] = 'До'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'ОпиÑание'; $wb['is_txt'] = 'е'; $wb['begins_with_txt'] = 'Ðачало Ñ'; $wb['ends_with_txt'] = 'Край Ñ'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Изтрий'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/br_mail_user.lng b/interface/web/mail/lib/lang/br_mail_user.lng index 8e3edd6950c29b2420f8f10d5f4dc54cbbb023f7..8d72534d6b027c9b1162a1b90129bc10246a9b7b 100644 --- a/interface/web/mail/lib/lang/br_mail_user.lng +++ b/interface/web/mail/lib/lang/br_mail_user.lng @@ -46,8 +46,10 @@ $wb['name_txt'] = 'Nome'; $wb['name_optional_txt'] = '(Opcional)'; $wb['autoresponder_active'] = 'Habilitar auto-resposta'; $wb['cc_txt'] = 'Enviar cópia para'; -$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['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; +$wb['sender_cc_txt'] = 'Enviar cópia oculta (BCC) para'; $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'; 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 54ae96d6928405c3340ae39329810eee1308092f..560858c7137e8be482926fbd5d41d6831aa8d3f4 100644 --- a/interface/web/mail/lib/lang/br_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/br_mail_user_filter.lng @@ -11,10 +11,12 @@ $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['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contêm'; $wb['is_txt'] = 'é'; $wb['begins_with_txt'] = 'Iniciando com'; $wb['ends_with_txt'] = 'Terminando com'; +$wb['regex_txt'] = 'Matches Regex'; $wb['move_stop_txt'] = 'Mover para'; $wb['delete_txt'] = 'Remover'; $wb['header_txt'] = 'Cabeçalho'; diff --git a/interface/web/mail/lib/lang/ca_mail_user.lng b/interface/web/mail/lib/lang/ca_mail_user.lng index 7fd4263e976aaa94d92480bd5c28401c4e977aa5..a0afb01ee310bc7f92cb5785f8dee6259581e07d 100644 --- a/interface/web/mail/lib/lang/ca_mail_user.lng +++ b/interface/web/mail/lib/lang/ca_mail_user.lng @@ -39,6 +39,8 @@ $wb['name_optional_txt'] = '(Optionnel)'; $wb['autoresponder_active'] = 'Activer le répondeur automatique'; $wb['cc_txt'] = 'Envoyer une copie à '; $wb['cc_error_isemail'] = 'Le champ Envoyer une copie ne contient pas une adresse courriel valide'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domaine'; $wb['now_txt'] = 'Maintenant'; $wb['login_error_unique'] = 'Ce nom d\'utilisateur est déjà pris.'; 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 8744b2ab79209f4a27b1d36681be930a0bde220a..3aaa7f16657faccd2f240cdbfe7e9419c094cf07 100644 --- a/interface/web/mail/lib/lang/ca_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ca_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contient'; $wb['is_txt'] = 'Est'; $wb['begins_with_txt'] = 'Commence par'; $wb['ends_with_txt'] = 'Fini par'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Supprimer'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index 835f2918c1dc2589745fe9c8cea89367dd523c53..0b5f73080c3abc3bb13d7e03fc82ea76d4535b88 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -39,6 +39,8 @@ $wb['name_optional_txt'] = '(volitelné)'; $wb['autoresponder_active'] = 'Povolit automatický odpovÃdaÄ'; $wb['cc_txt'] = 'Odeslat pÅ™Ãchozà kopii na'; $wb['cc_error_isemail'] = 'Adresa uvedená v poli zaslat kopii na je neplatná'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Doména'; $wb['now_txt'] = 'NynÃ'; $wb['login_error_unique'] = 'PÅ™ihlášovacà jméno je již obsazeno.'; diff --git a/interface/web/mail/lib/lang/cz_mail_user_filter.lng b/interface/web/mail/lib/lang/cz_mail_user_filter.lng index 9bd358063506902d11edfd038366492f0cde857f..3d56a9b83900207b529690bb27ba9a88d7c39439 100644 --- a/interface/web/mail/lib/lang/cz_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/cz_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'Byl dosažen max. poÄet e-mailový filtrovacÃch $wb['subject_txt'] = 'PÅ™edmÄ›t'; $wb['from_txt'] = 'OdesÃlatel'; $wb['to_txt'] = 'PÅ™Ãjemce (adresát)'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Obsahuje'; $wb['is_txt'] = 'Je'; $wb['begins_with_txt'] = 'ZaÄÃná na'; $wb['ends_with_txt'] = 'KonÄà na'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Smazat'; $wb['move_stop_txt'] = 'PÅ™esunout'; $wb['header_txt'] = 'HlaviÄka'; diff --git a/interface/web/mail/lib/lang/de_backup_stats_list.lng b/interface/web/mail/lib/lang/de_backup_stats_list.lng index 9e14533068b6ba433a9d368d78ceb00fcf7ceff0..9147d3cbd6e03abec15051bd166b7c10ed041c24 100644 --- a/interface/web/mail/lib/lang/de_backup_stats_list.lng +++ b/interface/web/mail/lib/lang/de_backup_stats_list.lng @@ -5,5 +5,5 @@ $wb['domain_txt'] = 'Email'; $wb['backup_count_txt'] = 'Anz. Backups'; $wb['backup_server_txt'] = 'Server'; $wb['backup_interval_txt'] = 'Intervall / Anz.'; -$wb['backup_size_txt'] = 'Backupgrösse'; +$wb['backup_size_txt'] = 'Backupgröße'; ?> diff --git a/interface/web/mail/lib/lang/de_mail_alias.lng b/interface/web/mail/lib/lang/de_mail_alias.lng index 211f0065fa0e44d05f62798fd1f36a9afebba151..4cdcd03a6f9e607366f59e7b5d555c1d08cd9d34 100644 --- a/interface/web/mail/lib/lang/de_mail_alias.lng +++ b/interface/web/mail/lib/lang/de_mail_alias.lng @@ -12,6 +12,6 @@ $wb['domain_txt'] = 'Domain'; $wb['duplicate_email_alias_txt'] = 'Dieser E-Mail Alias existiert bereits.'; $wb['source_txt'] = 'Alias'; $wb['send_as_txt'] = 'Senden als'; -$wb['send_as_exp'] = 'Ziel erlauben, den alias als Absender zu benutzen'; +$wb['send_as_exp'] = 'Ziel erlauben, den Alias als Absender zu benutzen'; $wb['greylisting_txt'] = 'Aktiviere Greylisting'; ?> diff --git a/interface/web/mail/lib/lang/de_mail_backup_list.lng b/interface/web/mail/lib/lang/de_mail_backup_list.lng index 73286a0737103be7877ad8d6c3f4aaa669042224..3c3ee4d315ac7dc1556949bb60bf2fc9b9028c7c 100644 --- a/interface/web/mail/lib/lang/de_mail_backup_list.lng +++ b/interface/web/mail/lib/lang/de_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'] = 'Vorhandene Backups'; +$wb['date_txt'] = 'Datum'; +$wb['backup_type_txt'] = 'Art'; +$wb['filename_txt'] = 'Dateiname'; +$wb['restore_backup_txt'] = 'Wiederherstellen'; +$wb['restore_info_txt'] = 'Wiederherstellung begonnen. Dieser Vorgang kann einige Minuten dauern.'; +$wb['restore_confirm_txt'] = 'Die Wiederherstellung kann bestehende Dateien in Ihrem Postfach überschreiben. Möchten Sie das Backup wiederherstellen?'; +$wb['download_pending_txt'] = 'Es läuft bereits ein Backup-Download.'; +$wb['restore_pending_txt'] = 'Es steht bereits ein Backup zur Wiederherstellung an.'; +$wb['delete_backup_txt'] = 'Backup löschen'; +$wb['delete_info_txt'] = 'Das Backup wird gelöscht. Dieser Vorgang kann einige Minuten dauern.'; +$wb['delete_confirm_txt'] = 'Möchten Sie dieses Backup wirklich löschen?'; +$wb['delete_pending_txt'] = 'Es wird bereits ein Backup gelöscht.'; +$wb['filesize_txt'] = 'Dateigröße'; ?> diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng index a69d97e361a365cee8b6ef8eb0ad28171b8207dd..c99abe8e8d5a06e3659e3a47c69872d28c2c7680 100644 --- a/interface/web/mail/lib/lang/de_mail_user.lng +++ b/interface/web/mail/lib/lang/de_mail_user.lng @@ -44,8 +44,10 @@ $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'; -$wb['cc_txt'] = 'Kopie senden an'; -$wb['cc_error_isemail'] = 'Das -Kopie senden an- Feld enthält keine gültige E-Mail Adresse'; +$wb['cc_txt'] = 'Eingehende Mails in Kopie senden an'; +$wb['cc_error_isemail'] = 'Das Feld "Kopie senden an" enthält keine gültige E-Mail Adresse'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['login_error_unique'] = 'Benutzername wird bereits verwendet.'; $wb['login_error_regex'] = 'Zulässige Zeichen sind A-Z, a-z, 0-9, ., _ und -.'; $wb['login_txt'] = 'Anmelden'; @@ -57,17 +59,17 @@ $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['email_error_isascii'] = 'Bitte verwenden Sie keine Umlaute im Passwort. Dies kann zu Problemen mit Ihrem E-Mail-Programm führen.'; -$wb['backup_interval_txt'] = 'Backup interval'; +$wb['backup_interval_txt'] = 'Backup-Interval'; $wb['backup_copies_txt'] = 'Anzahl der Backups'; $wb['no_backup_txt'] = 'inaktiv'; -$wb['daily_backup_txt'] = 'taeglich'; -$wb['weekly_backup_txt'] = 'woechentlich'; +$wb['daily_backup_txt'] = 'täglich'; +$wb['weekly_backup_txt'] = 'wöchentlich'; $wb['monthly_backup_txt'] = 'monatlich'; $wb['cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; $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'] = '(One email address only)'; -$wb['password_click_to_set_txt'] = 'Click to set'; +$wb['sender_cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; +$wb['password_click_to_set_txt'] = 'Passwort erzeugen'; $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/de_mail_user_filter.lng b/interface/web/mail/lib/lang/de_mail_user_filter.lng index c9fb78fcee1ff581249ff128bd93c5c8578e0c5b..579a867e983d631fd2059984a046d2523e7f5fe6 100644 --- a/interface/web/mail/lib/lang/de_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/de_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filtern für Ihr Ko $wb['subject_txt'] = 'Betreff'; $wb['from_txt'] = 'Von'; $wb['to_txt'] = 'An'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Enthält'; $wb['is_txt'] = 'Ist'; $wb['begins_with_txt'] = 'Beginnt mit'; $wb['ends_with_txt'] = 'Endet mit'; +$wb['regex_txt'] = 'Matches Regex'; $wb['move_stop_txt'] = 'Verschieben nach'; $wb['delete_txt'] = 'Löschen'; $wb['header_txt'] = 'Header'; 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 255b25612f0aaf77538cdd8c22eec31fc87fed95..b1ebb2fd1dd9afa307f1e4c5ba4a4689caf18098 100644 --- a/interface/web/mail/lib/lang/de_mail_user_list.lng +++ b/interface/web/mail/lib/lang/de_mail_user_list.lng @@ -3,10 +3,10 @@ $wb['list_head_txt'] = 'E-Mail Konto'; $wb['email_txt'] = 'E-Mail Adresse'; $wb['autoresponder_txt'] = 'Autoresponder'; $wb['add_new_record_txt'] = 'Neues E-Mail Konto hinzufügen'; -$wb['name_txt'] = 'Realname'; +$wb['name_txt'] = 'Name'; $wb['login_txt'] = 'Anmelden'; -$wb['postfix_txt'] = 'Receiving'; -$wb['disablesmtp_txt'] = 'SMTP (sending)'; +$wb['postfix_txt'] = 'Empfang'; +$wb['disablesmtp_txt'] = 'SMTP (Versand)'; $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 04196d6b29011205d481a692024fec4dc4bf8292..36487cd836248ddd0d21ade098a5509afa2d3052 100644 --- a/interface/web/mail/lib/lang/dk_mail_user.lng +++ b/interface/web/mail/lib/lang/dk_mail_user.lng @@ -45,6 +45,8 @@ $wb['name_optional_txt'] = '(Valgfri)'; $wb['autoresponder_active'] = 'Aktiver autosvarer'; $wb['cc_txt'] = 'Send kopi til'; $wb['cc_error_isemail'] = '-Send kopi til- felt indeholder ikke en gyldig e-mail adresse'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domæne'; $wb['now_txt'] = 'Nu'; $wb['login_error_unique'] = 'Log ind er allerede taget.'; 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 ef8be2a0c97f46b8aa3ae9442f41ad8c45db9ea6..8da1a242010f227e89ee15441b73cda9dc2ad432 100644 --- a/interface/web/mail/lib/lang/dk_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/dk_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Indeholder'; $wb['is_txt'] = 'Er'; $wb['begins_with_txt'] = 'Begynder med'; $wb['ends_with_txt'] = 'Slutter med'; +$wb['regex_txt'] = 'Matches Regex'; $wb['move_stop_txt'] = 'Flyt til'; $wb['delete_txt'] = 'Slet'; $wb['header_txt'] = 'Hoved'; diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng index b273f6b8145af328adfd6aa6a5d8d3a11181f3ab..9c53de9fe3de3f350e6cb65228c82dcf6a53bb4f 100644 --- a/interface/web/mail/lib/lang/el_mail_user.lng +++ b/interface/web/mail/lib/lang/el_mail_user.lng @@ -40,6 +40,8 @@ $wb['name_optional_txt'] = '(Î ÏοαιÏετικό)'; $wb['autoresponder_active'] = 'ΕνεÏγοποίηση αυτόματης απάντησης'; $wb['cc_txt'] = 'Αποστολή αντιγÏάφου σε '; $wb['cc_error_isemail'] = 'Î Ïος'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'ΤώÏα'; $wb['login_error_unique'] = 'Το όνομα χÏησιμοποιείται ήδη'; diff --git a/interface/web/mail/lib/lang/el_mail_user_filter.lng b/interface/web/mail/lib/lang/el_mail_user_filter.lng index f3957144ae0225257bccd6e72dd1c9984e0ed999..c3c232362e1a76bda46635d147da6cbf299a5a95 100644 --- a/interface/web/mail/lib/lang/el_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/el_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'Έχετε φτάσει το μÎγιστο πλ $wb['subject_txt'] = 'ΘÎμα'; $wb['from_txt'] = 'Από'; $wb['to_txt'] = 'Î Ïος'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'ΠεÏιλαμβάνει'; $wb['is_txt'] = 'είναι'; $wb['begins_with_txt'] = 'Ξεκινά με'; $wb['ends_with_txt'] = 'Τελειώνει σε'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'ΔιαγÏαφή'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng index ed6b6e3bd326669b25b117563e86a31eefcc89f8..ead8a2a0339a3db95fe058dfd09fbbf825e6107e 100644 --- a/interface/web/mail/lib/lang/en_mail_user.lng +++ b/interface/web/mail/lib/lang/en_mail_user.lng @@ -46,8 +46,10 @@ $wb["name_txt"] = 'Name'; $wb["name_optional_txt"] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['cc_txt'] = 'Send copy to'; -$wb['sender_cc_txt'] = 'Send outgoing BCC to'; $wb['cc_error_isemail'] = 'The -Send copy to- field does not contain a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; +$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['domain_txt'] = 'Domain'; $wb['now_txt']='Now'; 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 462ee6d93653f8fd07abf97f2f7b82d23b053f39..7db2df5a7260bfb401dc79cbd0935c15671fcf9d 100644 --- a/interface/web/mail/lib/lang/en_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/en_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; +$wb['regex_txt'] = 'Matches Regex'; $wb['move_stop_txt'] = 'Move to'; $wb['delete_txt'] = 'Delete'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng index 6757df0854e68d5f47114734fce062c7130227ed..00f9074c1c80a991d9b87f5aca0985378104f0be 100644 --- a/interface/web/mail/lib/lang/es_mail_user.lng +++ b/interface/web/mail/lib/lang/es_mail_user.lng @@ -12,9 +12,11 @@ $wb['autoresponder_text_txt'] = 'Texto'; $wb['autoresponder_txt'] = 'Habilitado'; $wb['backup_copies_txt'] = 'Número de copias de seguridad'; $wb['backup_interval_txt'] = 'Intervalo de copias de seguridad'; -$wb['cc_error_isemail'] = 'El campo -Enviar copia a- no contiene una dirección de correo válida.'; $wb['cc_note_txt'] = '(Separe múltiples cuentas de correo con comas)'; $wb['cc_txt'] = 'Enviar copia a'; +$wb['cc_error_isemail'] = 'El campo -Enviar copia a- no contiene una dirección de correo válida.'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['cryptpwd_txt'] = 'Contraseña'; $wb['custom_mailfilter_txt'] = 'Filtro de correo personalizado'; $wb['daily_backup_txt'] = 'Diariamente'; 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 ed221d5cb30a702fa181b27ecf4969f43299e045..4e50fbceff012b7a8023d3225eccba999b2c78b6 100644 --- a/interface/web/mail/lib/lang/es_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/es_mail_user_filter.lng @@ -6,6 +6,7 @@ $wb['contains_txt'] = 'Contiene'; $wb['delete_txt'] = 'Borrar'; $wb['domain_txt'] = 'Domain'; $wb['ends_with_txt'] = 'Termina con'; +$wb['regex_txt'] = 'Matches Regex'; $wb['from_txt'] = 'De'; $wb['header_txt'] = 'Cabecera'; $wb['is_txt'] = 'Es'; diff --git a/interface/web/mail/lib/lang/fi_mail_user.lng b/interface/web/mail/lib/lang/fi_mail_user.lng index ed3635c1ae8d7337f189604609e5cab5709e91f8..6f06d655c456a128ddf73b9062d6c4a7350ed96e 100644 --- a/interface/web/mail/lib/lang/fi_mail_user.lng +++ b/interface/web/mail/lib/lang/fi_mail_user.lng @@ -40,6 +40,8 @@ $wb['name_optional_txt'] = '(Valinnainen)'; $wb['autoresponder_active'] = 'Ota lomavastaaja käyttöön'; $wb['cc_txt'] = 'Send copy to'; $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; 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 1238dc86fd79bc1a85fbf911121b65fabcc04488..5315bc6f1ead437378ec233dc1cb26830a377d93 100644 --- a/interface/web/mail/lib/lang/fi_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/fi_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng index cce8f0a8a16c1dfac899912fd074e08966bc26f6..8c5cb44fbd24e4250ee6e7c434b23ae373afed89 100644 --- a/interface/web/mail/lib/lang/fr_mail_user.lng +++ b/interface/web/mail/lib/lang/fr_mail_user.lng @@ -39,6 +39,8 @@ $wb['name_optional_txt'] = '(Optionnel)'; $wb['autoresponder_active'] = 'Activer le répondeur automatique'; $wb['cc_txt'] = 'Envoyer une copie à '; $wb['cc_error_isemail'] = 'Le champ Envoyer une copie ne contient pas une adresse e-mail valide'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domaine'; $wb['now_txt'] = 'Maintenant'; $wb['login_error_unique'] = 'Ce nom d’utilisateur est déjà pris.'; 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 b5cacf2e98628f05d922532ef14e023f12d9ee08..324d6f3c781fc0b8e17600a2472a8ce9f9e17503 100644 --- a/interface/web/mail/lib/lang/fr_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/fr_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contient'; $wb['is_txt'] = 'Est'; $wb['begins_with_txt'] = 'Commence par'; $wb['ends_with_txt'] = 'Fini par'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Supprimer'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng index 0cb1b91849c50d752b0d3a3ddd9da442d0dc0cea..0a7feb9c38888758964b7024be71bd620acf8e77 100644 --- a/interface/web/mail/lib/lang/hr_mail_user.lng +++ b/interface/web/mail/lib/lang/hr_mail_user.lng @@ -40,6 +40,8 @@ $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['cc_txt'] = 'Send copy to'; $wb['cc_error_isemail'] = 'The -Send copy to- field does not conatin a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domena'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; diff --git a/interface/web/mail/lib/lang/hr_mail_user_filter.lng b/interface/web/mail/lib/lang/hr_mail_user_filter.lng index 4441ecf5e452a04ba0b909f08cae19c545f10077..55e46fab9144aa88b02c347accb2379624270206 100644 --- a/interface/web/mail/lib/lang/hr_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/hr_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'IskoriÅ¡ten je maksimalni broj mail filtera.'; $wb['subject_txt'] = 'Naslov'; $wb['from_txt'] = 'PoÅ¡iljatelj'; $wb['to_txt'] = 'Primatelj'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Sadrži'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'PoÄinje sa'; $wb['ends_with_txt'] = 'ZavrÅ¡ava sa'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'ObriÅ¡i'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng index 610f40b4ba8b0342590967991a9512ae97d19d55..09a0d7a8de5e00a98ea28c4bdd39915d95d9afb5 100644 --- a/interface/web/mail/lib/lang/hu_mail_user.lng +++ b/interface/web/mail/lib/lang/hu_mail_user.lng @@ -41,6 +41,8 @@ $wb['name_optional_txt'] = '(Opcionális)'; $wb['autoresponder_active'] = 'Automatikus válasz engedélyezése'; $wb['cc_txt'] = 'Másolat küldése'; $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; diff --git a/interface/web/mail/lib/lang/hu_mail_user_filter.lng b/interface/web/mail/lib/lang/hu_mail_user_filter.lng index 750f3c1ae54f04cd67f345c913f771788407ebf1..8b39c062a6854e3422e8abc067dc8d1dccf4cea2 100644 --- a/interface/web/mail/lib/lang/hu_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/hu_mail_user_filter.lng @@ -9,10 +9,12 @@ $wb['source_txt'] = 'Forrás'; $wb['subject_txt'] = 'Tárgy'; $wb['from_txt'] = 'From'; $wb['to_txt'] = 'To'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Tartalmazza'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; +$wb['regex_txt'] = 'Matches Regex'; $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['delete_txt'] = 'Delete'; diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng index e4daf311f334f71992a3d9a3d2040c1197c1c61b..9abd07d28bc06d6de438c4579c42a9330cca1598 100644 --- a/interface/web/mail/lib/lang/id_mail_user.lng +++ b/interface/web/mail/lib/lang/id_mail_user.lng @@ -41,6 +41,8 @@ $wb['name_optional_txt'] = '(Opsional)'; $wb['autoresponder_active'] = 'Aktifkan Penjawab Otomatis'; $wb['cc_txt'] = 'Kirim salinan ke'; $wb['cc_error_isemail'] = 'Kolom Kirim salinan ke tidak berisi alamat email yang valid'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; 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 93f45979f39348b4af6d623eb201895daee9775e..2a8ec29b459deb785e35a650ab9653bbaec3fff6 100644 --- a/interface/web/mail/lib/lang/id_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/id_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng index 34b523f5519cc5f2dd6222d9be95123ed0513fb0..0b38c32fcb74388e1ac2b8062072905d68df5b39 100644 --- a/interface/web/mail/lib/lang/it_mail_user.lng +++ b/interface/web/mail/lib/lang/it_mail_user.lng @@ -40,6 +40,8 @@ $wb['name_optional_txt'] = '(Opzionale)'; $wb['autoresponder_active'] = 'Abilita autorisponditore'; $wb['cc_txt'] = 'Trasmetti copia a'; $wb['cc_error_isemail'] = 'Il campo trasmetti copia a non contiene un indirizzo email valido'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Dominio'; $wb['now_txt'] = 'Ora'; $wb['login_error_unique'] = 'Questo Login è già occupato.'; diff --git a/interface/web/mail/lib/lang/it_mail_user_filter.lng b/interface/web/mail/lib/lang/it_mail_user_filter.lng index bad797d6d5c8ef195cc5da3d89913c40a6bedd77..131b7ff6b5711a8f75aa3f2cfd5edba8c07bf4b8 100644 --- a/interface/web/mail/lib/lang/it_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/it_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.'; $wb['subject_txt'] = 'Oggetto'; $wb['from_txt'] = 'Da'; $wb['to_txt'] = 'A'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Contiene'; $wb['is_txt'] = 'è'; $wb['begins_with_txt'] = 'Inizia con'; $wb['ends_with_txt'] = 'Termina con'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Elimina'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng index 7b6b48dca49915804de56b50f85551a43d09a65d..bb89671d9cad68695e9f2e044c8ddb8a73529a86 100644 --- a/interface/web/mail/lib/lang/ja_mail_user.lng +++ b/interface/web/mail/lib/lang/ja_mail_user.lng @@ -41,6 +41,8 @@ $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['cc_txt'] = 'Send copy to'; $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; 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 8ee3801cc8d146ab6086a6c66f082dc0d5902a14..7354c4026515cab15d3c12ef29ebc56ff8356796 100644 --- a/interface/web/mail/lib/lang/ja_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ja_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng index 83002f79aaef705f59ffdc9b0c210799339d451a..9e35762618677bae6ba1be2f7538da0488b7557b 100644 --- a/interface/web/mail/lib/lang/nl_mail_user.lng +++ b/interface/web/mail/lib/lang/nl_mail_user.lng @@ -40,6 +40,8 @@ $wb['name_optional_txt'] = '(Optioneel)'; $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['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Nu'; $wb['login_error_unique'] = 'Login is already taken.'; 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 95af45d96e51577b7f1c5fd1db3f3fe43889cf27..99dd91b58cf08b49f4ce846a5f0c96493fa63d1a 100644 --- a/interface/web/mail/lib/lang/nl_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/nl_mail_user_filter.lng @@ -11,14 +11,16 @@ $wb['limit_mailfilter_txt'] = 'Het max. aantal e-mail filters voor uw account is $wb['subject_txt'] = 'Onderwerp'; $wb['from_txt'] = 'Afzender'; $wb['to_txt'] = 'Bestemming'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Bevat'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begint met'; $wb['ends_with_txt'] = 'Eindigt in'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Verwijderen'; $wb['move_stop_txt'] = 'Verplaatsen naar'; $wb['header_txt'] = 'Header'; -$wb['size_over_txt'] = 'Email grootte bove (KB)'; +$wb['size_over_txt'] = 'Email grootte boven (KB)'; $wb['size_under_txt'] = 'Email grootte onder (KB)'; $wb['localpart_txt'] = 'Localpart'; $wb['domain_txt'] = 'Domein'; diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng index 15ddeca66f883c3d5a8ab11ef518e24cbf199947..44462af34cca69012daaf3a74fde6e0ad8c9529b 100644 --- a/interface/web/mail/lib/lang/pl_mail_user.lng +++ b/interface/web/mail/lib/lang/pl_mail_user.lng @@ -41,6 +41,8 @@ $wb['name_optional_txt'] = '(Opcjonalnie)'; $wb['autoresponder_active'] = 'Uruchom autorespondera'; $wb['cc_txt'] = 'WyÅ›lij kopiÄ™ do'; $wb['cc_error_isemail'] = 'Pole wysyÅ‚ania kopii nie zawiera poprawnego adresu e-mail'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domena'; $wb['now_txt'] = 'Teraz'; $wb['login_error_unique'] = 'Login jest już w użyciu.'; diff --git a/interface/web/mail/lib/lang/pl_mail_user_filter.lng b/interface/web/mail/lib/lang/pl_mail_user_filter.lng index 1f0b071f193ccddfef0d00a1b8a15b46d365e8d9..6c86f3e52aa7f501ed119ce3502ad43dcc4ac6e7 100644 --- a/interface/web/mail/lib/lang/pl_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/pl_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'Maks. ilość filtrów email jest przekroczona.'; $wb['subject_txt'] = 'Temat'; $wb['from_txt'] = 'Od'; $wb['to_txt'] = 'Do'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Zawiera'; $wb['is_txt'] = 'Jest'; $wb['begins_with_txt'] = 'Zaczyna siÄ™ od'; $wb['ends_with_txt'] = 'KoÅ„czy siÄ™ na'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'UsuÅ„'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng index 9f6227e268ccd7031d32304aecab61c6e134b16f..e197f448c6fdc92a82cead3b0405f580205dee2c 100644 --- a/interface/web/mail/lib/lang/pt_mail_user.lng +++ b/interface/web/mail/lib/lang/pt_mail_user.lng @@ -41,6 +41,8 @@ $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['cc_txt'] = 'Send copy to'; $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; 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 906c27ecd2d6e523b6b8ec5c255383e1d065f33e..41235591a7e091e3cd0408be0c9a69aba730b97d 100644 --- a/interface/web/mail/lib/lang/pt_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/pt_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng index b358960525f11a11af19a916c605706c90a08205..85167e6b7ceccfb7040d9c3d9fbb5e2d6a7a06e7 100644 --- a/interface/web/mail/lib/lang/ro_mail_user.lng +++ b/interface/web/mail/lib/lang/ro_mail_user.lng @@ -41,6 +41,8 @@ $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['cc_txt'] = 'Send copy to'; $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; 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 22435d9e91524bfa0167dd2a79a4940e828cc404..3ca08e982a5cbe7a57207cbcd18a47700048f279 100644 --- a/interface/web/mail/lib/lang/ro_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ro_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng index a6f8a9fb7e9fb2bdf5afacc03682201d5ffd1be6..4fb2147ddb6b71a4927bada4998226d78d49e8a3 100644 --- a/interface/web/mail/lib/lang/ru_mail_user.lng +++ b/interface/web/mail/lib/lang/ru_mail_user.lng @@ -41,6 +41,8 @@ $wb['name_optional_txt'] = '(Опционально)'; $wb['autoresponder_active'] = 'Включить автоответчик'; $wb['cc_txt'] = 'Отправить копию'; $wb['cc_error_isemail'] = 'Поле -Отправить копию- не Ñодержит дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Домен'; $wb['now_txt'] = 'СейчаÑ'; $wb['login_error_unique'] = 'Логин уже занÑÑ‚.'; 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 c8306f9838ece9c91db26e241b3ae531bbe04464..07e767c245ebddf5952adb401d61f35e13b3bfe4 100644 --- a/interface/web/mail/lib/lang/ru_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/ru_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'МакÑимальное чиÑло почтов $wb['subject_txt'] = 'Тема'; $wb['from_txt'] = 'От'; $wb['to_txt'] = 'Кому'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Содержит'; $wb['is_txt'] = 'Равно'; $wb['begins_with_txt'] = 'ÐачинаетÑÑ Ñ'; $wb['ends_with_txt'] = 'ЗаканчиваетÑÑ Ð½Ð°'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Удалить'; $wb['move_stop_txt'] = 'ПеремеÑтить в'; $wb['header_txt'] = 'Заголовок'; diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng index f528bb3ef4659c4b8be6028af6f5f9d8e7c678f5..270d3de346913acf3f9de163a2347c117f0b87f1 100644 --- a/interface/web/mail/lib/lang/se_mail_user.lng +++ b/interface/web/mail/lib/lang/se_mail_user.lng @@ -41,6 +41,8 @@ $wb['name_optional_txt'] = '(Frivilligt)'; $wb['autoresponder_active'] = 'Aktivera autosvaret'; $wb['cc_txt'] = 'Skicka kopia till'; $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domän'; $wb['now_txt'] = 'Nu'; $wb['login_error_unique'] = 'Login is already taken.'; diff --git a/interface/web/mail/lib/lang/se_mail_user_filter.lng b/interface/web/mail/lib/lang/se_mail_user_filter.lng index 0cd888b2e543a6497ea56a6866fee48f7ef2cfac..f8c2a6154695a6a6c5879bed62ffd337823bc23a 100644 --- a/interface/web/mail/lib/lang/se_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/se_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'Det maximala antalet epostfilter är uppnÃ¥tt.'; $wb['subject_txt'] = 'Ämne'; $wb['from_txt'] = 'FrÃ¥n'; $wb['to_txt'] = 'Till'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'InnehÃ¥ller'; $wb['is_txt'] = 'Är'; $wb['begins_with_txt'] = 'Börjar med'; $wb['ends_with_txt'] = 'Slutar med'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Radera'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng index 207be539474755db980d61a9cce7b09d6ccb604a..d12e8abe02fc973990014bae8729e1742362546c 100644 --- a/interface/web/mail/lib/lang/sk_mail_user.lng +++ b/interface/web/mail/lib/lang/sk_mail_user.lng @@ -41,6 +41,8 @@ $wb['name_optional_txt'] = '(Optional)'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['cc_txt'] = 'Send copy to'; $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; $wb['domain_txt'] = 'Domain'; $wb['now_txt'] = 'Now'; $wb['login_error_unique'] = 'Login is already taken.'; 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 7546cd6afa278c1cf57224c389335b9ee147f6dc..966161ed3f7f509bf93c54f69d0f8289a5756b14 100644 --- a/interface/web/mail/lib/lang/sk_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/sk_mail_user_filter.lng @@ -16,6 +16,7 @@ $wb['contains_txt'] = 'Contains'; $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['move_stop_txt'] = 'Move to'; $wb['header_txt'] = 'Header'; diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng index 203338047a225c8e594cd4ff1bfd3397ebc6fa4b..3ea2afe6caece20f81c2f1a79e99816df877e636 100644 --- a/interface/web/mail/lib/lang/tr_mail_user.lng +++ b/interface/web/mail/lib/lang/tr_mail_user.lng @@ -46,8 +46,10 @@ $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['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; +$wb['sender_cc_txt'] = 'Gidenin Gizli Kopyası Åžuraya Gönderilsin'; $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'; 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 ba55be63dcb89295da8d59729da755fad6bd1e02..816174445b4031f181c79fe477118594c8caea82 100644 --- a/interface/web/mail/lib/lang/tr_mail_user_filter.lng +++ b/interface/web/mail/lib/lang/tr_mail_user_filter.lng @@ -11,10 +11,12 @@ $wb['limit_mailfilter_txt'] = 'Hesabınıza ekleyebileceÄŸiniz en fazla e-posta $wb['subject_txt'] = 'Konu'; $wb['from_txt'] = 'Kimden'; $wb['to_txt'] = 'Kime'; +$wb['list_id_txt'] = 'List ID'; $wb['contains_txt'] = 'Åžunu içeren'; $wb['is_txt'] = 'Åžununla aynı'; $wb['begins_with_txt'] = 'Åžununla baÅŸlayan'; $wb['ends_with_txt'] = 'Åžununla biten'; +$wb['regex_txt'] = 'Matches Regex'; $wb['move_stop_txt'] = 'Åžuraya taşı'; $wb['delete_txt'] = 'Sil'; $wb['header_txt'] = 'BaÅŸlık'; diff --git a/interface/web/mail/mail_blacklist_del.php b/interface/web/mail/mail_blacklist_del.php index d3bbc5d5d581991078d44997aa583d1550243181..aa671c488714f0f76af47e45aafad673ecb32eca 100644 --- a/interface/web/mail/mail_blacklist_del.php +++ b/interface/web/mail/mail_blacklist_del.php @@ -43,7 +43,7 @@ require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; -if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin priveliges'); +if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin privileges'); //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/mail_blacklist_edit.php b/interface/web/mail/mail_blacklist_edit.php index e2f284a34ed84df3a0c397aee67107eeabb15468..b86729b919e9d08a8855d972d8c447e48a36bc3b 100644 --- a/interface/web/mail/mail_blacklist_edit.php +++ b/interface/web/mail/mail_blacklist_edit.php @@ -53,7 +53,7 @@ class page_action extends tform_actions { function onShowNew() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); parent::onShowNew(); } @@ -61,7 +61,7 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); //* 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 @@ -79,7 +79,7 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); if(substr($this->dataRecord['source'], 0, 1) === '@') $this->dataRecord['source'] = substr($this->dataRecord['source'], 1); diff --git a/interface/web/mail/mail_blacklist_list.php b/interface/web/mail/mail_blacklist_list.php index 2bdc1e93b8270148285eb4d705dfa7b47cadcfce..ecb24d867c740f2f7853fd46d4d7f52ed1a5bf6b 100644 --- a/interface/web/mail/mail_blacklist_list.php +++ b/interface/web/mail/mail_blacklist_list.php @@ -12,7 +12,7 @@ $list_def_file = "list/mail_blacklist.list.php"; * End Form configuration ******************************************/ -if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin priveliges'); +if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin privileges'); //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index 19aa4f91e61b5600904b40c88118dad8f5287f73..77e15b68fc59a0f76ea69afad73de830ff6543c0 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -283,7 +283,9 @@ class page_action extends tform_actions { $this->dataRecord["domain"] = $app->functions->idn_encode($this->dataRecord["domain"]); $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); } - + + //* server_id must be > 0 + if(isset($this->dataRecord["server_id"]) && $this->dataRecord["server_id"] < 1) $app->tform->errorMessage .= $app->lng("server_id_0_error_txt"); parent::onSubmit(); } diff --git a/interface/web/mail/mail_whitelist_del.php b/interface/web/mail/mail_whitelist_del.php index 2294f4486806d41ffc7777d5bec207ae9c519c48..06ce88550bcef2a2e00d674759ddf310842bba3a 100644 --- a/interface/web/mail/mail_whitelist_del.php +++ b/interface/web/mail/mail_whitelist_del.php @@ -42,7 +42,7 @@ $tform_def_file = "form/mail_whitelist.tform.php"; require_once '../../lib/config.inc.php'; require_once '../../lib/app.inc.php'; -if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin priveliges'); +if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin privileges'); //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/mail_whitelist_edit.php b/interface/web/mail/mail_whitelist_edit.php index 2cf56b1ec451626491830f41acb54196341d6505..35fa825ec78cbdb8d237594cd276ae94ce9199b2 100644 --- a/interface/web/mail/mail_whitelist_edit.php +++ b/interface/web/mail/mail_whitelist_edit.php @@ -53,7 +53,7 @@ class page_action extends tform_actions { function onShowNew() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); parent::onShowNew(); } @@ -61,7 +61,7 @@ class page_action extends tform_actions { function onBeforeUpdate() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); //* 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 @@ -77,7 +77,7 @@ class page_action extends tform_actions { function onSubmit() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); if(substr($this->dataRecord['source'], 0, 1) === '@') $this->dataRecord['source'] = substr($this->dataRecord['source'], 1); diff --git a/interface/web/mail/mail_whitelist_list.php b/interface/web/mail/mail_whitelist_list.php index 1a09b6b16578dd81455536a425d110597ed99168..73877797b4c97e40a333427c4e606793d70e2651 100644 --- a/interface/web/mail/mail_whitelist_list.php +++ b/interface/web/mail/mail_whitelist_list.php @@ -12,7 +12,7 @@ $list_def_file = "list/mail_whitelist.list.php"; * End Form configuration ******************************************/ -if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin priveliges'); +if($_SESSION["s"]["user"]["typ"] != 'admin') $app->error('This function needs admin privileges'); //* Check permissions for module $app->auth->check_module_permissions('mail'); diff --git a/interface/web/mail/spamfilter_config_edit.php b/interface/web/mail/spamfilter_config_edit.php index 5b3062ab771341d8214ca589d628621f55d53da8..9314feeccc95411b8e05b6eaaec7119af0d369a8 100644 --- a/interface/web/mail/spamfilter_config_edit.php +++ b/interface/web/mail/spamfilter_config_edit.php @@ -53,7 +53,7 @@ class page_action extends tform_actions { function onShowEdit() { global $app, $conf; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); if($app->tform->errorMessage == '') { $app->uses('ini_parser,getconf'); @@ -73,7 +73,7 @@ class page_action extends tform_actions { function onUpdateSave($sql) { global $app; - if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges'); + if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin privileges'); $app->uses('ini_parser,getconf'); $section = $app->tform->getCurrentTab(); diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm index c53bc8529241ea3b57b923f18936f3af26511c2e..f41851963b9ad9c06670b837b46784e7b5831bb2 100644 --- a/interface/web/mail/templates/mail_user_mailbox_edit.htm +++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm @@ -54,6 +54,12 @@ <label for="name" class="col-sm-3 control-label">{tmpl_var name='cc_txt'}</label> <div class="col-sm-6"><input type="text" name="cc" id="cc" value="{tmpl_var name='cc'}" class="form-control" /></div><div class="col-sm-3 input-sm"> {tmpl_var name='name_optional_txt'} {tmpl_var name='cc_note_txt'} </div></div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='forward_in_lda_txt'}</label> + <div class="col-sm-9"> + <a href="#" data-toggle="tooltip" title="{tmpl_var name='tooltip_forward_in_lda_txt'}">{tmpl_var name='forward_in_lda'}</a> + </div> + </div> <div class="form-group"> <label for="sender_name" class="col-sm-3 control-label">{tmpl_var name='sender_cc_txt'}</label> <div class="col-sm-6"><input type="text" name="sender_cc" id="sender_cc" value="{tmpl_var name='sender_cc'}" class="form-control" /></div><div class="col-sm-3 input-sm"> {tmpl_var name='name_optional_txt'} {tmpl_var name='sender_cc_note_txt'} diff --git a/interface/web/mailuser/form/mail_user_autoresponder.tform.php b/interface/web/mailuser/form/mail_user_autoresponder.tform.php index e642534c13fbf34250aedf51ba88173395857f93..fa4025b532f89f004f02fbb94059a1fe74fd8cf4 100644 --- a/interface/web/mailuser/form/mail_user_autoresponder.tform.php +++ b/interface/web/mailuser/form/mail_user_autoresponder.tform.php @@ -94,16 +94,20 @@ $form["tabs"]['autoresponder'] = array ( 'autoresponder_start_date' => array ( 'datatype' => 'DATETIME', 'formtype' => 'DATETIME', - 'validators'=> array ( 0 => array ( 'type' => 'CUSTOM', - 'class' => 'validate_autoresponder', - 'function' => 'start_date', - 'errmsg'=> 'autoresponder_start_date_isfuture'), - ), + 'validators'=> array ( + 0 => array ( 'type' => 'ISDATETIME', + 'allowempty' => 'y', + 'errmsg'=> 'autoresponder_start_date_is_no_date'), + ) ), 'autoresponder_end_date' => array ( 'datatype' => 'DATETIME', 'formtype' => 'DATETIME', - 'validators' => array ( 0 => array ( 'type' => 'CUSTOM', + 'validators'=> array ( + 0 => array ( 'type' => 'ISDATETIME', + 'allowempty' => 'y', + 'errmsg'=> 'autoresponder_end_date_is_no_date'), + 1 => array ( 'type' => 'CUSTOM', 'class' => 'validate_autoresponder', 'function' => 'end_date', 'errmsg'=> 'autoresponder_end_date_isgreater'), diff --git a/interface/web/mailuser/form/mail_user_cc.tform.php b/interface/web/mailuser/form/mail_user_cc.tform.php index 5f5e13a9d8df5e599854b2f38665b690e665b4a7..fb26892584ce1970a7844b3f079d6f26bf3c1558 100644 --- a/interface/web/mailuser/form/mail_user_cc.tform.php +++ b/interface/web/mailuser/form/mail_user_cc.tform.php @@ -76,7 +76,13 @@ $form["tabs"]['mailuser'] = array ( 'default' => '', 'value' => '', 'width' => '30', - 'maxlength' => '255' + 'maxlength' => '65535' + ), + 'forward_in_lda' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n', 1 => 'y') ), //################################# // 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 9fdd8bdfc0ef45c9168a4c5c0d7a6cae694fa651..0f454fa6f751d3439188ac3053eb7f6858f4f720 100644 --- a/interface/web/mailuser/form/mail_user_filter.tform.php +++ b/interface/web/mailuser/form/mail_user_filter.tform.php @@ -32,18 +32,17 @@ */ - global $app; $form["title"] = "mailbox_filter_txt"; -$form["description"] = ""; +$form["description"] = ""; $form["name"] = "mail_user_filter"; $form["action"] = "mail_user_filter_edit.php"; $form["db_table"] = "mail_user_filter"; -$form["db_table_idx"] = "filter_id"; +$form["db_table_idx"] = "filter_id"; $form["db_history"] = "no"; -$form["tab_default"] = "filter"; -$form["list_default"] = "mail_user_filter_list.php"; +$form["tab_default"] = "filter"; +$form["list_default"] = "mail_user_filter_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 @@ -74,6 +73,12 @@ $form["tabs"]['filter'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'rulename_error_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPTAGS'), + 1 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -83,14 +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','begins'=>'Begins with','ends'=>'Ends with') - 'value' => array('contains'=>'contains_txt', 'is' => 'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt') + 'value' => array('contains'=>'contains_txt', 'is'=>'is_txt', 'begins'=>'begins_with_txt', 'ends'=>'ends_with_txt', 'regex'=>'regex_txt', 'localpart'=>'localpart_txt', 'domain'=>'domain_txt') ), 'searchterm' => array ( 'datatype' => 'VARCHAR', @@ -98,6 +103,10 @@ $form["tabs"]['filter'] = array ( 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'searchterm_is_empty'), ), + 'filters' => array( + 0 => array( 'event' => 'SAVE', + 'type' => 'STRIPNL') + ), 'default' => '', 'value' => '', 'width' => '30', @@ -107,13 +116,13 @@ $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', 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[a-zA-Z0-9\.\-\_\ ]{0,100}$/', + 'regex' => '/^[\p{Latin}0-9\.\-\_\ \&]{0,100}$/u', 'errmsg'=> 'target_error_regex'), ), 'default' => '', diff --git a/interface/web/mailuser/lib/lang/ar_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/ar_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/ar_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/ar_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/ar_mail_user_cc.lng b/interface/web/mailuser/lib/lang/ar_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/ar_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/ar_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ar_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/ar_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/ar_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/ar_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/ar_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/bg_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/bg_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/bg_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/bg_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/bg_mail_user_cc.lng b/interface/web/mailuser/lib/lang/bg_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/bg_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/bg_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/bg_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/bg_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/bg_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/bg_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/bg_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> 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 9de387d7988c1b3910083be4afd3d9e73ddb5981..3783bbcb7368e96d2d6b1dca99a67ec23f42064a 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_autoresponder.lng @@ -6,7 +6,7 @@ $wb['autoresponder_txt'] = 'Ativo'; $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_end_date_isgreater'] = 'End date must be later than start date.'; $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 7a1e9a3d95a91ecea9173c8b7104cfc9cf8b2f19..8008ed26185aebd7eaa4fe7dfaab8c5fde0d7065 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Endereço de e-mail inválido no campo "Enviar cópia $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 endereços de e-mail com vÃrgulas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 acefe8be6eeff36105556b42011eefd2fb2f67c1..88a727139136839d0e79ca7e3b3bbffb37efc396 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_filter.lng @@ -17,5 +17,9 @@ $wb['is_txt'] = 'é'; $wb['begins_with_txt'] = 'Iniciando com'; $wb['ends_with_txt'] = 'Finalizando com'; $wb['move_to_txt'] = 'Mover para'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Remover'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> 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 eb369220412e340952738ed60bffcd81f943c356..360d47d9cc9855f876a078b2d7b8c2756fe920b4 100644 --- a/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/br_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Filtros anti-spam'; $wb['spamfilter_txt'] = 'Filtro anti-spam'; $wb['email_txt'] = 'e-Mail'; -$wb['no_policy'] = '-desabilitado-'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'PolÃtica'; ?> diff --git a/interface/web/mailuser/lib/lang/ca_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/ca_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/ca_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/ca_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/ca_mail_user_cc.lng b/interface/web/mailuser/lib/lang/ca_mail_user_cc.lng index 90cc6622de0ca180fcc3fdf20c7842855db5b0fd..15c4c34307a6cf2e2e6dcdb93fc6d82c3a2f5fd1 100644 --- a/interface/web/mailuser/lib/lang/ca_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/ca_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Courriel invalide dans le champ - copie conforme -'; $wb['email_is_cc_error'] = 'Coipe conforme invalide.'; $wb['name_optional_txt'] = '(Optionnel)'; $wb['cc_note_txt'] = '(Séparer chaque adresses par une virgule)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ca_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/ca_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/ca_mail_user_spamfilter.lng index 2b29913e5f50b9a91e43a10666b8ae2b0aa9add2..00ed8174f494712ea61ddedf8c60ce994849ddfb 100644 --- a/interface/web/mailuser/lib/lang/ca_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/ca_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Courriel'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/cz_mail_user_autoresponder.lng index ef3aeb42da522378dbd954257bc39bd9b13f3c34..20134a87b5bafc1c1291da2f8e34863bbd18b4be 100644 --- a/interface/web/mailuser/lib/lang/cz_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/cz_mail_user_autoresponder.lng @@ -6,7 +6,7 @@ $wb['autoresponder_txt'] = 'AktivnÃ'; $wb['autoresponder_start_date_txt'] = 'ZaÄÃt od'; $wb['autoresponder_start_date_isfuture'] = 'Datum zahájenà nesmà být v minulosti.'; $wb['autoresponder_end_date_txt'] = 'SkonÄit'; -$wb['autoresponder_end_date_isgreater'] = 'Datum ukonÄenà musà být nastaven a musà být pozdÄ›jÅ¡Ã než datum zahájenÃ.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Povolit automatický odpovÃdaÄ'; $wb['now_txt'] = 'NynÃ'; $wb['autoresponder_subject_txt'] = 'PÅ™edmÄ›t e-mailu'; diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng b/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng index 57ecd90b9a0887f4d07530ab3e9fb77c05eecd56..1f94bd024da306d97357a29f3bec78a1ff88d206 100644 --- a/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'VyplnÄ›ná e-mailová adresa neplatná'; $wb['email_is_cc_error'] = 'VyplnÄ›ná e-mailová adresa a poslat kopii na e-mail adresu, nemůžou být stejné.'; $wb['name_optional_txt'] = '(Volitelné)'; $wb['cc_note_txt'] = '(PÅ™i posÃlánà kopià na vÃce e-mailových adres, oddÄ›lte Äárkami.)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_filter.lng b/interface/web/mailuser/lib/lang/cz_mail_user_filter.lng index 27b54c1bc7724861e10999d50b093593e8e7757b..010427341ed27597ab4bbe9f3192f65b4939fa92 100644 --- a/interface/web/mailuser/lib/lang/cz_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/cz_mail_user_filter.lng @@ -16,6 +16,10 @@ $wb['is_txt'] = 'Je'; $wb['begins_with_txt'] = 'ZaÄÃná na'; $wb['ends_with_txt'] = 'KonÄà na'; $wb['move_to_txt'] = 'PÅ™esunout do'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Smazat'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/cz_mail_user_spamfilter.lng index 2a53036be6267f69d2f15db97ab7b2087e026eb2..e6a50b96f8c3f1b9c45dc557c95eee25baddff41 100644 --- a/interface/web/mailuser/lib/lang/cz_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/cz_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamový filtr'; $wb['spamfilter_txt'] = 'Spamový filtr'; $wb['email_txt'] = 'E-mail'; -$wb['no_policy'] = '- nepovoleno -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Politika'; ?> diff --git a/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng index f8d4e46b12109005789a7d61fd8720d44ac508d9..af164c475d2ce2f35195a211b8ea001f1a3a4d7a 100644 --- a/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng @@ -6,7 +6,7 @@ $wb['autoresponder_txt'] = 'Aktiv'; $wb['autoresponder_start_date_txt'] = 'Start am'; $wb['autoresponder_start_date_isfuture'] = 'Start Datum kann nicht in der Vergangenheit sein.'; $wb['autoresponder_end_date_txt'] = 'Ende am'; -$wb['autoresponder_end_date_isgreater'] = 'End Datum muss gesetzt werden und nach dem Start Datum sein.'; +$wb['autoresponder_end_date_isgreater'] = 'End Datum muss nach dem Start Datum sein.'; $wb['autoresponder_active'] = 'Autoresponder aktivieren'; $wb['now_txt'] = 'Jetzt'; $wb['autoresponder_subject_txt'] = 'Betreff'; diff --git a/interface/web/mailuser/lib/lang/de_mail_user_cc.lng b/interface/web/mailuser/lib/lang/de_mail_user_cc.lng index e43d39c1697bb0e67578a3c634048db25cc3831a..6810752d4d68c78ea1bd0e6a3c0b6f9a953bae86 100644 --- a/interface/web/mailuser/lib/lang/de_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/de_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'E-Mail Adresse ungültig im -Kopie senden an- Feld'; $wb['email_is_cc_error'] = 'E-Mail Adresse und '; $wb['name_optional_txt'] = '(optional)'; $wb['cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> diff --git a/interface/web/mailuser/lib/lang/de_mail_user_filter.lng b/interface/web/mailuser/lib/lang/de_mail_user_filter.lng index 1665ba14d22763412387e00b009f445090e78d4b..5c7d5c20d0bbd42993711cee5a3c92781a10af13 100644 --- a/interface/web/mailuser/lib/lang/de_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/de_mail_user_filter.lng @@ -17,5 +17,9 @@ $wb['is_txt'] = 'Ist'; $wb['begins_with_txt'] = 'Startet mit'; $wb['ends_with_txt'] = 'Endet mit'; $wb['move_to_txt'] = 'Verschieben nach'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Löschen'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng index 47ac53a006c373ca32e297350a4cc7929639f6db..d444899a8f8a86013861a657aa28e7628013be3a 100644 --- a/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'E-Mail'; -$wb['no_policy'] = '- nicht aktiviert -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Richtlinie'; ?> diff --git a/interface/web/mailuser/lib/lang/dk_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/dk_mail_user_autoresponder.lng index 81bee87afb6a1a4f98d8e2c304d8174a01298d5a..e9cf7ba82a58a53eab81f4c19f5a70199744ad33 100644 --- a/interface/web/mailuser/lib/lang/dk_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/dk_mail_user_autoresponder.lng @@ -6,7 +6,7 @@ $wb['autoresponder_txt'] = 'Aktiv'; $wb['autoresponder_start_date_txt'] = 'Start d.'; $wb['autoresponder_start_date_isfuture'] = 'Start dato kan ikke være i fortid.'; $wb['autoresponder_end_date_txt'] = 'Slut d.'; -$wb['autoresponder_end_date_isgreater'] = 'Slut dato skal indtastes og være senere end start dato.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Aktiver autosvarer'; $wb['now_txt'] = 'Nu'; $wb['autoresponder_subject_txt'] = 'Emne'; diff --git a/interface/web/mailuser/lib/lang/dk_mail_user_cc.lng b/interface/web/mailuser/lib/lang/dk_mail_user_cc.lng index 8fafd94e5a5f36081622b78a1263f1f6efb9a691..70052fdaeb894a03e41b26e608b1e603c9e5ce5a 100644 --- a/interface/web/mailuser/lib/lang/dk_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/dk_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'E-mail adresse ugyldig i -Send kopi til- feltet'; $wb['email_is_cc_error'] = 'E-mail adresse og send kopi til adressen kan ikke være det samme.'; $wb['name_optional_txt'] = '(Valgfri)'; $wb['cc_note_txt'] = '(Adskil flere e-mail adresser med kommaer)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 0a92f580a10ab1548c4a3426f73e1a8cc8fece9b..e2325c6902c8117f2e777929cebe7323407a13c3 100644 --- a/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/dk_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Er'; $wb['begins_with_txt'] = 'Begynder med'; $wb['ends_with_txt'] = 'Slutter med'; $wb['move_to_txt'] = 'Flyt til'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Slet'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/dk_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/dk_mail_user_spamfilter.lng index f43190d492abf9b7f0a4d3ea87da4c30cfd98620..fb05b7565ce21b5dd5dfba2e7203f5ffe08e1294 100644 --- a/interface/web/mailuser/lib/lang/dk_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/dk_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'E-mail'; -$wb['no_policy'] = '- ikke aktiveret -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Politik'; ?> diff --git a/interface/web/mailuser/lib/lang/el_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/el_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/el_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/el_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/el_mail_user_cc.lng b/interface/web/mailuser/lib/lang/el_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/el_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/el_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/el_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/el_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/el_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/el_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/el_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/el_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/en_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/en_mail_user_autoresponder.lng index a736abf69082154b13322b64dba298c66a1927c3..e0028159433081752c19a822a3d2954b71f5b9ec 100644 --- a/interface/web/mailuser/lib/lang/en_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/en_mail_user_autoresponder.lng @@ -9,5 +9,5 @@ $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['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/en_mail_user_cc.lng b/interface/web/mailuser/lib/lang/en_mail_user_cc.lng index 3437d50d195c8bdef543e2a688f5527250585415..b9c1a20caca304589a8f23bd50027a4555808555 100644 --- a/interface/web/mailuser/lib/lang/en_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/en_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb["cc_error_isemail"] = 'Email address invalid in -Send copy to- field'; $wb["email_is_cc_error"] = 'Email address and send copy to address can not be the same.'; $wb["name_optional_txt"] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; -?> \ No newline at end of file +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; +?> 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 c26150ba1d183e8cea68c1aa9e3d0d3fc246664d..fb587d43805d11f0367cdcfc795af9582e31eb60 100644 --- a/interface/web/mailuser/lib/lang/en_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/en_mail_user_filter.lng @@ -18,5 +18,9 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/en_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/en_mail_user_spamfilter.lng index 8f95dd37a7f189f860cfaf8bf81a7b809272b3c4..030e4fce593a656d5d953ee6a8d55a1f1df79754 100644 --- a/interface/web/mailuser/lib/lang/en_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/en_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb["mailbox_spamfilter_txt"] = 'Spamfilter'; $wb["spamfilter_txt"] = 'Spamfilter'; $wb["email_txt"] = 'Email'; -$wb["no_policy"] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb["policy_txt"] = 'Policy'; -?> \ No newline at end of file +?> diff --git a/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng index 577951ea2b3e48d743ff96b83fed676c4f8afc45..04e55b28b9a688a0b38168f315e6dbf9b846f2f2 100644 --- a/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng @@ -1,6 +1,6 @@ <?php $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_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_end_date_txt'] = 'Finaliza el'; $wb['autoresponder_start_date_txt'] = 'Comienza el'; $wb['autoresponder_subject'] = 'Estoy fuera de la oficina'; diff --git a/interface/web/mailuser/lib/lang/es_mail_user_cc.lng b/interface/web/mailuser/lib/lang/es_mail_user_cc.lng index aef29a0cdbea2aeae1709bd01c8a292257398846..5b1c05a2aafcc62e87a6fac15eb4dbeaba35c9cf 100644 --- a/interface/web/mailuser/lib/lang/es_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/es_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['email_is_cc_error'] = 'La dirección de correo y enviar copia a, no pueden $wb['email_txt'] = 'Correo'; $wb['mailbox_cc_txt'] = 'Enviar copia a direcciones de correo'; $wb['name_optional_txt'] = '(Opcional)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 b8a19359f538c8da7ff662b0310b29eb3c95e96a..3485ea46014c3bf3c747159346fc234675d56ad6 100644 --- a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng @@ -3,6 +3,7 @@ $wb['action_txt'] = 'Acción'; $wb['active_txt'] = 'Habilitado'; $wb['begins_with_txt'] = 'Comienza con'; $wb['contains_txt'] = 'Contiene'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Borrar'; $wb['ends_with_txt'] = 'Termina con'; $wb['from_txt'] = 'De'; @@ -19,4 +20,7 @@ $wb['target_txt'] = 'Carpeta'; $wb['to_txt'] = 'Para'; $wb['list_id_txt'] = 'List ID'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng index 31d7ba7c745979e7d380a11c91ff286e4b086ef1..2496d26f9343554b37b4bfe65f784fdbd7e51db5 100644 --- a/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng @@ -1,7 +1,7 @@ <?php $wb['email_txt'] = 'Correo'; $wb['mailbox_spamfilter_txt'] = 'Filtro de spam'; -$wb['no_policy'] = '- no habilitado -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Directiva'; $wb['spamfilter_txt'] = 'Filtro de spam'; ?> diff --git a/interface/web/mailuser/lib/lang/fi_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/fi_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/fi_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/fi_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/fi_mail_user_cc.lng b/interface/web/mailuser/lib/lang/fi_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/fi_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/fi_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/fi_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/fi_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/fi_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/fi_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/fi_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/fr_mail_user_cc.lng b/interface/web/mailuser/lib/lang/fr_mail_user_cc.lng index d29dacd8304b71ab4c6fa2281427e0e2c261a1da..a0139d0fec1a5b56a0d54a83ec01bd354afbcbb4 100644 --- a/interface/web/mailuser/lib/lang/fr_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/fr_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Adresse e-mail invalide dans le champ - Envoyer une $wb['email_is_cc_error'] = 'L’adresse e-mail principale et l’addresse de copie ne peuvent pas être identiques.'; $wb['name_optional_txt'] = '(Optionel)'; $wb['cc_note_txt'] = '(Séparer les addresses e-mail multiples avec une virgule)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> diff --git a/interface/web/mailuser/lib/lang/fr_mail_user_filter.lng b/interface/web/mailuser/lib/lang/fr_mail_user_filter.lng index b630b05a796f592e64d7722dffef06db7bf8376b..d2b513b1556b933502763224c3b2ef0ec7c9a267 100644 --- a/interface/web/mailuser/lib/lang/fr_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/fr_mail_user_filter.lng @@ -16,6 +16,10 @@ $wb['is_txt'] = 'est'; $wb['begins_with_txt'] = 'Commence par'; $wb['ends_with_txt'] = 'Fini par'; $wb['move_to_txt'] = 'Déplacer vers'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Supprimer'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/fr_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/fr_mail_user_spamfilter.lng index f6bcd5d32d56d5e23febc29484310978311cf27d..1574f45f3f1f33650325d8688daa2b2ae2d9fa8f 100644 --- a/interface/web/mailuser/lib/lang/fr_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/fr_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Filtre anti-spam'; $wb['spamfilter_txt'] = 'Filtre anti-spam'; $wb['email_txt'] = 'E-mail'; -$wb['no_policy'] = '- non activé -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Stratégie'; ?> diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/hr_mail_user_autoresponder.lng index bbb3b79bc4f1bb311b5a0bd6fff0c22d353d31e2..711cfde14f935cf63a83956e05e6cb11d6a21a10 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Sada'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_cc.lng b/interface/web/mailuser/lib/lang/hr_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_filter.lng b/interface/web/mailuser/lib/lang/hr_mail_user_filter.lng index b2793c38051161f8abb79e740d889c3bdf142ff1..dfb58bd3d2ed2f0c4deeb08204854a9d8f697666 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_filter.lng @@ -16,6 +16,10 @@ $wb['is_txt'] = 'je'; $wb['begins_with_txt'] = 'PoÄinje sa'; $wb['ends_with_txt'] = 'ZavrÅ¡ava sa'; $wb['move_to_txt'] = 'Prebaci u '; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'ObriÅ¡i'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/hr_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/hr_mail_user_spamfilter.lng index 7d7130e816f07ff0e613203d47b8877069f37a36..b2d208a09884a3808d04c06cebd129dceb6bf8b7 100644 --- a/interface/web/mailuser/lib/lang/hr_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/hr_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spam filter'; $wb['spamfilter_txt'] = 'Spam filter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- iskljuÄeno -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Pravila'; ?> diff --git a/interface/web/mailuser/lib/lang/hu_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/hu_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/hu_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/hu_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/hu_mail_user_cc.lng b/interface/web/mailuser/lib/lang/hu_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/hu_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/hu_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/hu_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/hu_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/hu_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/hu_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/hu_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/id_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/id_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/id_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/id_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/id_mail_user_cc.lng b/interface/web/mailuser/lib/lang/id_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/id_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/id_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/id_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/id_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/id_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/id_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/id_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/id_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/it_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/it_mail_user_autoresponder.lng index caaac2e7c4d116ec1da199d82a8e9831fa60c8fa..0bc9b162f0f93e99ee468f432ab01d362774d7ec 100644 --- a/interface/web/mailuser/lib/lang/it_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/it_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $wb['autoresponder_txt'] = 'Attivo'; $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/it_mail_user_cc.lng b/interface/web/mailuser/lib/lang/it_mail_user_cc.lng index 01f22f5fc856ca905f89ad73304796b5d8225639..6ed79429fb8ee19c43a3029dfe3bca0c4d92e265 100644 --- a/interface/web/mailuser/lib/lang/it_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/it_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> diff --git a/interface/web/mailuser/lib/lang/it_mail_user_filter.lng b/interface/web/mailuser/lib/lang/it_mail_user_filter.lng index 49c335860182218e8edcfb036e935e647f5a7958..a0b9e360c2875f47f9846ea00a77436949d4d8ed 100644 --- a/interface/web/mailuser/lib/lang/it_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/it_mail_user_filter.lng @@ -16,6 +16,10 @@ $wb['is_txt'] = 'è'; $wb['begins_with_txt'] = 'Inizia con'; $wb['ends_with_txt'] = 'Termina con'; $wb['move_to_txt'] = 'Sposta in'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Elimina'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/it_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/it_mail_user_spamfilter.lng index 9d4c5496ea57b829cbbcc4e00b1ef1f6994c3d9e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/it_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/it_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- non abilitato -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/ja_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/ja_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/ja_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/ja_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/ja_mail_user_cc.lng b/interface/web/mailuser/lib/lang/ja_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/ja_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/ja_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ja_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/ja_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/ja_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/ja_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/ja_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/nl_mail_user_cc.lng b/interface/web/mailuser/lib/lang/nl_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/nl_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/nl_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 0092c288a06a1845afa038f398c497dd2129e7b1..91dfd85373130da5060cdb0bad5ff159bde4d5c1 100644 --- a/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/nl_mail_user_filter.lng @@ -16,6 +16,10 @@ $wb['is_txt'] = "Is"; $wb['begins_with_txt'] = "Begint met"; $wb['ends_with_txt'] = "Endigt in"; $wb['move_to_txt'] = "Verplaatsen naar"; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = "Verwijderen"; $wb['mailbox_filter_txt'] = "Mailbox filter"; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/nl_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/nl_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/nl_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/nl_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/pl_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/pl_mail_user_autoresponder.lng index 7a28409e5f440ea40a35f110191fc5d5f105aff4..79019190c66137724e818d10c861fce8e1303f84 100644 --- a/interface/web/mailuser/lib/lang/pl_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/pl_mail_user_autoresponder.lng @@ -6,7 +6,7 @@ $wb['autoresponder_txt'] = 'Aktywny'; $wb['autoresponder_start_date_txt'] = 'Start'; $wb['autoresponder_start_date_isfuture'] = 'Data startu nie może być z przeszÅ‚oÅ›ci'; $wb['autoresponder_end_date_txt'] = 'Koniec'; -$wb['autoresponder_end_date_isgreater'] = 'Data koÅ„cowa musi być ustawiona i być późniejsza niż startu.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'WÅ‚Ä…cz autoresponder'; $wb['now_txt'] = 'Teraz'; $wb['autoresponder_subject_txt'] = 'Temat'; diff --git a/interface/web/mailuser/lib/lang/pl_mail_user_cc.lng b/interface/web/mailuser/lib/lang/pl_mail_user_cc.lng index b9a63d8d085e2ce396226671573ddc6431eb41f3..1ec4648925adee8e021f754d5538c8b6ce4f1aea 100644 --- a/interface/web/mailuser/lib/lang/pl_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/pl_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Adres e-mail jest niepoprawny w polu -WyÅ›lij kopiÄ™ $wb['email_is_cc_error'] = 'Adres e-mail i adres do wysyÅ‚ki kopii nie mogÄ… być takie same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/pl_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/pl_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/pl_mail_user_spamfilter.lng index b371f3ea75110524e3387db7708d06df87426121..5a530c0c5edd1720770bb5e12afe77a2b91ef694 100644 --- a/interface/web/mailuser/lib/lang/pl_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/pl_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Ustawienia filtra spamu'; $wb['spamfilter_txt'] = 'Filtr spamu'; $wb['email_txt'] = 'E-mail'; -$wb['no_policy'] = '- nie wÅ‚Ä…czony -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Polityka'; ?> diff --git a/interface/web/mailuser/lib/lang/pt_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/pt_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/pt_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/pt_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/pt_mail_user_cc.lng b/interface/web/mailuser/lib/lang/pt_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/pt_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/pt_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/pt_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/pt_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/pt_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/pt_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/pt_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/ro_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/ro_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/ro_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/ro_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/ro_mail_user_cc.lng b/interface/web/mailuser/lib/lang/ro_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/ro_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/ro_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ro_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/ro_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/ro_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/ro_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/ro_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/ru_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/ru_mail_user_autoresponder.lng index c7c864c5a513902aca615fe9e293d5ff09aaa668..0e5ec20601006535ba92bb1126e3af7d1f742042 100644 --- a/interface/web/mailuser/lib/lang/ru_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/ru_mail_user_autoresponder.lng @@ -6,7 +6,7 @@ $wb['autoresponder_txt'] = 'Ðктивно'; $wb['autoresponder_start_date_txt'] = 'ЗапуÑкать'; $wb['autoresponder_start_date_isfuture'] = 'Дата запуÑка не может быть в прошлом.'; $wb['autoresponder_end_date_txt'] = 'ОÑтанавливать'; -$wb['autoresponder_end_date_isgreater'] = 'Дата Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть позже даты запуÑка.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Включить автоответчик'; $wb['now_txt'] = 'СейчаÑ'; $wb['autoresponder_subject_txt'] = 'Тема'; diff --git a/interface/web/mailuser/lib/lang/ru_mail_user_cc.lng b/interface/web/mailuser/lib/lang/ru_mail_user_cc.lng index 7987b0106b3ea2aa95f2a66413d873159a53aa1e..f551318c0b39c313f4ea9a972bfa06aa0aacc9bb 100644 --- a/interface/web/mailuser/lib/lang/ru_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/ru_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Поле -Отправить копию- не Ñод $wb['email_is_cc_error'] = 'ÐÐ´Ñ€ÐµÑ Ñлектронной почты и Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ копии не могут быть одинаковыми.'; $wb['name_optional_txt'] = '(Опционально)'; $wb['cc_note_txt'] = '(Разделите неÑколько адреÑов Ñлектронной почты запÑтыми)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 d834e4057a0688ee6c2302933a9edf07d1aa0d43..590763ed43fa656a5b61a81793d842c205fa47da 100644 --- a/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/ru_mail_user_filter.lng @@ -16,6 +16,10 @@ $wb['is_txt'] = 'Равно'; $wb['begins_with_txt'] = 'ÐачинаетÑÑ Ñ'; $wb['ends_with_txt'] = 'ЗаканчиваетÑÑ Ð½Ð°'; $wb['move_to_txt'] = 'ПеремеÑтить в'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Удалить'; $wb['mailbox_filter_txt'] = 'Фильтр почтового Ñщика'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/ru_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/ru_mail_user_spamfilter.lng index a4b7a48b7f8c5a80732a4ae7289a66a5aaa4509f..1a168b76107066136450eae9fe166925148d8a98 100644 --- a/interface/web/mailuser/lib/lang/ru_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/ru_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Спам-фильтр'; $wb['spamfilter_txt'] = 'СПÐÐœ-фильтр'; $wb['email_txt'] = 'ÐÐ´Ñ€ÐµÑ Ñл. почты'; -$wb['no_policy'] = '- ОтÑутÑтвует -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Правило'; ?> diff --git a/interface/web/mailuser/lib/lang/se_mail_user_cc.lng b/interface/web/mailuser/lib/lang/se_mail_user_cc.lng index b01ae1b1ab15a806c91a7a5a37a04a137a479668..4894ee856cbc2c182010c33c0f12ecc9d07acf59 100644 --- a/interface/web/mailuser/lib/lang/se_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/se_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Epostadressen i -Skicka kopia till-fältet är ogilt $wb['email_is_cc_error'] = 'Epostadress och -Skicka kopia till- kan inte vara samma adress.'; $wb['name_optional_txt'] = '(Frivilligt)'; $wb['cc_note_txt'] = '(Separera flera epostadresser med kommatecken)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> diff --git a/interface/web/mailuser/lib/lang/se_mail_user_filter.lng b/interface/web/mailuser/lib/lang/se_mail_user_filter.lng index da15d6f73b2e6e55713574c621590d632ee6416d..4f7e093d773f1fa72975e86856fd27d9f6c95d27 100644 --- a/interface/web/mailuser/lib/lang/se_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/se_mail_user_filter.lng @@ -16,6 +16,10 @@ $wb['is_txt'] = 'Är'; $wb['begins_with_txt'] = 'Börjar med'; $wb['ends_with_txt'] = 'Slutar med'; $wb['move_to_txt'] = 'Flytta till'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Radera'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/se_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/se_mail_user_spamfilter.lng index 7ec5f2a7d8671cc2ca146de36ed9918c2d4ca9bd..8cc318e71c6e38040a48b8e73fb67ba76ac92e80 100644 --- a/interface/web/mailuser/lib/lang/se_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/se_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Epost'; -$wb['no_policy'] = '- ej aktiverat -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/sk_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/sk_mail_user_autoresponder.lng index 79f386a7dc9da88380ae34d006d729d79894b549..b913b5cfa13d256c5e55b7978669d18e56b6a3b4 100644 --- a/interface/web/mailuser/lib/lang/sk_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/sk_mail_user_autoresponder.lng @@ -6,8 +6,8 @@ $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_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'Enable the autoresponder'; $wb['now_txt'] = 'Now'; -$wb['autoresponder_subject_txt'] = 'Betreff'; +$wb['autoresponder_subject_txt'] = 'Subject'; ?> diff --git a/interface/web/mailuser/lib/lang/sk_mail_user_cc.lng b/interface/web/mailuser/lib/lang/sk_mail_user_cc.lng index 81877884cce3a2bda6651068a61e473fad2882ce..4e7ef766e750f86f2bbecc1b29ad038bbba2ca46 100644 --- a/interface/web/mailuser/lib/lang/sk_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/sk_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field'; $wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.'; $wb['name_optional_txt'] = '(Optional)'; $wb['cc_note_txt'] = '(Separate multiple email addresses with commas)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 9ac4be357efcb3ce2912c717d9e6f341e9f2941e..0df6e0b75bf88fda9af78ceecd9bb7d07e2ad87d 100644 --- a/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/sk_mail_user_filter.lng @@ -17,6 +17,10 @@ $wb['is_txt'] = 'Is'; $wb['begins_with_txt'] = 'Begins with'; $wb['ends_with_txt'] = 'Ends with'; $wb['move_to_txt'] = 'Move to'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Delete'; $wb['mailbox_filter_txt'] = 'Mailbox filter'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> diff --git a/interface/web/mailuser/lib/lang/sk_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/sk_mail_user_spamfilter.lng index be4bad90504b47914b13a01b95158a862024839e..fc355eb9200d2793eb6e3af79e1dc7d18c8bcd84 100644 --- a/interface/web/mailuser/lib/lang/sk_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/sk_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $wb['mailbox_spamfilter_txt'] = 'Spamfilter'; $wb['spamfilter_txt'] = 'Spamfilter'; $wb['email_txt'] = 'Email'; -$wb['no_policy'] = '- not enabled -'; +$wb['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Policy'; ?> diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/tr_mail_user_autoresponder.lng index ab776ef9454e0a14e33387e9e4c9d3219fe411ff..06fbddd0bc227a3f45db566f552c2cc5d992a93b 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_autoresponder.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_autoresponder.lng @@ -6,7 +6,7 @@ $wb['autoresponder_txt'] = 'Etkin'; $wb['autoresponder_start_date_txt'] = 'BaÅŸlangıç'; $wb['autoresponder_start_date_isfuture'] = 'BaÅŸlangıç tarihi geçmiÅŸ zamanda olamaz.'; $wb['autoresponder_end_date_txt'] = 'BitiÅŸ'; -$wb['autoresponder_end_date_isgreater'] = 'BitiÅŸ tarihi baÅŸlangıç tarihinden sonra olmalıdır.'; +$wb['autoresponder_end_date_isgreater'] = 'End date must be later than start date.'; $wb['autoresponder_active'] = 'EtkinleÅŸtir'; $wb['now_txt'] = 'Åžimdi'; $wb['autoresponder_subject_txt'] = 'Otoyanıt'; diff --git a/interface/web/mailuser/lib/lang/tr_mail_user_cc.lng b/interface/web/mailuser/lib/lang/tr_mail_user_cc.lng index 039ed7062500d7d69d127dd2148f0fa26191986d..978779767cea55d0a376232cc0b7e0bba9db1ca9 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_cc.lng @@ -6,4 +6,6 @@ $wb['cc_error_isemail'] = '-Åžuraya kopya gönder- e-posta adresi geçersiz'; $wb['email_is_cc_error'] = 'E-posta adresi ile kopyanın gönderileceÄŸi adres aynı olamaz.'; $wb['name_optional_txt'] = '(Ä°steÄŸe baÄŸlı)'; $wb['cc_note_txt'] = '(Birden çok e-posta adresini virgül ile ayırarak yazın)'; +$wb['forward_in_lda_txt'] = 'Copy during delivery'; +$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.'; ?> 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 57db1979013af74c8877a86dda4283395f99ceee..b59a4afbab720cec2ca2098eee46bc88031ca9d1 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_filter.lng @@ -16,6 +16,10 @@ $wb['is_txt'] = 'Åžununla aynı'; $wb['begins_with_txt'] = 'Åžununla baÅŸlayan'; $wb['ends_with_txt'] = 'Åžununla biten'; $wb['move_to_txt'] = 'Åžuraya taşı'; +$wb['regex_txt'] = 'Matches Regex'; $wb['delete_txt'] = 'Sil'; $wb['mailbox_filter_txt'] = 'E-posta kutusu süzgeci'; +$wb['header_txt'] = 'Header'; +$wb['size_over_txt'] = 'Email size over (KB)'; +$wb['size_under_txt'] = 'Email size under (KB)'; ?> 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 3426385a2effcb7bb7a449896f768a4e03b772b2..25bd43520a4c75e28369eff8599e3ecab65a5bdd 100644 --- a/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng +++ b/interface/web/mailuser/lib/lang/tr_mail_user_spamfilter.lng @@ -2,6 +2,6 @@ $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['inherit_policy'] = '- Inherit domain setting -'; $wb['policy_txt'] = 'Kural'; ?> diff --git a/interface/web/mailuser/mail_user_spamfilter_edit.php b/interface/web/mailuser/mail_user_spamfilter_edit.php index abbea219376204ce922762129849da67122a4738..75649b5a707f3b89e5c4606d7019bc84c967bf0f 100644 --- a/interface/web/mailuser/mail_user_spamfilter_edit.php +++ b/interface/web/mailuser/mail_user_spamfilter_edit.php @@ -52,7 +52,7 @@ class page_action extends tform_actions { function onShow() { global $app; - + $this->id = $app->functions->intval($_SESSION['s']['user']['mailuser_id']); parent::onShow(); @@ -118,7 +118,7 @@ class page_action extends tform_actions { $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = ?", $rec['email']); $sql = "SELECT id, policy_name FROM spamfilter_policy WHERE ".$app->tform->getAuthSQL('r'); $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':''; diff --git a/interface/web/mailuser/templates/mail_user_cc_edit.htm b/interface/web/mailuser/templates/mail_user_cc_edit.htm index 914f74ae3fe304f71219c823401d3b2ddde44a49..7bf44e4cadadaca4e6b8edd1751c9b0118e5282b 100644 --- a/interface/web/mailuser/templates/mail_user_cc_edit.htm +++ b/interface/web/mailuser/templates/mail_user_cc_edit.htm @@ -1,12 +1,17 @@ - <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> + <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> + </div> + <div class="form-group"> + <label for="name" class="col-sm-3 control-label">{tmpl_var name='cc_txt'}</label> + <div class="col-sm-6"><input type="text" name="cc" id="cc" value="{tmpl_var name='cc'}" class="form-control" /></div><div class="col-sm-3 input-sm"> {tmpl_var name='name_optional_txt'} {tmpl_var name='cc_note_txt'} + </div></div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='forward_in_lda_txt'}</label> + <div class="col-sm-9"> + <a href="#" data-toggle="tooltip" title="{tmpl_var name='tooltip_forward_in_lda_txt'}">{tmpl_var name='forward_in_lda'}</a> </div> - <div class="form-group"> - <label for="name" class="col-sm-3 control-label">{tmpl_var name='cc_txt'}</label> - <div class="col-sm-6"><input type="text" name="cc" id="cc" value="{tmpl_var name='cc'}" class="form-control" /></div><div class="col-sm-3 input-sm"> {tmpl_var name='name_optional_txt'} {tmpl_var name='cc_note_txt'} - </div></div> - + </div> <input type="hidden" name="id" value="{tmpl_var name='id'}"> diff --git a/interface/web/remote/monitor.php b/interface/web/remote/monitor.php deleted file mode 100644 index 914a09382ea4fa65d1442912d8fb42436e67ef09..0000000000000000000000000000000000000000 --- a/interface/web/remote/monitor.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -require_once '../../lib/config.inc.php'; -$conf['start_session'] = false; -require_once '../../lib/app.inc.php'; - -if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.'); - -header('Content-Type: application/json; charset=utf-8'); -header('Access-Control-Allow-Origin: *'); -header('Access-Control-Allow-Headers: X-Requested-With'); -header('Cache-Control: no-cache, must-revalidate'); // HTTP/1.1 -header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past - -$type = addslashes($_GET['type']); -$token = addslashes($_GET['token']); -$server_id = $app->functions->intval($_GET['server']); - -$app->uses('getconf'); -$interface_config = $app->getconf->get_global_config('misc'); -$secret = $interface_config['monitor_key']; - -$out = array(); - -if($token == '' or $secret == '' or $token != $secret) { - $out['state'] = 'syserror'; - $out['data'] = 'Password empty or incorrect.'; - $out['time'] = date('Y-m-d H:i'); -} else { - if($type == 'serverlist') { - $sql = 'SELECT server_id, server_name FROM server WHERE 1 ORDER BY server_id'; - $records = $app->db->queryAllRecords($sql); - foreach($records as $index => $rec) { - $rec = $app->db->queryOneRecord("SELECT * FROM monitor_data WHERE server_id = ? AND state NOT IN ('ok', 'no_state', 'info')", $rec['server_id']); - if($rec) $records[$index]['state'] = 'warn'; - else $records[$index]['state'] = 'ok'; - } - $out['state'] = 'ok'; - $out['data'] = $records; - $out['time'] = date('Y-m-d H:i', $rec['created']); - } else { - $rec = $app->db->queryOneRecord("SELECT * FROM monitor_data WHERE type = ? AND server_id = ?", $type, $server_id); - if(is_array($rec)) { - $out['state'] = $rec['state']; - $out['data'] = unserialize(stripslashes($rec['data'])); - if(is_array($out['data']) && sizeof($out['data']) > 0){ - foreach($out['data'] as $key => $val){ - if(!$val) $out['data'][$key] = " "; - } - } - $out['time'] = date('Y-m-d H:i', $rec['created']); - } else { - $out['state'] = 'syserror'; - $out['data'] = 'No monitor record found.'; - $out['time'] = date('Y-m-d H:i'); - } - $sql = 'SELECT server_id, server_name FROM server WHERE 1 ORDER BY server_id'; - $records = $app->db->queryAllRecords($sql); - $out['serverlist'] = $records; - } -} -$out['type'] = $type; -echo json_encode($out); -exit; -?> diff --git a/interface/web/sites/ajax_get_json.php b/interface/web/sites/ajax_get_json.php index 298fbdb0190b16e20b0a1f282236bf11095f29b0..8ca9cae31d620bd22bf205d1c045d99a58647aea 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_record['name'].':'.$php_record['php_fpm_init_script'].':'.$php_record['php_fpm_ini_dir'].':'.$php_record['php_fpm_pool_dir']; + $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_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/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php index 6031b7ea943a91a7a951f824defcaf067e87aa21..eecb634c989be6e610e56784a9cb0b1afa4b7178 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/interface/web/sites/lib/lang/ar_web_vhost_domain.lng b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng index 3ce40d9b0ca2e3128e1cbd7ad6c0d92454629755..bed4b80e07da4333ff0be5aeb426ff4561eea141 100644 --- a/interface/web/sites/lib/lang/ar_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ar_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 828b79931f23f3322200928553f6ea36aa7e5c95..7e2c91f0c77e89b62f27bbeb9a3909e4776bc89a 100644 --- a/interface/web/sites/lib/lang/bg_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/bg_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 706125676af0a28667a76783cd7cdc423b39a2d7..c8eb7f6b822041c44b9dc80283a4accc23cb01cd 100644 --- a/interface/web/sites/lib/lang/br_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/br_web_vhost_domain.lng @@ -162,10 +162,9 @@ $wb['limit_web_quota_not_0_txt'] = 'Cota de disco não pode ser configurada para $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -187,4 +186,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 8d0e6604928f58179cc951d5a17408d388a12b7a..171a20b442664f6a92cdf4bd4bef6c2649e8aa1f 100644 --- a/interface/web/sites/lib/lang/ca_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ca_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 cd7d06c8aa1675040102982570eac58c77200ee7..dd62c738254d7b45e1aedc4922be0d301bd97288 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> diff --git a/interface/web/sites/lib/lang/de.lng b/interface/web/sites/lib/lang/de.lng index 48e0a9a9a77432462558a73e0e1b1f5cf5be2c09..f5cf2e2052f88c852180c9d4d9ddeb4987f0641f 100644 --- a/interface/web/sites/lib/lang/de.lng +++ b/interface/web/sites/lib/lang/de.lng @@ -14,7 +14,7 @@ $wb['Command Line'] = 'Kommandozeile'; $wb['Shell-User'] = 'Shell Benutzer'; $wb['Cron Jobs'] = 'Cronjobs'; $wb['Statistics'] = 'Statistik'; -$wb['Web traffic'] = 'Datentransfer'; +$wb['Web traffic'] = 'Web-Datentransfer'; $wb['Website quota (Harddisk)'] = 'Speicherplatzbeschränkung'; $wb['Cron'] = 'Cron'; $wb['Stats'] = 'Statistiken'; @@ -32,4 +32,7 @@ $wb['Installed packages'] = 'Installierte Pakete'; $wb['Update Packagelist'] = 'Paketliste aktualisieren'; $wb['error_proxy_requires_url'] = 'Weiterleitungstyp '; $wb['Subdomain (Vhost)'] = 'Subdomain (vHost)'; +$wb['Database quota'] = 'Datenbank-Quota'; +$wb['FTP traffic'] = 'FTP-Datentransfer'; +$wb['Backup Stats'] = 'Backup-Statistiken'; ?> diff --git a/interface/web/sites/lib/lang/de_backup_stats_list.lng b/interface/web/sites/lib/lang/de_backup_stats_list.lng index 01797ea9c42ee4109e753d0062643007264d9ba9..763e3db27524bf93021170db3094e1a6946457db 100644 --- a/interface/web/sites/lib/lang/de_backup_stats_list.lng +++ b/interface/web/sites/lib/lang/de_backup_stats_list.lng @@ -6,5 +6,5 @@ $wb['domain_txt'] = 'Domain'; $wb['backup_count_txt'] = 'Anz. Backups'; $wb['backup_server_txt'] = 'Server'; $wb['backup_interval_txt'] = 'Intervall / Anz.'; -$wb['backup_size_txt'] = 'Backupgrösse'; +$wb['backup_size_txt'] = 'Backupgröße'; ?> diff --git a/interface/web/sites/lib/lang/de_database_quota_stats_list.lng b/interface/web/sites/lib/lang/de_database_quota_stats_list.lng index 3bc9874bf105333a5ae9d0a6517f909b075d4772..087756104a3cdcd706ae4de1805193a403083851 100644 --- a/interface/web/sites/lib/lang/de_database_quota_stats_list.lng +++ b/interface/web/sites/lib/lang/de_database_quota_stats_list.lng @@ -5,5 +5,5 @@ $wb['client_txt'] = 'Kunde'; $wb['used_txt'] = 'Verwendeter Speicherplatz'; $wb['quota_txt'] = 'Quota'; $wb['percentage_txt'] = 'Verbraucht in %'; -$wb['list_head_txt'] = 'Database Quota'; +$wb['list_head_txt'] = 'Datenbank-Quota'; ?> diff --git a/interface/web/sites/lib/lang/de_ftp_sites_stats_list.lng b/interface/web/sites/lib/lang/de_ftp_sites_stats_list.lng index e44025a715dbf435bdca9faee0b109ba25bf611d..c2df2b397c58bdbde1366ee1bbd6135b6671b298 100644 --- a/interface/web/sites/lib/lang/de_ftp_sites_stats_list.lng +++ b/interface/web/sites/lib/lang/de_ftp_sites_stats_list.lng @@ -1,10 +1,10 @@ <?php -$wb['list_head_txt'] = 'FTP traffic'; +$wb['list_head_txt'] = 'FTP-Transfer'; $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['this_month_txt'] = 'Dieser Month'; +$wb['last_month_txt'] = 'Letzter Monat'; +$wb['this_year_txt'] = 'Dieses Jahr'; +$wb['last_year_txt'] = 'Letztes Jahr'; +$wb['sum_txt'] = 'Gesamt (Download + Upload)'; $wb['in_out_txt'] = 'DL/UL'; ?> diff --git a/interface/web/sites/lib/lang/de_shell_user.lng b/interface/web/sites/lib/lang/de_shell_user.lng index 9130b456e345e32b661ff72b78b8d39d7a217a49..6b5dac53c3a5a1ed6558e733ed9572eb695154d4 100644 --- a/interface/web/sites/lib/lang/de_shell_user.lng +++ b/interface/web/sites/lib/lang/de_shell_user.lng @@ -28,9 +28,9 @@ $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.'; $wb['password_match_txt'] = 'Die Passwörter stimmen überein.'; $wb['username_must_not_exceed_32_chars_txt'] = 'Der Benutzername darf 32 Zeichen nicht überschreiten.'; $wb['username_not_allowed_txt'] = 'Dieser Benutzername ist nicht erlaubt.'; -$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group'; -$wb['directory_error_regex'] = 'Invalid directory'; -$wb['shell_error_regex'] = 'Invalid shell'; -$wb['invalid_username_txt'] = 'Invalid Username'; -$wb['directory_error_notinweb'] = 'The directory has to be inside the web root.'; +$wb['invalid_system_user_or_group_txt'] = 'Ungültiger Web Benutzername oder Gruppe'; +$wb['directory_error_regex'] = 'Ungültiges Verzeichnis'; +$wb['shell_error_regex'] = 'Ungültige Shell'; +$wb['invalid_username_txt'] = 'Ungültiger Benutzername'; +$wb['directory_error_notinweb'] = 'Das Verzeichnis muss innerhalb des Web-Verzeichnisses liegen.'; ?> diff --git a/interface/web/sites/lib/lang/de_web_subdomain.lng b/interface/web/sites/lib/lang/de_web_subdomain.lng index 586c90adc38f69190b75a1723f6641b92ed4558f..4f34874a11f1d7490f6c8536c502faabea09492a 100644 --- a/interface/web/sites/lib/lang/de_web_subdomain.lng +++ b/interface/web/sites/lib/lang/de_web_subdomain.lng @@ -45,6 +45,6 @@ $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Sc $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.'; -$wb['https_port_error_regex'] = 'HTTPS Port invalid.'; +$wb['http_port_error_regex'] = 'HTTP Port ungültig.'; +$wb['https_port_error_regex'] = 'HTTPS Port ungültig.'; ?> 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 26070171394784b9a2471d90833659fbbf1da505..bb8682d2fed8f6d2c7d9529513a9a559b523c3dd 100644 --- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng @@ -99,7 +99,7 @@ $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['server_php_id_txt'] = 'PHP Version'; -$wb['server_php_id_invalid_txt'] = 'PHP Version is invalid.'; +$wb['server_php_id_invalid_txt'] = 'PHP Version is ungültig.'; $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'; @@ -141,15 +141,15 @@ $wb['btn_cancel_txt'] = 'Abbrechen'; $wb['load_client_data_txt'] = 'Kundendaten übernehmen'; $wb['load_my_data_txt'] = 'Meine Kontaktdaten laden'; $wb['reset_client_data_txt'] = 'Daten verwerfen'; -$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['rewrite_to_https_txt'] = 'Rewrite HTTP to HTTPS'; -$wb['password_strength_txt'] = 'Password strength'; +$wb['server_chosen_not_ok'] = 'Der ausgewählte Server ist nicht zulässig für diesen Account.'; +$wb['subdomain_error_empty'] = 'Die Subdomain ist leer oder ungültig.'; +$wb['rewrite_to_https_txt'] = 'HTTP zu HTTPS weiterleiten'; +$wb['password_strength_txt'] = 'Passwortstärke'; $wb['directive_snippets_id_txt'] = 'Webserver-Konfiguration'; $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['http_port_error_regex'] = 'HTTP Port ungültig.'; +$wb['https_port_error_regex'] = 'HTTPS Port ungültig.'; $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)'; @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 8d0e6604928f58179cc951d5a17408d388a12b7a..171a20b442664f6a92cdf4bd4bef6c2649e8aa1f 100644 --- a/interface/web/sites/lib/lang/dk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/dk_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 47115c8098a9203d312615e4870b91d55f2582c5..490b39aa02875a17a749254f4d8936989c5b7bf7 100644 --- a/interface/web/sites/lib/lang/el_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/el_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 19b12ea2c4f413e86a1d8bfdc2cbcd8b8ed3bd7c..d1b41819f7a2246949f3cb1ec7e1e1bd064963a3 100644 --- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng @@ -158,14 +158,14 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -187,4 +187,8 @@ $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['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 c1960ae38b1a0fdd46fa52bcafc5bdeaf62711ab..7fdb2efa8a9572fbcddc62b0ac3cbf17c956828c 100644 --- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 7ba9a95d354fe471d751c8ef2d604e7df753c504..f2f7d732d0cbab1a8d2a48752281269cd2ab95a8 100644 --- a/interface/web/sites/lib/lang/fi_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fi_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 b3f1602e638edb426f16e55481d2e03be6c3e08a..cfee4ef3fb40e2c4c7abf606545fee09f2122e52 100644 --- a/interface/web/sites/lib/lang/fr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/fr_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 14bb2c66878903256a9138779304d3e7cc6c4a17..fe46d3d2e25da33950bdb8264fca9f29c2b896d9 100644 --- a/interface/web/sites/lib/lang/hr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hr_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 86e549240834e465bfae979533f67948449e3550..cceaa0d0051a653c1f3a213acd331b4e42abd137 100644 --- a/interface/web/sites/lib/lang/hu_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/hu_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 7de6c2c6faef90f2831b658ea95d055f948ab14c..f0215d493220f6f9e65765683ed935131cc309e3 100644 --- a/interface/web/sites/lib/lang/id_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/id_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 3951e5d19d90d284524b40fa214845259b727123..916f5d191ba3928690565e4a3cd52b1801d8fcee 100644 --- a/interface/web/sites/lib/lang/it_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/it_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 a9d284b46c2ab067504a24f2f683e0d409db965d..2666f8bd4d30519635c9240272d8e78f9e85d607 100644 --- a/interface/web/sites/lib/lang/ja_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ja_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 50932cc9e1c8376fe19aea940b10b585941a7f27..b28a56d2a540be6dee66fa01b31772214581997c 100644 --- a/interface/web/sites/lib/lang/nl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/nl_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 93752a063c77655b3f6b16f401ebe5951547c4c6..f0b797fb481377b561c45804d3f2ab1978b0c131 100644 --- a/interface/web/sites/lib/lang/pl_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pl_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 2b077955074d960fa29fbf64cb24a5b8cbc93543..4314c959f9f91d53549fbc89d4a9a810e2a9071d 100644 --- a/interface/web/sites/lib/lang/pt_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/pt_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 e52310bf08096500ad18651c6a3bc18ce47fb555..c905f8913295f23de30f20481c952dbbbb3dfa32 100644 --- a/interface/web/sites/lib/lang/ro_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ro_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 07c345f0da8f52e85bdc6d0708cfc480fe486200..25b05ff7f4d4bbad6d60353d8177a4960537bc5e 100644 --- a/interface/web/sites/lib/lang/ru_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/ru_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 f398991442c5753477db6df4491541efd481132c..63c261cb03d16c740dd0fb7605a48b74fee3df7b 100644 --- a/interface/web/sites/lib/lang/se_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/se_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 3d4a76186f1c396a70c93d6119a96c90df2ef4cb..6ff92e62e74764528c8d4379b88f74613ccafb8a 100644 --- a/interface/web/sites/lib/lang/sk_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/sk_web_vhost_domain.lng @@ -157,10 +157,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -182,4 +181,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> 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 8aa16844783d4607d6d564c302b28dc23c13cd51..dd1a8e0ca4760c031bd8bdde5b5cb328008c9ed0 100644 --- a/interface/web/sites/lib/lang/tr_web_vhost_domain.lng +++ b/interface/web/sites/lib/lang/tr_web_vhost_domain.lng @@ -159,10 +159,9 @@ $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_missing_utils_txt"] = 'The following formats can not be used because they are not installed on the webserver: '; $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_note_txt"] = "Encryption is only available for 7z, RAR, and zip (not secure)."; $wb["backup_encryption_options_txt"] = 'Encryption options'; $wb["backup_enable_encryption_txt"] = 'Enable encryption'; $wb["backup_password_txt"] = 'Password'; @@ -184,4 +183,9 @@ $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['dependent_domains_txt'] = 'Dependent sub- / aliasdomains'; +$wb['error_ipv4_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv4 address.'; +$wb['error_ipv6_change_forbidden'] = 'The IP cannot be changed. Please contact your administrator if you want to change the IPv6 address.'; +$wb['error_domain_change_forbidden'] = 'The domain name cannot be changed. Please contact your administrator if you want to change the domain name.'; +$wb['error_server_change_not_possible'] = 'The server cannot be changed.'; ?> diff --git a/interface/web/sites/templates/web_backup_list.htm b/interface/web/sites/templates/web_backup_list.htm index 95c51d0c15e9ebd885b1fbaa71ec472133874ce5..47c08d4413d8e7153045974467630618f10640c8 100644 --- a/interface/web/sites/templates/web_backup_list.htm +++ b/interface/web/sites/templates/web_backup_list.htm @@ -3,13 +3,15 @@ <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" class="tab-content bg-success text-success text-center"><p><tmpl_var name="msg"></p></div> + <br><br> + <div id="OKMsg" class="tab-content alert alert-success text-center"><p><tmpl_var name="msg"></p></div> </tmpl_if> <tmpl_if name="error"> - <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> + <br><br> + <div id="errorMsg" class="tab-content alert alert-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> @@ -57,5 +59,5 @@ </tbody> </table> </div> - + </div> diff --git a/interface/web/sites/templates/web_vhost_domain_advanced.htm b/interface/web/sites/templates/web_vhost_domain_advanced.htm index f1df422bad7f01ec2bb6bbc741b154b87d739aa8..e878a06fbbc6477d818f70c348188fdd7af5c96d 100644 --- a/interface/web/sites/templates/web_vhost_domain_advanced.htm +++ b/interface/web/sites/templates/web_vhost_domain_advanced.htm @@ -1,198 +1,206 @@ <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> - <div> - <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div><div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div> - </div> -</div> + <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> + <div> + <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div> + <div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div> + </div> + </div> </tmpl_if> +<input name="document_root" id="document_root" value="{tmpl_var name='document_root'}" size="30" maxlength="255" type="hidden" class="textInput" /> +<div class="form-group"> + <label for="added_date" class="col-sm-3 control-label">{tmpl_var name='added_date_txt'}</label> + <div class="col-sm-9"><input type="text" name="added_date" id="added_date" value="{tmpl_var name='added_date'}" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="added_by" class="col-sm-3 control-label">{tmpl_var name='added_by_txt'}</label> + <div class="col-sm-9"><input type="text" name="added_by" id="added_by" value="{tmpl_var name='added_by'}" class="form-control" /></div> +</div> +<div class="form-group"> + <label for="system_user" class="col-sm-3 control-label">{tmpl_var name='system_user_txt'}</label> + <div class="col-sm-9"> + <div class="checkbox"> {tmpl_var name='system_user'}</div> + </div> + <input name="system_user" id="system_user" value="{tmpl_var name='system_user'}" type="hidden" /> +</div> +<div class="form-group"> + <label for="system_group" class="col-sm-3 control-label">{tmpl_var name='system_group_txt'}</label> + <div class="col-sm-9"> + <div class="checkbox"> {tmpl_var name='system_group'}</div> + </div> + <input name="system_group" id="system_group" value="{tmpl_var name='system_group'}" type="hidden" /> +</div> +<div class="form-group"> + <label for="log_retention" class="col-sm-3 control-label">{tmpl_var name='log_retention_txt'}</label> + <div class="col-sm-9"><input name="log_retention" id="log_retention" value="{tmpl_var name='log_retention'}" type="text" class="form-control" /></div> +</div> +<div class="form-group apache"> + <label for="allow_override" class="col-sm-3 control-label">{tmpl_var name='allow_override_txt'}</label> + <div class="col-sm-9"><input type="text" name="allow_override" id="allow_override" value="{tmpl_var name='allow_override'}" class="form-control" /></div> +</div> +<div class="form-group nginx"> + <label for="http_port" class="col-sm-3 control-label">{tmpl_var name='http_port_txt'}</label> + <div class="col-sm-9"><input name="http_port" id="http_port" value="{tmpl_var name='http_port'}" type="text" class="form-control" /></div> +</div> +<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 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> + <div class="col-sm-9"> + {tmpl_var name='php_fpm_use_socket'} + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">{tmpl_var name='php_fpm_chroot_txt'}</label> + <div class="col-sm-9"> + {tmpl_var name='php_fpm_chroot'} + </div> + </div> + <div class="form-group"> + <label for="pm" class="col-sm-3 control-label">{tmpl_var name='pm_txt'}</label> + <div class="col-sm-9"><select name="pm" id="pm" class="form-control"> + {tmpl_var name='pm'} + </select> + </div> + </div> + <div class="ctrlHolder pm_ondemand" style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> + {tmpl_var name='pm_ondemand_hint_txt'} + </div> + <div class="form-group"> + <label for="pm_max_children" class="col-sm-3 control-label">{tmpl_var name='pm_max_children_txt'}</label> + <div class="col-sm-9"><input type="text" name="pm_max_children" id="pm_max_children" value="{tmpl_var name='pm_max_children'}" class="form-control" /></div> + </div> + <div class="form-group pm_dynamic"> + <label for="pm_start_servers" class="col-sm-3 control-label">{tmpl_var name='pm_start_servers_txt'}</label> + <div class="col-sm-9"><input type="text" name="pm_start_servers" id="pm_start_servers" value="{tmpl_var name='pm_start_servers'}" class="form-control" /></div> + </div> + <div class="form-group pm_dynamic"> + <label for="pm_min_spare_servers" class="col-sm-3 control-label">{tmpl_var name='pm_min_spare_servers_txt'}</label> + <div class="col-sm-9"><input type="text" name="pm_min_spare_servers" id="pm_min_spare_servers" value="{tmpl_var name='pm_min_spare_servers'}" class="form-control" /></div> + </div> + <div class="form-group pm_dynamic"> + <label for="pm_max_spare_servers" class="col-sm-3 control-label">{tmpl_var name='pm_max_spare_servers_txt'}</label> + <div class="col-sm-9"><input type="text" name="pm_max_spare_servers" id="pm_max_spare_servers" value="{tmpl_var name='pm_max_spare_servers'}" class="form-control" /></div> + </div> + <div class="form-group pm_ondemand"> + <label for="pm_process_idle_timeout" class="col-sm-3 control-label">{tmpl_var name='pm_process_idle_timeout_txt'}</label> + <div class="col-sm-6"><input type="text" name="pm_process_idle_timeout" id="pm_process_idle_timeout" value="{tmpl_var name='pm_process_idle_timeout'}" class="form-control" /></div> + <div class="col-sm-3 input-sm"> s + </div> + </div> + <div class="form-group"> + <label for="pm_max_requests" class="col-sm-3 control-label">{tmpl_var name='pm_max_requests_txt'}</label> + <div class="col-sm-9"><input type="text" name="pm_max_requests" id="pm_max_requests" value="{tmpl_var name='pm_max_requests'}" class="form-control" /></div> + </div> +</div> +<div class="form-group php"> + <label for="php_open_basedir" class="col-sm-3 control-label">{tmpl_var name='php_open_basedir_txt'}</label> + <div class="col-sm-9"><input type="text" name="php_open_basedir" id="php_open_basedir" value="{tmpl_var name='php_open_basedir'}" class="form-control" /></div> +</div> +<div class="form-group php"> + <label for="custom_php_ini" class="col-sm-3 control-label">{tmpl_var name='custom_php_ini_txt'}</label> + <div class="col-sm-9"><textarea class="form-control" name="custom_php_ini" id="custom_php_ini" rows='10' cols='50'>{tmpl_var name='custom_php_ini'}</textarea> + <b>{tmpl_var name="available_php_directive_snippets_txt"}</b><br><br> {tmpl_var name="php_directive_snippets_txt"} + </div> +</div> +<div class="form-group apache"> + <label for="apache_directives" class="col-sm-3 control-label">{tmpl_var name='apache_directives_txt'}</label> + <div class="col-sm-9"><textarea class="form-control" name="apache_directives" id="apache_directives" rows='10' cols='50'>{tmpl_var name='apache_directives'}</textarea> + <b>{tmpl_var name="available_apache_directive_snippets_txt"}</b><br><br> {tmpl_var name="apache_directive_snippets_txt"}<br>----<br><b> {tmpl_var name='variables_txt'}:</b> <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT_CLIENT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOMAIN}</a> + </div> +</div> +<div class="form-group nginx"> + <label for="nginx_directives" class="col-sm-3 control-label">{tmpl_var name='nginx_directives_txt'}</label> + <div class="col-sm-9"><textarea class="form-control" name="nginx_directives" id="nginx_directives" rows='10' cols='50'>{tmpl_var name='nginx_directives'}</textarea> + <b>{tmpl_var name="available_nginx_directive_snippets_txt"}</b><br><br> {tmpl_var name="nginx_directive_snippets_txt"}<br>----<br><b> {tmpl_var name='variables_txt'}:</b> <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT_CLIENT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOMAIN}</a>, <a href="javascript:void(0);" class="addPlaceholder">{FASTCGIPASS}</a>, <a href="javascript:void(0);" class="addPlaceholder">{PHPFALLBACKFASTCGIPASS}</a> + </div> +</div> +<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'>{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"} + </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="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> +<script language="JavaScript" type="text/javascript"> + var webId = jQuery('input[name="id"]').val(); + var serverId; + getServerId(); + adjustForm(); + var pm = jQuery('#pm').val(); + pmMode(pm); + jQuery('#pm').change(function(){ + pm = jQuery(this).val(); + pmMode(pm); + }); - - <input name="document_root" id="document_root" value="{tmpl_var name='document_root'}" size="30" maxlength="255" type="hidden" class="textInput" /> - <div class="form-group"> - <label for="added_date" class="col-sm-3 control-label">{tmpl_var name='added_date_txt'}</label> - <div class="col-sm-9"><input type="text" name="added_date" id="added_date" value="{tmpl_var name='added_date'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="added_by" class="col-sm-3 control-label">{tmpl_var name='added_by_txt'}</label> - <div class="col-sm-9"><input type="text" name="added_by" id="added_by" value="{tmpl_var name='added_by'}" class="form-control" /></div></div> - <div class="form-group"> - <label for="system_user" class="col-sm-3 control-label">{tmpl_var name='system_user_txt'}</label> - <div class="col-sm-9"> - <div class="checkbox"> {tmpl_var name='system_user'}</div> - </div> - <input name="system_user" id="system_user" value="{tmpl_var name='system_user'}" type="hidden" /> - </div> - <div class="form-group"> - <label for="system_group" class="col-sm-3 control-label">{tmpl_var name='system_group_txt'}</label> - <div class="col-sm-9"> - <div class="checkbox"> {tmpl_var name='system_group'}</div> - </div> - <input name="system_group" id="system_group" value="{tmpl_var name='system_group'}" type="hidden" /> - </div> - <div class="form-group"> - <label for="log_retention" class="col-sm-3 control-label">{tmpl_var name='log_retention_txt'}</label> - <div class="col-sm-9"><input name="log_retention" id="log_retention" value="{tmpl_var name='log_retention'}" type="text" class="form-control" /></div> - </div> - <div class="form-group apache"> - <label for="allow_override" class="col-sm-3 control-label">{tmpl_var name='allow_override_txt'}</label> - <div class="col-sm-9"><input type="text" name="allow_override" id="allow_override" value="{tmpl_var name='allow_override'}" class="form-control" /></div></div> - <div class="form-group nginx"> - <label for="http_port" class="col-sm-3 control-label">{tmpl_var name='http_port_txt'}</label> - <div class="col-sm-9"><input name="http_port" id="http_port" value="{tmpl_var name='http_port'}" type="text" class="form-control" /></div> - </div> - <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 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> - <div class="col-sm-9"> - {tmpl_var name='php_fpm_use_socket'} - </div> - </div> - <div class="form-group"> - <label class="col-sm-3 control-label">{tmpl_var name='php_fpm_chroot_txt'}</label> - <div class="col-sm-9"> - {tmpl_var name='php_fpm_chroot'} - </div> - </div> - <div class="form-group"> - <label for="pm" class="col-sm-3 control-label">{tmpl_var name='pm_txt'}</label> - <div class="col-sm-9"><select name="pm" id="pm" class="form-control"> - {tmpl_var name='pm'} - </select></div> - </div> - <div class="ctrlHolder pm_ondemand" style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> - {tmpl_var name='pm_ondemand_hint_txt'} - </div> - <div class="form-group"> - <label for="pm_max_children" class="col-sm-3 control-label">{tmpl_var name='pm_max_children_txt'}</label> - <div class="col-sm-9"><input type="text" name="pm_max_children" id="pm_max_children" value="{tmpl_var name='pm_max_children'}" class="form-control" /></div></div> - <div class="form-group pm_dynamic"> - <label for="pm_start_servers" class="col-sm-3 control-label">{tmpl_var name='pm_start_servers_txt'}</label> - <div class="col-sm-9"><input type="text" name="pm_start_servers" id="pm_start_servers" value="{tmpl_var name='pm_start_servers'}" class="form-control" /></div></div> - <div class="form-group pm_dynamic"> - <label for="pm_min_spare_servers" class="col-sm-3 control-label">{tmpl_var name='pm_min_spare_servers_txt'}</label> - <div class="col-sm-9"><input type="text" name="pm_min_spare_servers" id="pm_min_spare_servers" value="{tmpl_var name='pm_min_spare_servers'}" class="form-control" /></div></div> - <div class="form-group pm_dynamic"> - <label for="pm_max_spare_servers" class="col-sm-3 control-label">{tmpl_var name='pm_max_spare_servers_txt'}</label> - <div class="col-sm-9"><input type="text" name="pm_max_spare_servers" id="pm_max_spare_servers" value="{tmpl_var name='pm_max_spare_servers'}" class="form-control" /></div></div> - <div class="form-group pm_ondemand"> - <label for="pm_process_idle_timeout" class="col-sm-3 control-label">{tmpl_var name='pm_process_idle_timeout_txt'}</label> - <div class="col-sm-6"><input type="text" name="pm_process_idle_timeout" id="pm_process_idle_timeout" value="{tmpl_var name='pm_process_idle_timeout'}" class="form-control" /></div><div class="col-sm-3 input-sm"> s - </div></div> - <div class="form-group"> - <label for="pm_max_requests" class="col-sm-3 control-label">{tmpl_var name='pm_max_requests_txt'}</label> - <div class="col-sm-9"><input type="text" name="pm_max_requests" id="pm_max_requests" value="{tmpl_var name='pm_max_requests'}" class="form-control" /></div></div> - </div> - <div class="form-group php"> - <label for="php_open_basedir" class="col-sm-3 control-label">{tmpl_var name='php_open_basedir_txt'}</label> - <div class="col-sm-9"><input type="text" name="php_open_basedir" id="php_open_basedir" value="{tmpl_var name='php_open_basedir'}" class="form-control" /></div></div> - <div class="form-group php"> - <label for="custom_php_ini" class="col-sm-3 control-label">{tmpl_var name='custom_php_ini_txt'}</label> - <div class="col-sm-9"><textarea class="form-control" name="custom_php_ini" id="custom_php_ini" rows='10' cols='50'>{tmpl_var name='custom_php_ini'}</textarea> - <b>{tmpl_var name="available_php_directive_snippets_txt"}</b><br><br> {tmpl_var name="php_directive_snippets_txt"} - </div> - </div> - <div class="form-group apache"> - <label for="apache_directives" class="col-sm-3 control-label">{tmpl_var name='apache_directives_txt'}</label> - <div class="col-sm-9"><textarea class="form-control" name="apache_directives" id="apache_directives" rows='10' cols='50'>{tmpl_var name='apache_directives'}</textarea> - <b>{tmpl_var name="available_apache_directive_snippets_txt"}</b><br><br> {tmpl_var name="apache_directive_snippets_txt"}<br>----<br><b> {tmpl_var name='variables_txt'}:</b> <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT_CLIENT}</a> - </div> - </div> - <div class="form-group nginx"> - <label for="nginx_directives" class="col-sm-3 control-label">{tmpl_var name='nginx_directives_txt'}</label> - <div class="col-sm-9"><textarea class="form-control" name="nginx_directives" id="nginx_directives" rows='10' cols='50'>{tmpl_var name='nginx_directives'}</textarea> - <b>{tmpl_var name="available_nginx_directive_snippets_txt"}</b><br><br> {tmpl_var name="nginx_directive_snippets_txt"}<br>----<br><b> {tmpl_var name='variables_txt'}:</b> <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT_CLIENT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{FASTCGIPASS}</a>, <a href="javascript:void(0);" class="addPlaceholder">{PHPFALLBACKFASTCGIPASS}</a> - </div> - </div> - <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'>{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"} - </div> - </div> - + function pmMode(pm){ + switch(pm){ + case "static": + jQuery('.pm_dynamic').add('.pm_ondemand').hide(); + jQuery('.pm_static').show(); + break; + case "dynamic": + jQuery('.pm_static').add('.pm_ondemand').hide(); + jQuery('.pm_dynamic').show(); + break; + case "ondemand": + jQuery('.pm_static').add('.pm_dynamic').hide(); + jQuery('.pm_ondemand').show(); + break; + } + } - <input type="hidden" name="id" value="{tmpl_var name='id'}"> + function getServerId(){ + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) { + serverId = data.serverid; + }); + } - <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> -<script language="JavaScript" type="text/javascript"> - var webId = jQuery('input[name="id"]').val(); - var serverId; - getServerId(); - adjustForm(); - - var pm = jQuery('#pm').val(); - pmMode(pm); - jQuery('#pm').change(function(){ - pm = jQuery(this).val(); - pmMode(pm); - }); - - function pmMode(pm){ - switch(pm){ - case "static": - jQuery('.pm_dynamic').add('.pm_ondemand').hide(); - jQuery('.pm_static').show(); - break; - case "dynamic": - jQuery('.pm_static').add('.pm_ondemand').hide(); - jQuery('.pm_dynamic').show(); - break; - case "ondemand": - jQuery('.pm_static').add('.pm_dynamic').hide(); - jQuery('.pm_ondemand').show(); - break; - } - } - - function getServerId(){ - jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) { - serverId = data.serverid; - }); - } - - function adjustForm(){ - jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) { - if(data.servertype == "nginx"){ - jQuery('.nginx').show(); - jQuery('.apache').hide(); - } else { - jQuery('.nginx').hide(); - jQuery('.apache').show(); - } - }); - jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getphptype"}, function(data) { - if(data.phptype == "php-fpm"){ - jQuery('.phpfpm').show(); - } else { - jQuery('.phpfpm').hide(); - } - if(data.phptype == "no"){ - jQuery('.php').hide(); - } else { - jQuery('.php').show(); - } - }); - jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getredirecttype"}, function(data) { - if(data.redirecttype == "proxy"){ - jQuery('.proxy').show(); - } else { - jQuery('.proxy').hide(); - } - }); - } - + function adjustForm(){ + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) { + if(data.servertype == "nginx"){ + jQuery('.nginx').show(); + jQuery('.apache').hide(); + } else { + jQuery('.nginx').hide(); + jQuery('.apache').show(); + } + }); + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getphptype"}, function(data) { + if(data.phptype == "php-fpm"){ + jQuery('.phpfpm').show(); + } else { + jQuery('.phpfpm').hide(); + } + if(data.phptype == "no"){ + jQuery('.php').hide(); + } else { + jQuery('.php').show(); + } + }); + jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getredirecttype"}, function(data) { + if(data.redirecttype == "proxy"){ + jQuery('.proxy').show(); + } else { + jQuery('.proxy').hide(); + } + }); + } </script> diff --git a/interface/web/sites/templates/web_vhost_domain_backup.htm b/interface/web/sites/templates/web_vhost_domain_backup.htm index 0228ae76bbc4ce80830038c714807697910b1b8f..222ae1e3c365af5463e556bbc6b552abf25d49a6 100644 --- a/interface/web/sites/templates/web_vhost_domain_backup.htm +++ b/interface/web/sites/templates/web_vhost_domain_backup.htm @@ -1,81 +1,104 @@ <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> - <div> - <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div><div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div> - </div> -</div> + <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> + <div> + <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div> + <div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div> + </div> + </div> </tmpl_if> - <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"> - {tmpl_var name='backup_interval'} - </select></div> - </div> - <div class="form-group"> - <label for="backup_copies" class="col-sm-3 control-label">{tmpl_var name='backup_copies_txt'}</label> - <div class="col-sm-9"><select name="backup_copies" id="backup_copies" class="form-control"> - {tmpl_var name='backup_copies'} - </select></div> - </div> - <div class="form-group"> - <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'} - - <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="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> +<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"> + {tmpl_var name='backup_interval'} + </select> + </div> +</div> +<div class="form-group"> + <label for="backup_copies" class="col-sm-3 control-label">{tmpl_var name='backup_copies_txt'}</label> + <div class="col-sm-9"><select name="backup_copies" id="backup_copies" class="form-control"> + {tmpl_var name='backup_copies'} + </select> + </div> +</div> +<div class="form-group"> + <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> +<br> +<div class="panel panel-default"> + <div class="panel-heading" role="tab" id="headingCompression"> + <h4 class="panel-title"> + <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseCompression" aria-expanded="false" aria-controls="collapseCompression"> + {tmpl_var name='backup_compression_options_txt'} + </a> + </h4> + </div> + <div id="collapseCompression" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingCompression"> + <div class="panel-body"> + <tmpl_if name="missing_utils"> + <div class="tab-content alert alert-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> + </div> + </div> + <div class="panel-heading" role="tab" id="headingEncryption"> + <h4 class="panel-title"> + <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseEncryption" aria-expanded="false" aria-controls="collapseEncryption"> + {tmpl_var name='backup_encryption_options_txt'} + </a> + </h4> + </div> + <div id="collapseEncryption" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingEncryption"> + <div class="panel-body"> + <div class="alert alert-info"> + {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> + </div> + </div> +</div> +{tmpl_var name='backup_records'} +<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="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> diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm index 0b17e3802211f7c027857360a8d2579aff74479c..5e6b86f8d3d564367e6313a24d027a2c4dd68bb2 100644 --- a/interface/web/sites/templates/web_vhost_domain_edit.htm +++ b/interface/web/sites/templates/web_vhost_domain_edit.htm @@ -9,7 +9,7 @@ {tmpl_hook name="begin_form"} - <tmpl_if name="vhostdomain_type" value="domain"> + <tmpl_if name="vhostdomain_type" value="domain"> <tmpl_if name="is_admin"> <div class="form-group"> <tmpl_if name="edit_disabled"> @@ -84,6 +84,15 @@ <tmpl_else> <div class="col-sm-9"><input type="text" name="domain" id="domain" value="{tmpl_var name='domain'}" class="form-control" /></div></tmpl_if> </div> + <tmpl_if name="web_aliasdomains_info"> + <div class="form-group"> + <label for="web_aliasdomains" class="col-sm-3 control-label">{tmpl_var name='dependent_domains_txt'}</label> + <div class="col-sm-9"> + <textarea name="web_aliasdomains" id="web_aliasdomains" class="form-control" disabled="disabled"><tmpl_loop name="web_aliasdomains_info">{tmpl_var name='domain'} +</tmpl_loop></textarea> + </div> + </div> + </tmpl_if> <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> @@ -280,26 +289,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 +322,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 +367,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 +457,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(); }); diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php index cc476a2276f8c87206859aa9bdb4717e30be4df6..a718ae8a87aab05cfd8385cc72c35b457ec7fdc6 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -945,6 +945,10 @@ class page_action extends tform_actions { function onShowEdit() { global $app; if($app->tform->checkPerm($this->id, 'riud')) $app->tform->formDef['tabs']['domain']['readonly'] = false; + $sql = "SELECT domain_id, domain, type FROM web_domain WHERE (type='alias' OR type='subdomain') AND parent_domain_id = ?"; + $subs = $app->db->queryAllRecords($sql, $this->id); + $app->tpl->setLoop('web_aliasdomains_info', $subs); + parent::onShowEdit(); } @@ -1189,6 +1193,9 @@ class page_action extends tform_actions { //* make sure that the domain is lowercase if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); + //* server_id must be > 0 + if(isset($this->dataRecord["server_id"]) && $this->dataRecord["server_id"] < 1) $app->tform->errorMessage .= $app->lng("server_id_0_error_txt"); + //* get the server config for this server $app->uses("getconf"); if($this->id > 0){ @@ -1376,11 +1383,19 @@ class page_action extends tform_actions { function onAfterInsert() { global $app, $conf; - // make sure that the record belongs to the clinet group and not the admin group when admin inserts it - // also make sure that the user can not delete domain created by a admin + // make sure that the record belongs to the client group and not the admin group when admin inserts it + // also make sure that the user can not delete domain created by a admin if client protection is enabled if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) { $client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]); - $app->db->query("UPDATE web_domain SET sys_groupid = ?, sys_perm_group = 'ru' WHERE domain_id = ?", $client_group_id, $this->id); + $app->uses('getconf'); + $global_config = $app->getconf->get_global_config('sites'); + if($global_config['client_protection'] == 'y') { + $app->db->query("UPDATE web_domain SET sys_groupid = ?, sys_perm_group = 'ru' WHERE domain_id = ?", $client_group_id, $this->id); + } else { + $sysuser = $app->db->queryOneRecord('SELECT userid FROM sys_user WHERE default_group = ?',$client_group_id); + $sysuser_id = (is_array($sysuser) && isset($sysuser['userid']) && $sysuser['userid'] > 0)?$sysuser['userid']:1; + $app->db->query("UPDATE web_domain SET sys_userid = ?, sys_groupid = ?, sys_perm_group = 'riud' WHERE domain_id = ?", $sysuser_id, $client_group_id, $this->id); + } } if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) { $client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]); @@ -1479,7 +1494,7 @@ class page_action extends tform_actions { $rec = $app->db->queryOneRecord("SELECT server_id from web_domain WHERE domain_id = ?", $this->id); if($rec['server_id'] != $this->dataRecord["server_id"]) { //* Add a error message and switch back to old server - $app->tform->errorMessage .= $app->lng('The Server can not be changed.'); + $app->tform->errorMessage .= $app->tform->lng('error_server_change_not_possible'); $this->dataRecord["server_id"] = $rec['server_id']; } unset($rec); @@ -1490,17 +1505,17 @@ class page_action extends tform_actions { $rec = $app->db->queryOneRecord("SELECT sys_perm_group, domain, ip_address, ipv6_address from web_domain WHERE domain_id = ?", $this->id); if(isset($this->dataRecord["domain"]) && $rec['domain'] != $this->dataRecord["domain"] && !$app->tform->checkPerm($this->id, 'u')) { //* Add a error message and switch back to old server - $app->tform->errorMessage .= $app->lng('The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'); + $app->tform->errorMessage .= $app->tform->lng('error_domain_change_forbidden'); $this->dataRecord["domain"] = $rec['domain']; } if(isset($this->dataRecord["ip_address"]) && $rec['ip_address'] != $this->dataRecord["ip_address"] && $rec['sys_perm_group'] != 'riud') { //* Add a error message and switch back to old server - $app->tform->errorMessage .= $app->lng('The IP can not be changed. Please ask your Administrator if you want to change the IPv4-Address.'); + $app->tform->errorMessage .= $app->tform->lng('error_ipv4_change_forbidden'); $this->dataRecord["ip_address"] = $rec['ip_address']; } if(isset($this->dataRecord["ipv6_address"]) && $rec['ipv6_address'] != $this->dataRecord["ipv6_address"] && $rec['sys_perm_group'] != 'riud') { //* Add a error message and switch back to old server - $app->tform->errorMessage .= $app->lng('The IP can not be changed. Please ask your Administrator if you want to change the IPv6-Address.'); + $app->tform->errorMessage .= $app->tform->lng('error_ipv6_change_forbidden'); $this->dataRecord["ipv6_address"] = $rec['ipv6_address']; } unset($rec); diff --git a/interface/web/themes/default/assets/javascripts/ispconfig.js b/interface/web/themes/default/assets/javascripts/ispconfig.js index 70e3a903a65dbf44576868151101c19015858bfd..e3a2bee3688d9144d82421c1464529ec0a973211 100644 --- a/interface/web/themes/default/assets/javascripts/ispconfig.js +++ b/interface/web/themes/default/assets/javascripts/ispconfig.js @@ -9,30 +9,30 @@ var ISPConfig = { registeredHooks: new Array(), new_tpl_add_id: 0, dataLogTimer: 0, - + options: { useLoadIndicator: false, useComboBox: false }, - + setOption: function(key, value) { ISPConfig.options[key] = value; }, - + setOptions: function(opts) { $.extend(ISPConfig.options, opts); }, - + reportError: function(request) { - + }, - + registerHook: function(name, callback) { if(!ISPConfig.registeredHooks[name]) ISPConfig.registeredHooks[name] = new Array(); var newindex = ISPConfig.registeredHooks[name].length; ISPConfig.registeredHooks[name][newindex] = callback; }, - + callHook: function(name, params) { if(!ISPConfig.registeredHooks[name]) return; for(var i = 0; i < ISPConfig.registeredHooks[name].length; i++) { @@ -40,14 +40,14 @@ var ISPConfig = { callback(name, params); } }, - + resetFormChanged: function() { ISPConfig.pageFormChanged = false; }, showLoadIndicator: function() { document.body.style.cursor = 'wait'; - + if(ISPConfig.options.useLoadIndicator == true) { ISPConfig.requestsRunning += 1; @@ -96,7 +96,7 @@ var ISPConfig = { onAfterContentLoad: function(url, data) { if(!data) data = ''; else data = '&' + data; - + if(ISPConfig.options.useComboBox == true) { $('#pageContent').find("select:not(.chosen-select)").select2({ placeholder: '', @@ -119,7 +119,7 @@ var ISPConfig = { } }); } - + $('input[data-input-element="date"]').datetimepicker({ 'language': 'en', // TODO 'todayHighlight': true, @@ -144,18 +144,18 @@ var ISPConfig = { $(this).prop('readonly', true) .tooltip({title: "Click to set", placement: "left"}); }); - $('input[type="password"]').on('click focus', function() { + $('input[type="password"]').on('click focus', function() { $(this).prop('readonly', false); $(this).tooltip('destroy'); }); - + ISPConfig.callHook('onAfterContentLoad', {'url': url, 'data': data }); }, submitForm: function(formname, target, confirmation) { var successMessage = arguments[3]; if(!confirmation) confirmation = false; - + if(!confirmation || window.confirm(confirmation)) { var submitFormObj = $.ajax({ type: "POST", @@ -210,12 +210,12 @@ var ISPConfig = { if(errormsg){ msg = msg+'<div id="errorMsg">'+errormsg+'</div>'; } - + var csrf_key = $response.find('input[name="_csrf_key"]').val(); var csrf_id = $response.find('input[name="_csrf_id"]').val(); - + msg = msg + '<input type="hidden" name="_csrf_id" value="' + csrf_id + '" /><input type="hidden" name="_csrf_key" value="' + csrf_key + '" />'; - + return msg; }; @@ -264,7 +264,7 @@ var ISPConfig = { } }); }, - + loadContent: function(pagename) { var params = arguments[1]; var pageContentObject2 = $.ajax({ @@ -350,7 +350,7 @@ var ISPConfig = { ISPConfig.reportError('Ajax Request was not successful. 114'); } }); - + ISPConfig.loadMenus(); ISPConfig.keepalive(); ISPConfig.dataLogNotification(); @@ -358,11 +358,11 @@ var ISPConfig = { try { $('form#pageForm').find('input[name="username"]').focus(); } catch (e) { - + } }, 1000); }, - + loadMenus: function() { var sideNavObject = $.ajax({ type: "GET", @@ -409,7 +409,7 @@ var ISPConfig = { console.log('tab change interrupted, request still running.'); return false; } - + document.pageForm.next_tab.value = tab; var idel = $('form#pageForm').find('[name="id"]'); @@ -487,7 +487,7 @@ var ISPConfig = { } }); }, - + keepalive: function() { var pageContentObject3 = $.ajax({ type: "GET", @@ -618,13 +618,13 @@ $(document).on('click', 'a[data-load-content],button[data-load-content]', functi console.log('preventing click because there is still a request running.'); return; } - + $page.on('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); $page.animate({scrollTop: 0}, 1000, function() { $page.off('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); }); - + var content_to_load = $(this).attr('data-load-content'); if(!content_to_load) return this; - + ISPConfig.loadContent(content_to_load); }); @@ -634,13 +634,13 @@ $(document).on('click', 'a[data-capp],button[data-capp]', function(e) { console.log('preventing click because there is still a request running.'); return; } - + $page.on('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); $page.animate({scrollTop: 0}, 1000, function() { $page.off('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); }); - + var content_to_load = $(this).attr('data-capp'); if(!content_to_load) return this; - + ISPConfig.capp(content_to_load); }); @@ -650,14 +650,14 @@ $(document).on('click', 'a[data-submit-form],button[data-submit-form]', function console.log('preventing click because there is still a request running.'); return; } - + $page.on('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); $page.animate({scrollTop: 0}, 1000, function() { $page.off('scroll mousedown wheel DOMMouseScroll mousewheel keyup touchmove', function() { $page.stop(); }); }); - + var $el = $(this); var act = $el.attr('data-form-action'); var form = $el.attr('data-submit-form'); - + if($el.attr('data-form-upload') == 'true') ISPConfig.submitUploadForm(form, act); else ISPConfig.submitForm(form, act); }); @@ -679,28 +679,28 @@ $(document).on('click', 'th[data-column]', function(e) { var $self = $(this); var column = $self.attr('data-column'); if(!column) return this; - + if($("#pageForm .table #Filter").length > 0 && $self.attr('data-sortable') != 'false') { var $el = $('#Filter'); var act = $el.attr('data-form-action'); var form = $el.attr('data-submit-form'); - + var dir = $self.attr('data-ordered'); - + var separator = '?'; if(act.indexOf("?") >= 0){ separator = '&'; } act = act + separator + 'orderby=' + column; ISPConfig.submitForm(form, act); - + $(document).ajaxComplete(function() { var $self = $('#pageForm .table th[data-column="' + column + '"]'); $self.parent().children('th[data-column]').removeAttr('data-ordered'); if(dir && dir == 'asc') $self.attr('data-ordered', 'desc'); else $self.attr('data-ordered', 'asc'); }); - + } }); @@ -765,25 +765,23 @@ $(document).on('ready', function () { }) } }); - + // Animierter Ladefortschritt $('.progress .progress-bar').css('width', function () { return $(this).attr('aria-valuenow') + '%'; }); - - ISPConfig.loadInitContent(); $('#searchform').submit(function(e) { e.preventDefault(); }); - + $("#pageForm").submit(function(e){ //Prevent form submit: e.preventDefault() in lists if ($("#pageForm .table #Filter").length > 0) { e.preventDefault(); } }); - + $.fn.setCursorPosition = function(pos) { var self = $(this).get(0); if(self.setSelectionRange) { @@ -799,11 +797,11 @@ $(document).on('ready', function () { range.select(); } }; - + $.fn.getCursorPosition = function() { var iCaretPos = 0; var self = $(this).get(0); - + if(typeof self.selectionStart === 'number') { iCaretPos = self.selectionDirection == 'backward' ? self.selectionStart : self.selectionEnd; } else if(document.selection) { @@ -815,4 +813,3 @@ $(document).on('ready', function () { return iCaretPos; }; }); - diff --git a/interface/web/themes/default/templates/main.tpl.htm b/interface/web/themes/default/templates/main.tpl.htm index 4cc88760bb33f3f4db9de9a5daf6b7a43b3a0eb7..39622548aa70e6a33e9b40c6713e4e5393a9c213 100644 --- a/interface/web/themes/default/templates/main.tpl.htm +++ b/interface/web/themes/default/templates/main.tpl.htm @@ -58,9 +58,9 @@ <div> <div> <div class='input-group'> - <input id='globalsearch' type='text' class='form-control' placeholder='Search' /> + <input id='globalsearch' type='text' class='form-control' placeholder='{tmpl_var name="globalsearch_searchfield_watermark_txt"}' /> <span class='input-group-btn'> - <button class='btn btn-default' title='Search…'> + <button class='btn btn-default' title='{tmpl_var name="globalsearch_searchfield_watermark_txt"}'> <span class='icon icon-lens'></span> </button> </span> @@ -90,7 +90,7 @@ </ul> </div> <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> + <button type="button" class="btn btn-default" data-dismiss="modal">{tmpl_var name="datalog_changes_close_txt"}</button> </div> </div> </div> @@ -153,6 +153,8 @@ resultBoxPosition: '' }); + ISPConfig.loadInitContent(); + }); //--> </script> diff --git a/interface/web/tools/form/user_settings.tform.php b/interface/web/tools/form/user_settings.tform.php index a696d7533944348113cf550ab9265b7fb31a8eda..f063634b0ccf96ed6222acb33274c81b7dbd9ea2 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 diff --git a/remoting_client/API-docs/content.html b/remoting_client/API-docs/content.html index c8eb8151641e2e921e813b5751516b7b77ff53f4..00590071d584d34c9c1205e276f6a44d9165579d 100644 --- a/remoting_client/API-docs/content.html +++ b/remoting_client/API-docs/content.html @@ -1,44 +1,159 @@ <!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"> - - - <style type="text/css"> -<!-- -.command { - padding: 1em; - border: 1px dashed #2f6fab; - color: black; - background-color: #f9f9f9; - line-height: 1.1em; - font-family: Courier New, Courier, mono; - font-size: 12px; - font-style: italic; -} - -.system { - color: black; - font-family: Courier New, Courier, mono; - font-size: 12px; - font-style: italic; -} - -.highlight { - color: #FF0000; - font-family: Georgia, "Times New Roman", Times, serif; - font-size: 12px; - text-decoration: underline; -} ---> - </style></head><body style="color: rgb(0, 0, 0); background-color:#FFFFFF;;" alink="#804080" link="#804080" vlink="#603060"> -<div style="padding:40px"> -<h2>Home</h2> -<br> -ISPConfig 3 remote API documentation. -</div> - -</body></html> +<html> + +<head> + <title>ISPCOnfig 3 remote API documentation</title> + + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + + <style type="text/css"> + <!-- + .command { + padding: 1em; + border: 1px dashed #2f6fab; + color: black; + background-color: #f9f9f9; + line-height: 1.1em; + font-family: Courier New, Courier, mono; + font-size: 12px; + font-style: italic; + } + + .notes { + color: #17075c; + font-family: Georgia, "Times New Roman", Times, serif; + font-size: 14px; + + } + + .preface { + color: black; + font-family: Georgia, "Times New Roman", Times, serif; + font-size: 14px; + } + + a:link, + a:visited { + text-decoration: none; + } + + + a:hover, + a:active { + text-decoration: underline; + } + + .question { + font-size: 14px; + padding: 0em 0em 0em 1em; + } + + .answer { + padding: 0em 0em 0em 2em; + } + --> + </style> +</head> + +<body> + <div style="padding:40px"> + <h2>ISPConfig 3 Remote API Documentation</h2> + <div class="notes"> + <h3>Notes</h3> + + <p class="preface">These notes are new for v3.2 and the content will change.<br /> + This is currently in FAQ format, because the topics seem to be Frequently Asked Questions.<br /> + Over time, notes will also be added to individual function pages.<br /> + If you would like to help with this process, please visit the forum, and add your comments to <a + href="https://www.howtoforge.com/community/threads/api-doc-you-can-help.84944/">this thread</a> + which has been created for this purpose.<br /> + Thank you for your patience and collaboration. + </p> + + <h4 class="question">What do we do to get started with API calls?</h4> + <div class="answer"> + <p>Create a "Remote" User in the ISPConfig UI. Check boxes there to assign permissions for + the kinds of queries that can be processed by that user.</p> + <p>Almost all API queries require a session_id. To get that, call the login function, sending the remote + username and password. The response will be a single value which will be used as your session ID for + a limited time period for all other requests.</p> + <p>Finishing with a logout request is recommended, but optional since the session IDs expire.</p> + </div> + + <h4 class="question">How do I get all records with a _get request?</h4> + <div class="answer">Rather than using a single integer ID as a primary key selector (domain_id, group_id, + etc), use -1. Where the primary key for a _get request is a string, use an empty array ' [] '. Do not + use an empty string ' "" ', which is itself a valid string and will/should return an empty array result. + </div> + + <h4 class="question">Are defaults used if we only send some of the defined parameters?</h4> + <div class="answer">No, there are no default values except where explicitly noted. For example, in the + system_config_get function, the key element is optional because it is documented as defaulting to an + empty string. For all requests, except where documented otherwise, send all documented parameters.</div> + + <h4 class="question">Examples are provided for SOAP, why not for REST?</h4> + <div class="answer">The REST API supports all functions and can be exactly substituted for SOAP examples. + For all functions, the request and response parameters are the same for SOAP and REST.</div> + + <h4 class="question">Are there examples for cURL? Python? C#? JavaScript? (anything else...)</h4> + <div class="answer">The documentation details request and response parameters which can be passed using any + language or toolchain. The URL always includes the function name. Queries are always sent via POST. The + result is always in the same JSON format. Use Postman or another tool to generate code in your preferred + languages.</div> + + <h4 class="question">I created a new record (domain, mail user, etc). Why isn't it showing in the UI?</h4> + <div class="answer">If a parent ID is invalid, a transaction may be accepted, with a record created under a + different parent entity. + </div> + + <h4 class="question">Why does a response show a successful result when there is no data?</h4> + <div class="answer">Carefully check the names and values being sent. Invalid name/value pairs are ignored. A + request that does not include a valid request paramenter is requesting nothing, so the return value is + nothing. The query was successful, and returned no data.</div> + + <h4 class="question">Why are parameters $session_id and others being ignored?</h4> + <div class="answer">The documentation shows PHP function syntax. SOAP and REST parameters do not include the + leading $dollar-sign</div> + + <h4 class="question">Key Concept:</h4> + <div class="answer">Based on the above you may be thinking there is very little error checking with this + API. That is correct. As noted by Jesse Norell: <blockquote>"The api is largely just an interface to the + database tables, and will usually accept what you send, whether that's consistent/correct or not. It + can be a feature, eg. you can create a mail alias first before creating the mailbox to which it + forwards, but it does mean you have a lot more testing to do on your side because you can't just + rely on an error to be thrown if you send inconsistent data."</blockquote> + </div> + + <h4 class="question">What is sys_userid and sys_groupid?</h4> + <div class="answer"> + <p>These fields are referenced often in the developer forum and in code, usually with some confusion. + These internal database fields are used in SQL queries to determine parent/child client + relationships. The fields are not passed to API calls, with the exception of one function, + client_get_id which is a convenience function to return the client_id for a sys_userid. In the past + other functions included these keys in the request. Now, when a function request includes a + client_id, at query time a lookup is done to get the internal sys_userid for that client.</p> + <p>The sys_userid can identify the creator of a record. This may be the ID of the local/UI user or the + remote/API user that is logging in to create records. If a client record is created without a + reseller, both the sys_userid and the sys_groupid are the same user ID.</p> + <p>If a client record is created with a reseller, the meaning of the fields is completely different. The + sys_userid is not a logged-in user ID. It is a new ID that represents the client under the reseller. + The sys_groupid for a client under a reseller is (a foreign-key to) the sys_userid of the client + record for the reseller. In this scenario, the sys_groupid establishes a child-to-parent + relationship.</p> + </div> + + <h4 class="question">What domains are the 'domains_' functions operating on?</h4> + <div class="answer">The 'domains_' functions update the 'domains' table, which is used by the domain limit + module. Clients and resellers are restricted to the domains in this table. To activate domain limits, go + to System > Interface > Main Config, then to the Domains tab. Logout/in. Then go to Sites, Add or Edit a + site, the "Domain" dropdown list uses this table.</div> + + <h4 class="question">What will be here next?</h4> + <div class="answer">Maybe something you write... </div> + + </div> + </div> + +</body> + +</html> \ No newline at end of file diff --git a/remoting_client/examples/client_change_password.php b/remoting_client/examples/client_change_password.php index 5e20b11bc49773daa09ea29d8a27197be0e1f414..9782cc95690cda5126847dce24d375b2bfbb0e93 100644 --- a/remoting_client/examples/client_change_password.php +++ b/remoting_client/examples/client_change_password.php @@ -15,11 +15,21 @@ try { } //* Set the function parameters. - $domain = 'test.int'; - $record_record = $client->mail_domain_get_by_domain($session_id, $domain); + $client_id = 1; + $new_password = 'YourNewPassword'; + + $success = $client->client_change_password($session_id, $client_id, $new_password); + + if ($success == 1) + { + echo "Password has been changed successfully"; + } + else + { + echo "Error"; + } - print_r($record_record); echo "<br>"; if($client->logout($session_id)) { diff --git a/security/apache_directives.blacklist b/security/apache_directives.blacklist index 6dd376d643cac4d52f2885b9da68d043b08821f2..1c6d41f21091faf37c591704a21f339bae8d1869 100644 --- a/security/apache_directives.blacklist +++ b/security/apache_directives.blacklist @@ -1,3 +1,4 @@ /^\s*(LoadModule|LoadFile|Include|IncludeOptional)(\s+|[\\\\])/mi /^\s*(SuexecUserGroup|suPHP_UserGroup|suPHP_PHPPath|suPHP_ConfigPath)(\s+|[\\\\])/mi -/^\s*(FCGIWrapper|FastCgiExternalServer)(\s+|[\\\\])/mi \ No newline at end of file +/^\s*(FCGIWrapper|FastCgiExternalServer)(\s+|[\\\\])/mi +/^\s*(CustomLog|ErrorLog)(\s+|[\\\\])/mi diff --git a/security/ids.whitelist b/security/ids.whitelist index 6a953f45cf4216b4fef56ec565676b4dd2f8990a..d9b0ba70b5bbd06d8e51641597b38e25e8b04a92 100644 --- a/security/ids.whitelist +++ b/security/ids.whitelist @@ -55,4 +55,6 @@ user:/login/index.php:POST.password user:/mail/mail_domain_edit.php:POST.dkim_private user:/mail/mail_domain_edit.php:POST.dkim_public user:/mail/mail_domain_edit.php:POST.dns_record -user:/sites/web_vhost_domain_edit.php:POST.fastcgi_php_version \ No newline at end of file +admin:/mail/mail_user_filter_edit.php:POST.searchterm +user:/mail/mail_user_filter_edit.php:POST.searchterm +admin:/mail/mail_user_edit.php:POST.custom_mailfilter diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master index fe73487fa05c569612ddbe5f3530b3c47d9636b1..8d6df71b7da0cf2c07e7e57cce50c77d04787b2e 100644 --- a/server/conf/apache_apps.vhost.master +++ b/server/conf/apache_apps.vhost.master @@ -1,4 +1,3 @@ - ###################################################### # This virtual host contains the configuration # for the ISPConfig apps vhost @@ -15,6 +14,50 @@ SetHandler None </FilesMatch> + # 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 -TLSv1 -TLSv1.1 + <tmpl_else> + <tmpl_var name="ssl_comment">SSLProtocol All -SSLv2 -SSLv3 + </tmpl_if> + <tmpl_var name="ssl_comment">SSLCertificateFile /usr/local/ispconfig/interface/ssl/ispserver.crt + <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-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 + </tmpl_if> + <tmpl_if name='apache_version' op='>=' value='2.4.11' format='version'> + <tmpl_var name="ssl_comment">SSLSessionTickets Off + </tmpl_if> + + <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" + 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> + <IfVersion < 2.4.7> + Header set Strict-Transport-Security "max-age=15768000" + </IfVersion> + RequestHeader unset Proxy early + </IfModule> + + <tmpl_if name='apache_version' op='>=' value='2.3.3' format='version'> + <tmpl_var name="ssl_comment">SSLUseStapling On + <tmpl_var name="ssl_comment">SSLStaplingResponderTimeout 5 + <tmpl_var name="ssl_comment">SSLStaplingReturnResponderErrors Off + </tmpl_if> + <IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule> @@ -55,9 +98,9 @@ <Directory {tmpl_var name='apps_vhost_dir'}> Options +Indexes +FollowSymLinks +MultiViews +ExecCGI AllowOverride AuthConfig Indexes Limit Options FileInfo - <FilesMatch "\.php$"> - SetHandler fcgid-script - </FilesMatch> + <FilesMatch "\.php$"> + SetHandler fcgid-script + </FilesMatch> FCGIWrapper {tmpl_var name='apps_vhost_basedir'}/php-fcgi-scripts/apps/.php-fcgi-starter .php <tmpl_if name='apache_version' op='>' value='2.2' format='version'> Require all granted @@ -79,3 +122,9 @@ {/tmpl_if} </VirtualHost> + +<tmpl_if name='apache_version' op='>=' value='2.3.3' format='version'> +<IfModule mod_ssl.c> + <tmpl_var name="ssl_comment">SSLStaplingCache shmcb:/var/run/ocsp(128000) +</IfModule> +</tmpl_if> diff --git a/server/conf/awstats_index.php.master b/server/conf/awstats_index.php.master index f7222c968721c87da286dc0ec937e25346bd58cc..b3e694ebbf3441038b45508f8e1e1624c3a0f481 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 +?> diff --git a/server/conf/goaccess_index.php.master b/server/conf/goaccess_index.php.master new file mode 100644 index 0000000000000000000000000000000000000000..ecb91c7a9cbaefeabd668a651f32cf1b24503f48 --- /dev/null +++ b/server/conf/goaccess_index.php.master @@ -0,0 +1,74 @@ +<?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 .= "<meta charset=\"UTF-8\">\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/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master index 3fc50cc10805845b7e6656234d683ddd88698505..e00a892fece390ee61e6aa97d98bae5dd402e0fc 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -34,6 +34,7 @@ server { server_name <tmpl_var name='domain'> <tmpl_var name='alias'>; root <tmpl_var name='web_document_root_www'>; + disable_symlinks if_not_owner from=$document_root; <tmpl_if name='ssl_enabled'> <tmpl_if name='rewrite_to_https' op='==' value='y'> diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master index c5b33e4ba314f0c52af852273318096bf24fb1ff..b5dedebf293706ea67fd7a2aff107186663ccbb4 100644 --- a/server/conf/sieve_filter.master +++ b/server/conf/sieve_filter.master @@ -3,12 +3,12 @@ # 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"]; +require ["fileinto", "mailbox", "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"; + fileinto :create "Junk"; # Stop here so that we do not reply on spams stop; } @@ -32,7 +32,7 @@ redirect "<tmpl_var name='address'>"; <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"; + fileinto :create "Junk"; # Stop here so that we do not reply on spams stop; } diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php index ba28cd4c90559b0a2f323517eb929cfe4ea554c9..485bd996d3b2059401e61dc1a1360d71a69f0b81 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 } ?> - 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 0000000000000000000000000000000000000000..7bdbbeb03b28e2f02937e021a72020bc5f6ce5b3 --- /dev/null +++ b/server/lib/classes/cron.d/150-goaccess.inc.php @@ -0,0 +1,285 @@ +<?php + +/* +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, +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, sys_groupid, 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'); + + if(is_array($records) && !empty($records)) { + + /* Check if goaccess binary is in path/installed */ + if($app->system->is_installed('goaccess')) { + + $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); + } + } + } + + + 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 = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'; + + if(!@is_file($logfile)) { + $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 = $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/ or /etc/goaccess 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))) { + $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 or /etc/goaccess/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); + } + + $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.'/log/goaccess_db'; + $output_html = $docroot.'/'.$web_folder.'/stats/goaindex.html'; + if(!@is_dir($goa_db_dir)) $app->system->mkdirpath($goa_db_dir); + + 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'); + $app->system->exec_safe('chown -R ?:? ?', $username, $groupname, $statsdir); + + $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)) { + $app->system->mkdirpath($statsdirold, 0755, $username, $groupname); + } + + $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") $app->system->copy("$statsdir"."/"."$file", "$statsdirold"."$file"); + } + } + + // Get the GoAccess version + $match = array(); + + $goaccess_version = $app->system->system_safe('goaccess --version 2>&1'); + + if(preg_match('/[0-9]\.[0-9]{1,2}/', $goaccess_version, $match)) { + $goaccess_version = $match[0]; + } + + + $sql_user = "SELECT client_id FROM sys_group WHERE groupid = ?"; + $rec_user = $app->db->queryOneRecord($sql_user, $rec['sys_groupid']); + $lang_query = "SELECT country,language FROM client WHERE client_id = ?"; + $lang_user = $app->db->queryOneRecord($lang_query, $rec_user['client_id']); + $cust_lang = $lang_user['language']."_".strtoupper($lang_user['language']).".UTF-8"; + + switch($lang_user['language']) + { + case 'en': + $cust_lang = 'en_UK.UTF-8'; + break; + case 'br': + $cust_lang = 'pt_PT.UTF-8'; + break; + case 'ca': + $cust_lang = 'en_US.UTF-8'; + break; + case 'ja': + $cust_lang = 'ja_JP.UTF-8'; + break; + case 'ar': + $cust_lang = 'es_ES.UTF-8'; + break; + case 'el': + $cust_lang = 'el_GR.UTF-8'; + break; + case 'se': + $cust_lang = 'sv_SE.UTF-8'; + break; + case 'dk': + $cust_lang = 'da_DK.UTF-8'; + break; + case 'cz': + $cust_lang = 'cs_CZ.UTF-8'; + break; + } + + + /* + * GoAccess removed with 1.4 B+Tree support and supports from this version on only "In-Memory with On-Disk Persistance Storage". + * For versions prior 1.4 you need GoAccess with B+Tree support compiled! + */ + + 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 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 couldn't be generated. The GoAccess binary wasn't compiled with B+Tree support. Please recompile/reinstall GoAccess with B+Tree support, or install GoAccess version >= 1.4! (recommended)", LOGLEVEL_ERROR); + } + unset($output); + } + + unset($cust_lang); + unset($sql_user); + unset($rec_user); + unset($lang_query); + unset($lang_user); + + 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")) { + $app->system->chown($rec['document_root']."/".$web_folder."/stats/index.php", $rec['system_user']); + $app->system->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 couldn't be generated. The GoAccess binary couldn't be found. Make sure that GoAccess is installed and that it is in \$PATH", LOGLEVEL_ERROR); + } + + } + + parent::onRunJob(); + } + + /* this function is optional if it contains no custom code */ + public function onAfterRun() { + global $app; + + parent::onAfterRun(); + } + +} + +?> diff --git a/server/lib/classes/cron.d/150-webalizer.inc.php b/server/lib/classes/cron.d/150-webalizer.inc.php index 42aa125e0f9b427883196bf2d511e25a3ad6d182..6c68cef183a6bcad8532bc5cbb13edcf01201800 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); } diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php index b0470b2ec76c539c89dc811716e2359a71145183..ef0bbb1201b0bf35a67d77e96fc6b3d4c1e1a408 100644 --- a/server/lib/classes/cron.d/200-logfiles.inc.php +++ b/server/lib/classes/cron.d/200-logfiles.inc.php @@ -124,7 +124,7 @@ class cronjob_logfiles extends cronjob { $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; + $cron_logfile = $rec['document_root'].'/private/' . $cron_logfile; // rename older files (move up by one) $num = $log_retention; @@ -193,7 +193,7 @@ class cronjob_logfiles extends cronjob { if(is_file($ispconfig_logfile . '.' . $num . '.gz')) rename($ispconfig_logfile . '.' . $num . '.gz', $ispconfig_logfile . '.' . ($num + 1) . '.gz'); $num--; } - // compress current logfile + //* compress current logfile if(is_file($ispconfig_logfile)) { $app->system->exec_safe("gzip -c ? > ?", $ispconfig_logfile, $ispconfig_logfile . '.1.gz'); $app->system->exec_safe("cat /dev/null > ?", $ispconfig_logfile); diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index 8c381230961976b5152ae5bff25cd7fa00f3634a..df38086ebee7ff73d67ba437c36e7172b7a15c77 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -1106,6 +1106,75 @@ class db } } + /** + * Get the database type (mariadb or mysql) + * + * @access public + * @return string 'mariadb' or string 'mysql' + */ + + public function getDatabaseType() { + $tmp = $this->queryOneRecord('SELECT VERSION() as version'); + if(stristr($tmp['version'],'mariadb')) { + return 'mariadb'; + } else { + return 'mysql'; + } + } + + /** + * Get the database version + * + * @access public + * @param bool $major_version_only = true will return the major version only, e.g. 8 for MySQL 8 + * @return string version number + */ + + public function getDatabaseVersion($major_version_only = false) { + $tmp = $this->queryOneRecord('SELECT VERSION() as version'); + $version = explode('-', $tmp['version']); + if($major_version_only == true) { + $version_parts = explode('.', $version[0]); + return $version_parts[0]; + } else { + return $version[0]; + } + } + + /** + * Get a mysql password hash + * + * @access public + * @param string cleartext password + * @return string Password hash + */ + + public function getPasswordHash($password) { + + $password_type = 'password'; + + /* Disabled until caching_sha2_password is implemented + if($this->getDatabaseType() == 'mysql' && $this->getDatabaseVersion(true) >= 8) { + // we are in MySQL 8 mode + $tmp = $this->queryOneRecord("show variables like 'default_authentication_plugin'"); + if($tmp['default_authentication_plugin'] == 'caching_sha2_password') { + $password_type = 'caching_sha2_password'; + } + } + */ + + if($password_type == 'caching_sha2_password') { + /* + caching_sha2_password hashing needs to be implemented, have not + found valid PHP implementation for the new password hash type. + */ + } else { + $password_hash = '*'.strtoupper(sha1(sha1($password, true))); + } + + return $password_hash; + } + } /** diff --git a/server/lib/classes/letsencrypt.inc.php b/server/lib/classes/letsencrypt.inc.php index 734663811921d799674fcc9e0cbe3b5e1b28bf60..5a4217d6975e4d4eb22fc4526db177fbd612d217 100644 --- a/server/lib/classes/letsencrypt.inc.php +++ b/server/lib/classes/letsencrypt.inc.php @@ -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()) . ' --log ' . escapeshellarg($conf['ispconfig_log_dir'].'/acme.log') . '; 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 --always-force-new-domain-key --keylength 4096; 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; } @@ -373,13 +373,38 @@ class letsencrypt { if((isset($web_config['skip_le_check']) && $web_config['skip_le_check'] == 'y') || (isset($server_config['migration_mode']) && $server_config['migration_mode'] == 'y')) { $le_domains[] = $temp_domain; } else { - $le_hash_check = trim(@file_get_contents('http://' . $temp_domain . '/.well-known/acme-challenge/' . $le_rnd_file)); - if($le_hash_check == $le_rnd_hash) { - $le_domains[] = $temp_domain; - $app->log("Verified domain " . $temp_domain . " should be reachable for letsencrypt.", LOGLEVEL_DEBUG); + //check caa-record + $caa_check = false; + $caa_domain = $temp_domain; + $count = substr_count($caa_domain, '.'); + if($count === 2) { + if(strlen(explode('.', $caa_domain)[1]) > 3) { + $caa_domain = explode('.', $caa_domain, 2)[1]; + } + } else if($count > 2) { + $caa_domain = get_domain(explode('.', $caa_domain, 2)[1]); + } + $caa_records = @dns_get_record($caa_domain, DNS_CAA); // requieres PHP 7.0.16, 7.1.2 + if(is_array($caa_records) && !empty($caa_records)) { + foreach ($records as $record) { + if($record['value'] == 'letsencrypt.org') $caa_check = true; + } + } else { + $caa_check = true; + } + + if($caa_check === true) { + $le_hash_check = trim(@file_get_contents('http://' . $temp_domain . '/.well-known/acme-challenge/' . $le_rnd_file)); + if($le_hash_check == $le_rnd_hash) { + $le_domains[] = $temp_domain; + $app->log("Verified domain " . $temp_domain . " should be reachable for letsencrypt.", LOGLEVEL_DEBUG); + } else { + $app->log("Could not verify domain " . $temp_domain . ", so excluding it from letsencrypt request.", LOGLEVEL_WARN); + } } else { - $app->log("Could not verify domain " . $temp_domain . ", so excluding it from letsencrypt request.", LOGLEVEL_WARN); + $app->log("Incomplete CAA-Records for " . $temp_domain . ", so excluding it from letsencrypt request.", LOGLEVEL_WARN); } + } } $temp_domains = $le_domains; @@ -542,4 +567,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 e0699a7f82741305b6ffbd2bbaa3f460b533eb83..ba86d1f11597c5f770fe332936dc1dc3ec1354c8 100644 --- a/server/lib/classes/system.inc.php +++ b/server/lib/classes/system.inc.php @@ -2227,7 +2227,7 @@ class system{ $program_args .= ' ' . escapeshellarg($prog); } - $cmd = 'jk_cp -k ?' . $program_args; + $cmd = 'jk_cp -j ?' . $program_args; $this->exec_safe($cmd, $home_dir); return true; @@ -2250,7 +2250,7 @@ class system{ } // 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; + $cmd = 'jk_init -f -c /etc/jailkit/jk_init.ini -j ?' . $app_args; $this->exec_safe($cmd, $home_dir); // Create the temp directory diff --git a/server/mods-available/remoteaction_core_module.inc.php b/server/mods-available/remoteaction_core_module.inc.php index 3b6bb9fb497366c4e2d05d2324777a6eb0273620..a32f99f87f007b0926b5c21df54e0558fb9015a8 100644 --- a/server/mods-available/remoteaction_core_module.inc.php +++ b/server/mods-available/remoteaction_core_module.inc.php @@ -172,16 +172,17 @@ class remoteaction_core_module { /* * Do the update */ - exec("aptitude update"); - exec("aptitude safe-upgrade -y"); + //Guess this is not wanted here? + //exec("aptitude update"); + //exec("aptitude safe-upgrade -y"); //TODO : change this when distribution information has been integrated into server record if(file_exists('/etc/gentoo-release')) { exec("glsa-check -f --nocolor affected"); } else { - exec("aptitude update"); - exec("aptitude safe-upgrade -y"); + exec("apt-get update"); + exec("apt-get -y upgrade"); } /* @@ -192,7 +193,7 @@ 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'); diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php index 02f31510c2a2001c3c2ef4cada45cfa3c1a76377..609e9212dc3a6fd6b6a74c2fcb3b9622039a915c 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 455320863801dfd94d61ece62c2d227a1864e4eb..e300117767a078d4817849a69f1fabcaf79c9ba9 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 ?', $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']); + + 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) { @@ -585,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; } @@ -1215,7 +1243,8 @@ class apache2_plugin { $vhost_data['apache_directives'] = str_replace("\r", "\n", $vhost_data['apache_directives']); $trans = array( '{DOCROOT}' => $vhost_data['web_document_root_www'], - '{DOCROOT_CLIENT}' => $vhost_data['web_document_root'] + '{DOCROOT_CLIENT}' => $vhost_data['web_document_root'], + '{DOMAIN}' => $vhost_data['domain'] ); $vhost_data['apache_directives'] = strtr($vhost_data['apache_directives'], $trans); @@ -1865,7 +1894,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.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\n<Files \"goaindex.html\">\nAddDefaultCharset UTF-8\n</Files>\n"; $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); @@ -1887,11 +1916,31 @@ 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'); } + //* Remove the AWstats configuration file + if($data['old']['stats_type'] == 'awstats' && $data['new']['stats_type'] != 'awstats') { + $this->awstats_delete($data, $web_config); + } + + //* Remove the GoAccess configuration file + if($data['old']['stats_type'] == 'goaccess' && $data['new']['stats_type'] != 'goaccess') { + $this->goaccess_delete($data, $web_config); + } + + //* Remove the Webalizer configuration file + if($data['old']['stats_type'] == 'webalizer' && $data['new']['stats_type'] != 'webalizer') { + $this->webalizer_delete($data, $web_config); + } + $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir, $web_folder); $this->hhvm_update($data, $web_config); @@ -2295,7 +2344,7 @@ class apache2_plugin { } - //* Remove the awstats configuration file + //* Remove the AWstats configuration file if($data['old']['stats_type'] == 'awstats') { $this->awstats_delete($data, $web_config); } @@ -2997,18 +3046,111 @@ class apache2_plugin { } } - //* Delete the awstats configuration file - private function awstats_delete ($data, $web_config) { + //* 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; + + $web_folder = $data['new']['web_folder']; + if($data['new']['type'] == 'vhost') $web_folder = 'web'; + + $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_WARN); + } + } + } + + if(!is_dir($data['new']['document_root'] . "/log/goaccess_db")) $app->system->mkdirpath($data['new']['document_root'] . "/log/goaccess_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")) { + $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 = $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); + } + + 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; - $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); } } + //* Delete the Webalizer configuration file + private function webalizer_delete ($data, $web_config) { + global $app; + + $webalizer_conf = $data['old']['document_root'] . "/log/webalizer.conf"; + + if ( @is_file($webalizer_conf) ) { + $app->system->unlink($webalizer_conf); + $app->log('Removed Webalizer config file: '.$webalizer_conf, LOGLEVEL_DEBUG); + } + } + private function hhvm_update($data, $web_config) { global $app, $conf; diff --git a/server/plugins-available/apps_vhost_plugin.inc.php b/server/plugins-available/apps_vhost_plugin.inc.php index 7fb55038023083c241d2813ee5d7495a1d4550ca..a8797c62afcf0e8cd2c59aefd1fdb58e40f070c6 100644 --- a/server/plugins-available/apps_vhost_plugin.inc.php +++ b/server/plugins-available/apps_vhost_plugin.inc.php @@ -106,7 +106,19 @@ class apps_vhost_plugin { $vhost_port_listen = '#'; } $tpl->setVar('vhost_port_listen', $vhost_port_listen); - + + /* Check if SSL should be enabled: */ + if(is_file('/usr/local/ispconfig/interface/ssl/ispserver.crt') && is_file('/usr/local/ispconfig/interface/ssl/ispserver.key')) { + $tpl->setVar('ssl_comment',''); + } else { + $tpl->setVar('ssl_comment','#'); + } + if(is_file('/usr/local/ispconfig/interface/ssl/ispserver.crt') && is_file('/usr/local/ispconfig/interface/ssl/ispserver.key') && is_file('/usr/local/ispconfig/interface/ssl/ispserver.bundle')) { + $tpl->setVar('ssl_bundle_comment',''); + } else { + $tpl->setVar('ssl_bundle_comment','#'); + } + $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); if($mail_config['content_filter'] == 'rspamd'){ $use_rspamd = true; @@ -194,7 +206,7 @@ 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 = ''; diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php index d4b4a7c01c0516e582c1128c6180a6d3e6320aa1..b152a8758db795ad17b708ffe80ed27b1a8928d8 100644 --- a/server/plugins-available/bind_plugin.inc.php +++ b/server/plugins-available/bind_plugin.inc.php @@ -85,75 +85,114 @@ class bind_plugin { //* load the server configuration options $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); - + $domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1); 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) { $app->log('DNSSEC ERROR: We are low on entropy. Not generating new Keys for '.$domain.'. Please consider installing package haveged.', LOGLEVEL_WARN); echo "DNSSEC ERROR: We are low on entropy. Not generating new Keys for $domain. Please consider installing package haveged.\n"; return false; } - + //* Verify that we do not already have keys (overwriting-protection) - if (file_exists($dns_config['bind_zonefiles_dir'].'/dsset-'.$domain.'.')) { - return $this->soa_dnssec_update($data); - } else if ($data['new']['dnssec_initialized'] == 'Y') { //In case that we generated keys but the dsset-file was not generated - $keycount=0; - foreach (glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'*.key') as $keyfile) { - $keycount++; - } - if ($keycount > 0) { - $this->soa_dnssec_sign($data); - return true; + if($data['old']['dnssec_algo'] == $data['new']['dnssec_algo']) { + if (file_exists($dns_config['bind_zonefiles_dir'].'/dsset-'.$domain.'.')) { + return $this->soa_dnssec_update($data); + } else if ($data['new']['dnssec_initialized'] == 'Y') { //In case that we generated keys but the dsset-file was not generated + $keycount=0; + foreach (glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'*.key') as $keyfile) { + $keycount++; + } + if ($keycount > 0) { + $this->soa_dnssec_sign($data); + return true; + } } } - - //Do some magic... - $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); + + // Get DNSSEC Algorithms + $dnssec_algo = explode(',',$data['new']['dnssec_algo']); + + //* Create the Zone Signing and Key Signing Keys + if(in_array('ECDSAP256SHA256',$dnssec_algo) && count(glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+013*.key')) == 0) { + $app->system->exec_safe('cd ?; dnssec-keygen -3 -a ECDSAP256SHA256 -n ZONE ?; dnssec-keygen -f KSK -3 -a ECDSAP256SHA256 -n ZONE ?', $dns_config['bind_zonefiles_dir'], $domain, $domain); + } + if(in_array('NSEC3RSASHA1',$dnssec_algo) && count(glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+007*.key')) == 0) { + $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'; } - + function soa_dnssec_sign(&$data) { global $app, $conf; - + //* Load libraries $app->uses("getconf,tpl"); //* load the server configuration options $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); - + $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; - + + //* Get DNSSEC Algorithms + $dnssec_algo = explode(',',$data['new']['dnssec_algo']); + + //* Get Zone file content $zonefile = file_get_contents($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain); $keycount=0; - foreach (glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'*.key') as $keyfile) { - $includeline = '$INCLUDE '.basename($keyfile); - if (!preg_match('@'.preg_quote($includeline).'@', $zonefile)) $zonefile .= "\n".$includeline."\n"; - $keycount++; + + //* Include ECDSAP256SHA256 keys in zone + if(in_array('ECDSAP256SHA256',$dnssec_algo)) { + foreach (glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+013*.key') as $keyfile) { + $includeline = '$INCLUDE '.basename($keyfile); + if (!preg_match('@'.preg_quote($includeline).'@', $zonefile)) $zonefile .= "\n".$includeline."\n"; + $keycount++; + } } - if ($keycount != 2) $app->log('DNSSEC Warning: There are more or less than 2 keyfiles for zone '.$domain, LOGLEVEL_WARN); + + //* Include NSEC3RSASHA1 keys in zone + if(in_array('NSEC3RSASHA1',$dnssec_algo)) { + foreach (glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+007*.key') as $keyfile) { + $includeline = '$INCLUDE '.basename($keyfile); + if (!preg_match('@'.preg_quote($includeline).'@', $zonefile)) $zonefile .= "\n".$includeline."\n"; + $keycount++; + } + } + + $keycount_wanted = count(explode(',',$data['new']['dnssec_algo']))*2; + + if ($keycount != $keycount_wanted) $app->log('DNSSEC Warning: There are more or less than 2 keyfiles for each algorithm for zone '.$domain.'. Found: '.$keycount. ' Expected: '.$keycount_wanted, LOGLEVEL_WARN); file_put_contents($dns_config['bind_zonefiles_dir'].'/'.$filespre.$domain, $zonefile); - - //Sign the zone and set it valid for max. 16 days + + //* Sign the zone and set it valid for max. 16 days $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 + + //* Write Data back ino DB $dnssecdata = "DS-Records:\n".file_get_contents($dns_config['bind_zonefiles_dir'].'/dsset-'.$domain.'.'); $dnssecdata .= "\n------------------------------------\n\nDNSKEY-Records:\n"; - foreach (glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'*.key') as $keyfile) { - $dnssecdata .= file_get_contents($keyfile)."\n\n"; + + if(in_array('ECDSAP256SHA256',$dnssec_algo)) { + foreach (glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+013*.key') as $keyfile) { + $dnssecdata .= file_get_contents($keyfile)."\n\n"; + } } - + + if(in_array('NSEC3RSASHA1',$dnssec_algo)) { + foreach (glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+007*.key') as $keyfile) { + $dnssecdata .= file_get_contents($keyfile)."\n\n"; + } + } + if ($app->dbmaster !== $app->db) $app->dbmaster->query('UPDATE dns_soa SET dnssec_info=?, dnssec_initialized=\'Y\', dnssec_last_signed=? WHERE id=?', $dnssecdata, intval(time()), intval($data['new']['id'])); $app->db->query('UPDATE dns_soa SET dnssec_info=?, dnssec_initialized=\'Y\', dnssec_last_signed=? WHERE id=?', $dnssecdata, intval(time()), intval($data['new']['id'])); } - + function soa_dnssec_update(&$data, $new=false) { global $app, $conf; @@ -162,20 +201,20 @@ class bind_plugin { //* load the server configuration options $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); - + $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; - + //* Check for available entropy if (file_get_contents('/proc/sys/kernel/random/entropy_avail') < 200) { $app->log('DNSSEC ERROR: We are low on entropy. This could cause server script to fail. Please consider installing package haveged.', LOGLEVEL_ERR); echo "DNSSEC ERROR: We are low on entropy. This could cause server script to fail. Please consider installing package haveged.\n"; return false; } - + 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'])); $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(); @@ -183,10 +222,10 @@ class bind_plugin { $app->log('DNSSEC Error: Error in Zonefile for '.$domain, LOGLEVEL_ERR); return false; } - + $this->soa_dnssec_sign($data); } - + function soa_dnssec_delete(&$data) { global $app, $conf; @@ -195,13 +234,16 @@ class bind_plugin { //* load the server configuration options $dns_config = $app->getconf->get_server_config($conf["server_id"], 'dns'); - + $domain = substr($data['new']['origin'], 0, strlen($data['new']['origin'])-1); - - unlink($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+*'); + + $key_files = glob($dns_config['bind_zonefiles_dir'].'/K'.$domain.'.+*'); + foreach($key_files as $file) { + unlink($file); + } 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'])); $app->db->query('UPDATE dns_soa SET dnssec_info=\'\', dnssec_initialized=\'N\' WHERE id=?', intval($data['new']['id'])); } @@ -303,19 +345,24 @@ class bind_plugin { unset($records_out); unset($zone); } - + //* DNSSEC-Implementation - if($data['old']['origin'] != $data['new']['origin']) { + if($data['old']['origin'] != $data['new']['origin']) { if (@$data['old']['dnssec_initialized'] == 'Y' && strlen(@$data['old']['origin']) > 3) $this->soa_dnssec_delete($data); //delete old keys if ($data['new']['dnssec_wanted'] == 'Y') $this->soa_dnssec_create($data); - } - 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 + } elseif($data['old']['dnssec_algo'] != $data['new']['dnssec_algo']) { + $app->log("DNSSEC Algorithm has changed: ".$data['new']['dnssec_algo'], LOGLEVEL_DEBUG); + if ($data['new']['dnssec_wanted'] == 'Y') $this->soa_dnssec_create($data); + } elseif ($data['new']['dnssec_wanted'] == 'Y' && $data['old']['dnssec_initialized'] == 'N') { + $this->soa_dnssec_create($data); + } elseif ($data['new']['dnssec_wanted'] == 'N' && $data['old']['dnssec_initialized'] == 'Y') { //delete old signed file if dnssec is no longer wanted $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); + } elseif ($data['new']['dnssec_wanted'] == 'Y') { + $this->soa_dnssec_update($data); + } // END DNSSEC - + //* rebuild the named.conf file if the origin has changed or when the origin is inserted. //if($this->action == 'insert' || $data['old']['origin'] != $data['new']['origin']) { $this->write_named_conf($data, $dns_config); @@ -329,7 +376,7 @@ class bind_plugin { if(is_file($filename.'.err')) unlink($filename.'.err'); if(is_file($filename.'.signed')) unlink($filename.'.signed'); } - + //* Restart bind nameserver if update_acl is not empty, otherwise reload it if($data['new']['update_acl'] != '') { $app->services->restartServiceDelayed('bind', 'restart'); @@ -360,7 +407,7 @@ class bind_plugin { //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'); @@ -485,8 +532,6 @@ class bind_plugin { $options = ''; if(trim($tmp['xfer']) != '') { $options .= " allow-transfer {".str_replace(',', ';', $tmp['xfer']).";};\n"; - } else { - $options .= " allow-transfer {none;};\n"; } if(trim($tmp['also_notify']) != '') $options .= ' also-notify {'.str_replace(',', ';', $tmp['also_notify']).";};\n"; if(trim($tmp['update_acl']) != '') $options .= " allow-update {".str_replace(',', ';', $tmp['update_acl']).";};\n"; @@ -510,7 +555,7 @@ class bind_plugin { foreach($tmps_sec as $tmp) { // When you have more than one master, the serial number is used to determine which Master has the most current version of the zone by the - // slaves. The slaves actually ask for the SOA record from each Master when refreshing. + // slaves. The slaves actually ask for the SOA record from each Master when refreshing. $options = " masters {".str_replace(',', ';', $tmp['ns']).";};\n"; if(trim($tmp['xfer']) != '') { $options .= " allow-transfer {".str_replace(',', ';', $tmp['xfer']).";};\n"; diff --git a/server/plugins-available/maildeliver_plugin.inc.php b/server/plugins-available/maildeliver_plugin.inc.php index 130d0a7f187ccfe6baea029754e0501c5cbfc589..168063c1a2a9307cfd81c882ab890c9878507661 100644 --- a/server/plugins-available/maildeliver_plugin.inc.php +++ b/server/plugins-available/maildeliver_plugin.inc.php @@ -93,6 +93,7 @@ class maildeliver_plugin { or $data["old"]["autoresponder_start_date"] != $data["new"]["autoresponder_start_date"] or $data["old"]["autoresponder_end_date"] != $data["new"]["autoresponder_end_date"] or $data["old"]["cc"] != $data["new"]["cc"] + or $data["old"]["forward_in_lda"] != $data["new"]["forward_in_lda"] ) { $app->log("Mailfilter config has been changed", LOGLEVEL_DEBUG); @@ -121,14 +122,16 @@ class maildeliver_plugin { $tpl->newTemplate("sieve_filter.master"); // 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)); - } + if ($data["new"]["forward_in_lda"] == 'y' && $data["new"]["cc"] != '') { + $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); + $tpl->setVar('cc', $data["new"]["cc"]); + $tpl->setLoop('ccloop', $tmp_addresses_arr); + } // Custom filters if($data["new"]["custom_mailfilter"] == 'NULL') $data["new"]["custom_mailfilter"] = ''; diff --git a/server/plugins-available/maildrop_plugin.inc.php b/server/plugins-available/maildrop_plugin.inc.php index 00777a1662e7c9a7dea5deddbf70ee6ac563a1a6..e1b559b367432cfb4349e6fd4e9f376e048cb22b 100644 --- a/server/plugins-available/maildrop_plugin.inc.php +++ b/server/plugins-available/maildrop_plugin.inc.php @@ -176,7 +176,9 @@ class maildrop_plugin { // Write the custom mailfilter script, if mailfilter recipe has changed if($data["old"]["custom_mailfilter"] != $data["new"]["custom_mailfilter"] or $data["old"]["move_junk"] != $data["new"]["move_junk"] - or $data["old"]["cc"] != $data["new"]["cc"]) { + or $data["old"]["cc"] != $data["new"]["cc"] + or $data["old"]["forward_in_lda"] != $data["new"]["forward_in_lda"] + ) { $app->log("Mailfilter config has been changed", LOGLEVEL_DEBUG); if(trim($data["new"]["custom_mailfilter"]) != '' @@ -198,7 +200,7 @@ class maildrop_plugin { $mailfilter_content = ''; - if($data["new"]["cc"] != '') { + if ($data["new"]["forward_in_lda"] == 'y' && $data["new"]["cc"] != '') { $tmp_mails_arr = explode(',',$data["new"]["cc"]); foreach($tmp_mails_arr as $address) { if(trim($address) != '') $mailfilter_content .= "cc \"!".trim($address)."\"\n"; diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php index 72f602f9dae2e7ac46da32d4aaf72803e9c979b6..f28e6006ce1de08ae7bbe6e0d48aea0206bcf0e4 100644 --- a/server/plugins-available/mysql_clientdb_plugin.inc.php +++ b/server/plugins-available/mysql_clientdb_plugin.inc.php @@ -101,12 +101,7 @@ class mysql_clientdb_plugin { $success = true; if(!preg_match('/\*[A-F0-9]{40}$/', $database_password)) { - $result = $link->query("SELECT PASSWORD('" . $link->escape_string($database_password) . "') as `crypted`"); - if($result) { - $row = $result->fetch_assoc(); - $database_password = $row['crypted']; - $result->free(); - } + $database_password = $app->db->getPasswordHash($password); } $app->log("Calling $action for $database_name with access $user_access_mode and hosts " . implode(', ', $host_list), LOGLEVEL_DEBUG); @@ -151,9 +146,32 @@ class mysql_clientdb_plugin { $success = true; } - 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') { + // Create the user + $link->query("CREATE USER '".$link->escape_string($database_user)."'@'$db_host'"); + $app->log("CREATE USER '".$link->escape_string($database_user)."'@'$db_host'", LOGLEVEL_DEBUG); + + // set the password + // MySQL < 5.7 and MariadB 10 + if(!$link->query("UPDATE mysql.user SET `Password` = '".$link->escape_string($database_password)."' WHERE `Host` = '".$db_host."' AND `User` = '".$link->escape_string($database_user)."'")) { + if($this->getDatabaseType($link) == 'mysql' && $this->getDatabaseVersion($link, true) >= 8) { + // for MySQL >= 8, we set authentication plugin to old mode to ensure that older additional php versions can still connect to the database + if(!$link->query("UPDATE mysql.user SET `authentication_string` = '".$link->escape_string($database_password)."', `plugin` = 'mysql_native_password' WHERE `Host` = '".$db_host."' AND `User` = '".$link->escape_string($database_user)."'")) $success = false; + } else { + // MySQL 5.7, the Password field has been renamed to authentication_string + if(!$link->query("UPDATE mysql.user SET `authentication_string` = '".$link->escape_string($database_password)."' WHERE `Host` = '".$db_host."' AND `User` = '".$link->escape_string($database_user)."'")) $success = false; + } + } + + if($success == true){ + $link->query("FLUSH PRIVILEGES"); + $app->log("PASSWORD SET FOR '".$link->escape_string($database_user)."'@'$db_host' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG); + } + + // Set the grant + if(!$link->query("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host'")) $success = false; + $app->log("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG); + + } elseif($action == 'REVOKE') { 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; @@ -165,8 +183,13 @@ class mysql_clientdb_plugin { if(trim($database_password) != '') { // MySQL < 5.7 and MariadB 10 if(!$link->query("UPDATE mysql.user SET `Password` = '".$link->escape_string($database_password)."' WHERE `Host` = '".$db_host."' AND `User` = '".$link->escape_string($database_user)."'")) { - // MySQL 5.7, the Password field has been renamed to authentication_string - if(!$link->query("UPDATE mysql.user SET `authentication_string` = '".$link->escape_string($database_password)."' WHERE `Host` = '".$db_host."' AND `User` = '".$link->escape_string($database_user)."'")) $success = false; + if($this->getDatabaseType($link) == 'mysql' && $this->getDatabaseVersion($link, true) >= 8) { + // for MySQL >= 8, we set authentication plugin to old mode to ensure that older additional php versions can still connect to the database + if(!$link->query("UPDATE mysql.user SET `authentication_string` = '".$link->escape_string($database_password)."', `plugin` = 'mysql_native_password' WHERE `Host` = '".$db_host."' AND `User` = '".$link->escape_string($database_user)."'")) $success = false; + } else { + // MySQL 5.7, the Password field has been renamed to authentication_string + if(!$link->query("UPDATE mysql.user SET `authentication_string` = '".$link->escape_string($database_password)."' WHERE `Host` = '".$db_host."' AND `User` = '".$link->escape_string($database_user)."'")) $success = false; + } } if($success == true) $link->query("FLUSH PRIVILEGES"); } @@ -529,7 +552,7 @@ class mysql_clientdb_plugin { //* Remote access option has changed. if($data['new']['remote_access'] != $data['old']['remote_access']) { - //* set new priveliges + //* set new privileges if($data['new']['remote_access'] == 'y') { if($db_user) { if($db_user['database_user'] == 'root'){ @@ -772,6 +795,43 @@ class mysql_clientdb_plugin { $link->close(); } + + + + + function getDatabaseType($link) { + $result = $link->query('SELECT VERSION() as version'); + if($result) { + $tmp = $result->fetch_assoc(); + $result->free(); + + if(stristr($tmp['version'],'mariadb')) { + return 'mariadb'; + } else { + return 'mysql'; + } + } else { + return false; + } + } + + function getDatabaseVersion($link, $major_version_only = false) { + $result = $link->query('SELECT VERSION() as version'); + if($result) { + $tmp = $result->fetch_assoc(); + $result->free(); + + $version = explode('-', $tmp['version']); + if($major_version_only == true) { + $version_parts = explode('.', $version[0]); + return $version_parts[0]; + } else { + return $version[0]; + } + } else { + return false; + } + } } // end class diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php index 4116c1867642a1e9c50f2cdb2f330165317c68a4..590e5baf3e91c97159cd54553862a15f148483cc 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 ?', $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']); + + 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 @@ -426,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; } @@ -1269,6 +1298,7 @@ class nginx_plugin { $trans = array( '{DOCROOT}' => $vhost_data['web_document_root_www'], '{DOCROOT_CLIENT}' => $vhost_data['web_document_root'], + '{DOMAIN}' => $vhost_data['domain'], '{FASTCGIPASS}' => 'fastcgi_pass '.($data['new']['php_fpm_use_socket'] == 'y'? 'unix:'.$fpm_socket : '127.0.0.1:'.$vhost_data['fpm_port']).';' ); foreach($nginx_directive_lines as $nginx_directive_line){ @@ -1905,6 +1935,26 @@ 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 the AWstats configuration file + if($data['old']['stats_type'] == 'awstats' && $data['new']['stats_type'] != 'awstats') { + $this->awstats_delete($data, $web_config); + } + + //* Remove the GoAccess configuration file + if($data['old']['stats_type'] == 'goaccess' && $data['new']['stats_type'] != 'goaccess') { + $this->goaccess_delete($data, $web_config); + } + + //* Remove the Webalizer configuration file + if($data['old']['stats_type'] == 'webalizer' && $data['new']['stats_type'] != 'webalizer') { + $this->webalizer_delete($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'); @@ -2531,6 +2581,101 @@ 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_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_WARN); + } + } + } + + if(!is_dir($data['new']['document_root'] . "/log/goaccess_db")) $app->system->mkdirpath($data['new']['document_root'] . "/log/goaccess_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")) { + $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 = $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); + } + + 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 = $data['old']['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 Webalizer configuration file + private function webalizer_delete ($data, $web_config) { + global $app; + + $webalizer_conf = $data['old']['document_root'] . "/log/webalizer.conf"; + + if ( @is_file($webalizer_conf) ) { + $app->system->unlink($webalizer_conf); + $app->log('Removed Webalizer config file: '.$webalizer_conf, LOGLEVEL_DEBUG); + } + } + //* Update the awstats configuration file private function awstats_update ($data, $web_config) { global $app; diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 5a0b222a2491bb62125adbaa096d887ed28aee85..2d6f063cd855752aa730a5bda6c34961949a00e2 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -70,6 +70,7 @@ class postfix_server_plugin { // The purpose of this plugin is to rewrite the main.cf file function update($event_name, $data) { global $app, $conf; + $postfix_restart = false; // get the config $app->uses("getconf,system"); @@ -105,7 +106,7 @@ class postfix_server_plugin { exec("postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'"); exec("postconf -e 'smtp_sasl_security_options ='"); exec('postmap /etc/postfix/sasl_passwd'); - exec($conf['init_scripts'] . '/' . 'postfix restart'); + $postfix_restart=true; } if($mail_config['realtime_blackhole_list'] != $old_ini_data['mail']['realtime_blackhole_list']) { @@ -139,27 +140,147 @@ class postfix_server_plugin { } } $app->system->exec_safe("postconf -e ?", 'smtpd_recipient_restrictions = '.implode(", ", $new_options)); - exec('postfix reload'); } - - if($mail_config['reject_sender_login_mismatch'] != $old_ini_data['mail']['reject_sender_login_mismatch']) { + + if ($mail_config['reject_sender_login_mismatch'] != $old_ini_data['mail']['reject_sender_login_mismatch']) { $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)) { - $new_options[] = $value; + $value = trim($value); + if ($value == '') continue; + if (preg_match('/reject_(authenticated_)?sender_login_mismatch/', $value)) { + continue; } + $new_options[] = $value; } - + if ($mail_config['reject_sender_login_mismatch'] == 'y') { - reset($new_options); $i = 0; - // insert after check_sender_access but before permit_... - 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')); + array_splice($new_options, 0, 0, array('reject_authenticated_sender_login_mismatch')); + + for ($i = 0; isset($new_options[$i]); $i++) { + if ($new_options[$i] == 'permit_mynetworks') { + array_splice($new_options, $i+1, 0, array('reject_sender_login_mismatch')); + break; + } + } } + $app->system->exec_safe("postconf -e ?", 'smtpd_sender_restrictions = '.implode(", ", $new_options)); - exec('postfix reload'); - } + } + + if ($mail_config['reject_unknown']) { + if (($mail_config['reject_unknown'] === 'client') || ($mail_config['reject_unknown'] === 'client_helo')) { + $options = preg_split("/,\s*/", exec("postconf -h smtpd_client_restrictions")); + $new_options = array(); + foreach ($options as $key => $value) { + $value = trim($value); + if ($value == '') continue; + if (preg_match('/reject_unknown(_client)?_hostname/', $value)) { + continue; + } + $new_options[] = $value; + } + + // insert before explicit permit, or append + for ($i = 0; isset($new_options[$i]); $i++) { + if ($new_options[$i] == 'permit') { + array_splice($new_options, $i, 0, array('reject_unknown_client_hostname')); + break; + } + } + if ($i == count($new_options)) { + $new_options[] = array('reject_unknown_client_hostname'); + } + + $app->system->exec_safe("postconf -e ?", 'smtpd_client_restrictions = '.implode(", ", $new_options)); + } else { + $options = preg_split("/,\s*/", exec("postconf -h smtpd_client_restrictions")); + $new_options = array(); + foreach ($options as $key => $value) { + $value = trim($value); + if ($value == '') continue; + if (preg_match('/reject_unknown(_client)?_hostname/', $value)) { + continue; + } + $new_options[] = $value; + } + $app->system->exec_safe("postconf -e ?", 'smtpd_client_restrictions = '.implode(", ", $new_options)); + } + + if (($mail_config['reject_unknown'] === 'helo') || ($mail_config['reject_unknown'] === 'client_helo')) { + $options = preg_split("/,\s*/", exec("postconf -h smtpd_helo_restrictions")); + $new_options = array(); + foreach ($options as $key => $value) { + $value = trim($value); + if ($value == '') continue; + if (preg_match('/reject_unknown(_helo)?_hostname/', $value)) { + continue; + } + $new_options[] = $value; + } + + // insert before explicit permit, or append + for ($i = 0; isset($new_options[$i]); $i++) { + if ($new_options[$i] == 'permit') { + array_splice($new_options, $i, 0, array('reject_unknown_helo_hostname')); + break; + } + } + if ($i == count($new_options)) { + $new_options[] = array('reject_unknown_helo_hostname'); + } + + $app->system->exec_safe("postconf -e ?", 'smtpd_helo_restrictions = '.implode(", ", $new_options)); + } else { + $options = preg_split("/,\s*/", exec("postconf -h smtpd_helo_restrictions")); + $new_options = array(); + foreach ($options as $key => $value) { + $value = trim($value); + if ($value == '') continue; + if (preg_match('/reject_unknown(_helo)?_hostname/', $value)) { + continue; + } + $new_options[] = $value; + } + $app->system->exec_safe("postconf -e ?", 'smtpd_helo_restrictions = '.implode(", ", $new_options)); + } + } + + if ($mail_config['stress_adaptive']) { + if ($mail_config['stress_adaptive'] == 'y') { + if (version_compare($postfix_version , '3.0', '>=')) { + $app->system->exec_safe("postconf -e ?", 'in_flow_delay = ${stress?{3}:{1}}s'); + $app->system->exec_safe("postconf -e ?", 'smtp_connect_timeout = ${stress?{10}:{30}}s'); + $app->system->exec_safe("postconf -e ?", 'smtp_helo_timeout = ${stress?{10}:{60}}s'); + $app->system->exec_safe("postconf -e ?", 'smtp_mail_timeout = ${stress?{10}:{60}}s'); + $app->system->exec_safe("postconf -e ?", 'smtpd_error_sleep_time = ${stress?{1}:{2}}s'); + $app->system->exec_safe("postconf -e ?", 'smtpd_hard_error_limit = ${stress?{1}:{10}}'); + $app->system->exec_safe("postconf -e ?", 'smtpd_recipient_overshoot_limit = ${stress?{60}:{600}}'); + $app->system->exec_safe("postconf -e ?", 'smtpd_soft_error_limit = ${stress?{2}:{5}}'); + $app->system->exec_safe("postconf -e ?", 'smtpd_timeout = ${stress?{10}:{60}}s'); + } elseif (version_compare($postfix_version , '2.5', '>=')) { + $app->system->exec_safe("postconf -e ?", 'in_flow_delay = ${stress?3}${stress:1}s'); + $app->system->exec_safe("postconf -e ?", 'smtp_connect_timeout = ${stress?10}${stress:30}s'); + $app->system->exec_safe("postconf -e ?", 'smtp_helo_timeout = ${stress?10}${stress:60}s'); + $app->system->exec_safe("postconf -e ?", 'smtp_mail_timeout = ${stress?10}${stress:60}s'); + $app->system->exec_safe("postconf -e ?", 'smtpd_error_sleep_time = ${stress?1}${stress:2}s'); + $app->system->exec_safe("postconf -e ?", 'smtpd_hard_error_limit = ${stress?1}${stress:10}'); + $app->system->exec_safe("postconf -e ?", 'smtpd_recipient_overshoot_limit = ${stress?60}${stress:600}'); + $app->system->exec_safe("postconf -e ?", 'smtpd_soft_error_limit = ${stress?2}${stress:5}'); + $app->system->exec_safe("postconf -e ?", 'smtpd_timeout = ${stress?10}${stress:60}s'); + } + } else { // mail_config['stress_adaptive'] == 'n' + exec("postconf -X 'in_flow_delay'"); + exec("postconf -X 'smtp_connect_timeout'"); + exec("postconf -X 'smtp_helo_timeout'"); + exec("postconf -X 'smtp_mail_timeout'"); + exec("postconf -X 'smtpd_error_sleep_time'"); + exec("postconf -X 'smtpd_hard_error_limit'"); + exec("postconf -X 'smtpd_recipient_overshoot_limit'"); + exec("postconf -X 'smtpd_soft_error_limit'"); + exec("postconf -X 'smtpd_timeout'"); + } + } if($app->system->is_installed('dovecot')) { $virtual_transport = 'dovecot'; @@ -208,7 +329,7 @@ class postfix_server_plugin { 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")); + array_splice($new_options, $i+1, 0, array("check_recipient_access proxy:mysql:${quoted_postfix_config_dir}/mysql-verify_recipients.cf")); break; } } @@ -220,6 +341,9 @@ class postfix_server_plugin { exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'"); if($mail_config['content_filter'] != $old_ini_data['mail']['content_filter']) { + $rslm = ($mail_config['reject_sender_login_mismatch'] == 'y') ? "reject_sender_login_mismatch," : ""; + $raslm = ($mail_config['reject_sender_login_mismatch'] == 'y') ? "reject_authenticated_sender_login_mismatch," : ""; + if($mail_config['content_filter'] == 'rspamd'){ exec("postconf -X 'receive_override_options'"); exec("postconf -X 'content_filter'"); @@ -229,8 +353,8 @@ class postfix_server_plugin { 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'"); + + exec("postconf -e 'smtpd_sender_restrictions = ${raslm} permit_mynetworks, ${rslm} permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access proxy:mysql:/etc/postfix/mysql-virtual_sender.cf'"); $new_options = array(); $options = preg_split("/,\s*/", exec("postconf -h smtpd_recipient_restrictions")); @@ -266,8 +390,9 @@ 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, 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'"); + + // fixme: should read this from conf templates + exec("postconf -e 'smtpd_sender_restrictions = ${raslm} check_sender_access regexp:/etc/postfix/tag_as_originating.re, permit_mynetworks, ${rslm} permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:/etc/postfix/tag_as_foreign.re, check_sender_access proxy:mysql:/etc/postfix/mysql-virtual_sender.cf'"); } } @@ -290,6 +415,6 @@ class postfix_server_plugin { 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'); + $app->services->restartServiceDelayed('postfix', ($postfix_restart ? 'restart' : 'reload')); } } // end class diff --git a/server/scripts/create_jailkit_chroot.sh b/server/scripts/create_jailkit_chroot.sh index cc39b6e4cf1767d9a93c4db5b657c46c06cce891..dc0f948735abcbb73639094683fbb77c8e16a455 100755 --- a/server/scripts/create_jailkit_chroot.sh +++ b/server/scripts/create_jailkit_chroot.sh @@ -21,7 +21,7 @@ CHROOT_APP_SECTIONS=$2 chown root:root $CHROOT_HOMEDIR ## Initialize the chroot into the specified directory with the specified applications -jk_init -f -k -c /etc/jailkit/jk_init.ini -j $CHROOT_HOMEDIR $CHROOT_APP_SECTIONS +jk_init -f -c /etc/jailkit/jk_init.ini -j $CHROOT_HOMEDIR $CHROOT_APP_SECTIONS ## Create the temp directory if [ ! -d "$CHROOT_HOMEDIR/tmp" ] diff --git a/server/scripts/create_jailkit_programs.sh b/server/scripts/create_jailkit_programs.sh index 11641f2c1ff506db996cb3063b2cefb41f985ff7..62ea1b2dc9a3377b01e3f7fb7ebf5a3e9311687a 100755 --- a/server/scripts/create_jailkit_programs.sh +++ b/server/scripts/create_jailkit_programs.sh @@ -17,4 +17,4 @@ fi CHROOT_HOMEDIR=$1 CHROOT_APP_PROGRAMS=$2 -jk_cp -k $CHROOT_HOMEDIR $CHROOT_APP_PROGRAMS +jk_cp -j $CHROOT_HOMEDIR $CHROOT_APP_PROGRAMS diff --git a/server/scripts/ispconfig_update.php b/server/scripts/ispconfig_update.php index ab9ab1a9b0e060d86f32cba6d205d266ebcff843..e0e75e529f9154d9ab4fac67eecb519bebb2c849 100644 --- a/server/scripts/ispconfig_update.php +++ b/server/scripts/ispconfig_update.php @@ -88,25 +88,18 @@ echo "\n".str_repeat('-', 80)."\n"; echo "\n\n>> Update \n\n"; echo "Please choose the update method. For production systems select 'stable'. \nWARNING: The update from GIT is only for development systems and may break your current setup. Do not use the GIT version on servers that host any live websites!\nNote: Enable maintenance mode and update your master server first. Then update all slave servers, and disable maintenance mode when all servers are updated.\n\n"; -$method = simple_query('Select update method', array('stable', 'git-stable', 'git-master'), 'stable'); +$method = simple_query('Select update method', array('stable', 'nightly', 'git-develop'), 'stable'); if($method == 'stable') { $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'); - exit; - } else { + if(version_compare($new_version, ISPC_APP_VERSION, '<=') && !in_array('--force', $argv, true)) { echo "There are no updates available for ISPConfig ".ISPC_APP_VERSION."\n"; + echo "If you are sure you want to update to stable anyway, please use --force parameter\n"; + echo "DOWNGRADING MAY CAUSE ISSUES!\n"; + exit(1); } -} elseif ($method == 'git-stable') { - passthru('/usr/local/ispconfig/server/scripts/update_from_dev_stable.sh'); - exit; -} else { - passthru('/usr/local/ispconfig/server/scripts/update_from_dev.sh'); - exit; } - - -?> +passthru('/usr/local/ispconfig/server/scripts/update_runner.sh ' . escapeshellarg($method)); +exit; diff --git a/server/scripts/letsencrypt_post_hook.sh b/server/scripts/letsencrypt_post_hook.sh new file mode 100644 index 0000000000000000000000000000000000000000..02653f79a1112d94087c9441326b2714d115f600 --- /dev/null +++ b/server/scripts/letsencrypt_post_hook.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +### BEGIN INIT INFO +# Provides: LETSENCRYPT POST HOOK SCRIPT +# Required-Start: $local_fs $network +# Required-Stop: $local_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: LETSENCRYPT POST HOOK SCRIPT +# Description: To force close http port 80 if it is by default closed, to be used by letsencrypt client standlone command +### END INIT INFO + +## If you need a custom hook file, create a file with the same name in +## /usr/local/ispconfig/server/conf-custom/scripts/ +if [[ -e "/usr/local/ispconfig/server/conf-custom/scripts/letsencrypt_post_hook.sh" ]] ; then + . /usr/local/ispconfig/server/conf-custom/scripts/letsencrypt_post_hook.sh && exit 0 || exit 1; +fi + +# You can add support to other firewall + +# For RHEL, Centos or derivatives +if which yum &> /dev/null 2>&1 ; then + # Check if web server software is installed, start it if any + if [ rpm -q nginx ]; then service nginx start + elif [ rpm -q httpd ]; then service httpd start + # If using firewalld + elif [ rpm -q firewalld ] && [ `firewall-cmd --state` = running ]; then + firewall-cmd --zone=public --permanent --remove-service=http + firewall-cmd --reload + # If using UFW + else; if [ rpm -q ufw ]; then ufw --force enable && ufw deny http; fi + fi +# For Debian, Ubuntu or derivatives +elif apt-get -v >/dev/null 2>&1 ; then + # Check if web server software is installed, stop it if any + if [ $(dpkg-query -W -f='${Status}' nginx 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service nginx start + elif [ $(dpkg-query -W -f='${Status}' apache2 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service apache2 start + # If using UFW + else; if [ $(dpkg-query -W -f='${Status}' ufw 2>/dev/null | grep -c "ok installed") -eq 1 ]; then ufw --force enable && ufw deny http; fi + fi +# Try iptables as a final attempt +else + iptables -D INPUT -p tcp --dport 80 -j ACCEPT + service iptables save +fi \ No newline at end of file diff --git a/server/scripts/letsencrypt_pre_hook.sh b/server/scripts/letsencrypt_pre_hook.sh new file mode 100644 index 0000000000000000000000000000000000000000..56f246e8037d4f456b691d87a378be4dd22ebaac --- /dev/null +++ b/server/scripts/letsencrypt_pre_hook.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +### BEGIN INIT INFO +# Provides: LETSENCRYPT PRE HOOK SCRIPT +# Required-Start: $local_fs $network +# Required-Stop: $local_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: LETSENCRYPT PRE HOOK SCRIPT +# Description: To force open http port 80 to be used by letsencrypt client standlone command +### END INIT INFO + +## If you need a custom hook file, create a file with the same name in +## /usr/local/ispconfig/server/conf-custom/scripts/ +if [[ -e "/usr/local/ispconfig/server/conf-custom/scripts/letsencrypt_pre_hook.sh" ]] ; then + . /usr/local/ispconfig/server/conf-custom/scripts/letsencrypt_pre_hook.sh && exit 0 || exit 1 ; +fi + +# You can add support to other firewall + +# For RHEL, Centos or derivatives +if which yum &> /dev/null 2>&1 ; then + # Check if web server software is installed, stop it if any + if [ rpm -q nginx ]; then service nginx stop; fi + if [ rpm -q httpd ]; then service httpd stop; fi + # If using firewalld + if [ rpm -q firewalld ] && [ `firewall-cmd --state` = running ]; then + firewall-cmd --zone=public --permanent --add-service=http + firewall-cmd --reload + fi + # If using UFW + if [ rpm -q ufw ]; then ufw --force enable && ufw allow http; fi + +# For Debian, Ubuntu or derivatives +elif apt-get -v >/dev/null 2>&1 ; then + # Check if web server software is installed, stop it if any + if [ $(dpkg-query -W -f='${Status}' nginx 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service nginx stop; fi + if [ $(dpkg-query -W -f='${Status}' apache2 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service apache2 stop; fi + # If using UFW + if [ $(dpkg-query -W -f='${Status}' ufw 2>/dev/null | grep -c "ok installed") -eq 1 ]; then ufw --force enable && ufw allow http; fi + +# Try iptables as a final attempt +else + iptables -I INPUT -p tcp --dport 80 -j ACCEPT + service iptables save +fi diff --git a/server/scripts/letsencrypt_renew_hook.sh b/server/scripts/letsencrypt_renew_hook.sh new file mode 100644 index 0000000000000000000000000000000000000000..0a71f30d01d0e14ea7f8e065bbcc11c1608d576b --- /dev/null +++ b/server/scripts/letsencrypt_renew_hook.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +### BEGIN INIT INFO +# Provides: LETSENCRYPT RENEW HOOK SCRIPT +# Required-Start: $local_fs $network +# Required-Stop: $local_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: LETSENCRYPT RENEW HOOK SCRIPT +# Description: Taken from LE4ISPC code. To be used to update ispserver.pem automatically after ISPConfig LE SSL certs are renewed and to reload / restart important ISPConfig server services +### END INIT INFO + +## If you need a custom hook file, create a file with the same name in +## /usr/local/ispconfig/server/conf-custom/scripts/ +if [[ -e "/usr/local/ispconfig/server/conf-custom/scripts/letsencrypt_renew_hook.sh" ]] ; then + . /usr/local/ispconfig/server/conf-custom/scripts/letsencrypt_renew_hook.sh && exit 0 || exit 1; +fi + +lelive=/etc/letsencrypt/live/$(hostname -f); if [ -d "$lelive" ]; then + cd /usr/local/ispconfig/interface/ssl; ibak=ispserver.*.bak; ipem=ispserver.pem; icrt=ispserver.crt; ikey=ispserver.key + if ls $ibak 1> /dev/null 2>&1; then rm $ibak; fi + if [ -e "$ipem" ]; then mv $ipem $ipem-$(date +"%y%m%d%H%M%S").bak; cat $ikey $icrt > $ipem; chmod 600 $ipem; fi + pureftpdpem=/etc/ssl/private/pure-ftpd.pem; if [ -e "$pureftpdpem" ]; then chmod 600 $pureftpdpem; fi + # For Red Hat, Centos or derivatives + if which yum &> /dev/null 2>&1 ; then + if [ rpm -q pure-ftpd ]; then service pure-ftpd restart; fi + if [ rpm -q monit ]; then service monit restart; fi + if [ rpm -q postfix ]; then service postfix restart; fi + if [ rpm -q dovecot ]; then service dovecot restart; fi + if [ rpm -q mysql-server ]; then service mysqld restart; fi + if [ rpm -q mariadb-server ]; then service mariadb restart; fi + if [ rpm -q MariaDB-server ]; then service mysql restart; fi + if [ rpm -q nginx ]; then service nginx restart; fi + if [ rpm -q httpd ]; then service httpd restart; fi + # For Debian, Ubuntu or derivatives + elif apt-get -v >/dev/null 2>&1 ; then + if [ $(dpkg-query -W -f='${Status}' pure-ftpd-mysql 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service pure-ftpd-mysql restart; fi + if [ $(dpkg-query -W -f='${Status}' monit 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service monit restart; fi + if [ $(dpkg-query -W -f='${Status}' postfix 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service postfix restart; fi + if [ $(dpkg-query -W -f='${Status}' dovecot-imapd 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service dovecot restart; fi + if [ $(dpkg-query -W -f='${Status}' mysql 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service mysql restart; fi + if [ $(dpkg-query -W -f='${Status}' mariadb 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service mysql restart; fi + if [ $(dpkg-query -W -f='${Status}' nginx 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service nginx restart; fi + if [ $(dpkg-query -W -f='${Status}' apache2 2>/dev/null | grep -c "ok installed") -eq 1 ]; then service apache2 restart; fi + else + fi +else echo `/bin/date` "Your Lets Encrypt SSL certs path for your ISPConfig server FQDN is missing.$line" >> /var/log/ispconfig/ispconfig.log; fi \ No newline at end of file diff --git a/server/scripts/update_from_dev.sh b/server/scripts/update_from_dev.sh index 0be65986d68b56fcf97e536447be8676f2ab7c24..430a1b5c7f7cab797648a182c090041372e8e352 100755 --- a/server/scripts/update_from_dev.sh +++ b/server/scripts/update_from_dev.sh @@ -1,29 +1,5 @@ #!/bin/bash -{ - umask 0077 \ - && tmpdir=`mktemp -dt "$(basename $0).XXXXXXXXXX"` \ - && test -d "${tmpdir}" \ - && cd "${tmpdir}" -} || { - echo 'mktemp failed' - exit 1 -} +echo "This script is no longer used. Please use ispconfig_update.sh instead." ; -wget -O ispconfig3-dev.tar.gz "https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=master" -tar xzf ispconfig3-dev.tar.gz - -echo -n "Latest git version: " -ls -1d ispconfig3-master* -cd ispconfig3-master*/install - -php -q \ - -d disable_classes= \ - -d disable_functions= \ - -d open_basedir= \ - update.php - -cd /tmp -rm -rf "${tmpdir}" - -exit 0 +exit 1; diff --git a/server/scripts/update_from_dev_stable.sh b/server/scripts/update_from_dev_stable.sh index 693d76fa3b278037fc1bd6a4a18ab4fcbd485bb4..430a1b5c7f7cab797648a182c090041372e8e352 100644 --- a/server/scripts/update_from_dev_stable.sh +++ b/server/scripts/update_from_dev_stable.sh @@ -1,29 +1,5 @@ #!/bin/bash -{ - umask 0077 \ - && tmpdir=`mktemp -dt "$(basename $0).XXXXXXXXXX"` \ - && test -d "${tmpdir}" \ - && cd "${tmpdir}" -} || { - echo 'mktemp failed' - exit 1 -} +echo "This script is no longer used. Please use ispconfig_update.sh instead." ; -wget -O ispconfig3-dev.tar.gz "https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.2" -tar xzf ispconfig3-dev.tar.gz - -echo -n "Latest git version: " -ls -1d ispconfig3-stable* -cd ispconfig3-stable*/install - -php -q \ - -d disable_classes= \ - -d disable_functions= \ - -d open_basedir= \ - update.php - -cd /tmp -rm -rf "${tmpdir}" - -exit 0 +exit 1; diff --git a/server/scripts/update_stable.sh b/server/scripts/update_stable.sh index 854731077e764ff10a4c14e83d75793edc032847..430a1b5c7f7cab797648a182c090041372e8e352 100644 --- a/server/scripts/update_stable.sh +++ b/server/scripts/update_stable.sh @@ -1,54 +1,5 @@ #!/bin/bash -_UPD=1 +echo "This script is no longer used. Please use ispconfig_update.sh instead." ; -# padding handles script being overwritten during updates -# see https://git.ispconfig.org/ispconfig/ispconfig3/issues/4227 - -################################################## -################################################## -################################################## -################################################## -################################################## -################################################## -################################################## -################################################## -################################################## -################################################## -################################################## -################################################## - -{ -if [ -n "${_UPD}" ] -then - { - umask 0077 \ - && tmpdir=`mktemp -dt "$(basename $0).XXXXXXXXXX"` \ - && test -d "${tmpdir}" \ - && cd "${tmpdir}" - } || { - echo 'mktemp failed' - exit 1 - } - - wget https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz - if [ -f ISPConfig-3-stable.tar.gz ] - then - tar xvfz ISPConfig-3-stable.tar.gz - cd ispconfig3_install/install/ - php -q \ - -d disable_classes= \ - -d disable_functions= \ - -d open_basedir= \ - update.php - cd /tmp - rm -rf "${tmpdir}" - else - echo "Unable to download the update." - exit 1 - fi - -fi - -exit 0 -} +exit 1;