Patch for login form with users in syntax username at domain

Richard Green richard at burninghorizons.net
Thu May 11 18:12:59 CEST 2006


This has been done already, but I guess depending on SourceForge may not be accessible yet:

http://sourceforge.net/tracker/index.php?func=detail&aid=1437854&group_id=139281&atid=742850

--
Richard Green


On Thu, 11 May 2006 18:17:07 +0300, "Todor Dragnev" <todor.dragnev at gmail.com> wrote:
> Hello list,
> 
> Here is a fast solution to avoid writing of "@domain" after username when
> your server hosted virtual domains.
> 
> With this patch is enought to write only "john" in login form instead of "
> john at virtualdomain.test"
> If $rcmail_config['add_domain2username']  is true RoundCube will strip
> domain name from web addresses like: http://webmail.virtualdomain.test/ or
> http://www.virtualdomain.test/RoundCube/ and add it  to username.
> 
> Changes in config/main.inc.php:
> ===================================================================
> // If this is true will use hostname to get domain name
> $rcmail_config['add_domain2username'] = true;
> 
> Changes in program/include/main.inc
> 
> --- start diff ---
> Index: program/include/main.inc
> ===================================================================
> RCS file: /cvsroot/roundcubemail/roundcubemail/program/include/main.inc,v
> retrieving revision 1.48
> diff -u -p -r1.48 main.inc
> --- program/include/main.inc    23 Mar 2006 22:32:32 -0000      1.48
> +++ program/include/main.inc    11 May 2006 14:51:57 -0000
> @@ -366,6 +366,19 @@ function rcmail_set_locale($lang)
>    $OUTPUT->set_charset(rcube_language_prop($lang, 'charset'));
>    }
> 
> +function  parse_domain($url) {
> +  $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';
> +  // Followed by one or max 63 domain characters (dot separated).
> +  // Must be followed by one set consisting a period of two
> +  $regex = '^(' . $domain . '\.)+((' . $domain . '{1,63}\.)'.
> +    $domain . '{2,63}'.
> +    ')$';
> +  if (ereg( $regex, strtolower($url), $regs)) {
> +    return $regs[4];
> +  }
> +  return false;
> +}
> +
> 
>  // perfom login to the IMAP server and to the webmail service
>  function rcmail_login($user, $pass, $host=NULL)
> @@ -376,6 +389,14 @@ function rcmail_login($user, $pass, $hos
>    if (!$host)
>      $host = $CONFIG['default_host'];
> 
> +  // parse username for syntax like username at domain
> +  $have_at = explode("@", $user);
> +  if ($CONFIG['add_domain2username'] && sizeof($have_at) == 1) {
> +    if ($domain = parse_domain($_SERVER[HTTP_HOST])) {
> +      $user = $user . '@' . $domain; // add domain from hostname
> +    }
> +  }
> +
>    // parse $host URL
>    $a_host = parse_url($host);
>    if ($a_host['host'])
> @@ -1586,13 +1607,18 @@ function rcmail_login_form($attrib)
>  EOF;
> 
>    $OUTPUT->add_script("$JS_OBJECT_NAME.gui_object('loginform',
> '$form_name');");
> -
> +  $domain = strtoupper (parse_domain($_SERVER[HTTP_HOST])) ;
>    $out = <<<EOF
>  $form_start
>  $SESS_HIDDEN_FIELD
>  $fields[action]
>  <table><tr>
> 
> +<td class="title">Domain</td>
> +<td class="title">$domain</td>
> +
> +</tr><tr>
> +
>  <td class="title">$labels[user]</td>
>  <td>$fields[user]</td>
> 
> --- end of diff
> 
> 
>





More information about the Dev mailing list