[commits] [Wiki] created: ImpH4Realm

Wiki Guest wikiguest at horde.org
Sat Aug 18 14:48:59 UTC 2012


guest [76.115.122.115]  Sat, 18 Aug 2012 14:48:59 +0000

Created page: http://wiki.horde.org/ImpH4Realm

In Horde3 with IMP4, the IMAP server configuration in  
imp/config/servers.php had a 'realm' parameter:

<code>
$servers['imap'] = array(
     'name' => 'IMAP Server',
     'server' => 'imap.example.com',
     'hordeauth' => false,
     'protocol' => 'imap/notls',
     'port' => 143,
     'maildomain' => 'example.com',
     'smtphost' => 'smtp.example.com',
     'smtpport' => 25,
     'realm' => 'example.com',
     'preferred' => '',
);
</code>

The purpose of the realm parameter is to append a realm/domain to the  
Horde username after login.  For example, a user that logged into the  
server 'imap' from above with a username 'john' would have their Horde  
username set to 'john at example.com'.  This is useful if you are  
supporting multiple IMAP servers with a single Horde installation and  
the usernames in each IMAP server may overlap ('john' at server1 and  
'john' at server2 are not the same person).

Horde4 with IMP5 does not have a native 'realm' parameter in  
imp/config/backends.local.php, but you can replicate the same  
functionality by modifying the horde 'authusername' hook.  In  
horde/config/hooks.php:

<code>
      public function authusername($userId, $toHorde)
      {
         if ($toHorde) {
                 // Get the IMAP connection object
                 $imap =  
$GLOBALS['injector']->getInstance('IMP_Factory_Imap')->create();
                 // Get the IMAP hostname
                 $hostspec = $imap->ob->getParam('hostspec');
                 // Load the backends.local.php server configs
                 $servers = IMP_Imap::loadServerConfig();
                 // Look through each server for a hostname match
                 foreach ($servers as $server) {
                         if ($server['hostspec'] == $hostspec) {
                                 // Append the 'realm' parameter
                                 $userId = $userId . '@' . $server['realm'];
                                 break;
                         }
                 }
                 return $userId;
         } else {
                 // strip the domain off
                 $userId = substr($userId, 0, strpos($userId, '@'));
                 return $userId;
         }
     }
</code>

Here is an example IMAP server config from imp/config/backends.local.php:

<code>
$servers['imap'] = array(
     // ENABLED by default
     'disabled' => false,
     'name' => 'IMAP Server',
     'hostspec' => 'localhost',
     'hordeauth' => false,
     'protocol' => 'imap',
     'port' => 143,
     'secure' => 'tls',
     'maildomain' => 'example.com',
     'cache' => false,
     'realm' => 'example.com',
);
</code>

Note the non-standard 'realm' parameter which is used by the  
authusername hook later.



More information about the commits mailing list