/** * Resets a user's ZPanel account password. Requires <uid> and <newpassword> tags. * @return type */ function ResetUserPassword() { $contenttags = $this->XMLDataToArray($this->wsdata); $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); if (module_controller::UpdatePassword($contenttags['xmws']['content']['uid'], $contenttags['xmws']['content']['newpassword'])) { $dataobject->addItemValue('content', ws_xmws::NewXMLTag('uid', $contenttags['xmws']['content']['uid']) . ws_xmws::NewXMLTag('reset', 'true')); } else { $dataobject->addItemValue('content', ws_xmws::NewXMLTag('uid', $contenttags['xmws']['content']['uid']) . ws_xmws::NewXMLTag('reset', 'false')); } return $dataobject->getDataObject(); }
/** * Delete a specified domain using the content <domainid> tag to pass the domain DB ID through. * @return type */ public function DeleteDomain() { $request_data = $this->RawXMWSToArray($this->wsdata); $contenttags = $this->XMLDataToArray($request_data['content']); $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); if (module_controller::ExecuteDeleteDomain($contenttags['domainid'])) { $dataobject->addItemValue('content', ws_xmws::NewXMLTag('domainid', $contenttags['domainid']) . ws_xmws::NewXMLTag('deleted', 'true')); } else { $dataobject->addItemValue('content', ws_xmws::NewXMLTag('domainid', $contenttags['domainid']) . ws_xmws::NewXMLTag('deleted', 'false')); } return $dataobject->getDataObject(); }
function GetPortStatus() { $request_data = $this->RawXMWSToArray($this->wsdata); $contenttags = $this->XMLDataToArray($this->wsdata); if (sys_monitoring::LocalPortStatus($contenttags['xmws']['content']['port'])) { $port_response = 1; } else { $port_response = 0; } $response_xml = ws_xmws::NewXMLContentSection('portstatus', array('port' => $contenttags['xmws']['content']['port'], 'status' => $port_response)); $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); $dataobject->addItemValue('content', $response_xml); return $dataobject->getDataObject(); }
public function CreateDNSRecord() { $request_data = $this->RawXMWSToArray($this->wsdata); $response_xml = "\n"; $uid = ws_generic::GetTagValue('uid', $request_data['content']); $domainName = ws_generic::GetTagValue('domainName', $request_data['content']); $domainID = ws_generic::GetTagValue('domainID', $request_data['content']); $hostName = ws_generic::GetTagValue('hostName', $request_data['content']); $type = ws_generic::GetTagValue('type', $request_data['content']); $target = ws_generic::GetTagValue('target', $request_data['content']); $ttl = ws_generic::GetTagValue('ttl', $request_data['content']); module_controller::createDNSRecord(array("uid" => $uid, "domainName" => $domainName, "domainID" => $domainID, "type" => $type, "hostName" => $hostName, "ttl" => $ttl, "target" => $target)); $response_xml = $response_xml . ws_xmws::NewXMLContentSection('dns_record', array('domainName' => $domainName, 'hostName' => $hostName, 'type' => $type, 'target' => $target, 'created' => 'true')); $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); $dataobject->addItemValue('content', $response_xml); return $dataobject->getDataObject(); }
/** * Get and return package details for a specific package. * @return array */ public function GetPackageId() { $request_data = $this->RawXMWSToArray($this->wsdata); $contenttags = $this->XMLDataToArray($request_data['content']); $packageId = 0; $response_xml = "\n"; $allpackages = module_controller::ListPackages(1); foreach ($allpackages as $package) { if ($package['packagename'] === $contenttags['pakagename']) { $packageId = $package['packageid']; } } $response_xml = $response_xml . ws_xmws::NewXMLContentSection('pakageid', $packageId); $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); $dataobject->addItemValue('content', $response_xml); return $dataobject->getDataObject(); }
/** * Get the full list of currently active domains on the server. * @global type $zdbh * @return type */ function GetAllSystemOptions() { global $zdbh; $response_xml = "\n"; $sql = $zdbh->prepare("SELECT * FROM x_settings ORDER BY so_id_pk ASC"); $sql->execute(); while ($rowoptions = $sql->fetch()) { if ($rowoptions['so_value_tx'] == "") { $value = "NULL"; } else { $value = $rowoptions['so_value_tx']; } $response_xml = $response_xml . ws_xmws::NewXMLContentSection('setting', array('id' => $rowoptions['so_id_pk'], 'name' => $rowoptions['so_name_vc'], 'value' => $value, 'description' => $rowoptions['so_desc_tx'], 'usereditable' => $rowoptions['so_usereditable_en'])); } $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); $dataobject->addItemValue('content', $response_xml); return $dataobject->getDataObject(); }
/** * Get usage stats for the entire server. * @global type $zdbh * @return type */ function GetServerUsageStats() { global $zdbh; $response_xml = "\n"; // Total Sentora user accounts $sql = $zdbh->query("SELECT COUNT(*) AS total FROM x_accounts")->Fetch(); $total_accounts = $sql['total']; // Total Active Sentora user accounts $sql = $zdbh->query("SELECT COUNT(*) AS total FROM x_accounts WHERE ac_enabled_in = 1")->Fetch(); $total_activeaccounts = $sql['total']; // Total Disabled Sentora user accounts $sql = $zdbh->query("SELECT COUNT(*) AS total FROM x_accounts WHERE ac_enabled_in = 0")->Fetch(); $total_disabledaccounts = $sql['total']; // Total Disk space in use. $total_disk = "TODO"; // Total Bandwidth used this month $total_band = "TODO"; // Total CRON Jobs $sql = $zdbh->query("SELECT COUNT(*) AS total FROM x_cronjobs WHERE ct_deleted_ts IS NULL")->Fetch(); $total_crons = $sql['total']; // Total FTP accounts $sql = $zdbh->query("SELECT COUNT(*) AS total FROM x_ftpaccounts WHERE ft_deleted_ts IS NULL")->Fetch(); $total_ftpaccounts = $sql['total']; // Total FTP accounts $sql = $zdbh->query("SELECT COUNT(*) AS total FROM x_mysql_databases WHERE my_deleted_ts IS NULL")->Fetch(); $total_mysql = $sql['total']; // Total hosting packages $sql = $zdbh->query("SELECT COUNT(*) AS total FROM x_packages WHERE pk_deleted_ts IS NULL")->Fetch(); $total_packages = $sql['total']; // Total VHOSTS $sql = $zdbh->query("SELECT COUNT(*) AS total FROM x_vhosts WHERE vh_deleted_ts IS NULL")->Fetch(); $total_vhosts = $sql['total']; $response_xml = ws_xmws::NewXMLContentSection('stats', array('zpanelusers' => $total_accounts, 'activezpanelusers' => $total_activeaccounts, 'disabledzpanelusers' => $total_disabledaccounts, 'diskspaceused' => $total_disk, 'bandwidthused' => $total_band, 'cronjobs' => $total_crons, 'ftpaccounts' => $total_ftpaccounts, 'mysqldatabases' => $total_mysql, 'hostingpackages' => $total_packages, 'vhosts' => $total_vhosts)); $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); $dataobject->addItemValue('content', $response_xml); return $dataobject->getDataObject(); }
/** * Takes RAW XMWS XML request data and converts its contents into a usable data array. * @author Bobby Allen (ballen@bobbyallen.me) * @param string $xml The RAW XML content. * @return array Array containing all the request data that has been received. */ public function RawXMWSToArray($xml) { $return_dataobject = new runtime_dataobject(); $return_dataobject->addItemValue('version', runtime_haystack::GetValueBetween($xml, '<version>', '</version>')); $return_dataobject->addItemValue('apikey', runtime_haystack::GetValueBetween($xml, '<apikey>', '</apikey>')); $return_dataobject->addItemValue('request', runtime_haystack::GetValueBetween($xml, '<request>', '</request>')); $return_dataobject->addItemValue('response', runtime_haystack::GetValueBetween($xml, '<response>', '</response>')); $return_dataobject->addItemValue('authuser', runtime_haystack::GetValueBetween($xml, '<authuser>', '</authuser>')); $return_dataobject->addItemValue('authpass', runtime_haystack::GetValueBetween($xml, '<authpass>', '</authpass>')); $return_dataobject->addItemValue('content', runtime_haystack::GetValueBetween($xml, '<content>', '</content>')); return $return_dataobject->getDataObject(); }
debug_phperrors::SetMode('dev'); if (file_exists('modules/' . fs_protector::SanitiseFolderName($_GET['m']) . '/code/webservice.ext.php')) { include 'modules/' . fs_protector::SanitiseFolderName($_GET['m']) . '/code/controller.ext.php'; include 'modules/' . fs_protector::SanitiseFolderName($_GET['m']) . '/code/webservice.ext.php'; $api = new webservice(); if ($api->wsdataarray['request'] == '') { $response_nomethod = new runtime_dataobject(); $response_nomethod->addItemValue('response', '1106'); $response_nomethod->addItemValue('content', 'No \'request\' method was recieved'); $api->SendResponse($response_nomethod->getDataObject()); die; } if ($api->CheckServerAPIKey()) { if (method_exists($api, $api->wsdataarray['request'])) { $api->SendResponse(call_user_func(array($api, '' . $api->wsdataarray['request'] . ''))); } else { $response_nomethod = new runtime_dataobject(); $response_nomethod = new runtime_dataobject(); $response_nomethod->addItemValue('response', '1102'); $response_nomethod->addItemValue('content', 'Request not found'); $api->SendResponse($response_nomethod->getDataObject()); } } else { $response_nokey = new runtime_dataobject(); $response_nokey->addItemValue('response', '1103'); $response_nokey->addItemValue('content', 'Server API key authentication failed'); $api->SendResponse($response_nokey->getDataObject()); } } else { echo "No modular web service found using this request URL (" . htmlspecialchars($_SERVER['REQUEST_URI']) . ")"; }
public function UpdateClient() { $request_data = $this->XMLDataToArray($this->wsdata); $ctags = $request_data['xmws']['content']; if (!empty($ctags["whmcs_version"])) { $this->checkVersion($ctags["whmcs_version"]); } $response_xml = module_controller::ExecuteUpdateClient($ctags['uid'], $ctags['packageid'], '1', $ctags['groupid'], $ctags['fullname'], $ctags['email'], $ctags['address'], $ctags['postcode'], $ctags['phone'], $ctags['password']); if ($response_xml == true) { $response_xml = "success"; } else { $response_xml = empty($response_xml) ? "Can't update user." : $response_xml; } $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); $dataobject->addItemValue('content', $response_xml); return $dataobject->getDataObject(); }
/** * Delete one or multiple DNS records * Mandatory parameters: uid and domainName * Optional parameters: hostName, record type, target * The meaning of parameters is same as in CreateDNSRecord() */ public function DeleteDNSRecords() { global $zdbh; $request_data = $this->RawXMWSToArray($this->wsdata); $response_xml = "\n"; $tags = array('hostName' => 'dn_host_vc', 'type' => 'dn_type_vc', 'target' => 'dn_target_vc'); // these are mandatory parameters $uid = ws_generic::GetTagValue('uid', $request_data['content']); $domainName = ws_generic::GetTagValue('domainName', $request_data['content']); $domainID = self::GetDomainID($uid, $domainName); $sqlstr = "SELECT * FROM x_dns WHERE dn_acc_fk=:userid AND vh_deleted_ts IS NULL AND dn_vhost_fk=:domainID "; // iterate through optional parameters foreach ($tags as $tag => $sql_param) { if (!is_null(ws_generic::GetTagValue($tag, $request_data['content']))) { $sqlstr .= " AND " . $sql_param . '=:' . $tag; } } $sql = $zdbh->prepare($sqlstr); $sql->bindParam(':userid', $uid); $sql->bindParam(':domainID', $domainID); $params = array(); foreach ($tags as $tag => $sql_param) { if (!is_null($params[$tag] = ws_generic::GetTagValue($tag, $request_data['content']))) { $sql->bindParam(":" . $tag, $params[$tag]); } } $sql->execute(); while ($rowdns = $sql->fetch()) { $response_xml = $response_xml . ws_xmws::NewXMLContentSection('dns_record', array('hostName' => $rowdns['dn_host_vc'], 'type' => $rowdns['dn_type_vc'], 'target' => $rowdns['dn_target_vc'], 'ttl' => $rowdns['dn_ttl_in'], 'deleted' => 'true')); $sql2 = $zdbh->prepare("UPDATE x_dns SET dn_deleted_ts=:time WHERE dn_id_pk =:id AND dn_deleted_ts IS NULL"); $sql2->bindParam(':id', $rowdns['dn_id_pk']); $time = time(); $sql2->bindParam(':time', $time); $sql2->execute(); } module_controller::TriggerDNSUpdate($domainID); $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); $dataobject->addItemValue('content', $response_xml); return $dataobject->getDataObject(); }
public function UsernameExists() { $request_data = $this->RawXMWSToArray($this->wsdata); $contenttags = $this->XMLDataToArray($request_data['content']); $UsernameExists = module_controller::CheckUserExists($contenttags['username']); $response = "false"; if ($UsernameExists) { $response = "true"; } $dataobject = new runtime_dataobject(); $dataobject->addItemValue('response', ''); $dataobject->addItemValue('content', $response); return $dataobject->getDataObject(); }
/** * Returns an array of infomation for the account details, package, groups and quota limits for a given UID. * @author Bobby Allen (ballen@bobbyallen.me) * @global db_driver $zdbh The ZPX database handle. * @param int $uid The ZPanel user account ID. * @return array */ static function GetUserDetail($uid = "") { global $zdbh; $userdetail = new runtime_dataobject(); if ($uid == "") { $uid = ctrl_auth::CurrentUserID(); } $rows = $zdbh->prepare("\n SELECT * FROM x_accounts\n LEFT JOIN x_profiles ON (x_accounts.ac_id_pk=x_profiles.ud_user_fk)\n LEFT JOIN x_groups ON (x_accounts.ac_group_fk=x_groups.ug_id_pk)\n LEFT JOIN x_packages ON (x_accounts.ac_package_fk=x_packages.pk_id_pk)\n LEFT JOIN x_quotas ON (x_accounts.ac_package_fk=x_quotas.qt_package_fk)\n WHERE x_accounts.ac_id_pk= :uid\n "); $rows->bindParam(':uid', $uid); $rows->execute(); $dbvals = $rows->fetch(); $userdetail->addItemValue('username', $dbvals['ac_user_vc']); $userdetail->addItemValue('userid', $dbvals['ac_id_pk']); $userdetail->addItemValue('password', $dbvals['ac_pass_vc']); $userdetail->addItemValue('email', $dbvals['ac_email_vc']); $userdetail->addItemValue('resellerid', $dbvals['ac_reseller_fk']); $userdetail->addItemValue('packageid', $dbvals['ac_package_fk']); $userdetail->addItemValue('enabled', $dbvals['ac_enabled_in']); $userdetail->addItemValue('usertheme', $dbvals['ac_usertheme_vc']); $userdetail->addItemValue('usercss', $dbvals['ac_usercss_vc']); $userdetail->addItemValue('lastlogon', $dbvals['ac_lastlogon_ts']); $userdetail->addItemValue('fullname', $dbvals['ud_fullname_vc']); $userdetail->addItemValue('packagename', $dbvals['pk_name_vc']); $userdetail->addItemValue('usergroup', $dbvals['ug_name_vc']); $userdetail->addItemValue('usergroupid', $dbvals['ac_group_fk']); $userdetail->addItemValue('address', $dbvals['ud_address_tx']); $userdetail->addItemValue('postcode', $dbvals['ud_postcode_vc']); $userdetail->addItemValue('phone', $dbvals['ud_phone_vc']); $userdetail->addItemValue('language', $dbvals['ud_language_vc']); $userdetail->addItemValue('diskquota', $dbvals['qt_diskspace_bi']); $userdetail->addItemValue('bandwidthquota', $dbvals['qt_bandwidth_bi']); $userdetail->addItemValue('domainquota', $dbvals['qt_domains_in']); $userdetail->addItemValue('subdomainquota', $dbvals['qt_subdomains_in']); $userdetail->addItemValue('parkeddomainquota', $dbvals['qt_parkeddomains_in']); $userdetail->addItemValue('ftpaccountsquota', $dbvals['qt_ftpaccounts_in']); $userdetail->addItemValue('mysqlquota', $dbvals['qt_mysql_in']); $userdetail->addItemValue('mailboxquota', $dbvals['qt_mailboxes_in']); $userdetail->addItemValue('forwardersquota', $dbvals['qt_fowarders_in']); $userdetail->addItemValue('distlistsquota', $dbvals['qt_distlists_in']); $userdetail->addItemValue('catorder', $dbvals['ac_catorder_vc']); return $userdetail->getDataObject(); }