Veröffentlichte Quellen
Quellen als ZIP herunterladen
CH-J Tools
Durchsuchen Sie Verzeichnisse und Dateien einer bestimmten Anwendungsausgabe.
CH-J / Server Manager
872 Dateien
core-20261030T220507Z-61e4558d889f
Hinzugefügt: · Erstellt:
1
//! SSH session commands for the main window (terminal).3
use super::{envelope, main_core, text, CommandResult};4
use crate::core::app::CoreSlot;5
use serde_json::{json, Value};6
use tauri::{State, Webview};8
#[tauri::command]9
pub async fn core_ssh_list(webview: Webview, slot: State<'_, CoreSlot>) -> CommandResult {10
Ok(Value::Array(main_core(&webview, &slot)?.services.sessions.list()))11
}13
#[tauri::command]14
pub async fn core_ssh_connect(webview: Webview, slot: State<'_, CoreSlot>, payload: Option<Value>) -> CommandResult {15
let core = main_core(&webview, &slot)?;16
let payload = super::payload(payload);17
Ok(envelope(core.services.sessions.connect(&payload).await, "SSH_OPERATION_FAILED", None))18
}20
#[tauri::command]21
pub async fn core_ssh_trust_host_key(webview: Webview, slot: State<'_, CoreSlot>, payload: Option<Value>) -> CommandResult {22
let core = main_core(&webview, &slot)?;23
let payload = super::payload(payload);24
Ok(envelope(core.services.sessions.trust_pending(&payload), "SSH_OPERATION_FAILED", None))25
}27
#[tauri::command]28
pub async fn core_ssh_disconnect(webview: Webview, slot: State<'_, CoreSlot>, payload: Option<Value>) -> CommandResult {29
let core = main_core(&webview, &slot)?;30
let payload = super::payload(payload);31
Ok(envelope(Ok(core.services.sessions.disconnect(text(&payload, "sessionId"), "user").await), "SSH_OPERATION_FAILED", None))32
}34
#[tauri::command]35
pub async fn core_ssh_resize(webview: Webview, slot: State<'_, CoreSlot>, payload: Option<Value>) -> CommandResult {36
let core = main_core(&webview, &slot)?;37
let payload = super::payload(payload);38
Ok(envelope(core.services.sessions.resize(text(&payload, "sessionId"), payload.get("cols"), payload.get("rows")), "SSH_OPERATION_FAILED", None))39
}41
/// Synchronous on purpose: Tauri runs sync commands in IPC order, so keystrokes stay ordered.42
#[tauri::command]43
pub fn core_ssh_input(webview: Webview, slot: State<'_, CoreSlot>, payload: Option<Value>) -> CommandResult {44
let core = main_core(&webview, &slot)?;45
let payload = super::payload(payload);46
let data = payload.get("data").map(|d| d.as_str().map(str::to_string).unwrap_or_else(|| if d.is_null() { String::new() } else { d.to_string() })).unwrap_or_default();47
if let Err(error) = core.services.sessions.write(text(&payload, "sessionId"), &data) {48
core.logger.warn("IPC event was rejected.", json!({ "channel": "ssh:input", "message": error.message, "code": error.code }));49
}50
Ok(Value::Null)51
}SHA-256
71f504b50106aec15e0f01d0dc1b5543df6d3f3ba70deb3d49acaba98a9d41ecCH-J Proprietary Software License 1.14 · Die Quellen werden unter der CH-J Proprietary Software License 1.14 bereitgestellt. Ihre Verfügbarkeit ändert die Lizenzbedingungen nicht und gewährt keine zusätzlichen Rechte.
SHA-256 des Archivs
77380d4805485ffa4027fbe7858b5836f197a4aa9d52358a43e2d12d018744df