reasonableframework/helper/zabbix.api.php

80 lines
1.9 KiB
PHP
Raw Normal View History

2019-04-08 00:12:14 +00:00
<?php
2019-04-08 06:52:03 +00:00
/**
* @file zabbix.api.php
* @date 2019-04-08
* @author Go Namhyeon <gnh1201@gmail.com>
* @brief Zabbix JSON-RPC API (3.0) interface module
* @documentation https://www.zabbix.com/documentation/3.0/manual/api
*/
2019-04-08 00:12:14 +00:00
2019-04-08 01:19:23 +00:00
if(!check_function_exists("zabbix_get_base_url")) {
2019-04-08 06:52:03 +00:00
function zabbix_get_api_url($host, $protocol="http") {
return sprintf("%s://%s/zabbix/api_jsonrpc.php", $protocol, $host);
}
2019-04-08 01:19:23 +00:00
}
if(!check_function_exists("zabbix_authenticate")) {
2019-04-08 06:52:03 +00:00
function zabbix_authenticate($host, $username, $password, $protocol="http") {
$response = false;
// get zabbix api url
$zabbix_api_url = zabbix_get_api_url($host, $protocol);
// connect to zabbix server
if(loadHelper("webpagetool")) {
$response = get_web_json($zabbix_api_url, "post", array(
"headers" => array(
"Content-Type" => "application/json-rpc",
),
"data" => array(
"jsonrpc" => "2.0",
"method" => "user.login",
"params" => array(
"user" => $username,
"password" => $password,
),
"id" => 1,
"auth" => null,
),
));
}
// set connection to global scope
set_scope("zabbix_api_url", $zabbix_api_url);
set_scope("zabbix_auth", get_property_value("result", $response));
2019-04-08 01:19:23 +00:00
2019-04-08 06:52:03 +00:00
return $response;
}
}
if(!check_function_exists("zabbix_retrive_hosts")) {
function zabbix_retrive_hosts() {
$response = false;
// get zabbix authentication
$zabbix_api_url = get_scope("zabbix_api_url");
$zabbix_auth = get_scope("zabbix_auth");
// connect to zabbix server
if(loadHelper("webpagetool")) {
$response = get_web_json($zabbix_api_url, array(
"headers" => array(
"Content-Type" => "application/json-rpc",
),
"data" => array(
"jsonprc" => "2.0",
"method" => "host.get",
"params" => array(
"output" => array("hostid", "host"),
"selectInterfaces" => array("interfaceid", "ip"),
),
"id" => 2,
"auth" => $zabbix_auth
),
));
}
return $response;
}
2019-04-08 01:19:23 +00:00
}