aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-08-07 22:27:30 +0200
committerHimbeer <himbeer@disroot.org>2024-08-07 22:27:30 +0200
commite13d241403f0b79566188acdbba26716228b6686 (patch)
tree32d47202bf727ce0292f9668b9fea73d9700dd98
parent8745f58ca6e32b131e5179ed0bca01a8e984fbc8 (diff)
Finish log page
This is the first release of the software.
-rw-r--r--src-tauri/src/main.rs52
-rw-r--r--src/log.html172
-rw-r--r--src/log.js136
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>
diff --git a/src/log.js b/src/log.js
index ae1116c..54dcfad 100644
--- a/src/log.js
+++ b/src/log.js
@@ -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);