diff options
Diffstat (limited to 'src-tauri/src/main.rs')
-rw-r--r-- | src-tauri/src/main.rs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 4be2da2..a0c9a33 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -1290,6 +1290,55 @@ async fn handle_log_read_response(response: Response) -> String { } #[tauri::command] +async fn errlog_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!("/data/{}", logfile))]) + .basic_auth("rustkrazy", Some(&instance.password)) + .send(); + + Ok(match response.await { + Ok(response) => handle_errlog_read_response(response).await, + Err(e) => format!("Abfrage fehlgeschlagen: {}", e), + }) +} + +async fn handle_errlog_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) + } +} + +#[tauri::command] async fn vpnclients(state: State<'_, Mutex<Session>>) -> Result<VpnClients, ()> { let (client, instance) = { let state = state.lock().unwrap(); @@ -1639,6 +1688,7 @@ fn main() { reboot, shutdown, log_read, + errlog_read, vpnclients, vpndel, vpnadd |