blob: 76f9ca35809001c5c1c61ccb203fd8347baebc66 (
plain) (
tree)
|
|
<h1>{{lang_dnbd3Management}}</h1>
<p><i>{{lang_dnbd3IntroText}}</i></p>
<form method="post">
<input type="hidden" name="token" value="{{token}}">
<h2>
{{lang_serverList}}
<button type="submit" class="btn btn-default" name="action" value="refresh"><span class="glyphicon glyphicon-refresh"></span></button>
</h2>
</form>
<form method="post" action="?do=dnbd3">
<input type="hidden" name="token" value="{{token}}">
<input type="hidden" name="action" value="delserver">
<table class="table">
<tr>
<th>{{lang_proxyServerTHead}}</th>
<th class="text-right">{{lang_clientCount}}</th>
<th class="text-right">{{lang_lastSeen}}</th>
<th class="text-right">{{lang_uptime}}</th>
<th class="text-right">{{lang_txTotal}}</th>
<th class="text-right">{{lang_rxTotal}}</th>
<th class="text-right">{{lang_locations}}</th>
<th> </th>
</tr>
{{#list}}
<tr>
<td class="{{#self}}slx-bold{{/self}}">
{{#uptime}}
<span class="glyphicon glyphicon-ok text-success"></span>
{{/uptime}}
{{^uptime}}
<span class="glyphicon glyphicon-off"></span>
{{/uptime}}
{{fixedip}}
{{#machineuuid}}
<a href="?do=Statistics&uuid={{machineuuid}}">{{clientip}}</a>
<div class="small">{{hostname}}</div>
{{/machineuuid}}
</td>
<td data-sort="int" data-sort-default="desc" class="text-right">
{{#uptime}}
<a href="?do=dnbd3&show=clients&server={{serverid}}">{{clientcount}}</a>
{{/uptime}}
{{^uptime}}
-
{{/uptime}}
</td>
<td data-sort="int" data-sort-default="desc" data-sort-value="{{lastseen}}" class="text-right text-nowrap">
{{lastseen_s}}
</td>
<td data-sort="int" data-sort-default="desc" data-sort-value="{{uptime}}" class="text-right text-nowrap">
{{uptime_s}}
</td>
<td data-sort="int" data-sort-default="desc" data-sort-value="{{totalup}}" class="text-right text-nowrap">
{{totalup_s}}
</td>
<td data-sort="int" data-sort-default="desc" data-sort-value="{{totaldown}}" class="text-right text-nowrap">
{{totaldown_s}}
</td>
<td class="text-right text-nowrap">
{{^self}}
{{^locations}}
<i>{{lang_global}}</i>
{{/locations}}
{{#locations}}
{{locations}}
{{/locations}}
<a href="?do=dnbd3&show=locations&server={{serverid}}" class="btn btn-default btn-xs">
<span class="glyphicon glyphicon-map-marker"></span>
</a>
{{/self}}
</td>
<td>
{{^self}}
<button class="btn btn-danger btn-xs" name="server" value="{{serverid}}" onclick="return confirm('{{lang_wantToDelete}}')">
<span class="glyphicon glyphicon-trash"></span>
</button>
{{/self}}
</td>
</tr>
{{/list}}
</table>
</form>
<div class="buttonbar pull-right">
<button type="button" class="btn btn-success" data-toggle="modal" data-target="#add-modal">
<span class="glyphicon glyphicon-plus"></span>
{{lang_addExternalServer}}
</button>
<a class="btn btn-success" href="?do=runmode&module=dnbd3&modeid=proxy&redirect=?do=dnbd3">
<span class="glyphicon glyphicon-plus"></span>
{{lang_addManagedProxy}}
</a>
</div>
<div id="add-modal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title"><b>{{lang_addServer}}</b></h4>
</div>
<div class="modal-body">
<p>{{lang_enterIpOfServer}}</p>
<form id="addform" method="post" action="?do=dnbd3">
<input type="hidden" name="token" value="{{token}}">
<input type="text" class="form-control" name="newip" id="newip">
<br>
<div class="buttonbar pull-right">
<button id="testbtn" type="submit" class="btn btn-warning">
<span class="glyphicon glyphicon-question-sign"></span>
{{lang_test}}
</button>
<button id="savebtn" type="submit" class="btn btn-success" name="action" value="addserver" disabled>
<span class="glyphicon glyphicon-floppy-disk"></span>
{{lang_save}}
</button>
</div>
</form>
<div id="addtest" class="text-danger"></div>
<div class="clearfix"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
<script type="application/javascript"><!--
document.addEventListener('DOMContentLoaded', function () {
var slxWorking = false;
const $form = $('#addform');
const $inputs = $form.find(':input');
const $result =$('#addtest');
const $ip = $('#newip');
const $save = $('#savebtn');
const changeFunc = function() {
$save.prop('disabled', true);
};
$ip.change(changeFunc).keypress(changeFunc);
$form.submit(function (event) {
if (!$save.prop('disabled')) return;
event.preventDefault();
runTest();
});
$('#testbtn').click(function (event) {
event.preventDefault();
runTest();
});
function runTest() {
if (slxWorking === false) {
var ip = $ip.val();
var form = $('#addform');
slxWorking = Math.random();
var workCopy = slxWorking;
$inputs.prop('disabled', true);
$result.empty().removeClass('text-danger').text('...working...');
var resetFunc = function(ok) {
if (slxWorking === workCopy) {
slxWorking = false;
$inputs.prop('disabled', false);
if (!ok) $result.empty().addClass('text-danger').text('Timeout.');
}
};
setTimeout(resetFunc, 3000);
$.post('?do=dnbd3', {action:'servertest', ip:ip, token:TOKEN}, function (data) {
if (workCopy !== slxWorking) return;
resetFunc(true);
if (!data || data.fatal) {
$save.prop('disabled', true);
}
if (data && data.error) {
$result.empty().addClass('text-danger').text(data.error);
} else {
$result.empty().removeClass('text-danger').text('OK, Uptime: ' + data.uptime + ', Clients: ' + data.clientCount);
}
}, 'json').fail(function(oh, what) {
resetFunc(true);
console.log(what);
$result.empty().addClass('text-danger').text('Fail ' + what);
});
}
}
});
//--></script>
|