HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials

HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials (http://www.howtoforge.com/forums/index.php)
-   Tips/Tricks/Mods (http://www.howtoforge.com/forums/forumdisplay.php?f=29)
-   -   Better integration of webmail link button (http://www.howtoforge.com/forums/showthread.php?t=58698)

ethraza 12th September 2012 21:23

Better integration of webmail link button
 
I would love if I could click on that tiny little button at the far right of a client email and it automatic loggins to that account so I can see if their is any problem there.

While this drean does not come true I have made this little changes to the ISPConfig 3.0.4.6 so it at least passes the user and host of the client email to the webmail.
(I use Roundcube, so if you use other Webmail, you may need to change the _user and _host variables on the $opts line.)

File: /usr/local/ispconfig/interface/web/mail/webmailer.php

PHP Code:

<?php

require_once('../../lib/config.inc.php');
require_once(
'../../lib/app.inc.php');

//* Check permissions for module
$app->auth->check_module_permissions('mail');

/* get the id of the mail (must be int!) */
if (!isset($_GET['id'])){
    die (
"No E-Mail selected!");
}
$emailId intval($_GET['id']);

/*
 * Get the data to connect to the database
 */
$dbData $app->db->queryOneRecord("SELECT server_id,login FROM mail_user WHERE mailuser_id = " $emailId);
$serverId intval($dbData['server_id']);

if (
$serverId == 0){
    die (
"No E-Mail - Server found!");
}

$serverData $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$serverId);

$app->uses('getconf');
$global_config $app->getconf->get_global_config('mail');

$opts '?_user='.$dbData['login'].'&_host='.$serverData['server_name'];

if(
$global_config['webmail_url'] != '') {
        
header('Location:' $global_config['webmail_url'].$opts);
} else {

/*
 * We only redirect to the login-form, so there is no need, to check any rights
 */
        
isset($_SERVER['HTTPS'])? $http 'https' $http 'http';
        
header('Location:' $http '://' $serverData['server_name'] . '/webmail'.$opts);
}
exit;
?>


ethraza 13th September 2012 19:07

The right and universal way
 
Hi,
I decided to do that the right way, so the webmailer.php would be like that:

PHP Code:

<?php

require_once('../../lib/config.inc.php');
require_once(
'../../lib/app.inc.php');

//* Check permissions for module
$app->auth->check_module_permissions('mail');

/* get the id of the mail (must be int!) */
if (!isset($_GET['id'])){
    die (
"No E-Mail selected!");
}
$emailId intval($_GET['id']);

/*

 * Get the data to connect to the database
 */
$dbData $app->db->queryOneRecord("SELECT server_id,login FROM mail_user WHERE mailuser_id = " $emailId);
$serverId intval($dbData['server_id']);

if (
$serverId == 0){
    die (
"No E-Mail - Server found!");
}

$serverData $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ".$serverId);

$app->uses('getconf');
$global_config $app->getconf->get_global_config('mail');

if(
$global_config['webmail_url'] != '') {
        
header('Location:' preg_replace(array('/%u/','/%h/'), array($dbData['login'], $serverData['server_name']), $global_config['webmail_url']));
} else {

/*
 * We only redirect to the login-form, so there is no need, to check any rights
 */
        
isset($_SERVER['HTTPS'])? $http 'https' $http 'http';
        
header('Location:' $http '://' $serverData['server_name'] . '/webmail');
}
exit;
?>

This will work for any webmail, because now you go to System->Interface Config->Mail and set the Webmail URL to something like that (example for Roundcube):
PHP Code:

http://webmail.your_domain.com?_user=%u&_host=%h 

But ISPConfig regex will not allow you to insert anything but alpha numeric characters in this config field.
So for now you can edit the sys_ini table on ispconfig DB and update this config by hand.

Hope it comes in the next version of ISPConfig.

Hey Devs, here is my little contribution. ;)

ethraza 20th September 2012 17:46

Great plugin
 
If this come in a future version of ISPConfig, please think about add options to configure a user to use with impersonate plugin.

Using impersonate plugin for Roundcube:
To login user@domain.net without password, just use user@domain.net*admin@domain.net and give the admin account password.

Thanks


All times are GMT +2. The time now is 05:20.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.