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": "Inicio",
"terminal": "Terminal",
"localTerminal": "Terminal local",
"tunnels": "Túneles",
"fileManager": "Gestor de archivos",
"serverStats": "Métricas del host",
"admin": "Admin",
@@ -714,7 +713,6 @@
"macros": "Macros",
"hostManager": "Gestor de hosts",
"credentials": "Credenciales",
"portForwarding": "Reenvío",
"connections": "Conexiones",
"serial": "Serial",
"keepSideMenuOpen": "Mantener el menú abierto",
@@ -765,7 +763,6 @@
"tabTerminal": "Terminal",
"tabRdp": "RDP",
"tabVnc": "VNC",
"tabTunnels": "Túneles",
"tabStats": "Métricas del host",
"tabTelnet": "Telnet",
"tabSharing": "Compartir",
@@ -1071,31 +1068,8 @@
"startupSnippetLabel": "Fragmento de inicio",
"keepaliveIntervalLabel": "Intervalo de keepalive (segundos)",
"maxKeepaliveMisses": "Máximo de fallos de keepalive",
"tunnelSettings": "Configuración de túnel",
"enableTunneling": "Habilitar tunelización",
"enableTunnelingDesc": "Habilitar la funcionalidad de túnel SSH para este host",
"serverTunnelsSection": "Túneles del servidor",
"addTunnelBtn": "Añadir túnel",
"noTunnelsConfigured": "No hay túneles configurados.",
"tunnelLabel": "Túnel {{number}}",
"tunnelType": "Tipo de túnel",
"tunnelModeLocalDesc": "Reenviar un puerto local a un puerto en el servidor remoto (o a un host accesible desde él).",
"tunnelModeRemoteDesc": "Reenviar un puerto del servidor remoto a un puerto local en tu equipo.",
"tunnelModeDynamicDesc": "Crear un proxy SOCKS5 en un puerto local para el reenvío dinámico de puertos.",
"sameHost": "Este host (túnel directo)",
"endpointHost": "Host de destino",
"endpointHostPlaceholder": "Mismo host, host SSH o host/dirección IP accesible",
"endpointPort": "Puerto de destino",
"bindHost": "Host de enlace",
"sourcePort": "Puerto origen",
"maxRetries": "Reintentos máximos",
"retryIntervalS": "Intervalo de reintento (s)",
"autoStartLabel": "Inicio automático",
"autoStartDesc": "Conectar automáticamente este túnel cuando se cargue el host.",
"tunnelConnecting": "Túnel conectando...",
"tunnelDisconnected": "Túnel desconectado",
"failedToConnectTunnel": "Error al conectar",
"failedToDisconnectTunnel": "Error al desconectar",
"enableTmuxMonitor": "Activar Tmux Monitor",
"enableTmuxMonitorDesc": "Mostrar este host en el Tmux Monitor y añadir sus acciones de tmux a la barra lateral.",
"enableTerminalToolbar": "Habilitar la barra de herramientas del terminal",
@@ -1326,12 +1300,9 @@
"refreshBtn": "Actualizar",
"addTag": "Añadir etiquetas...",
"deleteConfirmBtn": "Eliminar",
"tunnelRequirementsText": "El servidor SSH debe tener GatewayPorts yes, AllowTcpForwarding yes y PermitRootLogin yes configurados en /etc/ssh/sshd_config.",
"deleteHostConfirm": "¿Eliminar \"{{name}}\"?",
"enableAtLeastOneProtocol": "Active al menos un protocolo de los anteriores para configurar los ajustes de autenticación y conexión.",
"keyPassphrase": "Contraseña de la clave",
"connectBtn": "Conectar",
"disconnectBtn": "Desconectar",
"basicInformation": "Información básica",
"authDetailsSection": "Detalles de autenticación",
"credTypeLabel": "Tipo",
@@ -1952,100 +1923,26 @@
"transferFailedRetryHint": "Se conservaron datos parciales en el destino. El reintento se reanudará cuando se restablezca la conexión."
},
"tunnels": {
"noSshTunnels": "Sin túneles SSH",
"createFirstTunnelMessage": "Aún no has creado ningún túnel SSH. Configura las conexiones de túnel en el Administrador de hosts para empezar.",
"connected": "Conectado",
"disconnected": "Desconectado",
"connecting": "Conectando...",
"error": "Error",
"canceling": "Cancelando...",
"connect": "Conectar",
"disconnect": "Desconectar",
"cancel": "Cancelar",
"port": "Puerto",
"localPort": "Puerto local",
"remotePort": "Puerto remoto",
"destinationPort": "Puerto de destino",
"currentHostPort": "Puerto del host actual",
"endpointPort": "Puerto del endpoint",
"bindIp": "IP local",
"localAddress": "Dirección local",
"remoteAddress": "Dirección remota",
"destinationAddress": "Dirección de destino",
"remoteBindAddress": "Dirección de enlace remoto",
"intermediateHost": "Huésped intermedio",
"endpointSshConfig": "Configuración SSH del endpoint",
"endpointSshHost": "Host SSH del endpoint",
"endpointSshHostPlaceholder": "Seleccionar un host configurado",
"endpointSshHostRequired": "Seleccione un host SSH del endpoint para cada túnel de cliente.",
"attempt": "Intento {{current}} de {{max}}",
"nextRetryIn": "Próximo reintento en {{seconds}} segundos",
"clientTunnels": "Túneles de cliente",
"clientTunnel": "Túnel de cliente",
"addClientTunnel": "Añadir túnel de cliente",
"noClientTunnels": "No hay túneles de cliente configurados en este escritorio.",
"tunnelName": "Nombre del túnel",
"remoteHost": "Host remoto",
"autoStart": "Inicio automático",
"clientAutoStartDesc": "Se inicia al abrir este cliente de escritorio y permanece conectado.",
"clientManualStartDesc": "Use Iniciar y Detener desde esta fila. Termix no lo iniciará automáticamente.",
"clientRemoteServerNote": "El reenvío remoto puede requerir AllowTcpForwarding y GatewayPorts en el servidor SSH del endpoint. El puerto remoto se cierra cuando este escritorio se desconecta.",
"clientTunnelStarted": "Túnel de cliente iniciado",
"clientTunnelStopped": "Túnel de cliente detenido",
"tunnelTestSucceeded": "Prueba de túnel exitosa",
"tunnelTestFailed": "Prueba de túnel fallida",
"localSaved": "Túneles de cliente guardados",
"localSaveError": "Error al guardar los túneles de cliente locales",
"invalidBindIp": "La IP local debe ser una dirección IPv4 válida.",
"invalidLocalTargetIp": "La IP de destino local debe ser una dirección IPv4 válida.",
"invalidRemoteAddress": "Se requiere una dirección remota.",
"invalidLocalPort": "El puerto local debe estar entre 1 y 65535.",
"invalidRemotePort": "El puerto remoto debe estar entre 1 y 65535.",
"invalidLocalTargetPort": "El puerto de destino local debe estar entre 1 y 65535.",
"invalidEndpointPort": "El puerto del endpoint debe estar entre 1 y 65535.",
"duplicateAutoStartBind": "Solo un túnel de cliente de inicio automático puede usar {{bind}}.",
"manualControlError": "Error al actualizar el estado del túnel.",
"active": "Activo",
"start": "Iniciar",
"stop": "Detener",
"test": "Probar",
"type": "Tipo de túnel",
"typeLocal": "Local (-L)",
"typeRemote": "Remoto (-R)",
"typeDynamic": "Dinámico (-D)",
"typeServerLocalDesc": "Del host actual al endpoint.",
"typeServerRemoteDesc": "Del endpoint al host actual.",
"typeClientLocalDesc": "Del equipo local al endpoint.",
"typeClientRemoteDesc": "Del endpoint al equipo local.",
"typeClientDynamicDesc": "SOCKS en el equipo local.",
"typeDynamicDesc": "Reenviar tráfico SOCKS5 CONNECT a través de SSH",
"forwardDescriptionServerLocal": "Host actual {{sourcePort}} → endpoint {{endpointPort}}.",
"forwardDescriptionServerRemote": "Endpoint {{endpointPort}} → host actual {{sourcePort}}.",
"forwardDescriptionServerDynamic": "SOCKS en el host actual {{sourcePort}}.",
"forwardDescriptionClientLocal": "Local {{sourcePort}} → remoto {{endpointPort}}.",
"forwardDescriptionClientRemote": "Remoto {{sourcePort}} → local {{endpointPort}}.",
"forwardDescriptionClientDynamic": "SOCKS en puerto local {{sourcePort}}.",
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{remoteHost}}:{{remotePort}} vía {{endpoint}}",
"summaryClientRemote": "{{remoteHost}}:{{remotePort}} en {{endpoint}} → {{localHost}}:{{localPort}}",
"summaryClientDynamic": "{{localHost}}:{{localPort}} → SOCKS a través de {{endpoint}}",
"autoNameClientLocal": "Local {{localPort}} → {{endpoint}} {{remotePort}}",
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → local {{localPort}}",
"autoNameClientDynamic": "SOCKS {{localPort}} a través de {{endpoint}}",
"route": "Ruta:",
"lastStarted": "Último inicio",
"lastTested": "Última prueba",
"lastError": "Último error",
"maxRetries": "Reintentos máx.",
"maxRetriesDescription": "Número máximo de intentos de reintento.",
"retryInterval": "Intervalo de reintento (segundos)",
"retryIntervalDescription": "Tiempo de espera entre intentos de reintento.",
"local": "Local",
"remote": "Remoto",
"destination": "Destino",
"host": "Host",
"mode": "Modo",
"noHostSelected": "Ningún host seleccionado",
"working": "Trabajando..."
"remote": "Remoto"
},
"cardGrid": {
"dragToMove": "Arrastrar para mover",
@@ -2175,37 +2072,13 @@
},
"profile": {
"c2sTunnelConfigDesc": "Túneles de escritorio locales hacia los hosts SSH configurados.",
"c2sTunnelPresets": "Preajustes de túneles de cliente",
"c2sTunnelPresetsDesc": "Guarde la lista de túneles locales de este cliente de escritorio como un preajuste de servidor con nombre, o cargue un preajuste de nuevo en este cliente.",
"c2sTunnelPresetsUnavailable": "Los preajustes de túneles de cliente solo están disponibles en el cliente de escritorio.",
"c2sPresetName": "Nombre del preajuste",
"c2sPresetNamePlaceholder": "Nombre del preajuste de cliente",
"c2sPresetToLoad": "Preajuste a cargar",
"c2sNoPresetSelected": "Ningún preajuste seleccionado",
"c2sNoPresets": "No hay preajustes guardados",
"c2sLoadPreset": "Cargar",
"c2sCurrentLocalConfig": "{{count}} túnel(es) de cliente local configurado(s) en este escritorio.",
"c2sPresetSyncNote": "Los preajustes son instantáneas explícitas; cargar uno reemplaza la lista de túneles de cliente local de este cliente de escritorio.",
"c2sPresetSaved": "Preajuste de túnel de cliente guardado",
"c2sPresetLoaded": "Preajuste de túnel de cliente cargado localmente",
"c2sPresetRenamed": "Preajuste de túnel de cliente renombrado",
"c2sPresetDeleted": "Preajuste de túnel de cliente eliminado",
"c2sPresetLoadError": "Error al cargar los preajustes de túneles de cliente"
"c2sTunnelPresetsDesc": "Guarde la lista de túneles locales de este cliente de escritorio como un preajuste de servidor con nombre, o cargue un preajuste de nuevo en este cliente."
},
"placeholders": {
"maxRetries": "3",
"retryInterval": "10",
"language": "Idioma",
"keyPassword": "contraseña de la clave",
"pastePrivateKey": "Pegue su clave privada aquí...",
"localListenerHost": "127.0.0.1 (escuchar localmente)",
"localTargetHost": "127.0.0.1 (destino en este equipo)",
"remoteTargetHost": "127.0.0.1 (destino desde el punto final)",
"remoteBindHost": "127.0.0.1 (escuchar en el punto final)",
"socksListenerHost": "127.0.0.1 (escucha SOCKS)",
"enterPassword": "Introduce tu contraseña",
"defaultPort": "22",
"defaultEndpointPort": "224"
"enterPassword": "Introduce tu contraseña"
},
"dashboard": {
"title": "Panel de control",