203 lines
6.4 KiB
HTML
203 lines
6.4 KiB
HTML
{% extends "main.html" %}
|
|
|
|
{% block header %}
|
|
<div class="row mb-2">
|
|
<div class="col-sm-6">
|
|
<h1>{{ page_title | safe }}</h1>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<button class="btn btn-outline-primary float-sm-right mr-4" data-bs-toggle="modal" data-bs-target="#addModal" title="Add Server" aria-hidden="true">
|
|
<i class="fas fa-plus fa-sm fa-fw"></i> Server
|
|
</button>
|
|
</div>
|
|
</div>
|
|
{% endblock header %}
|
|
|
|
{% block content %}
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h3 class="card-title">LXD Servers</h3>
|
|
<div class="card-tools">
|
|
<button type="button" class="btn btn-tool" onclick="reloadPageContent()" title="Refresh">
|
|
<i class="fas fa-sync"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-hover" id="myDataTable" width="100%" cellspacing="0">
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock content %}
|
|
|
|
{% block modal %}
|
|
{% include 'modals/servers.html' %}
|
|
{% endblock modal %}
|
|
|
|
{% block script %}
|
|
<script>
|
|
var reloadTime = 10000;
|
|
|
|
function reloadPageContent() {
|
|
//Clear the automatic page reload
|
|
clearTimeout(pageReloadTimeout);
|
|
|
|
//Reload the datatables content
|
|
$('#myDataTable').DataTable().ajax.reload(null, false);
|
|
|
|
//Set the automatic page reload
|
|
pageReloadTimeout = setTimeout(() => { reloadPageContent(); }, reloadTime);
|
|
}
|
|
|
|
function loadPageContent(){
|
|
|
|
// Configure Datatable
|
|
$('#myDataTable').DataTable({
|
|
ajax: {
|
|
url: "../api/servers/list_servers",
|
|
dataType: "json",
|
|
dataSrc: "data",
|
|
contentType: "application/json",
|
|
error: function (xhr, error, code) {
|
|
console.log(xhr, code);
|
|
}
|
|
},
|
|
columns: [
|
|
{ title: "Name", data: function (row, type, set) {
|
|
if (row.hasOwnProperty('id') && row.hasOwnProperty('name')) {
|
|
if (row.name)
|
|
return '<a href="server?id=' + row.id + '">' + row.name + '</a>'
|
|
return row.name
|
|
}
|
|
return '-'
|
|
},
|
|
},
|
|
{ title: "Addr", data: function (row, type, set) {
|
|
if (row.hasOwnProperty('id') && row.hasOwnProperty('addr')) {
|
|
if (row.addr)
|
|
return row.addr
|
|
}
|
|
return '-'
|
|
},
|
|
},
|
|
{ title: "Port", data: function (row, type, set) {
|
|
if (row.hasOwnProperty('port')) {
|
|
if (row.port)
|
|
return row.port
|
|
}
|
|
return '-'
|
|
},
|
|
},
|
|
{ title: "Proxy", data: function (row, type, set) {
|
|
if (row.hasOwnProperty('proxy')) {
|
|
if (row.proxy)
|
|
return row.proxy
|
|
}
|
|
return '-'
|
|
},
|
|
},
|
|
{ title: "SSL Verify", data: function (row, type, set) {
|
|
if (row.hasOwnProperty('ssl_verify')) {
|
|
return row.ssl_verify
|
|
}
|
|
return '-'
|
|
},
|
|
},
|
|
{ title: "Actions", data: function (row, type, set) {
|
|
links = ''
|
|
if (row.hasOwnProperty('id') && row.hasOwnProperty('addr') && row.hasOwnProperty('port') && row.hasOwnProperty('name')) {
|
|
links = '<a href="#" onclick=editServer(\''+row.id+'\')> <i class="fas fa-edit fa-lg" style="color:#ddd" title="Edit" aria-hidden="true"></i> </a>' +
|
|
' ' +
|
|
'<a href="#" onclick=confirmDeleteServer(\''+row.id+'\',\''+row.addr+'\',\''+row.port+'\',\''+row.name+'\')> <i class="fas fa-trash-alt fa-lg" style="color:#ddd" title="Delete" aria-hidden="true"></i> </a>'
|
|
}
|
|
return links
|
|
|
|
},
|
|
},
|
|
],
|
|
order: [],
|
|
});
|
|
|
|
//Set reload page content
|
|
pageReloadTimeout = setTimeout(() => { reloadPageContent(); }, reloadTime);
|
|
|
|
}
|
|
|
|
function loadInstructionsModal(){
|
|
$("#instructionsModal").modal('show');
|
|
}
|
|
|
|
function addServer(){
|
|
console.log("Info: adding lxd server " + $("#addModalAddrInput").val() + ":" + $("#addModalPortInput").val());
|
|
$.post("../api/servers/add_server", {
|
|
addr: $("#addModalAddrInput").val(),
|
|
port: $("#addModalPortInput").val(),
|
|
proxy: $("#addModalProxyInput").val(),
|
|
ssl_verify: $("#addModalSSLVerifyInput").val()
|
|
}, function (data) {
|
|
console.log(data)
|
|
if (data.error)
|
|
alert(data.error)
|
|
setTimeout(() => { reloadPageContent(); }, 1000);
|
|
});
|
|
}
|
|
|
|
function confirmDeleteServer(id, addr, port, name){
|
|
console.log("Info: confirming removal of lxd server " + name);
|
|
if (confirm("Are you sure you want to remove host " + name + "?") == true) {
|
|
deleteServer(id);
|
|
setTimeout(() => { reloadPageContent(); }, 1000);
|
|
}
|
|
}
|
|
|
|
function deleteServer(id){
|
|
console.log("Info: removing lxd server " + id);
|
|
$.get("../api/servers/remove_server", {
|
|
id: id
|
|
}, function (data) {
|
|
setTimeout(() => { reloadPageContent(); }, 1000);
|
|
});
|
|
}
|
|
|
|
function editServer(id){
|
|
console.log("Info: loading edit server " + id);
|
|
$.get("../api/servers/get_server", {
|
|
id: id,
|
|
}, function (data) {
|
|
console.log(data);
|
|
console.log(data.data[0].addr);
|
|
$("#editModalIdInput").val(data.data[0].id);
|
|
$("#editModalAddrInput").val(data.data[0].addr);
|
|
$("#editModalPortInput").val(data.data[0].port);
|
|
$("#editModalProxyInput").val(data.data[0].proxy);
|
|
$("#editModalSSLVerifyInput").val(data.data[0].ssl_verify.toString());
|
|
$("#editModal").modal('show');
|
|
});
|
|
}
|
|
|
|
function updateServer(){
|
|
console.log("Info: updating server " + $("#editModalIdInput").val());
|
|
$.post("../api/servers/update_server", {
|
|
id: $("#editModalIdInput").val(),
|
|
addr: $("#editModalAddrInput").val(),
|
|
port: $("#editModalPortInput").val(),
|
|
proxy: $("#editModalProxyInput").val(),
|
|
ssl_verify: $("#editModalSSLVerifyInput").val()
|
|
}, function (data) {
|
|
console.log(data)
|
|
setTimeout(() => { reloadPageContent(); }, 1000);
|
|
});
|
|
}
|
|
|
|
$(document).ready(function(){
|
|
|
|
loadPageContent()
|
|
|
|
});
|
|
|
|
</script>
|
|
{% endblock script %}
|
|
|