211 lines
6.2 KiB
HTML
211 lines
6.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
<meta name="format-detection" content="telephone=no" />
|
|
<title>NetgateSwitch</title>
|
|
|
|
|
|
<style>
|
|
html,
|
|
body {
|
|
height: 100%;
|
|
}
|
|
|
|
body {
|
|
display: flex;
|
|
align-items: center;
|
|
background-color: #f5f5f5;
|
|
}
|
|
|
|
.title {
|
|
margin: 1rem 0 0 0;
|
|
font-size: 1.8rem;
|
|
}
|
|
|
|
main {
|
|
width: 100%;
|
|
max-width: 60rem;
|
|
margin: auto;
|
|
text-align: center;
|
|
background-color: #ffffff;
|
|
border-radius: 1rem;
|
|
box-shadow: 0.5rem 0.5rem 1rem rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
.container {
|
|
width: 100%;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
table {
|
|
width: 100%;
|
|
min-width: 20rem;
|
|
}
|
|
|
|
.btn {
|
|
width: 6rem;
|
|
height: 2rem;
|
|
margin: 0.2rem;
|
|
border: none;
|
|
border-radius: 0.5rem;
|
|
background-color: #dfdfdf;
|
|
}
|
|
|
|
.device {
|
|
background-color: #ffff00;
|
|
}
|
|
|
|
.online {
|
|
color: #00ff00;
|
|
}
|
|
|
|
.btn:hover {
|
|
background-color: #b9b9b9;
|
|
}
|
|
|
|
.btn:active {
|
|
background-color: #b9b9b9;
|
|
color: #ffffff;
|
|
box-shadow: 0 3px #666;
|
|
transform: translateY(2px);
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<main>
|
|
<h1 class="title">NetgateSwitch</h1>
|
|
<div class="container">
|
|
<table id="table">
|
|
</table>
|
|
<button class="btn" id="delcfg" style="margin-bottom: 1rem;">删除配置</button>
|
|
</div>
|
|
</main>
|
|
</body>
|
|
|
|
<script>
|
|
document.getElementById("delcfg").addEventListener('click', async () => {
|
|
try {
|
|
let res = await fetch('./core/logout/', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
}, body: {}
|
|
});
|
|
if (!res.ok) {
|
|
alert(await res.text());
|
|
} else {
|
|
window.location.href = "./";
|
|
}
|
|
} catch (err) {
|
|
console.log(err);
|
|
}
|
|
});
|
|
|
|
getDHCPList();
|
|
|
|
async function getDHCPList() {
|
|
try {
|
|
let res = await fetch('./core/get/', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
}, body: {}
|
|
});
|
|
if (!res.ok) {
|
|
alert(await res.text());
|
|
} else {
|
|
showDevices(await res.json());
|
|
}
|
|
} catch (err) {
|
|
console.log(err);
|
|
}
|
|
}
|
|
|
|
function showDevices(list) {
|
|
const tb = document.getElementById('table');
|
|
let trn = document.createElement('tr');
|
|
let td1 = document.createElement('td');
|
|
let td2 = document.createElement('td');
|
|
let td3 = document.createElement('td');
|
|
let td4 = document.createElement('td');
|
|
let btn = document.createElement('button');
|
|
while (tb.firstChild) {
|
|
tb.removeChild(tb.firstChild);
|
|
}
|
|
td1.setAttribute('scope', 'col');
|
|
td1.append('设备名');
|
|
td2.setAttribute('scope', 'col');
|
|
td2.append('IP地址');
|
|
td3.setAttribute('scope', 'col');
|
|
td3.append('MAC地址');
|
|
td4.setAttribute('scope', 'col');
|
|
td4.append('操作');
|
|
trn.append(td1, td2, td3, td4);
|
|
tb.append(trn);
|
|
for (let i in list) {
|
|
trn = document.createElement('tr');
|
|
trn.setAttribute('class', list[i].device === true ? 'device' : '');
|
|
td1 = document.createElement('td');
|
|
td1.setAttribute('class', list[i].status === 'bound' ? 'online' : '');
|
|
td2 = document.createElement('td');
|
|
td3 = document.createElement('td');
|
|
td4 = document.createElement('td');
|
|
btn1 = document.createElement('button');
|
|
btn1.setAttribute('class', 'btn swbtn');
|
|
btn1.setAttribute('cidrgroup', 'main');
|
|
btn1.setAttribute('deviceid', list[i].id);
|
|
btn1.append('切换至Main');
|
|
btn2 = document.createElement('button');
|
|
btn2.setAttribute('class', 'btn swbtn');
|
|
btn2.setAttribute('cidrgroup', 'proxy');
|
|
btn2.setAttribute('deviceid', list[i].id);
|
|
btn2.append('切换至Proxy');
|
|
td1.append(list[i].comment === '' ? list[i].host : list[i].comment);
|
|
td2.append(list[i].address);
|
|
td3.append(list[i].mac);
|
|
td4.append(btn1);
|
|
td4.append(btn2);
|
|
trn.append(td1, td2, td3, td4);
|
|
tb.append(trn);
|
|
}
|
|
bindEvent();
|
|
}
|
|
|
|
function bindEvent() {
|
|
document.querySelectorAll('.swbtn').forEach((button) => {
|
|
button.addEventListener('click', async () => {
|
|
try {
|
|
let res = await fetch('./core/switch/', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
}, body: JSON.stringify({
|
|
id: button.getAttribute('deviceid'),
|
|
group: button.getAttribute('cidrgroup'),
|
|
})
|
|
});
|
|
console.log(button.getAttribute('cidrgroup'));
|
|
|
|
if (!res.ok) {
|
|
alert(await res.text());
|
|
} else {
|
|
alert('切换成功');
|
|
window.location.href = "./";
|
|
}
|
|
} catch (err) {
|
|
console.log(err);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
</script>
|
|
|
|
</html> |