mirror of
https://github.com/roundcube/roundcubemail.git
synced 2025-12-27 23:45:58 +00:00
Support opensmtpd format in virtuser_file (#9900)
This commit is contained in:
parent
6390ad1466
commit
655c1521d0
@ -17,4 +17,38 @@ class VirtuserFileTest extends TestCase
|
||||
$this->assertInstanceOf('virtuser_file', $plugin);
|
||||
$this->assertInstanceOf('rcube_plugin', $plugin);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test email lookup
|
||||
*/
|
||||
public function test_virtuals()
|
||||
{
|
||||
$rcube = \rcube::get_instance();
|
||||
$rcube->config->set('virtuser_file', realpath(__DIR__ . '/src/virtuals'));
|
||||
$plugin = new \virtuser_file($rcube->plugins);
|
||||
$plugin->init();
|
||||
|
||||
$email = $plugin->user2email(['user' => 'alias-2']);
|
||||
$user = $plugin->email2user(['email' => 'email2@domain.com']);
|
||||
|
||||
$this->assertSame('email2@domain.com', $email['email'][0]);
|
||||
$this->assertSame('alias-2', $user['user']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test opensmtpd format
|
||||
*/
|
||||
public function test_opensmtpd()
|
||||
{
|
||||
$rcube = \rcube::get_instance();
|
||||
$rcube->config->set('virtuser_file', realpath(__DIR__ . '/src/opensmtpd'));
|
||||
$plugin = new \virtuser_file($rcube->plugins);
|
||||
$plugin->init();
|
||||
|
||||
$email = $plugin->user2email(['user' => 'alias-2']);
|
||||
$user = $plugin->email2user(['email' => 'email2@domain.com']);
|
||||
|
||||
$this->assertSame('email2@domain.com', $email['email'][0]);
|
||||
$this->assertSame('alias-2', $user['user']);
|
||||
}
|
||||
}
|
||||
|
||||
3
plugins/virtuser_file/tests/src/opensmtpd
Normal file
3
plugins/virtuser_file/tests/src/opensmtpd
Normal file
@ -0,0 +1,3 @@
|
||||
email3@domain.com: alias-1
|
||||
email2@domain.com: alias-2
|
||||
email3@domain.com: alias-3
|
||||
3
plugins/virtuser_file/tests/src/virtuals
Normal file
3
plugins/virtuser_file/tests/src/virtuals
Normal file
@ -0,0 +1,3 @@
|
||||
email1@domain.com alias-1
|
||||
email2@domain.com alias-2
|
||||
email3@domain.com alias-3
|
||||
@ -6,7 +6,7 @@
|
||||
* Add it to the plugins list in config.inc.php and set
|
||||
* path to a virtuser table file to resolve user names and e-mail
|
||||
* addresses
|
||||
* $rcmail['virtuser_file'] = '';
|
||||
* $config['virtuser_file'] = '';
|
||||
*
|
||||
* @license GNU GPLv3+
|
||||
* @author Aleksander Machniak
|
||||
@ -43,7 +43,9 @@ class virtuser_file extends rcube_plugin
|
||||
$arr = preg_split('/\s+/', $r[$i]);
|
||||
|
||||
if (count($arr) > 0 && strpos($arr[0], '@')) {
|
||||
$result[] = rcube_utils::idn_to_ascii(trim(str_replace('\@', '@', $arr[0])));
|
||||
$email = rcube_utils::idn_to_ascii(trim(str_replace('\@', '@', $arr[0])));
|
||||
// support opensmtpd file format #9898
|
||||
$result[] = rtrim($email, ':');
|
||||
|
||||
if (!empty($p['first'])) {
|
||||
$p['email'] = $result[0];
|
||||
@ -62,7 +64,7 @@ class virtuser_file extends rcube_plugin
|
||||
*/
|
||||
public function email2user($p)
|
||||
{
|
||||
$r = $this->findinvirtual('/^' . preg_quote($p['email'], '/') . '\s/');
|
||||
$r = $this->findinvirtual('/^' . preg_quote($p['email'], '/') . ':?\s/');
|
||||
|
||||
for ($i = 0; $i < count($r); $i++) {
|
||||
$arr = preg_split('/\s+/', trim($r[$i]));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user