diff options
author | alecpl <alec@alec.pl> | 2010-10-04 07:03:00 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2010-10-04 07:03:00 +0000 |
commit | f1adbf17eeaefa0f9977f18de9f085d25368c660 (patch) | |
tree | 1ddde54ed0f8b57f7145c201e4575fbd2ada734a | |
parent | df2188d778cb9bd89ca118c03850ef7f9fc86ce7 (diff) |
- Convert IDN to ASCII before using rcube_user::query()
- Always convert to lower case a username when it's an email address
-rw-r--r-- | program/include/rcmail.php | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 1b11ca3c5..30b79e26a 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -683,6 +683,15 @@ class rcmail if ($virtuser = rcube_user::email2user($username)) $username = $virtuser; + // Here we need IDNA ASCII + // Only rcube_contacts class is using domain names in Unicode + $host = idn_to_ascii($host); + if (strpos($username, '@')) { + // lowercase username if it's an e-mail address (#1484473) + $username = mb_strtolower($username); + $username = idn_to_ascii($username); + } + // user already registered -> overwrite username if ($user = rcube_user::query($username, $host)) $username = $user->data['username']; @@ -690,15 +699,9 @@ class rcmail if (!$this->imap) $this->imap_init(); - // Here we need IDNA ASCII - // Only rcube_contacts class is using domain names in Unicode - $host = idn_to_ascii($host); - if (strpos($username, '@')) - $username = idn_to_ascii($username); - // try IMAP login if (!($imap_login = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl))) { - // lowercase username if it's an e-mail address (#1484473) + // try with lowercase $username_lc = mb_strtolower($username); if ($username_lc != $username && ($imap_login = $this->imap->connect($host, $username_lc, $pass, $imap_port, $imap_ssl))) $username = $username_lc; |