aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wan.html38
-rw-r--r--src/wan.js54
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 />
diff --git a/src/wan.js b/src/wan.js
index ec73e8d..60ba0b7 100644
--- a/src/wan.js
+++ b/src/wan.js
@@ -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");