I was trying to automate the process of creating parked domains on a cPanel server today and found myself playing around with Park module of the cPanel API via the amazing cPanel-XML-API-PHP.
This code was really simple and effective in parking a domain
<!--?php
//Do a little setup...
$serverIP = '<IP of cPanel server-->';
$user = '';
$hash = '';
$cPaneluser = '';
$domain = '';
//Make sure we load the PHP Client Library for cPanel's XMLAPI
require_once('cPanel-XML-API-PHP/xmlapi.php');
// Create an instance of the XMLAPI, and Authenticate using our username and hash
$xmlapi = new xmlapi('$serverIP');
$xmlapi->hash_auth($user, $hash);
//Send park request
$xmlapi->park($cPaneluser, $domain, '');
?> |
<!--?php
//Do a little setup...
$serverIP = '<IP of cPanel server-->';
$user = '';
$hash = '';
$cPaneluser = '';
$domain = '';
//Make sure we load the PHP Client Library for cPanel's XMLAPI
require_once('cPanel-XML-API-PHP/xmlapi.php');
// Create an instance of the XMLAPI, and Authenticate using our username and hash
$xmlapi = new xmlapi('$serverIP');
$xmlapi->hash_auth($user, $hash);
//Send park request
$xmlapi->park($cPaneluser, $domain, '');
?>
Things were moving along smoothly until I attempted to unpark a domain via the cPanel API. I got an error when trying to unpark the domain:
"Error from park wrapper: Sorry, you do not control the domain"
After reading the API1 and API2 documentation for the park method and checking out xmlapi.php, I realized it was just a minor bug in how the API was being called by the unpark() function. The function that prepares the call for API2, api2_query(), expects an associative array; while the function prepping for API1, api1_query(), does not and unpark was sending an associative array to api1_query(). After making a minor change to the unpark() function on line 2076 of xmlapi.php from
return $this->api1_query($username, 'Park', 'unpark', $args); |
return $this->api1_query($username, 'Park', 'unpark', $args);
to
return $this->api2_query($username, 'Park', 'unpark', $args); |
return $this->api2_query($username, 'Park', 'unpark', $args);
I was able to successfully unpark a domain with this code.
<!--?php
//Do a little setup...
$serverIP = '<IP of cPanel server-->';
$user = '';
$hash = '';
$cPaneluser = '';
$domain = '';
//Make sure we load the PHP Client Library for cPanel's XMLAPI
require_once('cPanel-XML-API-PHP/xmlapi.php');
// Create an instance of the XMLAPI, and Authenticate using our username and hash
$xmlapi = new xmlapi('$serverIP');
$xmlapi->hash_auth($user, $hash);
//Send park request
$xmlapi->unpark($cPaneluser, $domain, '');
?> |
<!--?php
//Do a little setup...
$serverIP = '<IP of cPanel server-->';
$user = '';
$hash = '';
$cPaneluser = '';
$domain = '';
//Make sure we load the PHP Client Library for cPanel's XMLAPI
require_once('cPanel-XML-API-PHP/xmlapi.php');
// Create an instance of the XMLAPI, and Authenticate using our username and hash
$xmlapi = new xmlapi('$serverIP');
$xmlapi->hash_auth($user, $hash);
//Send park request
$xmlapi->unpark($cPaneluser, $domain, '');
?>
I forked the project on github and committed my minor change; however, I’m not certain if MattDees is activly maintaining the project on github đ
If this helped you, let me know with a quick comment!