From 61b56b28aaecb50479d9cacad8884c56a4a432ad Mon Sep 17 00:00:00 2001 From: Florian Schaal Date: Mon, 11 Jan 2021 17:47:20 +0100 Subject: [PATCH 1/7] allow custom rspamd url (Implements #6010) --- install/tpl/server.ini.master | 1 + interface/web/admin/form/server_config.tform.php | 13 +++++++++++++ interface/web/admin/server_config_edit.php | 8 ++++++-- .../web/admin/templates/server_config_mail_edit.htm | 8 +++++++- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master index 175617605a..028fb68a6b 100644 --- a/install/tpl/server.ini.master +++ b/install/tpl/server.ini.master @@ -59,6 +59,7 @@ overquota_notify_client=y overquota_notify_freq=7 overquota_notify_onok=n sendmail_path=/usr/sbin/sendmail +rspamd_url= [getmail] getmail_config_dir=/etc/getmail diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 7d1e1526f5..1a986d98dd 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -717,6 +717,19 @@ $form["tabs"]['mail'] = array( 'default' => 'n', 'value' => array(0 => 'n', 1 => 'y') ), + 'rspamd_url' => array( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'filters' => array( + 0 => array( 'event' => 'SAVE', 'type' => 'IDNTOASCII'), + 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8'), + 2 => array( 'event' => 'SAVE', 'type' => 'TOLOWER') + ), + 'value' => '', + 'width' => '40', + 'maxlength' => '255' + ), //################################# // END Datatable fields //################################# diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index 339ac2f2f5..9a54c9fb16 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -90,8 +90,12 @@ class page_action extends tform_actions { $this->dataRecord = $app->getconf->get_server_config($server_id, $section); if($section == 'mail'){ - $server_config = $app->getconf->get_server_config($server_id, 'server'); - $rspamd_url = 'https://'.$server_config['hostname'].':8081/rspamd/'; + if(trim($this->dataRecord['rspamd_url'] == '')) { + $server_config = $app->getconf->get_server_config($server_id, 'server'); + $rspamd_url = 'https://'.$server_config['hostname'].':8081/rspamd/'; + } else { + $rspamd_url = $this->dataRecord['rspamd_url']; + } } } diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm index c26cff24ba..76ed5ef4fb 100644 --- a/interface/web/admin/templates/server_config_mail_edit.htm +++ b/interface/web/admin/templates/server_config_mail_edit.htm @@ -49,7 +49,13 @@
- +
+ + + + +
+
-- GitLab From 8d65452b4f38e96e114809aba5a3c604965d0a6a Mon Sep 17 00:00:00 2001 From: Florian Schaal Date: Tue, 12 Jan 2021 06:47:53 +0100 Subject: [PATCH 2/7] remove duplicate php-version-checks from installer / updater --- install/install.php | 1 - install/lib/installer_base.lib.php | 7 ------- install/update.php | 1 - 3 files changed, 9 deletions(-) diff --git a/install/install.php b/install/install.php index 0df226ee10..7bc3836223 100644 --- a/install/install.php +++ b/install/install.php @@ -146,7 +146,6 @@ include_once 'dist/conf/'.$dist['confid'].'.conf.php'; //** Installer Interface //**************************************************************************************************** $inst = new installer(); -if (!$inst->get_php_version()) die('ISPConfig requires PHP '.$inst->min_php."\n"); $retval=shell_exec("which which"); if (empty($retval)) die ("ISPConfig requires which \n"); diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 8a7fb413ec..94042c6931 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -35,7 +35,6 @@ class installer_base { var $db; public $install_ispconfig_interface = true; public $is_update = false; // true if it is an update, falsi if it is a new install - public $min_php = '5.4'; // minimal php-version for update / install protected $mailman_group = 'list'; @@ -151,12 +150,6 @@ class installer_base { } } - //** Detect PHP-Version - public function get_php_version() { - if(version_compare(PHP_VERSION, $this->min_php, '<')) return false; - else return true; - } - public function crypt_password($cleartext_password, $charset = 'UTF-8') { if($charset != 'UTF-8') { $cleartext_password = mb_convert_encoding($cleartext_password, $charset, 'UTF-8'); diff --git a/install/update.php b/install/update.php index 4043647d8e..46031f77bb 100644 --- a/install/update.php +++ b/install/update.php @@ -185,7 +185,6 @@ $conf['server_id'] = intval($conf_old["server_id"]); $conf['ispconfig_log_priority'] = $conf_old["log_priority"]; $inst = new installer(); -if (!$inst->get_php_version()) die('ISPConfig requieres PHP '.$inst->min_php."\n"); $inst->is_update = true; $inst->check_prerequisites(); -- GitLab From 10e8ecc2bf807db371cbb743f817947afbd1f18c Mon Sep 17 00:00:00 2001 From: Florian Schaal Date: Mon, 18 Jan 2021 08:28:22 +0100 Subject: [PATCH 3/7] fix typo from last commit --- install/lib/installer_base.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index d0e2363983..5a73582422 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -34,7 +34,7 @@ class installer_base { var $language = 'en'; var $db; public $install_ispconfig_interface = true; - public $is_update = false; // true if it is an update, falsi if it is a new install + public $is_update = false; // true if it is an update, false if it is a new install protected $mailman_group = 'list'; @@ -650,7 +650,7 @@ class installer_base { $query = "GRANT SELECT, INSERT ON ?? TO ?@?"; if ($verbose){ echo $query ."\n"; - + } if(!$this->dbmaster->query($query, $value['db'] . '.sys_log', $value['user'], $host)) { $this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage); } -- GitLab From 9503aeff4608570c6e4d7a7dd09d55de54a68ad9 Mon Sep 17 00:00:00 2001 From: Florian Schaal Date: Mon, 18 Jan 2021 08:39:50 +0100 Subject: [PATCH 4/7] use idn_decode for mailuser and login fails for mail-users with IDN domains (Fixes #6021) --- interface/web/login/index.php | 4 ++-- interface/web/mailuser/index.php | 6 ++++-- interface/web/mailuser/mail_user_cc_edit.php | 2 +- interface/web/mailuser/mail_user_password_edit.php | 2 +- interface/web/mailuser/mail_user_spamfilter_edit.php | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/interface/web/login/index.php b/interface/web/login/index.php index d820e917c9..58456dea0e 100644 --- a/interface/web/login/index.php +++ b/interface/web/login/index.php @@ -58,7 +58,7 @@ if($app->is_under_maintenance()) { if(count($_POST) > 0) { //** Check variables - if(!preg_match("/^[\w\.\-\_\@]{1,128}$/", $_POST['username'])) $error = $app->lng('user_regex_error'); + if(!preg_match("/^[\w\.\-\_\@]{1,128}$/", $app->functions->idn_encode($_POST['username']))) $error = $app->lng('user_regex_error'); if(!preg_match("/^.{1,256}$/i", $_POST['password'])) $error = $app->lng('pw_error_length'); //** importing variables @@ -152,7 +152,7 @@ if(count($_POST) > 0) { if(stristr($username, '@')) { //* mailuser login $sql = "SELECT * FROM mail_user WHERE login = ? or email = ?"; - $mailuser = $app->db->queryOneRecord($sql, $username, $username); + $mailuser = $app->db->queryOneRecord($sql, $username, $app->functions->idn_encode($username)); $user = false; if($mailuser) { $saved_password = stripslashes($mailuser['password']); diff --git a/interface/web/mailuser/index.php b/interface/web/mailuser/index.php index c9541df2bd..77f5c207aa 100644 --- a/interface/web/mailuser/index.php +++ b/interface/web/mailuser/index.php @@ -5,7 +5,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('mailuser'); -$app->uses('tpl'); +$app->uses('tpl, functions'); $app->tpl->newTemplate('form.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/index.htm'); @@ -28,8 +28,10 @@ if($rec['quota'] == 0) { if($rec['cc'] == '') $rec['cc'] = $wb['none_txt']; -$app->tpl->setVar($rec); +$rec['email'] = $app->functions->idn_decode($rec['email']); +$rec['login'] = $app->functions->idn_decode($rec['login']); +$app->tpl->setVar($rec); $sql2 = "SELECT * FROM server WHERE server_id = ?"; $rec2 = $app->db->queryOneRecord($sql2, $rec['server_id']); diff --git a/interface/web/mailuser/mail_user_cc_edit.php b/interface/web/mailuser/mail_user_cc_edit.php index 778be781ec..9a63b2d953 100644 --- a/interface/web/mailuser/mail_user_cc_edit.php +++ b/interface/web/mailuser/mail_user_cc_edit.php @@ -75,7 +75,7 @@ class page_action extends tform_actions { global $app, $conf; $rec = $app->tform->getDataRecord($this->id); - $app->tpl->setVar("email", $rec['email'], true); + $app->tpl->setVar("email", $app->functions->idn_decode($rec['email']), true); parent::onShowEnd(); } diff --git a/interface/web/mailuser/mail_user_password_edit.php b/interface/web/mailuser/mail_user_password_edit.php index 5c5706177a..10a8e75e7e 100644 --- a/interface/web/mailuser/mail_user_password_edit.php +++ b/interface/web/mailuser/mail_user_password_edit.php @@ -63,7 +63,7 @@ class page_action extends tform_actions { global $app, $conf; $rec = $app->tform->getDataRecord($_SESSION['s']['user']['mailuser_id']); - $app->tpl->setVar("email", $rec['email'], true); + $app->tpl->setVar("email", $app->functions->idn_decode($rec['email']), true); parent::onShowEnd(); } diff --git a/interface/web/mailuser/mail_user_spamfilter_edit.php b/interface/web/mailuser/mail_user_spamfilter_edit.php index 75649b5a70..8d1e70ba20 100644 --- a/interface/web/mailuser/mail_user_spamfilter_edit.php +++ b/interface/web/mailuser/mail_user_spamfilter_edit.php @@ -112,7 +112,7 @@ class page_action extends tform_actions { global $app, $conf; $rec = $app->tform->getDataRecord($this->id); - $app->tpl->setVar("email", $rec['email'], true); + $app->tpl->setVar("email", $app->functions->idn_decode($rec['email']), true); // Get the spamfilter policys for the user $tmp_user = $app->db->queryOneRecord("SELECT policy_id FROM spamfilter_users WHERE email = ?", $rec['email']); -- GitLab From 7a3d491c09d4e6a368a280d6b5f8e74b22cdb87d Mon Sep 17 00:00:00 2001 From: Florian Schaal Date: Tue, 19 Jan 2021 07:43:15 +0100 Subject: [PATCH 5/7] wrong server-id in admin/server_config_edit.php (Fixes #6022) --- interface/web/admin/server_config_edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php index 9a54c9fb16..1fd1921b84 100644 --- a/interface/web/admin/server_config_edit.php +++ b/interface/web/admin/server_config_edit.php @@ -57,7 +57,7 @@ class page_action extends tform_actions { // get the config $app->uses('getconf'); - $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); + $web_config = $app->getconf->get_server_config($this->id, 'web'); if($web_config['server_type'] == 'nginx'){ unset($app->tform->formDef["tabs"]["fastcgi"]); -- GitLab From 8f612a9244b344772b27a34f3c0b0e524df3efc4 Mon Sep 17 00:00:00 2001 From: Florian Schaal Date: Sat, 27 Feb 2021 11:33:03 +0100 Subject: [PATCH 6/7] interface/web/mailuser/index.php --- interface/web/mailuser/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/web/mailuser/index.php b/interface/web/mailuser/index.php index 77f5c207aa..a6e2ae2389 100644 --- a/interface/web/mailuser/index.php +++ b/interface/web/mailuser/index.php @@ -5,7 +5,7 @@ require_once '../../lib/app.inc.php'; //* Check permissions for module $app->auth->check_module_permissions('mailuser'); -$app->uses('tpl, functions'); +$app->uses('tpl'); $app->tpl->newTemplate('form.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/index.htm'); -- GitLab From bd66023353ab60a8e1fb14bfafb0d7388756885e Mon Sep 17 00:00:00 2001 From: Florian Schaal Date: Sun, 28 Feb 2021 06:27:27 +0100 Subject: [PATCH 7/7] remoce strtolower from rspamd_url --- interface/web/admin/form/server_config.tform.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php index 13ab70af3a..1818b2ef3b 100644 --- a/interface/web/admin/form/server_config.tform.php +++ b/interface/web/admin/form/server_config.tform.php @@ -723,8 +723,7 @@ $form["tabs"]['mail'] = array( 'default' => '', 'filters' => array( 0 => array( 'event' => 'SAVE', 'type' => 'IDNTOASCII'), - 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8'), - 2 => array( 'event' => 'SAVE', 'type' => 'TOLOWER') + 1 => array( 'event' => 'SHOW', 'type' => 'IDNTOUTF8') ), 'value' => '', 'width' => '40', -- GitLab