Como el titulo lo dice, he modificado un hook "viejo" que un cliente me paso para agregarle un par de funcionalidades al plugin original de cPanel/WHM de WHMCS. (el que viene incluido tiene varias características erróneas).
El problema del siguiente plugin es que cuando le das a ingresar a webmail / cPanel, accede mediante el hostname del servidor cPanel. osea mediante (ejemplo): cpanel.tuempresa.com
el problema de esto es que hay usuarios que quieren acceder mediante el dominio de ellos. que además es una forma de mantener su marca y hacerlo mas personalizado para los usuarios. es por esto que mi cliente quería esto. me envio un hook "viejo" que fue creado por un usuario de whmcs.
el hook cuenta con las siguientes características:
- Agrega un nuevo panel para agregar los links/botones (cpanel, webmail, whm).
- Agrega botones con las clases de bootstrap 3 que tiene whmcs
- Oculta el botón WHM si la cuenta no es una cuenta revendedor
- Cambia los links de los botones de Ingresar cpanel, webmail, whm de por ejemplo: tu hostname.tuempresa.com a tudominio.com/cpanel, tudominio.com/webmail, tudominio.com:2086
- Chequea si el dominio hacia de la cuenta tiene cloudflare, si el dominio tiene cloudflare entonces dejará el panel original del plugin de cpanel de whmcs (esta condición se hace puesto a que si el dominio tiene el proxy cdn de cloudflare activo el usuario no puede acceder mediante suempresa.com/cpanel
Dicho esto dejo el codigo que deben pegar en WHMCS/includes/hook
Crear un archivo en esta carpeta llamado cpanel_url.php
<?php
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimarySidebar', 1, function(MenuItem $primarySidebar) {
$service = Menu::context('service');
$servertype = $service->product->servertype;
if ($servertype!="cpanel"){
return;
}
$domain = $service->domain;
$username = $service->username;
$cloudflare = 'http://'.$domain.'';
$get_cf = get_headers($cloudflare, 1)[Server];
if ($get_cf != 'cloudflare'){
$cpanelhref = 'https://'.$domain.':2083/login/';
$webmailhref = 'https://'.$domain.':2096/login/';
$webwhmhref = 'https://'.$domain.':2087/login/';
$command = 'DecryptPassword';
$postData = array('password2' => $service->password);
$results = localAPI($command, $postData);
$password = $results['password'];
if ($service->product->type=="reselleraccount"){
$whmcpanel = '<input class="btn btn-primary btn-sm block-btn mb-1" type="submit" formaction="'.$webwhmhref.'" value="'.Lang::trans('cpanelwhmlogin').'"/>';
}
$bodyhtml = '<form method="post" action="'.$cpanelhref.'" target="_blank">
<input type="hidden" name="user" value ="'.$username.'"/>
<input type="hidden" name="pass" value ="'.$password.'"/>
<input class="btn btn-success btn-sm block-btn mb-1" type="submit" value="'.Lang::trans('cpanellogin').'"/>
<input class="btn btn-danger btn-sm block-btn mb-1" type="submit" formaction="'.$webmailhref.'" value="'.Lang::trans('cpanelwebmaillogin').'"/>'.$whmcpanel.''.'
</form>
<a href="/contact.php" class="btn btn-info btn-sm block-btn mb-1" data-toggle="tooltip" data-placement="bottom" title="Si tiene problemas para ingresar a su panel, puede deberse a que usa una CDN o proxy como CloudFlare en su dominio, en este caso, contacte con soporte.">Ayuda <i class="fas fa-question-circle"></i></a>
<style>.block-btn {width: 100%;} .mb-1 {margin-bottom:5px;}</style>';
if (!is_null($primarySidebar->getChild('Service Details Actions'))) {
$primarySidebar->getChild('Service Details Actions')
->removeChild('Login to cPanel')
->removeChild('Login to Webmail')
->removeChild('Login to WHM');
}
$primarySidebar->addChild('cPanel Login', array(
'label' => 'Ingresar a cPanel/WHM',
'icon' => 'fa-server',
'order' => 20,
'footerHtml' => $bodyhtml,
));
}
});
si quieren ver el post original donde lo he publicado puede ir al siguiente link: https://whmcs.community/topic/297676-cpanel-account-login/page/2/?tab=comments#comment-1337351
Espero que les guste!