sshmon/views/pages/index.ejs

85 lines
4.0 KiB
Plaintext
Raw Normal View History

2022-08-18 06:31:00 +00:00
<html>
<head>
<script>
const addresses = ["<%- addresses.join(`", \"`) %>"];
async function addIP() {
const addrElement = document.getElementById("addresses");
const ip = document.getElementById("ipaddr").value;
addresses.push("ip")
addrElement.innerHTML += '<div id="' + ip + '_main"><tr><td><input type="button" name="' + ip + '_rem" value="x" onClick="removeIP(\"' + ip + '\")"></td><td><div style="display: inline-block;" id="' + ip + '_addr">' + ip + '</div></td><td><div style="display: inline-block; margin-left: 5em" id="' + ip + '_status"><span style="color:blue;">PINGING...</span></div></td></tr></div>'
const b = document.getElementById(ip + "_status");
await fetch('http://localhost:8080/addIP/' + ip)
window.location.reload(true);
/*await fetch('http://localhost:8080/ping/' + ip)
.then((response) => response.json())
.then((data) => {
b.innerHTML = data.alive ? '<span style="color:green;">UP (' + data.numeric_host + ") " + data.time + 'ms</span>' : '<span style="color:red;">DOWN' + ((data.host == "unknown") ? " (UNKNOWN HOST)" : (" (" + data.numeric_host + ")")) + '</span>'
});*/
}
async function removeIP(ip) {
const tab = document.getElementById("tab");
tab.deleteRow(addresses.indexOf(ip.toString()));
await fetch('http://localhost:8080/removeIP/' + ip)
const a = document.getElementById(ip + "_main");
a.remove();
}
async function aaa() {
const date = new Date();
document.getElementById("main").innerHTML = "Last checked: " + date;
document.getElementById("eta").innerHTML = "Next scheduled check: " + new Date(date.getTime() + <%= timeoutDelay %>);
addresses.forEach(async a => {
const b = document.getElementById(a + "_status");
if(!b) return;
b.innerHTML = '<span style="color:blue;">PINGING...</span>'
await fetch('http://localhost:8080/ping/' + a)
.then((response) => response.json())
.then(async (data) => {
2022-08-22 08:26:04 +00:00
b.innerHTML = data.alive ? '<span style="color:green;">UP (' + data.numeric_host + ") " + data.time + 'ms</span>' : '<span style="color:red;">DOWN' + ((data.host == "unknown") ? " (UNKNOWN HOST)" : (" (" + data.numeric_host + ")")) + " since " + new Date(Number((await (await fetch('http://localhost:8080/downtime/' + a)).json()).downSince)) + '</span>'
2022-08-18 06:31:00 +00:00
});
})
setTimeout(aaa, <%= timeoutDelay %>)
}
2022-08-18 08:57:58 +00:00
window.onload = aaa;
2022-08-18 06:31:00 +00:00
</script>
</head>
<body>
2022-08-18 08:57:58 +00:00
<%- include("../partials/navbar.ejs", { activeLink: "home", username, loggedIn }) %>
2022-08-18 06:31:00 +00:00
<div id="main"></div>
<div id="eta"></div><br />
<input type="text" name="ipaddr" id="ipaddr" value="">
<input type="submit" id="but" name="but" value="Add" onClick="addIP()"><br /><br />
<div id="addresses">
<table id="tab">
<% addresses.forEach(a => { %>
<div id="<%= a %>_main">
<tr>
<td>
<input type="button" name="<%= a %>_rem" value="x" onClick="removeIP('<%= a %>')">
</td><td>
<div style="display: inline-block;" id="<%= a %>_addr"><%= a %></div>
</td><td>
<div style="display: inline-block; margin-left: 5em" id="<%= a %>_status">
<span>WAITING</span>
</div>
</td>
</tr>
</div>
<% }) %>
</table>
</div>
<script>
document.getElementById("ipaddr")
.addEventListener("keyup", function(event) {
event.preventDefault();
if (event.keyCode === 13) document.getElementById("but").click();
});
</script>
</body>
</html>