public function return_xml($value = 1 ) {
$this->return_xml = 1;
}
public function return_object($value = 1) {
$this->return_xml = 0;
}
public function password_auth($username,$password) {
curl_setopt($this->curl, CURLOPT_USERPWD, $username.":".$password);
}
public function hash_auth($user,$hash) {
$header[0] = "Authorization: WHM $user:" . preg_replace("'(\r|\n)'","",$hash);
curl_setopt($this->curl,CURLOPT_HTTPHEADER,$header);
}
public function xmlapi_query($function, $calls = array()) {
if (!$function) {
error_log("xmlapi_query() requires a function to be passed to it");
return;
}
public function build_api1_call($input) {
$output = "<cpanelaction>";
foreach($input as $tag => $data) {
if (is_array($data)) {
foreach ($data as $arg) {
$output .= "<args>" . $arg . "</args>";
}
} else {
$output .= "<$tag>" . $data . "</$tag>";
}
}
$output .= "</cpanelaction>";
if ($this->debug) {
print "\n\nRAW API1 CALL:\n" . $output . "\n\n";
}
return $output;
}
####
# XML API Functions
####
####
# Accounting
####
####
# createacct($accthash)
# This needs to be passed in a hash where username, password and domain are all defined.
# all other arguments are optional
####
public function createacct($acctinfo) {
if (!isset($acctinfo['username']) || !isset($acctinfo['password']) || !isset($acctinfo['domain'])) {
error_log("createacct requires that username, password & domain elements are in the array passed to it");
return 0;
}
return $this->xmlapi_query("createacct", $acctinfo);
}
public function removeacct($username) {
if (!isset($username)) {
error_log("killacct requires that a username is passed to it");
return 0;
}
return $this->xmlapi_query("removeacct",array("user" => $username));
}
public function passwd($user,$pass){
if (!isset($user) || !isset($pass)) {
error_log("passwd requires that (username,password) are passed to it");
return 0;
}
return $this->xmlapi_query("passwd", array("user" => $user, "pass" => $pass));
}
public function listaccts($searchtype = null, $search = null) {
if ($search) {
return $this->xmlapi_query("listaccts", array( "searchtype" => $searchtype, "search" => $search ) );
} else {
return $this->xmlapi_query("listaccts");
}
}
public function accoutsummary($username) {
if (!isset($username)) {
error_log("accountsummary requires that a username is passed to it");
return 0;
}
return $this->xmlapi_query("accountsummary",array(user => $username));
}
public function suspendacct($username, $reason = null) {
if (!isset($username)) {
error_log("suspendacct requires that a username is passed to it");
return 0;
}
if ($reason) {
return $this->xmlapi_query("suspendacct",array( "user" => $username, "reason" => $reason ));
} else {
return $this->xmlapi_query("suspendacct", array("user" => $username));
}
}
public function unsuspendacct($username){
if (!isset($username)) {
error_log("unsuspendacct requires that a username is passed to it");
return 0;
}
return $this->xmlapi_query("unsuspendacct", array("user" => $username));
}
public function modifyacct($opts) {
if (!isset($opts['user'])) {
error_log("modifyacct requires that user is defined in the array passed to it");
return 0;
}
return $this->xmlapi_query("modifyacct",$opts);
}
####
# Package Functions
####
public function addpkg($pkg) {
if (!isset($pkg['name'])) {
error_log("addpkg requires that name is defined in the array passed to it");
return 0;
}
return $this->xmlapi_query('addpkg', $pkg);
}
public function killpkg($pkg) {
if(!isset($pkg)) {
error_log("killpkg requires that the package name is passed to it");
return 0;
}
return $this->xmlapi_query('killpkg',array("pkg" => $pkg));
}
public function editpkg($pkg) {
if (!$isset($pkg['name'])) {
error_log("editpkg requires that name is defined in the array passed to it");
return 0;
}
return $this->xmlapi_query("editpkg",$pkg);
}
public function listpkgs() {
return $self->query('listpkgs');
}
####
# Reseller Functions
####
public function setupreseller($user,$makeowner) {
if (!isset($user) || !isset($makeowner)) {
error_log("setupreseller requires that (user,makeowner) are passed to it");
return 0;
}
return $this->xmlapi_query("setupreseller",array("user" => $user, "makeowner" => $makeowner));
}
public function unsetupreseller($user) {
if (!isset($user)) {
error_log("unsetupreseller requires that a reseller name is passed to it");
return 0;
}
return $this->xmlapi_query("unsetupreseller",array("user"=>$user));
}
public function listresellers() {
return $this->xmlapi_query('listresellers');
}
public function saveacllist($acl) {
if (!isset($acl['acllist'])) {
error_log("saveacllist requires that acllist is defined in the array passed to it");
return 0;
}
return $this->xmlapi_query('saveacllist',$act);
}
public function setacls($acl) {
if (!isset($acl['reseller'])) {
error_log("setacls requires that reseller is defined in the array passed to it");
return 0;
}
return $this->xmlapi_query("setacls", $acl);
}
public function terminatereseller($reseller,$terminatereseller) {
if (!isset($reseller) || !isset($terminatereseller)) {
error_log("terminatereseller requires that (reseller|terminatereseller) are passed to it");
return 0;
}
$verify = "I%20understand%20this%20will%20irrevocably%20remove%20all%20the%20accounts%20owned%20by%20the%20reseller%20" . $reseller;
return $this->xmlapi_query("terminatereseller",array("reseller" => $reseller, "terminatereseller" => $terminatereseller, "verify" => $verify));
}
####
# Server Info
####
public function version() {
return $this->xmlapi_query("version");
}
public function hostname() {
return $this->xmlapi_query('hostname');
}
####
# Service Functions
####
public function restartsrv($service) {
if (!isset($service)) {
error_log("restartsrv requires that service is passed to it");
return 0;
}
return $this->xmlapi_query("restartservice",array('service' => $service));
}
public function applist() {
return $this->xmlapi_query("applist");
}
public function myprivs() {
return $this->xmlapi_query("myprivs");
}
public function sethostname($hostname) {
if (!isset($hostname)) {
error_log("sethostname requires that hostname is passed to it");
return 0;
}
return $this->xmlapi_query("sethostname", array("hostname"=>$hostname));
}
public function addip($ip,$netmask) {
if (!isset($ip,$netmask)) {
error_log("addip requires that an IP address and Netmask are passed to it");
return 0;
}
return $this->xmlapi_query("addip",array("ip"=>$ip,"netmask"=>$netmask));
}
public function delip($ip) {
if (!isset($ip)) {
error_log("delip requires that an IP is passed to it");
return 0;
}
return $this->xmlapi_query("delip", array("ip"=>$ip));
}
public function listips() {
return $this->xmlapi_query("listips");
}
####
# DNS Functions
####
public function adddns($domain,$ip) {
if (!isset($domain) || !isset($ip)) {
error_log("adddns require that domain, ip are passed to it");
return 0;
}
return $this->xmlapi_query("adddns", array("domain"=>$domain,"ip"=>$ip));
}
public function killdns($domain) {
if (!isset($domain)) {
error_log("killdns requires that domain is passed to it");
return 0;
}
return $this->xmlapi_query("killdns", array("domain"=>$domain));
}
public function listzones() {
return $this->xmlapi_query("listzones");
}
public function dumpzone($domain) {
if (!isset($domain)) {
error_log("dumpzone requires that a domain is passed to it");
return 0;
}
return $this->xmlapi_query("dumpzone",array("domain"=>$domain));
}
public function lookupnsip($nameserver) {
if (!isset($nameserver)) {
error_log("lookupnsip requres that a nameserver is passed to it");
return 0;
}
return $this->xmlapi_query("lookupnsip",array("nameserver"=>$nameserver));
}
}
?>
After running the script, I get a blank page but this in the source code:
I think the next step would be to look at style.xsl. It's probably doing a transformation that isn't working the way you expect.
Try removing the line that prints that processing instruction and see what happens.
__________________
"The first step to confirming there is a bug in someone else's work is confirming there are no bugs in your own."
June 30, 2001
author, Verbosio prototype XML Editor
author, JavaScript Developer's Dictionary https://alexvincent.us/blog