diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/wan.html | 38 | ||||
-rw-r--r-- | src/wan.js | 54 |
2 files changed, 87 insertions, 5 deletions
diff --git a/src/wan.html b/src/wan.html index 5f88050..ed86438 100644 --- a/src/wan.html +++ b/src/wan.html @@ -45,6 +45,42 @@ <br /> + <form id="connection-form"> + <fieldset> + <legend>Einwahl</legend> + + <div class="row"> + <button id="connection-warm-reconnect">Verbindungsparameter neu synchronisieren</button> + <button id="connection-cold-reconnect">Neu einwählen</button> + <button id="connection-force-reconnect">Neueinwahl erzwingen</button> + </div> + + <p>Information: Eine Neueinwahl dauert ca. 30 Sekunden und übernimmt + Änderungen an den Zugangsdaten. Während diesem Zeitraum besteht keine + Verbindung zum Internetanbieter. Eine Neusynchronisation der + Verbindungsparameter dauert meist ca. 3 Sekunden oder weniger, + übernimmt aber keine Änderungen an den Zugangsdaten und kann bei der + Umstellung zwischen dynamischer und statischer Adressierung oder + zwischen IPv4 und IPv6 hilfreich sein. Beide Vorgänge führen in der + Regel zu einem Wechsel der öffentlichen IPv4-Adresse (ggf. mehrmals + wiederholen) und in selteneren Fällen auch zu einem Wechsel des + IPv6-Präfixes, falls die Einwahl erst nach über eine Stunde + erfolgreich ist.</p> + + <p>In einigen Fällen kann die Software einfrieren, insbesondere nach + schnell aufeinander folgenden Verbindungsabbrüchen durch äußere + Einflüsse. Meist genügt es, nur den Einwahldienst anstelle des ganzen + Gerätes neu zu starten. Die Auswirkungen sind die gleichen wie bei + einer Neueinwahl, allerdings wird nicht auf das Beenden der aktuellen + Einwahl gewartet und ein Neustart des Einwahldienstes erzwungen. Wird + diese Operation bei funktionierender Internetverbindung genutzt, kann + es über 1 Minute dauern, bis der Anbieter die Einwahl wieder zulässt. + Das gleiche gilt für Neustarts mittels Stromkabel.</p> + </fieldset> + </form> + + <br /> + <form id="credentials-form"> <fieldset> <legend>PPPoE-Zugangsdaten</legend> @@ -62,7 +98,7 @@ </div> <br /> <div class="row"> - <button id="credentials-show" type="default">🔒Passwort ein-/ausblenden</button> + <button id="credentials-show">🔒Passwort ein-/ausblenden</button> </div> <br /> @@ -1,11 +1,44 @@ const { invoke } = window.__TAURI__.tauri; -const { ask } = window.__TAURI__.dialog; +const { ask, message } = window.__TAURI__.dialog; let credentialsUsernameEl; let credentialsPasswordEl; let credentialsSubmitEl; let credentialsStatusEl; +async function warmReconnect() { + const error = await invoke("kill", { process: "rsdsl_pppoe3", signal: "hup" }); + + if (error !== "") { + await message("Befehl konnte nicht erteilt werden: " + error, { + kind: "error", + title: "Neusynchronisation nicht erfolgt" + }); + } +} + +async function coldReconnect() { + const error = await invoke("kill", { process: "rsdsl_pppoe3", signal: "term" }); + + if (error !== "") { + await message("Befehl konnte nicht erteilt werden: " + error, { + kind: "error", + title: "Neueinwahl nicht erfolgt" + }); + } +} + +async function forceReconnect() { + const error = await invoke("kill", { process: "rsdsl_pppoe3", signal: "kill" }); + + if (error !== "") { + await message("Befehl konnte nicht erteilt werden: " + error, { + kind: "error", + title: "Neueinwahl nicht erfolgt" + }); + } +} + function showCredentials() { switch (credentialsPasswordEl.type) { case "password": @@ -50,16 +83,29 @@ async function changeCredentials() { document.body.style.cursor = "default"; const reconnect = await ask("Zum Übernehmen der neuen Zugangsdaten muss die Einwahl zum Internetanbieter neu aufgebaut werden. Dies dauert ca. 30 Sekunden. Möchten Sie die Einwahl jetzt neu herstellen?", { - kind: "warning", - title: "Neueinwahl erforderlich", + kind: "info", + title: "Neueinwahl erforderlich" }); if (reconnect) { - await wanColdReconnect(); + await coldReconnect(); } } window.addEventListener("DOMContentLoaded", () => { + document.querySelector("#connection-warm-reconnect").addEventListener("click", (e) => { + e.preventDefault(); + warmReconnect(); + }); + document.querySelector("#connection-cold-reconnect").addEventListener("click", (e) => { + e.preventDefault(); + coldReconnect(); + }); + document.querySelector("#connection-force-reconnect").addEventListener("click", (e) => { + e.preventDefault(); + forceReconnect(); + }); + credentialsUsernameEl = document.querySelector("#credentials-username"); credentialsPasswordEl = document.querySelector("#credentials-password"); credentialsSubmitEl = document.querySelector("#credentials-submit"); |