Source of file api.zabbix.php
Size: 4,277 Bytes - Last Modified: 2024-04-26T20:04:18+03:00
/tmp/current_snapshot/api/libs/api.zabbix.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | <?php /** * Class ZabbixAPI * * Zabbix 3.xx API implementation */ class ZabbixAPI { /** * Placeholder for $this->ubConfig object * * @var null */ protected $ubConfig = null; /** * Zabbix host URL/IP * * @var string */ protected $apiHostURL = ''; /** * Zabbix login * * @var string */ protected $authLogin = ''; /** * Zabbix password * * @var string */ protected $authPasswd = ''; /** * Zabbix connection token for communication after successful auth * * @var */ protected $authToken = ''; public function __construct() { global $ubillingConfig; $this->ubConfig = $ubillingConfig; $this->apiHostURL = ($this->ubConfig->getAlterParam('ZABBIX_HOST_URL')) ? rtrim($this->ubConfig->getAlterParam('ZABBIX_HOST_URL'), '/') . '/api_jsonrpc.php' : ''; $this->authLogin = ($this->ubConfig->getAlterParam('ZABBIX_LOGIN')) ? $this->ubConfig->getAlterParam('ZABBIX_LOGIN') : ''; $this->authPasswd = ($this->ubConfig->getAlterParam('ZABBIX_PASSWD')) ? $this->ubConfig->getAlterParam('ZABBIX_PASSWD') : ''; $this->getConnectionToken(); } /** * Connects to Zabbix host and returns a token string if successful * * @return string */ public function getConnectionToken() { if (!empty($this->apiHostURL) and !empty($this->authLogin) and !empty($this->authPasswd)) { $authJSON = '{ "jsonrpc": "2.0", "method": "user.login", "params": { "user": "' . $this->authLogin . '", "password": "' . $this->authPasswd . '" }, "id": 0, "auth": null }'; $curl = curl_init(); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_URL, $this->apiHostURL); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json-rpc; charset=utf-8", "Cache-Control: no-cache")); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $authJSON); $curlResult = curl_exec($curl); curl_close($curl); if (!empty($curlResult)) { $authArr = json_decode($curlResult, true); $this->authToken = $authArr['result']; } } return ($this->authToken); } /** * Runs a data query to Zabbix host and returns result as a JSON string * * @param $apiMethod * @param array|string $methodParams * @param string $authToken * @param int $reqID * * @return string */ public function runQuery($apiMethod, $methodParams = array(), $authToken = '', $reqID = 0) { $reqResult = ''; $reqParams = (is_array($methodParams)) ? json_encode($methodParams) : $methodParams; $authToken = (empty($authToken)) ? $this->authToken : $authToken; $requestJSON = '{ "jsonrpc": "2.0", "method": "' . $apiMethod . '", "params": ' . $reqParams . ', "auth": "' . $authToken . '", "id": ' . $reqID . ' }'; $curl = curl_init(); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_URL, $this->apiHostURL); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json-rpc; charset=utf-8", "Cache-Control: no-cache")); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $requestJSON); $curlResult = curl_exec($curl); curl_close($curl); if (!empty($curlResult)) { $reqResult = $curlResult; } return ($reqResult); } /** * Auth token getter * * @return string */ public function getAuthToken() { return ($this->authToken); } } |