mirror of https://github.com/asterisk/asterisk
This patch uses the XML docs to parse all of the available AMI commands and allows you to enter the command name and be presented with a form with the available fields. You can then rapidly tab through the fields and submit the command and view the response. It is much faster/easier than having to use telnet for testing purposes. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@291575 65c4cc65-6c06-0410-ace0-fbb531ad65f3certified/1.8.6
parent
d8225d08b9
commit
e6fb66732f
@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<style type="text/css">
|
||||
#container {
|
||||
margin: 0 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
}
|
||||
#top {
|
||||
float: left;
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
}
|
||||
#bottom {
|
||||
float: left;
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
}
|
||||
#sender {
|
||||
clear: left;
|
||||
float: left;
|
||||
width: 20%;
|
||||
display: inline;
|
||||
overflow: auto;
|
||||
}
|
||||
#output {
|
||||
float: right;
|
||||
width: 79%;
|
||||
display: inline;
|
||||
overflow: auto;
|
||||
border: thin solid black;
|
||||
}
|
||||
.required {
|
||||
color: red;
|
||||
}
|
||||
</style>
|
||||
<title>Manager Utility</title>
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$(document).ready(function() {
|
||||
$('#output').height($(document).height() - $('#top').height() - 100);
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "core-en_US.xml",
|
||||
dataType: "xml",
|
||||
success: parseXml
|
||||
});
|
||||
|
||||
$("#login").submit(function() {
|
||||
$("#output").empty();
|
||||
submitCommand($(this));
|
||||
$("#command").focus();
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#search_button").click(function() {
|
||||
var command = $("#command").val();
|
||||
$("#command").val("");
|
||||
$("#output").empty();
|
||||
if (commands) {
|
||||
commands.each(function() {
|
||||
if ($(this).attr("name").toLowerCase() == command.toLowerCase()) {
|
||||
buildCommandForm($(this));
|
||||
}
|
||||
});
|
||||
}
|
||||
$('#output').height($(document).height() - $('#top').height() - 100);
|
||||
return false;
|
||||
});
|
||||
$('#command').keyup(function(event) {
|
||||
if (event.keyCode == '13') {
|
||||
return;
|
||||
}
|
||||
var matches = [];
|
||||
var search = $("#command").val().toLowerCase();
|
||||
$("#output").empty();
|
||||
if (search.length && commands) {
|
||||
commands.each(function() {
|
||||
var com = $(this).attr("name").toLowerCase();
|
||||
if (com.substr(0, search.length) === search) {
|
||||
matches.push(com);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (matches.length) {
|
||||
$("#output").append(matches.sort().join("<br/>"));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function parseXml(xml) {
|
||||
commands = $(xml).find("manager")
|
||||
}
|
||||
|
||||
function buildCommandForm(command) {
|
||||
var name = command.attr("name");
|
||||
var i = 0;
|
||||
$("#sendcommand").empty();
|
||||
$("#sendcommand").unbind('submit');
|
||||
$("#sendcommand").append('<label>Action: </label><input name="action" readonly="readonly" value="'+name+'"/><br />');
|
||||
command.find("parameter").each(function() {
|
||||
var param = $(this).attr("name");
|
||||
if (param != "ActionID") {
|
||||
$("#sendcommand").append('<label for="'+param+'">'+param+': </label><input name="'+param+'" /><br />');
|
||||
if ($(this).attr("required")) {
|
||||
$('label[for='+param+']').addClass("required");
|
||||
}
|
||||
if (i == 0) {
|
||||
$("input[name="+param+"]").focus();
|
||||
}
|
||||
i++;
|
||||
}
|
||||
});
|
||||
$("#sendcommand").append('<button type="submit" id="commandbutton">Send</button>');
|
||||
$("#sendcommand").submit(function() {
|
||||
$("#output").empty();
|
||||
submitCommand($(this));
|
||||
$("#command").focus();
|
||||
return false;
|
||||
});
|
||||
|
||||
// If we don't have any fields to fill in, go ahead and submit!
|
||||
if (i == 0) {
|
||||
$("#sendcommand").submit();
|
||||
}
|
||||
}
|
||||
|
||||
function submitCommand(form) {
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "../rawman",
|
||||
dataType: "text",
|
||||
data: $(form).serializeArray(),
|
||||
success: displayResponse,
|
||||
failure: function() {alert("Error!");}
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
function displayResponse(data) {
|
||||
data = data.replace(/\r\n/g, "<br />");
|
||||
$("#output").append(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="top">
|
||||
<form id="login" name="login">
|
||||
<label for="username">Username: </label><input id="username" name="username" />
|
||||
<label for="secret">Secret: </label><input id="secret" name="secret" type="password"/>
|
||||
<input type="hidden" name="action" value="login" />
|
||||
<button id="login_button" type="submit">Submit</button>
|
||||
</form>
|
||||
<hr />
|
||||
<form id="search" name="search">
|
||||
<label for="txt">Action: </label><input name="command" id="command"/>
|
||||
<button id="search_button">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
<hr />
|
||||
<div id="bottom">
|
||||
<div id="sender">
|
||||
<form id="sendcommand" name="sendcommand"></form>
|
||||
</div>
|
||||
<div id="output"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in new issue