Création token pour script Cpanel

supertoto

New Member
#1
Bonjour à tous,

suite à des recherches j'ai appris que Cpanel pouvait être utilisé via des scripts et donc permettait d'automatiser certaines tâches.

Mon but final serait de créer des sous-domaines à la volée.
Saber dans une discussion avec un membre a mentionné cette page : cPanel XML and JSON APIs

De ce que je comprends, il faut d'abord créer un token de connexion qu'on utilise ensuite pour interroger le service.

Pour cela, cette page est sensée me venir en aide. Elle décrit comment obtenir un token de connexion avec en plus un exemple en PHP, exactement ce dont j'ai besoin (cf le code en bas de cette discussion)

Malheureusement, lorsque j'utilise ce code sur mon hébergement PH, en me connectant via le navigateur (http) j'ai le message retour suivant :
Code:
Access denied 0 Access denied
Pourtant, j'ai modifié les 2 variables du début, en mentionnant en clair mes login et mot de passe Cpanel (les mêmes que ceux qui me sont demandés lorsque je me connecte directement au Cpanel via l'interface :
Code:
https://nova.planethoster.net:2083
J'ai modifié la variable query de la sorte (pas de 3 w ?) :
Code:
$query = "https://mondomaine.com:2087/xml-api/listaccts";
Je ne sais pas si le port 2087 est le plus adapté, j'ai vu parfois qu'il était mentionné 2083 ou 2086.

Mes questions :
1) Est-ce que vous auriez une idée de ce qui peut poser problème ?
2) J'ai vu qu'il existait deux API Cpanel (API1 et API2) est ce que les deux sont compatibles avec la version Cpanel pro 1.0 (RC1) ou faut-il en utiliser une de préférence ?

Merci d'avance pour vos réponses.



PHP:
<?

$whmusername = "username"; // remplacé par mon login Cpanel
$whmpassword = "password"; // remplacé par mon mot de passe Cpanel en clair (sécurisé ?). Un autre exemple utilise un hash mais je ne sais pas trop comment le générer, j'aimerais faire fonctionner cette exemple plus simple

$query = "https://127.0.0.1:2087/"; // remplacé par mon domaine + paramètres ci-dessus

$curl = curl_init();		
# Create Curl Object
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0);	
# Allow self-signed certs
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0); 	
# Allow certs that do not match the hostname
curl_setopt($curl, CURLOPT_HEADER,0);			
# Do not include header in output
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);	
# Return contents of transfer on curl_exec
$header[0] = "Authorization: Basic " . base64_encode($whmusername.":".$whmpassword) . "\n\r";
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);  
# set the username and password
curl_setopt($curl, CURLOPT_URL, $query);			
# execute the query
$result = curl_exec($curl);
if ($result == false) {
	error_log("curl_exec threw error \"" . curl_error($curl) . "\" for $query");	
# log error if curl exec fails
}
curl_close($curl);

print $result;
 
Haut