Beispiel #1
0
 /**
  * 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();
 }
Beispiel #8
0
 /**
  * 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();
 }
Beispiel #9
0
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();
 }
Beispiel #11
0
 /**
  *   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();
 }
Beispiel #12
0
 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();
 }
Beispiel #13
0
 /**
  * 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();
 }