aboutsummaryrefslogtreecommitdiff
path: root/src/wan.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/wan.js')
-rw-r--r--src/wan.js117
1 files changed, 115 insertions, 2 deletions
diff --git a/src/wan.js b/src/wan.js
index 0605ee7..675ef18 100644
--- a/src/wan.js
+++ b/src/wan.js
@@ -10,6 +10,23 @@ let credentialsPasswordEl;
let credentialsSubmitEl;
let credentialsStatusEl;
+let dhcpv6TimestampEl;
+let dhcpv6SrvAddrEl;
+let dhcpv6SrvIdEl;
+let dhcpv6T1El;
+let dhcpv6T2El;
+let dhcpv6PrefixEl;
+let dhcpv6WanAddrEl;
+let dhcpv6PrefLftEl;
+let dhcpv6ValidLftEl;
+let dhcpv6Dns1El;
+let dhcpv6Dns2El;
+let dhcpv6AftrEl;
+
+let dhcpv6DuidEl;
+let dhcpv6SubmitEl;
+let dhcpv6StatusEl;
+
async function refreshConnectionStatus() {
const connectionStatus = await invoke("connection_status", {});
@@ -104,13 +121,77 @@ async function changeCredentials() {
}
}
-window.addEventListener("DOMContentLoaded", () => {
- refreshConnectionStatus();
+async function refreshDhcpv6Status() {
+ const dhcpv6Status = await invoke("dhcpv6_status", {});
+
+ dhcpv6TimestampEl.innerText = dhcpv6Status.timestamp;
+ dhcpv6SrvAddrEl.innerText = dhcpv6Status.srvaddr;
+ dhcpv6SrvIdEl.innerText = dhcpv6Status.srvid;
+ dhcpv6T1El.innerText = dhcpv6Status.t1;
+ dhcpv6T2El.innerText = dhcpv6Status.t2;
+ dhcpv6PrefixEl.innerText = dhcpv6Status.prefix;
+ dhcpv6WanAddrEl.innerText = dhcpv6Status.wanaddr;
+ dhcpv6PrefLftEl.innerText = dhcpv6Status.preflft;
+ dhcpv6ValidLftEl.innerText = dhcpv6Status.validlft;
+ dhcpv6Dns1El.innerText = dhcpv6Status.dns1;
+ dhcpv6Dns2El.innerText = dhcpv6Status.dns2;
+ dhcpv6AftrEl.innerText = dhcpv6Status.aftr;
+}
+
+async function loadDuid() {
+ dhcpv6StatusEl.innerText = "Lade aktuellen Client-DUID...";
+ document.body.style.cursor = "progress";
+
+ const currentDuid = await invoke("load_duid", {});
+
+ dhcpv6DuidEl.value = currentDuid.duid;
+ dhcpv6StatusEl.innerText = currentDuid.status_text;
+ document.body.style.cursor = "default";
+}
+
+async function changeDuid() {
+ dhcpv6DuidEl.disabled = true;
+ dhcpv6SubmitEl.disabled = true;
+ dhcpv6StatusEl.innerText = "Änderungsanfrage...";
+ document.body.style.cursor = "progress";
+
+ const statusText = await invoke("change_duid", { duid: dhcpv6DuidEl.value });
+
+ dhcpv6DuidEl.disabled = false;
+ dhcpv6SubmitEl.disabled = false;
+ dhcpv6StatusEl.innerText = statusText;
+ document.body.style.cursor = "default";
+
+ if (statusText === "Änderung erfolgreich") {
+ const apply = await ask("Zum Übernehmen des neuen Client-DUID muss der DHCPv6-Client neu gestartet werden. Dies dauert ca. 30 Sekunden, sollte die Internetverbindung aber nicht unterbrechen. Dabei wird eine Verlängerung mit Serversuche durchgeführt. Möchten Sie den DHCPv6-Client jetzt neu starten?", {
+ kind: "info",
+ title: "DHCPv6-Client-Neustart erforderlich",
+ });
+
+ if (apply) {
+ await killDhcpv6();
+ }
+ }
+}
+
+async function killDhcpv6() {
+ const error = await invoke("kill", { process: "rsdsl_dhcp6", signal: "term" });
+ if (error !== "") {
+ await message("Befehl konnte nicht erteilt werden: " + error, {
+ kind: "error",
+ title: "DHCPv6-Client-Neustart nicht erfolgt",
+ });
+ }
+}
+
+window.addEventListener("DOMContentLoaded", () => {
connectionStatusEl = document.querySelector("#connection-status");
connectionIpv4El = document.querySelector("#connection-ipv4");
connectionIpv6El = document.querySelector("#connection-ipv6");
+ refreshConnectionStatus();
+
document.querySelector("#connection-warm-reconnect").addEventListener("click", (e) => {
e.preventDefault();
warmReconnect();
@@ -140,6 +221,38 @@ window.addEventListener("DOMContentLoaded", () => {
});
loadCredentials();
+
+ dhcpv6TimestampEl = document.querySelector("#dhcpv6-timestamp");
+ dhcpv6SrvAddrEl = document.querySelector("#dhcpv6-srvaddr");
+ dhcpv6SrvIdEl = document.querySelector("#dhcpv6-srvid");
+ dhcpv6T1El = document.querySelector("#dhcpv6-t1");
+ dhcpv6T2El = document.querySelector("#dhcpv6-t2");
+ dhcpv6PrefixEl = document.querySelector("#dhcpv6-prefix");
+ dhcpv6WanAddrEl = document.querySelector("#dhcpv6-wanaddr");
+ dhcpv6PrefLftEl = document.querySelector("#dhcpv6-preflft");
+ dhcpv6ValidLftEl = document.querySelector("#dhcpv6-validlft");
+ dhcpv6Dns1El = document.querySelector("#dhcpv6-dns1");
+ dhcpv6Dns2El = document.querySelector("#dhcpv6-dns2");
+ dhcpv6AftrEl = document.querySelector("#dhcpv6-aftr");
+
+ refreshDhcpv6Status();
+
+ document.querySelector("#dhcpv6-kill").addEventListener("click", (e) => {
+ e.preventDefault();
+ killDhcpv6();
+ });
+
+ dhcpv6DuidEl = document.querySelector("#dhcpv6-duid");
+ dhcpv6SubmitEl = document.querySelector("#dhcpv6-submit");
+ dhcpv6StatusEl = document.querySelector("#dhcpv6-status");
+
+ document.querySelector("#dhcpv6-form").addEventListener("submit", (e) => {
+ e.preventDefault();
+ changeDuid();
+ });
+
+ loadDuid();
});
setInterval(refreshConnectionStatus, 3000);
+setInterval(refreshDhcpv6Status, 3000);