[horde] Virtual domain support in H4/IMP5

Patrick Domack patrickdk at patrickdk.com
Fri Apr 15 13:22:42 UTC 2011


Quoting Antoine Heskia <horde at heskia.net>:

> Hi,
>
> In my Horde3/IMP4, I used to have a custom hook function in the
> horde/imp/config/hooks.php to support multidomains that I am hosting.
> The user points its browser to mail.domain.com, the the login window
> displays "@domain.com" at the end of the username field and horde/imp
> provides username at domain.com to the IMAP server
> (qmail/vpopmail/courier-imap).
>
> This function looks like this:
> if (!function_exists('_imp_hook_vinfo')) {
>     function _imp_hook_vinfo($type = 'username')
>     {
>         $vdomain = getenv('HTTP_HOST');
>         $vdomain = preg_replace('|^(web)?mail\.|i', '', $vdomain);
>         $vdomain = preg_replace('|^imp\.|i', '', $vdomain);
>         $vdomain = String::lower($vdomain);
>
>         if ($type == 'username') {
>                 if ($vdomain == '') {
>                         return $_SESSION['imp']['user'];
>                 } else {
>             return (preg_replace('|@.*$|', '',
> $_SESSION['imp']['user']) . '@' . $vdomain);
>           }
>         } elseif ($type == 'vdomain') {
>             return $vdomain;
>         } else {
>             return PEAR::raiseError('invalid type: ' . $type);
>         }
>     }
> }
>
> I did not find such a feature in Horde4/IMP5.
>
> I can not find a proper information in the documentation.
> for "The 'vinfo' hook has been removed.  Use Horde's 'authusername'
> and/or IMP's
> 'preauthenticate' hooks instead."
>
> I have tried to play a bit with the hook public function
> authusername($userId, $toHorde) in horde/config/hooks.php
> but users still need to provide user at domain.com to logon (and they are
> recognized as user at domain.com@domain.com by horde) and the logon
> window does not displays "@domain.com" after the username field.
>
> Regarding
> "All hooks that are specific to IMP have been moved from the
> ``horde/config/hooks.php`` file. Move your existing IMP Hooks from there to
> ``imp/config/hooks.php``."
> this was already in imp/config/hooks.php in Horde3/IMP4. Should I
> copy/paste the code to Horde5/IMP4 ?
>


It seemed pretty easy to me:

     public function preauthenticate($userId, $credentials)
     {
         if (strpos($userId,'@')===false) {
           $vdomain = preg_replace('/^((web)?mail|imp)\./i', '',  
$_SERVER['HTTP_HOST']);
           $userId=Horde_String::lower($userId . '@' . $vdomain);
         } else {
           $userId=Horde_String::lower($userId);
         }

         return array(
           'userId' => $userId
         );
      }




More information about the horde mailing list