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
     
  4. Ariia

    Ariia New Member

    does this still work with latest?
     
  5. ahrasis

    ahrasis Well-Known Member HowtoForge Supporter

    This trick is very old. Current ISPConfig already have it by default.
     
  6. Ariia

    Ariia New Member

    oh. i have tried clicking the little mail button but it just takes to login page. i havent been able to find settings for it. i even posted on here a while back about it. could you possibly shed light on this please? thanks
     
  7. ztk.me

    ztk.me Well-Known Member HowtoForge Supporter

    there is no autologin
     
  8. Ariia

    Ariia New Member

    ok, is there any way to implement currently documented? if not, where would i likely start if you have any possible input? thanks.
     
  9. till

    till Super Moderator Staff Member ISPConfig Developer

    An autologin will probably require it that you save passwords as cleartext, but ispconfig stores passwords hashed for security reasons. The scripts in this thread above are no autologin scripts, the actually just pass the email username, the password needs still be entered.
     
  10. Ariia

    Ariia New Member

    Ok. Its something i really require. Will have to put my thinking hat on. thanks
     
  11. ztk.me

    ztk.me Well-Known Member HowtoForge Supporter

    don't forget, if u implement it for your panel:
    - a reseller or a project admin might be able to change the password of any account he owns and may hand out one to his worker
    - a worker can change his password
    - do you want to allow reseller / pa to see or use the changed password?
     

Share This Page