RoundCube Webmail Forum  

Go Back   RoundCube Webmail Forum > Third Party Contributions > Plug-Ins

For more information about the ads and why they're here, please see the FAQ
Reply
  #1  
Old 09-15-2006, 11:04 AM
Registered User
 
Join Date: Sep 2006
Posts: 9
Downloads: 0
Uploads: 0
Default Server.inc.php for Server configuration

Hey ya!

Since i worked with Horde/IMP before, i was used to define multiple Server in a seperated file, specifying alsl the server-specific option
in an array.
Looking at RoundCube the server configuration was really drivin me nuts.

So i created a new server-configuration model like

$rcmail_server['IMAP1'] = array(
'name' => 'IMAP1',
'imap_host' => 'host.imap.com',
'imap_port' => '143',
'mail_domain' => 'imap.com',
'smtp_host' => 'smtp.imap.com',
'smtp_port' => '25',
'smtp_user' => '%u',
'smtp_pass' => '%p',
'smtp_auth_type' => 'LOGIN',
'imap_root' => 'mail/'
);

giving u the opportunity to specify all the options in good-readable style for each server in a new config file server.inc.php.

If the community (so u ;-) ) is interested in it, i would code it clear and free off my debug-code and make a diff, too.

So, interested?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2  
Old 09-16-2006, 12:52 AM
Registered User
 
Join Date: Jul 2006
Posts: 36
Downloads: 0
Uploads: 0
Default Re: Server.inc.php for Server configuration

I think it would be great do you have any examples?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3  
Old 09-17-2006, 09:39 PM
Registered User
 
Join Date: Sep 2006
Posts: 9
Downloads: 0
Uploads: 0
Default Re: Server.inc.php for Server configuration

Don`t know what u mean with "example", but here is my patch.
The values used in here can be deleted out of main.inc.php, but i didn`t want to patch your config ;-)

try this:

Code:
diff -u --recursive --new-file roundcubemail-0.1beta2.orig/config/server.inc.php round.new/config/server.inc.php
--- roundcubemail-0.1beta2.orig/config/server.inc.php	1970-01-01 01:00:00.000000000 +0100
+++ round.new/config/server.inc.php	2006-09-15 00:11:19.000000000 +0200
@@ -0,0 +1,48 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | Server configuration file                       |
+ |                                    |
+ | This file is part of the RoundCube Webmail client           |
+ | Copyright (C) 2005, RoundCube Dev. - Switzerland           |
+ | Licensed under the GNU GPL                      |
+ |                                    | 
+ | Multiple Static Server with server.inc.php              |
+ | Implemented by S.B.                          |
+ |                                    |
+ +-----------------------------------------------------------------------+
+
+*/
+
+$rcmail_server = array();
+
+$rcmail_server['IMAP1'] = array(
+	'name' => 'IMAP1',
+	'imap_host' => 'imap1.host.de',
+	'imap_port' => '143',
+	'mail_domain' => 'host.de',
+	'smtp_host' => 'smtp.host.de',
+	'smtp_port' => '25',
+	'smtp_user' => '%u',
+	'smtp_pass' => '%p',
+	'smtp_auth_type' => 'LOGIN',
+	'imap_root' => 'mail/'
+);
+
+$rcmail_server['IMAP2'] = array(
+	'name' => 'IMAP2',
+	'imap_host' => 'imap2.server.de',
+	'imap_port' => '143',
+	'mail_domain' => 'server.de',
+	'smtp_host' => 'smtp.server.de',
+	'smtp_port' => '25',
+	'smtp_user' => '%u',
+	'smtp_pass' => '%p',
+	'smtp_auth_type' => 'LOGIN',
+	'imap_root' => ''
+);
+
+
+// end of config file
+?>
diff -u --recursive --new-file roundcubemail-0.1beta2.orig/index.php round.new/index.php
--- roundcubemail-0.1beta2.orig/index.php	2006-08-06 17:55:11.000000000 +0200
+++ round.new/index.php	2006-09-15 12:36:01.000000000 +0200
@@ -143,7 +143,9 @@
 // try to log in
 if ($_action=='login' && $_task=='mail')
  {
- $host = $_POST['_host'] ? $_POST['_host'] : $CONFIG['default_host'];
+  $srv_alias = $_POST['_host'];
+  $host = $SERVER[$srv_alias]['imap_host'];
+  $_SESSION['alias'] = $srv_alias;
  
  // check if client supports cookies
  if (empty($_COOKIE))
diff -u --recursive --new-file roundcubemail-0.1beta2.orig/program/include/main.inc round.new/program/include/main.inc
--- roundcubemail-0.1beta2.orig/program/include/main.inc	2006-08-06 17:55:11.000000000 +0200
+++ round.new/program/include/main.inc	2006-09-15 12:30:20.000000000 +0200
@@ -34,7 +34,7 @@
 function rcmail_startup($task='mail')
  {
  global $sess_id, $sess_auth, $sess_user_lang;
- global $CONFIG, $INSTALL_PATH, $BROWSER, $OUTPUT, $_SESSION, $IMAP, $DB, $JS_OBJECT_NAME;
+ global $CONFIG, $SERVER, $INSTALL_PATH, $BROWSER, $OUTPUT, $_SESSION, $IMAP, $DB, $JS_OBJECT_NAME;
 
  // check client
  $BROWSER = rcube_browser();
@@ -42,6 +42,10 @@
  // load config file
  include_once('config/main.inc.php');
  $CONFIG = is_array($rcmail_config) ? $rcmail_config : array();
+
+ // load server file
+ include_once('config/server.inc.php');
+ $SERVER = is_array($rcmail_server) ? $rcmail_server : array();
  
  // load host-specific configuration
  rcmail_load_host_config($CONFIG);
@@ -215,11 +219,12 @@
 // this must be done AFTER connecting to the server
 function rcmail_set_imap_prop()
  {
- global $CONFIG, $IMAP;
+ global $CONFIG, $SERVER, $IMAP;
 
  // set root dir from config
- if (!empty($CONFIG['imap_root']))
-  $IMAP->set_rootdir($CONFIG['imap_root']);
+ $srv_alias = $_SESSION['alias'];
+ if (!empty($SERVER[$srv_alias]['imap_root']))
+	$IMAP->set_rootdir($SERVER[$srv_alias]['imap_root']);
 
  if (is_array($CONFIG['default_imap_folders']))
   $IMAP->set_default_mailboxes($CONFIG['default_imap_folders']);
@@ -417,8 +422,10 @@
 // perfom login to the IMAP server and to the webmail service
 function rcmail_login($user, $pass, $host=NULL)
  {
- global $CONFIG, $IMAP, $DB, $sess_user_lang;
+ global $CONFIG, $SERVER, $IMAP, $DB, $sess_user_lang;
  $user_id = NULL;
+
+ $srv_alias = $_SESSION['alias'];
  
  if (!$host)
   $host = $CONFIG['default_host'];
@@ -429,10 +436,10 @@
   {
   $host = $a_host['host'];
   $imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE;
-  $imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : $CONFIG['default_port']);
+  $imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : $SERVER['srv_alias']['imap_port']);
   }
  else
-  $imap_port = $CONFIG['default_port'];
+  $imap_port = $SERVER['srv_alias']['imap_port'];
 
 
  /* Modify username with domain if required 
@@ -525,7 +532,7 @@
 // create new entry in users and identities table
 function rcmail_create_user($user, $host)
  {
- global $DB, $CONFIG, $IMAP;
+ global $DB, $CONFIG, $SERVER, $IMAP;
 
  $user_email = '';
 
@@ -543,14 +550,15 @@
 
  if ($user_id = $DB->insert_id(get_sequence_name('users')))
   {
+  $srv_alias = $_SESSION['alias'];
   $mail_domain = $host;
-  if (is_array($CONFIG['mail_domain']))
+  if (is_array($SERVER[$srv_alias]['mail_domain']))
    {
-   if (isset($CONFIG['mail_domain'][$host]))
-    $mail_domain = $CONFIG['mail_domain'][$host];
+   if (isset($SERVER[$srv_alias]['mail_domain'][$host]))
+    $mail_domain = $SERVER[$srv_alias]['mail_domain'][$host];
    }
-  else if (!empty($CONFIG['mail_domain']))
-   $mail_domain = $CONFIG['mail_domain'];
+  else if (!empty($SERVER[$srv_alias]['mail_domain']))
+   $mail_domain = $SERVER[$srv_alias]['mail_domain'];
  
   if ($user_email=='')
    $user_email = strstr($user, '@') ? $user : sprintf('%s@%s', $user, $mail_domain);
@@ -1686,7 +1694,7 @@
 // return code for the webmail login form
 function rcmail_login_form($attrib)
  {
- global $CONFIG, $OUTPUT, $JS_OBJECT_NAME, $SESS_HIDDEN_FIELD;
+ global $CONFIG, $SERVER, $OUTPUT, $JS_OBJECT_NAME, $SESS_HIDDEN_FIELD;
  
  $labels = array();
  $labels['user'] = rcube_label('username');
@@ -1701,17 +1709,24 @@
  $fields['user'] = $input_user->show(get_input_value('_user', RCUBE_INPUT_POST));
  $fields['pass'] = $input_pass->show();
  $fields['action'] = $input_action->show();
+
+ $server_list = array();
+ $val = array();
+
+ while(list($key, $val) = each($SERVER)) {
+ 	array_push($server_list,$key);
+ }
  
- if (is_array($CONFIG['default_host']))
+ if (is_array($server_list))
   {
   $select_host = new select(array('name' => '_host', 'id' => 'rcmloginhost'));
   
-  foreach ($CONFIG['default_host'] as $key => $value)
+  foreach ($server_list as $key => $value)
    $select_host->add($value, (is_numeric($key) ? $value : $key));
    
   $fields['host'] = $select_host->show($_POST['_host']);
   }
- else if (!strlen($CONFIG['default_host']))
+ else if (!strlen($server_list))
   {
 	$input_host = new textfield(array('name' => '_host', 'id' => 'rcmloginhost', 'size' => 30));
 	$fields['host'] = $input_host->show($_POST['_host']);
diff -u --recursive --new-file roundcubemail-0.1beta2.orig/program/include/rcube_smtp.inc round.new/program/include/rcube_smtp.inc
--- roundcubemail-0.1beta2.orig/program/include/rcube_smtp.inc	2006-06-26 20:38:03.000000000 +0200
+++ round.new/program/include/rcube_smtp.inc	2006-09-15 12:31:25.000000000 +0200
@@ -51,11 +51,12 @@
 */
 function smtp_mail($from, $recipients, &$headers, &$body)
  {
- global $SMTP_CONN, $CONFIG, $SMTP_ERROR;
+ global $SMTP_CONN, $CONFIG, $SERVER, $SMTP_ERROR;
  $smtp_timeout = null;
- $smtp_host = $CONFIG['smtp_server'];
- $smtp_port = is_numeric($CONFIG['smtp_port']) ? $CONFIG['smtp_port'] : 25;
- $smtp_host_url = parse_url($CONFIG['smtp_server']);
+ $srv_alias = $_SESSION['alias'];
+ $smtp_host = $SERVER[$srv_alias]['smtp_host'];
+ $smtp_port = is_numeric($SERVER[$srv_alias]['smtp_port']) ? $SERVER[$srv_alias]['smtp_port'] : 25;
+ $smtp_host_url = parse_url($SERVER[$srv_alias]['smtp_host']);
  
  // overwrite port
  if ($smtp_host_url['host'] && $smtp_host_url['port'])
@@ -90,19 +91,19 @@
    }
    
   // attempt to authenticate to the SMTP server
-  if ($CONFIG['smtp_user'] && $CONFIG['smtp_pass'])
+  if ($SERVER[$srv_alias]['smtp_user'] && $SERVER[$srv_alias]['smtp_pass'])
    {
-   if (strstr($CONFIG['smtp_user'], '%u'))
-		$smtp_user = str_replace('%u', $_SESSION['username'], $CONFIG['smtp_user']);
+   if (strstr($SERVER[$srv_alias]['smtp_user'], '%u'))
+		$smtp_user = str_replace('%u', $_SESSION['username'], $SERVER[$srv_alias]['smtp_user']);
    else
-		$smtp_user = $CONFIG['smtp_user'];
+		$smtp_user = $SERVER[$srv_alias]['smtp_user'];
 
-	 if (strstr($CONFIG['smtp_pass'], '%p'))
-		$smtp_pass = str_replace('%p', decrypt_passwd($_SESSION['password']), $CONFIG['smtp_pass']);
+	 if (strstr($SERVER[$srv_alias]['smtp_pass'], '%p'))
+		$smtp_pass = str_replace('%p', decrypt_passwd($_SESSION['password']), $SERVER[$srv_alias]['smtp_pass']);
    else
-		$smtp_pass = $CONFIG['smtp_pass'];
+		$smtp_pass = $SERVER[$srv_alias]['smtp_pass'];
 
-	 $smtp_auth_type = empty($CONFIG['smtp_auth_type']) ? NULL : $CONFIG['smtp_auth_type'];
+	 $smtp_auth_type = empty($SERVER[$srv_alias]['smtp_auth_type']) ? NULL : $SERVER[$srv_alias]['smtp_auth_type'];
 	 $result = $SMTP_CONN->auth($smtp_user, $smtp_pass, $smtp_auth_type);
 	 
    if (PEAR::isError($result))
diff -u --recursive --new-file roundcubemail-0.1beta2.orig/program/steps/mail/sendmail.inc round.new/program/steps/mail/sendmail.inc
--- roundcubemail-0.1beta2.orig/program/steps/mail/sendmail.inc	2006-08-01 00:51:23.000000000 +0200
+++ round.new/program/steps/mail/sendmail.inc	2006-09-14 23:27:23.000000000 +0200
@@ -26,6 +26,9 @@
 require_once('Mail/mime.php');
 
 
+$srv_alias = $_SESSION['alias'];
+
+
 if (!isset($_SESSION['compose']['id']))
  {
  rcmail_overwrite_action('list');
@@ -225,7 +228,7 @@
 if (!$savedraft) {
 
  // send thru SMTP server using custom SMTP library
- if ($CONFIG['smtp_server'])
+ if ($SERVER[$srv_alias]['smtp_host'])
   {
   // generate list of recipients
   $a_recipients = array($mailto);
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

For more information about the ads and why they're here, please see the FAQ

All times are GMT. The time now is 07:46 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright © 2006-2008 RoundCube Webmail Community