feat: convert ssh tunnels into a plugin

This commit is contained in:
LukeGus committed 2026-09-23 17:27:28 -05:00
1 parent c85c1fdb86
commit 1682861853
220 files changed
+36928 -11374

No files matched your search

+3 -130
View File
@@ -671,7 +671,6 @@
"home": "Startseite",
"terminal": "Terminal",
"localTerminal": "Lokales Terminal",
"tunnels": "Tunnel",
"fileManager": "Dateimanager",
"serverStats": "Host-Metriken",
"admin": "Admin",
@@ -714,7 +713,6 @@
"macros": "Makros",
"hostManager": "Host-Manager",
"credentials": "Zugangsdaten",
"portForwarding": "Weiterleitung",
"connections": "Verbindungen",
"serial": "Seriell",
"keepSideMenuOpen": "Menü geöffnet lassen",
@@ -765,7 +763,6 @@
"tabTerminal": "Terminal",
"tabRdp": "RDP",
"tabVnc": "VNC",
"tabTunnels": "Tunnel",
"tabStats": "Host-Metriken",
"tabTelnet": "Telnet",
"tabSharing": "Freigabe",
@@ -1071,31 +1068,8 @@
"startupSnippetLabel": "Startup-Snippet",
"keepaliveIntervalLabel": "Keepalive-Intervall (Sekunden)",
"maxKeepaliveMisses": "Max. Keepalive-Fehlschläge",
"tunnelSettings": "Tunnel-Einstellungen",
"enableTunneling": "Tunnel aktivieren",
"enableTunnelingDesc": "SSH-Tunnel-Funktionalität für diesen Host aktivieren",
"serverTunnelsSection": "Server-Tunnel",
"addTunnelBtn": "Tunnel hinzufügen",
"noTunnelsConfigured": "Keine Tunnel konfiguriert.",
"tunnelLabel": "Tunnel {{number}}",
"tunnelType": "Tunneltyp",
"tunnelModeLocalDesc": "Leitet einen lokalen Port an einen Port auf dem Remote-Server (oder einen von dort erreichbaren Host) weiter.",
"tunnelModeRemoteDesc": "Leitet einen Port auf dem Remote-Server zurück zu einem lokalen Port auf Ihrem Rechner weiter.",
"tunnelModeDynamicDesc": "Erstellt einen SOCKS5-Proxy auf einem lokalen Port für dynamische Portweiterleitung.",
"sameHost": "Dieser Host (direkter Tunnel)",
"endpointHost": "Endpunkt-Host",
"endpointHostPlaceholder": "Gleicher Host, SSH-Host oder erreichbarer Host/IP",
"endpointPort": "Endpunkt-Port",
"bindHost": "Bind-Host",
"sourcePort": "Quellport",
"maxRetries": "Max. Wiederholungen",
"retryIntervalS": "Wiederholungsintervall (s)",
"autoStartLabel": "Autostart",
"autoStartDesc": "Diesen Tunnel automatisch verbinden, wenn der Host geladen wird",
"tunnelConnecting": "Tunnel wird verbunden...",
"tunnelDisconnected": "Tunnel getrennt",
"failedToConnectTunnel": "Verbindungsaufbau fehlgeschlagen",
"failedToDisconnectTunnel": "Trennung fehlgeschlagen",
"enableTmuxMonitor": "Tmux-Monitor aktivieren",
"enableTmuxMonitorDesc": "Diesen Host im Tmux-Monitor anzeigen und seine tmux-Aktionen zur Seitenleiste hinzufügen",
"enableTerminalToolbar": "Terminal-Symbolleiste aktivieren",
@@ -1326,12 +1300,9 @@
"refreshBtn": "Aktualisieren",
"addTag": "Tags hinzufügen...",
"deleteConfirmBtn": "Löschen",
"tunnelRequirementsText": "Der SSH-Server muss in /etc/ssh/sshd_config die Optionen GatewayPorts yes, AllowTcpForwarding yes und PermitRootLogin yes gesetzt haben.",
"deleteHostConfirm": "\"{{name}}\" löschen?",
"enableAtLeastOneProtocol": "Aktivieren Sie mindestens ein Protokoll oben, um Authentifizierungs- und Verbindungseinstellungen zu konfigurieren.",
"keyPassphrase": "Schlüsselpassphrase",
"connectBtn": "Verbinden",
"disconnectBtn": "Trennen",
"basicInformation": "Grundlegende Informationen",
"authDetailsSection": "Authentifizierungsdetails",
"credTypeLabel": "Typ",
@@ -1952,100 +1923,26 @@
"transferFailedRetryHint": "Unvollständige Daten wurden am Ziel beibehalten. Die Wiederholung wird fortgesetzt, sobald die Verbindung wiederhergestellt ist."
},
"tunnels": {
"noSshTunnels": "Keine SSH-Tunnel",
"createFirstTunnelMessage": "Sie haben noch keine SSH-Tunnel erstellt. Konfigurieren Sie Tunnelverbindungen im Host-Manager, um zu beginnen.",
"connected": "Verbunden",
"disconnected": "Getrennt",
"connecting": "Verbinde...",
"error": "Fehler",
"canceling": "Wird abgebrochen...",
"connect": "Verbinden",
"disconnect": "Trennen",
"cancel": "Abbrechen",
"port": "Port",
"localPort": "Lokaler Port",
"remotePort": "Remote-Port",
"destinationPort": "Zielhafen",
"currentHostPort": "Aktueller Host-Port",
"endpointPort": "Endpunkt-Port",
"bindIp": "Lokale IP",
"localAddress": "Lokale Adresse",
"remoteAddress": "Remote-Adresse",
"destinationAddress": "Zieladresse",
"remoteBindAddress": "Remote-Bind-Adresse",
"intermediateHost": "Zwischenwirt",
"endpointSshConfig": "Endpunkt-SSH-Konfiguration",
"endpointSshHost": "Endpunkt-SSH-Host",
"endpointSshHostPlaceholder": "Konfigurierten Host auswählen",
"endpointSshHostRequired": "Wählen Sie einen Endpunkt-SSH-Host für jeden Client-Tunnel aus.",
"attempt": "Versuch {{current}} von {{max}}",
"nextRetryIn": "Nächster Wiederholungsversuch in {{seconds}} Sekunden",
"clientTunnels": "Client-Tunnel",
"clientTunnel": "Client-Tunnel",
"addClientTunnel": "Client-Tunnel hinzufügen",
"noClientTunnels": "Keine Client-Tunnel auf diesem Desktop konfiguriert.",
"tunnelName": "Tunnelname",
"remoteHost": "Remote-Host",
"autoStart": "Autostart",
"clientAutoStartDesc": "Startet automatisch, wenn dieser Desktop-Client geöffnet wird und die Verbindung aufrechterhalten wird.",
"clientManualStartDesc": "Verwenden Sie Start und Stopp in dieser Zeile. Termix startet den Tunnel nicht automatisch.",
"clientRemoteServerNote": "Remote-Weiterleitung erfordert möglicherweise AllowTcpForwarding und GatewayPorts auf dem Endpunkt-SSH-Server. Der entfernte Port wird geschlossen, wenn dieser Desktop die Verbindung trennt.",
"clientTunnelStarted": "Client-Tunnel gestartet",
"clientTunnelStopped": "Client-Tunnel gestoppt",
"tunnelTestSucceeded": "Tunneltest erfolgreich",
"tunnelTestFailed": "Tunneltest fehlgeschlagen",
"localSaved": "Client-Tunnel gespeichert",
"localSaveError": "Fehler beim Speichern der lokalen Client-Tunnel",
"invalidBindIp": "Lokale IP muss eine gültige IPv4-Adresse sein.",
"invalidLocalTargetIp": "Lokale Ziel-IP muss eine gültige IPv4-Adresse sein.",
"invalidRemoteAddress": "Eine Remote-Adresse ist erforderlich.",
"invalidLocalPort": "Lokaler Port muss zwischen 1 und 65535 liegen.",
"invalidRemotePort": "Remote-Port muss zwischen 1 und 65535 liegen.",
"invalidLocalTargetPort": "Lokaler Zielport muss zwischen 1 und 65535 liegen.",
"invalidEndpointPort": "Endpunkt-Port muss zwischen 1 und 65535 liegen.",
"duplicateAutoStartBind": "Nur ein automatisch startender Client-Tunnel kann {{bind}} verwenden.",
"manualControlError": "Fehler beim Aktualisieren des Tunnelstatus.",
"active": "Aktiv",
"start": "Start",
"stop": "Stop",
"test": "Test",
"type": "Tunneltyp",
"typeLocal": "Lokal (-L)",
"typeRemote": "Remote (-R)",
"typeDynamic": "Dynamisch (-D)",
"typeServerLocalDesc": "Vom aktuellen Host zum Endpunkt.",
"typeServerRemoteDesc": "Vom Endpunkt zurück zum aktuellen Host.",
"typeClientLocalDesc": "Vom lokalen Computer zum Endpunkt.",
"typeClientRemoteDesc": "Vom Endpunkt zurück zum lokalen Computer.",
"typeClientDynamicDesc": "SOCKS auf dem lokalen Computer.",
"typeDynamicDesc": "SOCKS5 CONNECT-Verkehr über SSH weiterleiten.",
"forwardDescriptionServerLocal": "Aktueller Host {{sourcePort}} → Endpunkt {{endpointPort}}.",
"forwardDescriptionServerRemote": "Endpunkt {{endpointPort}} → aktueller Host {{sourcePort}}.",
"forwardDescriptionServerDynamic": "SOCKS auf aktuellem Host {{sourcePort}}.",
"forwardDescriptionClientLocal": "Lokal {{sourcePort}} → entfernt {{endpointPort}}.",
"forwardDescriptionClientRemote": "Entfernt {{sourcePort}} → lokal {{endpointPort}}.",
"forwardDescriptionClientDynamic": "SOCKS auf lokalem Port {{sourcePort}}.",
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{remoteHost}}:{{remotePort}} via {{endpoint}}",
"summaryClientRemote": "{{remoteHost}}:{{remotePort}} auf {{endpoint}} → {{localHost}}:{{localPort}}",
"summaryClientDynamic": "{{localHost}}:{{localPort}} → SOCKS via {{endpoint}}",
"autoNameClientLocal": "Lokal {{localPort}} → {{endpoint}} {{remotePort}}",
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → lokal {{localPort}}",
"autoNameClientDynamic": "SOCKS {{localPort}} via {{endpoint}}",
"route": "Route:",
"lastStarted": "Zuletzt gestartet",
"lastTested": "Zuletzt getestet",
"lastError": "Letzter Fehler",
"maxRetries": "Max. Wiederholungen",
"maxRetriesDescription": "Maximale Anzahl von Wiederholungsversuchen.",
"retryInterval": "Wiederholungsintervall (Sekunden)",
"retryIntervalDescription": "Wartezeit zwischen Wiederholungsversuchen.",
"local": "Lokal",
"remote": "Remote",
"destination": "Ziel",
"host": "Host",
"mode": "Modus",
"noHostSelected": "Kein Host ausgewählt",
"working": "In Bearbeitung..."
"remote": "Remote"
},
"cardGrid": {
"dragToMove": "Zum Verschieben ziehen",
@@ -2175,37 +2072,13 @@
},
"profile": {
"c2sTunnelConfigDesc": "Lokale Desktop-Tunnel, die auf konfigurierte SSH-Hosts abzielen.",
"c2sTunnelPresets": "Client-Tunnel-Voreinstellungen",
"c2sTunnelPresetsDesc": "Speichern Sie die lokale Tunnel-Liste dieses Desktop-Clients als benannte Server-Voreinstellung oder laden Sie eine Voreinstellung zurück in diesen Client.",
"c2sTunnelPresetsUnavailable": "Client-Tunnel-Voreinstellungen sind nur im Desktop-Client verfügbar.",
"c2sPresetName": "Voreinstellungsname",
"c2sPresetNamePlaceholder": "Name der Client-Voreinstellung",
"c2sPresetToLoad": "Zu ladende Voreinstellung",
"c2sNoPresetSelected": "Keine Voreinstellung ausgewählt",
"c2sNoPresets": "Keine Voreinstellungen gespeichert",
"c2sLoadPreset": "Laden",
"c2sCurrentLocalConfig": "{{count}} lokale Client-Tunnel auf diesem Desktop konfiguriert.",
"c2sPresetSyncNote": "Voreinstellungen sind explizite Snapshots; das Laden einer Voreinstellung ersetzt die lokale Client-Tunnel-Liste dieses Desktop-Clients.",
"c2sPresetSaved": "Client-Tunnel-Voreinstellung gespeichert",
"c2sPresetLoaded": "Client-Tunnel-Voreinstellung lokal geladen",
"c2sPresetRenamed": "Client-Tunnel-Voreinstellung umbenannt",
"c2sPresetDeleted": "Client-Tunnel-Voreinstellung gelöscht",
"c2sPresetLoadError": "Fehler beim Laden der Client-Tunnel-Voreinstellungen"
"c2sTunnelPresetsDesc": "Speichern Sie die lokale Tunnel-Liste dieses Desktop-Clients als benannte Server-Voreinstellung oder laden Sie eine Voreinstellung zurück in diesen Client."
},
"placeholders": {
"maxRetries": "3",
"retryInterval": "10",
"language": "Sprache",
"keyPassword": "Schlüsselpasswort",
"pastePrivateKey": "Privaten Schlüssel hier einfügen...",
"localListenerHost": "127.0.0.1 (lokal lauschen)",
"localTargetHost": "127.0.0.1 (Ziel auf diesem Computer)",
"remoteTargetHost": "127.0.0.1 (Ziel vom Endpunkt)",
"remoteBindHost": "127.0.0.1 (auf Endpunkt lauschen)",
"socksListenerHost": "127.0.0.1 (SOCKS-Listener)",
"enterPassword": "Passwort eingeben",
"defaultPort": "22",
"defaultEndpointPort": "224"
"enterPassword": "Passwort eingeben"
},
"dashboard": {
"title": "Dashboard",