You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
4.0 KiB

<?php
/* This tool is not officially supported by Zabbix SIA. */
/* If you would like to improve something, patches welcome. */
?>
<?php
function do_post_request($url, $data){
$header = "Content-type: application/json-rpc\r\n";
$header .= "Content-Length: ".strlen($data)."\r\n";
$header .= "\r\n";
$params = [
'http' => [
'method' => 'post',
'content' => $data,
'header' => $header
]
];
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if(!$fp){
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
fclose($fp);
if($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JSONRPC Zabbix API</title>
</head>
<!-- Dependencies -->
<script src="http://yui.yahooapis.com/2.8.2r1/build/yahoo/yahoo-min.js"></script>
<!-- Source file -->
<script src="http://yui.yahooapis.com/2.8.2r1/build/json/json-min.js"></script>
<script src="http://yandex.st/highlightjs/5.16/highlight.min.js"></script>
<link rel="stylesheet" href="http://yandex.st/highlightjs/5.16/styles/idea.min.css">
<?php
$_REQUEST['path'] = isset($_REQUEST['path']) ? $_REQUEST['path'] : 'trunk';
$user = isset($_REQUEST['user']) ? $_REQUEST['user'] : 'Admin';
$pswd = isset($_REQUEST['pswd']) ? $_REQUEST['pswd'] : 'zabbix';
$url = 'http://'.$_REQUEST['path'].'/api_jsonrpc.php';
?>
<body>
<form method="post">
<label>Path: <input type="text" name="path" value="<?php print($_REQUEST['path']);?>"/></label><br />
<label>User: <input type="text" name="user" value="<?php print($user);?>"/></label><br />
<label>Pass: <input type="password" name="pswd" value="<?php print($pswd); ?>"/></label><br />
<label>Method: <input type="text" name="apimethod" size="40" value="<?php print(isset($_REQUEST['apimethod']) ? $_REQUEST['apimethod'] : '');?>"/></label><br />
Params: <textarea name="apiparams" cols="100" rows="20"><?php print(isset($_REQUEST['apiparams']) ? $_REQUEST['apiparams'] : '');?></textarea><br />
<input type="submit" value="OK" name="apicall" />
<br />
</form>
<?php
if(isset($_REQUEST['apicall'])){
$data = [
'jsonrpc' => '2.0',
'method' => 'user.login',
'params' => ['user'=>$user, 'password'=>$pswd],
'id'=> 1
];
$data = json_encode($data);
$response = do_post_request($url, $data);
$json_decoded = json_decode($response, true);
$auth = $json_decoded['result'];
?>
<span style="font-weight: bolder;">AUTH</span>
<div style="color: darkgreen; border: 2px solid darkblue;">
<div>
<span style="color: blue;">request:</span>
<pre><code class="javascript"><?php print($data); ?></code></pre>
</div>
<div>
<span style="color: blue;">response:</span>
<pre><code class="javascript"><?php print($response); ?></code></pre>
</div>
</div>
<?php
$data = [
'jsonrpc' => '2.0',
'method' => $_REQUEST['apimethod'],
'params' => json_decode($_REQUEST['apiparams'], true),
'auth' => $auth,
'id'=> 2
];
$data = json_encode($data);
$response = do_post_request($url, $data);
?>
<span style="font-weight: bolder;">API call</span>
<div style="color: darkgreen; border: 2px solid darkblue;">
<div>
<span style="color: blue;">request:</span>
<pre><code id="data" class="javascript"><?php print($data); ?></code></pre>
</div>
<div>
<span style="color: blue;">response:</span>
<pre><code id="resp" class="javascript"><?php print($response); ?></code></pre>
</div>
</div>
<script type="text/javascript">
var j = YAHOO.lang.JSON.parse(document.getElementById("resp").innerHTML);
document.getElementById("resp").innerHTML = YAHOO.lang.JSON.stringify(j,function(key, value){return value;}, 4);
var j = YAHOO.lang.JSON.parse(document.getElementById("data").innerHTML);
document.getElementById("data").innerHTML = YAHOO.lang.JSON.stringify(j,function(key, value){return value;}, 4);
hljs.initHighlightingOnLoad();
</script>
<?php
}
?>
</body>
</html>