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
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>
|