Better integration of webmail link button

Discussion in 'Tips/Tricks/Mods' started by ethraza, Sep 12, 2012.

  1. ethraza

    ethraza New Member

    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:
    <?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;
    ?>
     
  2. ethraza

    ethraza New Member

    The right and universal way

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

    PHP:
    <?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:
    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. ;)
     
    Last edited: Sep 13, 2012
  3. ethraza

    ethraza New Member

    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 [email protected] without password, just use [email protected]*[email protected] and give the admin account password.

    Thanks
     

Share This Page