diff options
author | Aleksander Machniak <alec@alec.pl> | 2013-09-09 20:25:52 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2013-09-09 20:25:52 +0200 |
commit | 96f59c6150916fe67723c64f325d9de99fed59fa (patch) | |
tree | 274783c39e0b06ff4fd0627790db6c4b9346bcf5 | |
parent | ad003c889b27d8bb52c97cf1a087da64f67d4924 (diff) |
Add option force specified domain in user login - username_domain_forced (#1489264)
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | config/defaults.inc.php | 4 | ||||
-rw-r--r-- | program/include/rcmail.php | 25 |
3 files changed, 21 insertions, 9 deletions
@@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Add option force specified domain in user login - username_domain_forced (#1489264) - Fix issue where From address was removed from Cc and Bcc fields when editing a draft (#1489319) - Add option to import Vcards with group assignments - Save groups membership in Vcard export (#1488509) diff --git a/config/defaults.inc.php b/config/defaults.inc.php index bdcbbd333..bf7c4df2a 100644 --- a/config/defaults.inc.php +++ b/config/defaults.inc.php @@ -346,6 +346,10 @@ $config['des_key'] = 'rcmail-!24ByteDESkey*Str'; // For example %n = mail.domain.tld, %t = domain.tld $config['username_domain'] = ''; +// Force domain configured in username_domain to be used for login. +// Any domain in username will be replaced by username_domain. +$config['username_domain_forced'] = false; + // This domain will be used to form e-mail addresses of new users // Specify an array with 'host' => 'domain' values to support multiple hosts // Supported replacement variables: diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 02287d312..0483f0e18 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -481,15 +481,22 @@ class rcmail extends rcube $port = $config['default_port']; } - /* Modify username with domain if required - Inspired by Marco <P0L0_notspam_binware.org> - */ - // Check if we need to add domain - if (!empty($config['username_domain']) && strpos($username, '@') === false) { - if (is_array($config['username_domain']) && isset($config['username_domain'][$host])) - $username .= '@'.rcube_utils::parse_host($config['username_domain'][$host], $host); - else if (is_string($config['username_domain'])) - $username .= '@'.rcube_utils::parse_host($config['username_domain'], $host); + // Check if we need to add/force domain to username + if (!empty($config['username_domain'])) { + $domain = is_array($config['username_domain']) ? $config['username_domain'][$host] : $config['username_domain']; + + if ($domain = rcube_utils::parse_host((string)$domain, $host)) { + $pos = strpos($username, '@'); + + // force configured domains + if (!empty($config['username_domain_forced']) && $pos !== false) { + $username = substr($username, 0, $pos) . '@' . $domain; + } + // just add domain if not specified + else if ($pos === false) { + $username .= '@' . $domain; + } + } } if (!isset($config['login_lc'])) { |