ghost
3 years ago
6 changed files with 403 additions and 202 deletions
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
<?php |
||||
|
||||
function decodeString($string) { |
||||
|
||||
if (is_numeric($string) && $string < 0xFFFFFFFF) { |
||||
return mb_chr($string, 'ASCII'); |
||||
} else { |
||||
return hex2bin($string); |
||||
} |
||||
} |
||||
|
||||
function filterString($string) { |
||||
|
||||
return strip_tags(html_entity_decode($string, ENT_QUOTES, 'UTF-8')); |
||||
} |
@ -1,110 +0,0 @@
@@ -1,110 +0,0 @@
|
||||
<?php |
||||
|
||||
class Keva { |
||||
|
||||
public $username; |
||||
public $password; |
||||
|
||||
public $host; |
||||
public $port; |
||||
public $url; |
||||
|
||||
public $proto = 'http'; |
||||
public $CACertificate = null; |
||||
|
||||
public $status; |
||||
public $error; |
||||
public $rawResponse; |
||||
public $response; |
||||
|
||||
private $id = 0; |
||||
|
||||
public function setSSL($certificate = null) { |
||||
$this->proto = 'https'; |
||||
$this->CACertificate = $certificate; |
||||
} |
||||
|
||||
public function __call($method, $params) { |
||||
|
||||
$this->status = null; |
||||
$this->error = null; |
||||
$this->rawResponse = null; |
||||
$this->response = null; |
||||
|
||||
$params = array_values($params); |
||||
|
||||
$this->id++; |
||||
|
||||
$request = json_encode(array( |
||||
'method' => $method, |
||||
'params' => $params, |
||||
'id' => $this->id |
||||
)); |
||||
|
||||
$curl = curl_init("{$this->proto}://{$this->host}:{$this->port}/{$this->url}"); |
||||
$options = array( |
||||
CURLOPT_HTTPAUTH => CURLAUTH_BASIC, |
||||
CURLOPT_USERPWD => $this->username . ':' . $this->password, |
||||
CURLOPT_RETURNTRANSFER => true, |
||||
CURLOPT_FOLLOWLOCATION => true, |
||||
CURLOPT_MAXREDIRS => 10, |
||||
CURLOPT_HTTPHEADER => array('Content-type: text/plain'), |
||||
CURLOPT_POST => true, |
||||
CURLOPT_POSTFIELDS => $request |
||||
); |
||||
|
||||
if (ini_get('open_basedir')) { |
||||
unset($options[CURLOPT_FOLLOWLOCATION]); |
||||
} |
||||
|
||||
if ($this->proto == 'https') { |
||||
if (!empty($this->CACertificate)) { |
||||
$options[CURLOPT_CAINFO] = $this->CACertificate; |
||||
$options[CURLOPT_CAPATH] = DIRNAME($this->CACertificate); |
||||
} else { |
||||
$options[CURLOPT_SSL_VERIFYPEER] = false; |
||||
} |
||||
} |
||||
|
||||
curl_setopt_array($curl, $options); |
||||
|
||||
$this->rawResponse = curl_exec($curl); |
||||
$this->response = json_decode($this->rawResponse, true); |
||||
|
||||
$this->status = curl_getinfo($curl, CURLINFO_HTTP_CODE); |
||||
|
||||
$curl_error = curl_error($curl); |
||||
|
||||
curl_close($curl); |
||||
|
||||
if (!empty($curl_error)) { |
||||
$this->error = $curl_error; |
||||
} |
||||
|
||||
if ($this->response['error']) { |
||||
$this->error = $this->response['error']['message']; |
||||
} elseif ($this->status != 200) { |
||||
|
||||
switch ($this->status) { |
||||
case 400: |
||||
$this->error = 'HTTP_BAD_REQUEST'; |
||||
break; |
||||
case 401: |
||||
$this->error = 'HTTP_UNAUTHORIZED'; |
||||
break; |
||||
case 403: |
||||
$this->error = 'HTTP_FORBIDDEN'; |
||||
break; |
||||
case 404: |
||||
$this->error = 'HTTP_NOT_FOUND'; |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if ($this->error) { |
||||
return false; |
||||
} |
||||
|
||||
return $this->response['result']; |
||||
} |
||||
} |
@ -0,0 +1,156 @@
@@ -0,0 +1,156 @@
|
||||
<?php |
||||
|
||||
class KevaCoin { |
||||
|
||||
private $_id = 0; |
||||
|
||||
private $_curl; |
||||
private $_protocol; |
||||
private $_host; |
||||
private $_port; |
||||
|
||||
public function __construct($protocol, $host, $port, $username, $password) { |
||||
|
||||
$this->_protocol = $protocol; |
||||
$this->_host = $host; |
||||
$this->_port = $port; |
||||
|
||||
$this->_curl = curl_init(); |
||||
|
||||
curl_setopt_array($this->_curl, [CURLOPT_RETURNTRANSFER => true, |
||||
CURLOPT_FOLLOWLOCATION => true, |
||||
CURLOPT_FRESH_CONNECT => true, |
||||
CURLOPT_HTTPAUTH => CURLAUTH_BASIC, |
||||
CURLOPT_USERPWD => $username . ':' . $password, |
||||
CURLOPT_RETURNTRANSFER => true, |
||||
CURLOPT_FOLLOWLOCATION => true, |
||||
//CURLOPT_VERBOSE => true, |
||||
CURLOPT_HTTPHEADER => [ |
||||
'Content-Type: application/plain', |
||||
], |
||||
]); |
||||
} |
||||
|
||||
public function __destruct() { |
||||
curl_close($this->_curl); |
||||
} |
||||
|
||||
protected function prepare($url, $method, array $postfields = []) { |
||||
|
||||
curl_setopt($this->_curl, CURLOPT_URL, $this->_protocol . '://' . $this->_host . ':' . $this->_port . $url); |
||||
curl_setopt($this->_curl, CURLOPT_CUSTOMREQUEST, $method); |
||||
|
||||
if ($method == 'POST' && $postfields) { |
||||
curl_setopt($this->_curl, CURLOPT_POSTFIELDS, json_encode($postfields)); |
||||
} |
||||
} |
||||
|
||||
protected function execute($json = true) { |
||||
|
||||
$response = curl_exec($this->_curl); |
||||
$errorNumber = curl_errno($this->_curl); |
||||
$errorText = curl_error($this->_curl); |
||||
|
||||
if ($errorNumber > 0) { |
||||
//return false; |
||||
} |
||||
|
||||
if ($response) { |
||||
if ($json) { |
||||
return json_decode($response, true); |
||||
} else { |
||||
return $response; |
||||
} |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
public function getblockcount() { |
||||
|
||||
$this->_id++; |
||||
|
||||
$this->prepare('', 'POST', [ |
||||
'method' => 'getblockcount', |
||||
'params' => [], |
||||
'id' => $this->_id |
||||
]); |
||||
|
||||
$response = $this->execute(); |
||||
|
||||
if (isset($response['result']) && is_int($response['result'])) { |
||||
|
||||
return $response['result']; |
||||
|
||||
} else { |
||||
|
||||
return false; |
||||
} |
||||
} |
||||
|
||||
public function getblockhash($block) { |
||||
|
||||
$this->_id++; |
||||
|
||||
$this->prepare('', 'POST', [ |
||||
'method' => 'getblockhash', |
||||
'params' => [$block], |
||||
'id' => $this->_id |
||||
]); |
||||
|
||||
$response = $this->execute(); |
||||
|
||||
if (isset($response['result']) && 64 == strlen($response['result'])) { |
||||
|
||||
return $response['result']; |
||||
|
||||
} else { |
||||
|
||||
return false; |
||||
} |
||||
} |
||||
|
||||
public function getblock($hash) { |
||||
|
||||
$this->_id++; |
||||
|
||||
$this->prepare('', 'POST', [ |
||||
'method' => 'getblock', |
||||
'params' => [$hash], |
||||
'id' => $this->_id |
||||
]); |
||||
|
||||
$response = $this->execute(); |
||||
|
||||
if (isset($response['result']) && is_array($response['result'])) { |
||||
|
||||
return $response['result']; |
||||
|
||||
} else { |
||||
|
||||
return false; |
||||
} |
||||
} |
||||
|
||||
public function getrawtransaction($txid, $decode = true) { |
||||
|
||||
$this->_id++; |
||||
|
||||
$this->prepare('', 'POST', [ |
||||
'method' => 'getrawtransaction', |
||||
'params' => [$txid, $decode], |
||||
'id' => $this->_id |
||||
]); |
||||
|
||||
$response = $this->execute(); |
||||
|
||||
if (isset($response['result']) && is_array($response['result'])) { |
||||
|
||||
return $response['result']; |
||||
|
||||
} else { |
||||
|
||||
return false; |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue