diff options
author | Himbeer <himbeer@disroot.org> | 2024-08-07 22:27:30 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-08-07 22:27:30 +0200 |
commit | e13d241403f0b79566188acdbba26716228b6686 (patch) | |
tree | 32d47202bf727ce0292f9668b9fea73d9700dd98 | |
parent | 8745f58ca6e32b131e5179ed0bca01a8e984fbc8 (diff) |
Finish log page
This is the first release of the software.
-rw-r--r-- | src-tauri/src/main.rs | 52 | ||||
-rw-r--r-- | src/log.html | 172 | ||||
-rw-r--r-- | src/log.js | 136 |
3 files changed, 293 insertions, 67 deletions
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index ed6ba2a..61ec7a0 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -1225,6 +1225,55 @@ fn handle_shutdown_response(response: Response) -> String { } } +#[tauri::command] +async fn log_read(logfile: String, state: State<'_, Mutex<Session>>) -> Result<String, ()> { + let (client, instance) = { + let state = state.lock().unwrap(); + (state.client.clone(), state.instance.clone()) + }; + let instance = match instance { + Some(instance) => instance, + None => { + return Ok(String::from( + "Keine Instanz ausgewählt, bitte melden Sie sich neu an!", + )) + } + }; + + let response = client + .get(instance.url.join("/data/read").unwrap()) + .query(&[("path", format!("/tmp/{}", logfile))]) + .basic_auth("rustkrazy", Some(&instance.password)) + .send(); + + Ok(match response.await { + Ok(response) => handle_log_read_response(response).await, + Err(e) => format!("Abfrage fehlgeschlagen: {}", e), + }) +} + +async fn handle_log_read_response(response: Response) -> String { + let status = response.status(); + if status.is_success() { + match response.text().await { + Ok(logs) => logs, + Err(e) => format!("Keinen Text vom Server erhalten. Fehler: {}", e), + } + } else if status == StatusCode::UNAUTHORIZED { + String::from("Ungültiges Verwaltungspasswort, bitte melden Sie sich neu an!") + } else if status == StatusCode::NOT_FOUND { + String::from( + "Protokolldatei existiert nicht, möglicherweise ist der Dienst noch nicht gestartet", + ) + } else if status.is_client_error() { + format!("Clientseitiger Fehler: {}", status) + } else if status.is_server_error() { + format!("Serverseitiger Fehler: {}", status) + } else { + format!("Unerwarteter Statuscode: {}", status) + } +} + fn main() { tauri::Builder::default() .manage(Mutex::new(Session { @@ -1250,7 +1299,8 @@ fn main() { delete, change_sys_password, reboot, - shutdown + shutdown, + log_read ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); diff --git a/src/log.html b/src/log.html index 56f8c2e..6ef20f1 100644 --- a/src/log.html +++ b/src/log.html @@ -6,6 +6,7 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Diagnoseprotokolle - RSDSL Verwaltungswerkzeug</title> <script type="module" src="/dashboard.js" defer></script> + <script type="module" src="/log.js" defer></script> </head> <body> @@ -53,25 +54,73 @@ Internetnutzung), da die anderen Dienste deutlich langsamer Protokollnachrichten anhäufen.</p> - <p><b>Aufgrund der potentiellen großen Datenmenge werden die Protokolle + <!-- <p><b>Aufgrund der potentiellen großen Datenmenge werden die Protokolle des DNS-Forwarders nicht in Echtzeit aktualisiert. Klicken Sie hierzu manuell auf den Menüpunkt "Diagnoseprotokolle" in der oberen - Navigationsleiste.</b></p> + Navigationsleiste oder nutzen Sie den Knopf "Aktualisieren" bei den + DNS-Protokollen.</b></p> --> + + <p>Aufgrund ihrer Größe sind die Protokolle des DNS-Forwarders hier nicht + abrufbar. Verwenden Sie hierzu bitte direkt die HTTPS-API (nur technisch + versierte Nutzer).</p> + + <p>Information: Sämtliche Zeitstempel sind in UTC angegeben. Zur + Winterzeit muss 1 Stunde, zur Sommerzeit 2 Stunden addiert werden, um die + Zeit in MEZ bzw. MESZ zu erhalten.</p> + + <p>Information: Das obere Textfeld ist jeweils die Hauptausgabe und das + untere Textfeld die Fehlerausgabe, die auch bei vollständigen Abstürzen + zum Einsatz kommt.</p> <p>Zu Protokollen des folgenden Dienstes springen (blaue Links sind anklickbar):</p> - <a class="row" href="#log-admind">Verwaltungsschnittstelle</a> - <a class="row" href="#log-netlinkd">Netzwerkschnittstellenkonfigurator</a> - <a class="row" href="#log-netfilterd">Firewall</a> - <a class="row" href="#log-dhcp4d">DHCPv4-Server (private IPv4-Adressvergabe)</a> - <a class="row" href="#log-pppoe3">PPPoE-Einwähler</a> - <a class="row" href="#log-dhcp6">DHCPv6-Client</a> - <a class="row" href="#log-dnsd">DNS-Forwarder</a> - <a class="row" href="#log-dslite">DS-Lite-Tunnelkonfigurator</a> - <a class="row" href="#log-ntp">Zeitsynchronisations- und Speicherungsdienst (NTP-Client)</a> - <a class="row" href="#log-radvd">SLAAC-Server (IPv6-Adressvergabe)</a> - <a class="row" href="#log-netdumpd">Paketmitschnittdienst</a> - <a class="row" href="#log-dyndns">IPv6-Präfixfähiger DynDNS-Updater für INWX</a> + <div class="row"> + <a href="#log-admind">Verwaltungsschnittstelle</a> + </div> + + <div class="row"> + <a href="#log-netlinkd">Netzwerkschnittstellenkonfigurator</a> + </div> + + <div class="row"> + <a href="#log-netfilterd">Firewall</a> + </div> + + <div class="row"> + <a href="#log-dhcp4d">DHCPv4-Server (private IPv4-Adressvergabe)</a> + </div> + + <div class="row"> + <a href="#log-pppoe3">PPPoE-Einwähler</a> + </div> + + <div class="row"> + <a href="#log-dhcp6">DHCPv6-Client</a> + </div> + + <!-- <div class="row"> + <a href="#log-dnsd">DNS-Forwarder</a> + </div> --> + + <div class="row"> + <a href="#log-dslite">DS-Lite-Tunnelkonfigurator</a> + </div> + + <div class="row"> + <a href="#log-ntp">Zeitsynchronisations- und Speicherungsdienst (NTP-Client)</a> + </div> + + <div class="row"> + <a href="#log-radvd">SLAAC-Server (IPv6-Adressvergabe)</a> + </div> + + <div class="row"> + <a href="#log-netdumpd">Paketmitschnittdienst</a> + </div> + + <div class="row"> + <a href="#log-dyndns">IPv6-Präfixfähiger DynDNS-Updater für INWX</a> + </div> <br /> @@ -80,6 +129,101 @@ <textarea id="log-admind-stdout" rows="20" cols="160"></textarea> <textarea id="log-admind-stderr" rows="20" cols="160"></textarea> </fieldset> + + <br /> + + <fieldset id="log-netlinkd"> + <legend>Netzwerkschnittstellenkonfigurator</legend> + <textarea id="log-netlinkd-stdout" rows="20" cols="160"></textarea> + <textarea id="log-netlinkd-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> + + <fieldset id="log-netfilterd"> + <legend>Firewall</legend> + <textarea id="log-netfilterd-stdout" rows="20" cols="160"></textarea> + <textarea id="log-netfilterd-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> + + <fieldset id="log-dhcp4d"> + <legend>DHCPv4-Server (private IPv4-Adressvergabe)</legend> + <textarea id="log-dhcp4d-stdout" rows="20" cols="160"></textarea> + <textarea id="log-dhcp4d-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> + + <fieldset id="log-pppoe3"> + <legend>PPPoE-Einwähler</legend> + <textarea id="log-pppoe3-stdout" rows="20" cols="160"></textarea> + <textarea id="log-pppoe3-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> + + <fieldset id="log-dhcp6"> + <legend>DHCPv6-Client</legend> + <textarea id="log-dhcp6-stdout" rows="20" cols="160"></textarea> + <textarea id="log-dhcp6-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> + + <!-- <fieldset id="log-dnsd"> + <legend>DNS-Forwarder</legend> + + <div class="row"> + <button id="log-dnsd-refresh">🔄 Aktualisieren</button> + </div> + + <br /> + + <textarea id="log-dnsd-stdout" rows="20" cols="160"></textarea> + <textarea id="log-dnsd-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> --> + + <fieldset id="log-dslite"> + <legend>DS-Lite-Tunnelkonfigurator</legend> + <textarea id="log-dslite-stdout" rows="20" cols="160"></textarea> + <textarea id="log-dslite-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> + + <fieldset id="log-ntp"> + <legend>Zeitsynchronisations- und Speicherungsdienst (NTP-Client)</legend> + <textarea id="log-ntp-stdout" rows="20" cols="160"></textarea> + <textarea id="log-ntp-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> + + <fieldset id="log-radvd"> + <legend>SLAAC-Server (IPv6-Adressvergabe)</legend> + <textarea id="log-radvd-stdout" rows="20" cols="160"></textarea> + <textarea id="log-radvd-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> + + <fieldset id="log-netdumpd"> + <legend>Paketmitschnittdienst</legend> + <textarea id="log-netdumpd-stdout" rows="20" cols="160"></textarea> + <textarea id="log-netdumpd-stderr" rows="20" cols="160"></textarea> + </fieldset> + + <br /> + + <fieldset id="log-dyndns"> + <legend>IPv6-Präfixfähiger DynDNS-Updater für INWX</legend> + <textarea id="log-dyndns-stdout" rows="20" cols="160"></textarea> + <textarea id="log-dyndns-stderr" rows="20" cols="160"></textarea> + </fieldset> </div> </body> </html> @@ -1,62 +1,94 @@ const { invoke } = window.__TAURI__.tauri; -function dashboard() { - window.location = "dashboard.html"; -} - -function wanOpen() { - window.location = "wan.html"; -} - -function lanOpen() { - window.location = "lan.html"; -} +let logAdmindStdoutEl; +let logAdmindStderrEl; +let logNetlinkdStdoutEl; +let logNetlinkdStderrEl; +let logNetfilterdStdoutEl; +let logNetfilterdStderrEl; +let logDhcp4dStdoutEl; +let logDhcp4dStderrEl; +let logPppoe3StdoutEl; +let logPppoe3StderrEl; +let logDhcp6StdoutEl; +let logDhcp6StderrEl; +let logDnsdStdoutEl; +let logDnsdStderrEl; +let logDsliteStdoutEl; +let logDsliteStderrEl; +let logNtpStdoutEl; +let logNtpStderrEl; +let logRadvdStdoutEl; +let logRadvdStderrEl; +let logNetdumpdStdoutEl; +let logNetdumpdStderrEl; +let logDyndnsStdoutEl; +let logDyndnsStderrEl; -function ddnsOpen() { - window.location = "ddns.html"; +async function logRead(logfile) { + return await invoke("log_read", { logfile: logfile }); } -function logOpen() { - window.location = "log.html"; +async function loadNonDns() { + logAdmindStdoutEl.value = await logRead("rustkrazy_admind.log"); + logAdmindStderrEl.value = await logRead("rustkrazy_admind.err"); + logNetlinkdStdoutEl.value = await logRead("rsdsl_netlinkd.log"); + logNetlinkdStderrEl.value = await logRead("rsdsl_netlinkd.err"); + logNetfilterdStdoutEl.value = await logRead("rsdsl_netfilterd.log"); + logNetfilterdStderrEl.value = await logRead("rsdsl_netfilterd.err"); + logDhcp4dStdoutEl.value = await logRead("rsdsl_dhcp4d.log"); + logDhcp4dStderrEl.value = await logRead("rsdsl_dhcp4d.err"); + logPppoe3StdoutEl.value = await logRead("rsdsl_pppoe3.log"); + logPppoe3StderrEl.value = await logRead("rsdsl_pppoe3.err"); + logDhcp6StdoutEl.value = await logRead("rsdsl_dhcp6.log"); + logDhcp6StderrEl.value = await logRead("rsdsl_dhcp6.err"); + logDsliteStdoutEl.value = await logRead("rsdsl_dslite.log"); + logDsliteStderrEl.value = await logRead("rsdsl_dslite.err"); + logNtpStdoutEl.value = await logRead("rsdsl_ntp.log"); + logNtpStderrEl.value = await logRead("rsdsl_ntp.err"); + logRadvdStdoutEl.value = await logRead("rsdsl_radvd.log"); + logRadvdStderrEl.value = await logRead("rsdsl_radvd.err"); + logNetdumpdStdoutEl.value = await logRead("rsdsl_netdumpd.log"); + logNetdumpdStderrEl.value = await logRead("rsdsl_netdumpd.err"); + logDyndnsStdoutEl.value = await logRead("dyndns.log"); + logDyndnsStderrEl.value = await logRead("dyndns.err"); } -function sysOpen() { - window.location = "sys.html"; -} +window.addEventListener("DOMContentLoaded", async function() { + logAdmindStdoutEl = document.querySelector("#log-admind-stdout"); + logAdmindStderrEl = document.querySelector("#log-admind-stderr"); + logNetlinkdStdoutEl = document.querySelector("#log-netlinkd-stdout"); + logNetlinkdStderrEl = document.querySelector("#log-netlinkd-stderr"); + logNetfilterdStdoutEl = document.querySelector("#log-netfilterd-stdout"); + logNetfilterdStderrEl = document.querySelector("#log-netfilterd-stderr"); + logDhcp4dStdoutEl = document.querySelector("#log-dhcp4d-stdout"); + logDhcp4dStderrEl = document.querySelector("#log-dhcp4d-stderr"); + logPppoe3StdoutEl = document.querySelector("#log-pppoe3-stdout"); + logPppoe3StderrEl = document.querySelector("#log-pppoe3-stderr"); + logDhcp6StdoutEl = document.querySelector("#log-dhcp6-stdout"); + logDhcp6StderrEl = document.querySelector("#log-dhcp6-stderr"); + logDnsdStdoutEl = document.querySelector("#log-dnsd-stdout"); + logDnsdStderrEl = document.querySelector("#log-dnsd-stderr"); + logDsliteStdoutEl = document.querySelector("#log-dslite-stdout"); + logDsliteStderrEl = document.querySelector("#log-dslite-stderr"); + logNtpStdoutEl = document.querySelector("#log-ntp-stdout"); + logNtpStderrEl = document.querySelector("#log-ntp-stderr"); + logRadvdStdoutEl = document.querySelector("#log-radvd-stdout"); + logRadvdStderrEl = document.querySelector("#log-radvd-stderr"); + logNetdumpdStdoutEl = document.querySelector("#log-netdumpd-stdout"); + logNetdumpdStderrEl = document.querySelector("#log-netdumpd-stderr"); + logDyndnsStdoutEl = document.querySelector("#log-dyndns-stdout"); + logDyndnsStderrEl = document.querySelector("#log-dyndns-stderr"); -async function disconnect() { - // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command - await invoke("disconnect", {}); - window.location = "index.html"; -} + loadNonDns(); + // logDnsdStdoutEl.value = await logRead("rsdsl_dnsd.log"); + // logDnsdStderrEl.value = await logRead("rsdsl_dnsd.err"); -window.addEventListener("DOMContentLoaded", () => { - document.querySelector("#dashboard-form").addEventListener("submit", (e) => { - e.preventDefault(); - dashboard(); - }); - document.querySelector("#wan-open-form").addEventListener("submit", (e) => { - e.preventDefault(); - wanOpen(); - }); - document.querySelector("#lan-open-form").addEventListener("submit", (e) => { - e.preventDefault(); - lanOpen(); - }); - document.querySelector("#ddns-open-form").addEventListener("submit", (e) => { - e.preventDefault(); - ddnsOpen(); - }); - document.querySelector("#log-open-form").addEventListener("submit", (e) => { - e.preventDefault(); - logOpen(); - }); - document.querySelector("#sys-open-form").addEventListener("submit", (e) => { - e.preventDefault(); - sysOpen(); - }); - document.querySelector("#disconnect-form").addEventListener("submit", (e) => { - e.preventDefault(); - disconnect(); - }); + // document.querySelector("#log-dnsd-refresh").addEventListener("click", async function(e) { + // e.preventDefault(); + // logDnsdStdoutEl.value = await logRead("rsdsl_dnsd.log"); + // logDnsdStderrEl.value = await logRead("rsdsl_dnsd.err"); + // }); }); + +setInterval(loadNonDns, 5000); |