/** * Execute request to CPanel * * @param $path CPanel command path * @param $params Array of parameters, which input to CPanel command * @return SimpleXMLElement */ protected function execute($path, $params = array()) { $client = new Gpf_Net_Http_Client(); $request = new Gpf_Net_Http_Request(); $url = ($this->useSsl ? 'https://' : 'http://') . $this->host . ':' . $this->port . $path; Gpf_Log::info('Request URL: ' . $url); $query = ''; foreach ($params as $name => $value) { $query .= '&' . $name . '=' . urlencode($value); } Gpf_Log::info('Request params: ' . $query); $request->setUrl($url . (strlen($query) ? '?' : '') . ltrim($query, '&')); $request->setHttpUser($this->user); $request->setHttpPassword($this->passwd); Gpf_Log::info("Executing HTTP request: " . $request->toString()); return $this->parseResult($client->execute($request)); }
/** * @param Gpf_Net_Http_Request $request * @return Gpf_Net_Http_Response */ private function executeWithSocketOpen(Gpf_Net_Http_Request $request) { $scheme = $request->getScheme() == 'ssl' || $request->getScheme() == 'https' ? 'ssl://' : ''; $proxySocket = @fsockopen($scheme . $request->getHost(), $request->getPort(), $errorNr, $errorMessage, self::CONNECTION_TIMEOUT); if ($proxySocket === false) { $gpfErrorMessage = $this->_sys('Could not connect to server: %s:%s, Failed with error: %s', $request->getHost(), $request->getPort(), $errorMessage); Gpf_Log::error($gpfErrorMessage); throw new Gpf_Exception($gpfErrorMessage); } $requestText = $request->toString(); $result = @fwrite($proxySocket, $requestText); if ($result === false || $result != strlen($requestText)) { @fclose($proxySocket); $gpfErrorMessage = $this->_sys('Could not send request to server %s:%s', $request->getHost(), $request->getPort()); Gpf_Log::error($gpfErrorMessage); throw new Gpf_Exception($gpfErrorMessage); } $result = ''; while (false === @feof($proxySocket)) { try { if (false === ($data = @fread($proxySocket, 8192))) { Gpf_Log::error($this->_sys('Could not read from proxy socket')); throw new Gpf_Exception("could not read from proxy socket"); } $result .= $data; } catch (Exception $e) { Gpf_Log::error($this->_sys('Proxy failed: %s', $e->getMessage())); @fclose($proxySocket); throw new Gpf_Exception($this->_('Proxy failed: %s', $e->getMessage())); } } @fclose($proxySocket); $response = new Gpf_Net_Http_Response(); $response->setResponseText($result); return $response; }