Guías Hosting Entorno Desarrollando y automatizando vía API de cPanel

Desarrollando y automatizando vía API de cPanel

cPanel dispone de una API poco conocida para el usuario final que sería de utilidad en caso de necesitar automatizar tareas sobre la cuenta, por ejemplo pudiendo crear desde una app redirecciones, copias de seguridad o cuentas de correo bajo demanda.

La API puede ser usada tanto a nivel local, desde la propia cuenta, como desde un servidor externo.

La documentación, aunque extensa, puede resultar algo confunsa al principio, en este caso nos centraremos sobre UAPI, la que para nosotros es la versión más sencilla a la vez que flexible.

Para ofrecer una mejor visión de su sencillez y potencia, pondremos un ejemplo creando redirecciones de forma automática.

El primer paso es identificar la función que necesitamos en la documentación, en este caso nos interesa UAPI Functions - Mime::add_redirect ya que como su despcripción indica, "This function adds a redirect to a domain.", permite añadir redirecciones.

Además nos vamos a centrar en el ejemplo mostrado en "cPanel or Webmail Session URL" ya que es la forma más sencilla para realizar llamadas externas a la API.

La función nos facilita una seríe de parámetros, algunos requeridos y otros opcionales, que deberemos pasar en la llamada para realizar la acción.

Si queremos redireccionar dominio1.com a dominio2.com, con una redirección de tipo 301 (permanente) tanto para www como sin estas, los parámetros mínimos necesarios serían:

Si vamos a realizar una llamada desde un servidor externo o desde nuestro equipo local, la petición se debe primero autenticar, de lo contrario será denegada, el método más sencillo es por medio de usuario y contraseña de cPanel

Siguiendo el ejemplo y usando PHP, el siguiente codigo autentifica la petición por medio de usuario y contraseña de cPanel y a continuación crea la redirección, todo con el uso de curl de PHP:

$username = "USUARIO_CPANEL";
$password = "PASSWORD";
$domain = "DOMINIOCPANEL.COM";

$query = 'https://'.$domain.':2083/execute/Mime/add_redirect?domain=dominio1.com&redirect=http://dominio2.com&redirect_www=0&type=permanent';

$curl = curl_init();                          
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0);    
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0);      
curl_setopt($curl, CURLOPT_HEADER,0);               
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);       
$header[0] = "Authorization: Basic " . base64_encode($username.":".$password) . "\n\r";
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);    
curl_setopt($curl, CURLOPT_URL, $query);          
$result = curl_exec($curl);
if ($result == false) {
    error_log("curl_exec threw error \"" . curl_error($curl) . "\" for $query");   

}
curl_close($curl);

print $result;

El servidor nos devolverá una respuesta en formato json que nos permite validar si efectivamente se creó o no correctamente, este es ejemplo de respuesta de adición correcta:

{ 
   "status":1,
   "warnings":null,
   "errors":null,
   "metadata":{ 

   },
   "messages":[ 
      "Htaccess Installed"
   ],
   "data":null
}

Si el uso de la API se da en la propia cuenta, este método es igualmente válido, no obstante también se podría usar el indicado en el ejemplo del primer manual bajo "command line", de esa forma no necesitas autentificar al ser una llamada local y solo debes ejecutar el comando, básicamente se usaría uapi (disponible en todas las cuentas) para ejecutar cualquier acción que se necesite vía API, un ejemplo creando una redirección y la respuesta:

uapi Mime add_redirect domain=dominio1.com redirect=https://dominio2.com type=permanent redirect_www=0

Este comando no necesariamente se tiene que ejecutar vía terminal, se podría hacer desde PHP usando una función como shell_exec.

¿Te pareció útil este artículo? Si No