Skip to content
Snippets Groups Projects
Commit c343a151 authored by Demian's avatar Demian
Browse files

Refactored Mail Transport and Domain Validator (#6791)

* Added validation to prevent conflicts between mail domains and mail transports:

    * When adding a new mail domain, the system now checks for existing mail transports with the same domain.
    * When adding a new mail transport (routing), the system verifies that no mail domain with the same domain exists.

* Cleaned up non-functional code in the mail transport validator.
parent c910fa29
No related branches found
No related tags found
2 merge requests!1985Merge develop into postgres branch,!1963Refactored Mail Transport and Domain Validator (#6791)
......@@ -41,6 +41,40 @@ class validate_mail_transport {
}
}
/* Validator function for checking that the 'domain' is not already set as mail_domain */
function validate_isnot_maildomain($field_name, $field_value, $validator) {
global $app, $conf;
if(isset($app->remoting_lib->primary_id)) {
$id = $app->remoting_lib->primary_id;
} else {
$id = $app->tform->primary_id;
}
$sql = "SELECT domain_id, domain FROM mail_domain WHERE domain = ? AND domain_id != ?";
$domain_check = $app->db->queryOneRecord($sql, $field_value, $id);
if($domain_check) return $this->get_error('domain_is_maildomain');
}
/* Validator function for checking that the 'domain' is not already set as mail_transport */
function validate_isnot_mailtransport($field_name, $field_value, $validator) {
global $app, $conf;
if(isset($app->remoting_lib->primary_id)) {
$id = $app->remoting_lib->primary_id;
} else {
$id = $app->tform->primary_id;
}
$sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND transport_id != ?";
$domain_check = $app->db->queryOneRecord($sql, $field_value, $id);
if($domain_check) return $this->get_error('domain_is_transport');
}
/* Validator function for checking the 'domain' of a mail transport */
function validate_domain($field_name, $field_value, $validator) {
global $app, $conf;
......@@ -52,8 +86,8 @@ class validate_mail_transport {
}
// mail_transport.domain (could also be an email address) must be unique per server
$sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND server_id = ? AND transport_id != ?";
$domain_check = $app->db->queryOneRecord($sql, $field_value, $app->tform_actions->dataRecord['server_id'], $id);
$sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND transport_id != ?";
$domain_check = $app->db->queryOneRecord($sql, $field_value, $id);
if($domain_check) return $this->get_error('domain_error_unique');
}
......
......@@ -91,6 +91,12 @@ $form["tabs"]['domain'] = array (
'errmsg'=> 'domain_error_unique'),
2 => array ( 'type' => 'ISDOMAIN',
'errmsg'=> 'domain_error_regex'),
3 => array(
'type' => 'CUSTOM',
'class' => 'validate_mail_transport',
'function' => 'validate_isnot_mailtransport',
'errmsg'=> 'domain_is_transport',
),
),
'default' => '',
'value' => '',
......
......@@ -94,6 +94,12 @@ $form["tabs"]['transport'] = array (
'class' => 'validate_mail_transport',
'function' => 'validate_domain',
'errmsg'=> 'domain_error_unique',
),
1 => array(
'type' => 'CUSTOM',
'class' => 'validate_mail_transport',
'function' => 'validate_isnot_maildomain',
'errmsg' => 'domain_is_maildomain',
)
),
'default' => '',
......
......@@ -24,3 +24,4 @@ $wb['dkim_auto_dns_txt'] = 'Managed zone, dns updated automatically';
$wb['relayhost_txt'] = 'Relayhost';
$wb['relayhost_user_txt'] = 'Relayhost User';
$wb['relayhost_password_txt'] = 'Relayhost Password';
$wb['domain_is_transport'] = 'The Domain is already set as E-Mail Transport.';
......@@ -9,3 +9,4 @@ $wb['active_txt'] = 'Active';
$wb['limit_mailrouting_txt'] = 'The max. number of routes for your account is reached.';
$wb['transport_txt'] = 'Transport';
$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.';
$wb['domain_is_maildomain'] = 'The Domain is already set as a E-Mail Domain.';
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment