Solved

cPanel / WHM Api example

Posted on 2010-09-04
8
2,824 Views
Last Modified: 2012-05-10
Can someone please help me with a working example to use the CPanel / WHM Api.

I would like to update the A record for a particular domain hosted in cPanel / WHM through API.

0
Comment
Question by:nainil
  • 4
  • 4
8 Comments
 
LVL 21

Expert Comment

by:Julian Matz
ID: 33604857
Hello,

Using the cPanel XML API can be as easy as making a call to:

https://example.com:2087/xml-api/editzonerecord?domain=example.com&Line=2&ttl=86400

This will return a result in XML format, eg:

<cpanelresult>
    <data>
        <result>0</result>
        <reason>Access denied</reason>
    </data>
</cpanelresult>

This result, for example would tell you that the command failed (result=0) because access was denied (reason="Access denied").

To make the API call, you can use any number of programming languages like PHP, Perl, ASP. My choice would be PHP, and I would use curl to make.

http://php.net/manual/en/book.curl.php

Another option would be to simply download an existing cPanel API PHP class and either use it as is or modify it to suit your exact needs. Here's an example:
http://www.phpclasses.org/package/3534-PHP-List-and-manage-details-of-cPanel-hosting-accounts.html

But what scripting language did you have in mind for this?
0
 

Author Comment

by:nainil
ID: 33605148
Thank you julianmatz. Sorry for the incomplete information.

I want to implement the same using PHP/MySQL.

The Class you suggested does all except the DNS. I will try to look at the same and try to get the DNS manipulation function. But, if someone can get me a working example for DNS manipulation.

Thanks.
0
 
LVL 21

Accepted Solution

by:
Julian Matz earned 500 total points
ID: 33607175
If you use the XML PHP API from cpanel.net, you'll be able to edit your DNS using the example below. Here's a link to the API:

http://sdk.cpanel.net/lib/xmlapi/php/cp_xmlapi_php_v1.0.6.tar.gz
<?php

include("../xmlapi.php");

$ip = getenv('REMOTE_HOST');
$root_pass = getenv('REMOTE_PASSWORD');

$xmlapi = new xmlapi($ip);
$xmlapi->password_auth("root",$root_pass);

$xmlapi->set_debug(1);

$zone = 'example.com';
$Line = '1';

$args = array(
		  'address'=>'123.456.789.10',
		  'class'=>'IN',
		  'type'=>'A',
		  'ttl'=>'86400'
	);


print $xmlapi->editzonerecord($zone,$Line,$args);

?>

Open in new window

0
MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

 

Author Comment

by:nainil
ID: 33608128
This is an incredible find. Thank you.

I am using the original file and examples. however, on Windows 7, (using WAMP), I get the following error:

Warning: file_get_contents(https://localcpanel.com/xml-api/listaccts) [function.file-get-contents]: failed to open stream: Invalid argument in C:\wamp\www\xmlapi.php on line 731

Any idea how to fix the same?
0
 

Author Comment

by:nainil
ID: 33608129
Also, the code works fine on Linux. So this is a Windows only issue apparently.
0
 
LVL 21

Expert Comment

by:Julian Matz
ID: 33608877
I'm not a Windows expert, but I think the error may have something to do with the SSL encryption (https). See if you can get these two DLLs from the PHP5 distribution:

libeay32.dll
ssleay32.dll
0
 

Author Comment

by:nainil
ID: 33614577
Just found that I did not have Curl setup. It worked fine once I worked on that piece. Thank you.
0
 
LVL 21

Expert Comment

by:Julian Matz
ID: 33619304
Glad I was able to help. Good luck with your API!
0

Featured Post

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
This article discusses how to implement server side field validation and display customized error messages to the client.
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question