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": "Início",
"terminal": "Terminal",
"localTerminal": "Terminal local",
"tunnels": "Túneis",
"fileManager": "Gestor de ficheiros",
"serverStats": "Métricas do Servidor",
"admin": "Administração",
@@ -714,7 +713,6 @@
"macros": "Macros",
"hostManager": "Gestor de Máquinas",
"credentials": "Credenciais",
"portForwarding": "Encaminhamento",
"connections": "Ligações",
"serial": "Serial",
"keepSideMenuOpen": "Mantenha o menu aberto",
@@ -765,7 +763,6 @@
"tabTerminal": "Terminal",
"tabRdp": "RDP",
"tabVnc": "VNC",
"tabTunnels": "Túneis",
"tabStats": "Métricas do Host",
"tabTelnet": "Telnet",
"tabSharing": "Partilha",
@@ -1071,31 +1068,8 @@
"startupSnippetLabel": "Fragmento de inicialização",
"keepaliveIntervalLabel": "Intervalo de Keepalive (segundos)",
"maxKeepaliveMisses": "Máximo de falhas de Keepalive",
"tunnelSettings": "Definições de túnel",
"enableTunneling": "Ativar tunelamento",
"enableTunnelingDesc": "Ativar a funcionalidade de túnel SSH para este host",
"serverTunnelsSection": "Túneis do servidor",
"addTunnelBtn": "Adicionar túnel",
"noTunnelsConfigured": "Nenhum túnel configurado.",
"tunnelLabel": "Túnel {{number}}",
"tunnelType": "Tipo de túnel",
"tunnelModeLocalDesc": "Reencaminhar uma porta local para uma porta no servidor remoto (ou um host acessível a partir dele).",
"tunnelModeRemoteDesc": "Reencaminhar uma porta no servidor remoto de volta para uma porta local na sua máquina.",
"tunnelModeDynamicDesc": "Criar um proxy SOCKS5 numa porta local para reencaminhamento dinâmico de portas.",
"sameHost": "Este host (túnel direto)",
"endpointHost": "Host de Destino",
"endpointHostPlaceholder": "Mesmo host, host SSH ou host/IP acessível",
"endpointPort": "Porta de Destino",
"bindHost": "Host de Ligação",
"sourcePort": "Porta de Origem",
"maxRetries": "Tentativas Máximas",
"retryIntervalS": "Intervalo de Repetição (s)",
"autoStartLabel": "Início Automático",
"autoStartDesc": "Conectar automaticamente este túnel quando o host for carregado",
"tunnelConnecting": "Túnel a conectar...",
"tunnelDisconnected": "Túnel desligado",
"failedToConnectTunnel": "Falha ao conectar",
"failedToDisconnectTunnel": "Falha ao desligar",
"enableTmuxMonitor": "Ativar Monitor Tmux",
"enableTmuxMonitorDesc": "Mostrar este host no Monitor Tmux e adicionar as suas ações tmux à barra lateral",
"enableTerminalToolbar": "Ativar a barra de ferramentas do terminal",
@@ -1326,12 +1300,9 @@
"refreshBtn": "Atualizar",
"addTag": "Adicionar tags...",
"deleteConfirmBtn": "Eliminar",
"tunnelRequirementsText": "O servidor SSH deve ter GatewayPorts yes, AllowTcpForwarding yes e PermitRootLogin yes definidos em /etc/ssh/sshd_config.",
"deleteHostConfirm": "Eliminar \"{{name}}\"?",
"enableAtLeastOneProtocol": "Ative pelo menos um protocolo acima para configurar as definições de autenticação e ligação.",
"keyPassphrase": "Frase-senha da chave",
"connectBtn": "Ligar",
"disconnectBtn": "Desligar",
"basicInformation": "Informação básica",
"authDetailsSection": "Detalhes de autenticação",
"credTypeLabel": "Tipo",
@@ -1952,100 +1923,26 @@
"transferFailedRetryHint": "Foram mantidos dados parciais no destino. A repetição será retomada quando a ligação for restabelecida."
},
"tunnels": {
"noSshTunnels": "Sem túneis SSH",
"createFirstTunnelMessage": "Ainda não criou nenhum túnel SSH. Configure as ligações de túnel no Gestor de Anfitriões para começar.",
"connected": "Ligado",
"disconnected": "Desligado",
"connecting": "A ligar...",
"error": "Erro",
"canceling": "A cancelar...",
"connect": "Ligar",
"disconnect": "Desligar",
"cancel": "Cancelar",
"port": "Porta",
"localPort": "Porta local",
"remotePort": "Porta remota",
"destinationPort": "Porto de destino",
"currentHostPort": "Porta do host atual",
"endpointPort": "Porta do endpoint",
"bindIp": "IP local",
"localAddress": "Endereço local",
"remoteAddress": "Endereço remoto",
"destinationAddress": "Endereço de destino",
"remoteBindAddress": "Endereço de ligação remota",
"intermediateHost": "Anfitrião intermediário",
"endpointSshConfig": "Configuração SSH do endpoint",
"endpointSshHost": "Host SSH do endpoint",
"endpointSshHostPlaceholder": "Selecionar um host configurado",
"endpointSshHostRequired": "Selecione um host SSH do endpoint para cada túnel de cliente.",
"attempt": "Tentativa {{current}} de {{max}}",
"nextRetryIn": "Próxima tentativa em {{seconds}} segundos",
"clientTunnels": "Túneis de cliente",
"clientTunnel": "Túnel de cliente",
"addClientTunnel": "Adicionar túnel de cliente",
"noClientTunnels": "Nenhum túnel de cliente configurado neste desktop.",
"tunnelName": "Nome do túnel",
"remoteHost": "Host remoto",
"autoStart": "Arranque automático",
"clientAutoStartDesc": "Inicia quando este cliente de desktop abre e permanece ligado.",
"clientManualStartDesc": "Utilize Iniciar e Parar nesta linha. O Termix não o abrirá automaticamente.",
"clientRemoteServerNote": "O reencaminhamento remoto pode exigir AllowTcpForwarding e GatewayPorts no servidor SSH do endpoint. A porta remota fecha quando este desktop se desliga.",
"clientTunnelStarted": "Túnel de cliente iniciado",
"clientTunnelStopped": "Túnel de cliente parado",
"tunnelTestSucceeded": "Teste do túnel bem-sucedido",
"tunnelTestFailed": "Teste do túnel falhou",
"localSaved": "Túneis de cliente guardados",
"localSaveError": "Falha ao guardar os túneis de cliente locais",
"invalidBindIp": "O IP local deve ser um endereço IPv4 válido.",
"invalidLocalTargetIp": "O IP de destino local deve ser um endereço IPv4 válido.",
"invalidRemoteAddress": "É necessário um endereço remoto.",
"invalidLocalPort": "A porta local deve estar entre 1 e 65535.",
"invalidRemotePort": "A porta remota deve estar entre 1 e 65535.",
"invalidLocalTargetPort": "A porta de destino local deve estar entre 1 e 65535.",
"invalidEndpointPort": "A porta do endpoint deve estar entre 1 e 65535.",
"duplicateAutoStartBind": "Apenas um túnel de cliente com arranque automático pode utilizar {{bind}}.",
"manualControlError": "Falha ao atualizar o estado do túnel.",
"active": "Ativo",
"start": "Iniciar",
"stop": "Parar",
"test": "Testar",
"type": "Tipo de Túnel",
"typeLocal": "Local (-L)",
"typeRemote": "Remoto (-R)",
"typeDynamic": "Dinâmico (-D)",
"typeServerLocalDesc": "Do host atual para o endpoint.",
"typeServerRemoteDesc": "Do endpoint de volta para o host atual.",
"typeClientLocalDesc": "Do computador local para o endpoint.",
"typeClientRemoteDesc": "Do endpoint de volta para o computador local.",
"typeClientDynamicDesc": "SOCKS no computador local.",
"typeDynamicDesc": "Encaminha tráfego SOCKS5 CONNECT via SSH",
"forwardDescriptionServerLocal": "Host atual {{sourcePort}} → endpoint {{endpointPort}}.",
"forwardDescriptionServerRemote": "Endpoint {{endpointPort}} → host atual {{sourcePort}}.",
"forwardDescriptionServerDynamic": "SOCKS no host atual {{sourcePort}}.",
"forwardDescriptionClientLocal": "Local {{sourcePort}} → remoto {{endpointPort}}.",
"forwardDescriptionClientRemote": "Remoto {{sourcePort}} → local {{endpointPort}}.",
"forwardDescriptionClientDynamic": "SOCKS na porta local {{sourcePort}}.",
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{remoteHost}}:{{remotePort}} via {{endpoint}}",
"summaryClientRemote": "{{remoteHost}}:{{remotePort}} em {{endpoint}} → {{localHost}}:{{localPort}}",
"summaryClientDynamic": "{{localHost}}:{{localPort}} → SOCKS via {{endpoint}}",
"autoNameClientLocal": "Local {{localPort}} → {{endpoint}} {{remotePort}}",
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → local {{localPort}}",
"autoNameClientDynamic": "SOCKS {{localPort}} via {{endpoint}}",
"route": "Rota:",
"lastStarted": "Último início",
"lastTested": "Último teste",
"lastError": "Último erro",
"maxRetries": "Máx. tentativas",
"maxRetriesDescription": "Número máximo de tentativas.",
"retryInterval": "Intervalo de repetição (segundos)",
"retryIntervalDescription": "Tempo de espera entre tentativas.",
"local": "Local",
"remote": "Remoto",
"destination": "Destino",
"host": "Servidor",
"mode": "Modo",
"noHostSelected": "Nenhum servidor selecionado",
"working": "A trabalhar..."
"remote": "Remoto"
},
"cardGrid": {
"dragToMove": "Arraste para mover",
@@ -2175,37 +2072,13 @@
},
"profile": {
"c2sTunnelConfigDesc": "Túneis locais do ambiente de trabalho direcionados para hosts SSH configurados.",
"c2sTunnelPresets": "Predefinições de túneis do cliente",
"c2sTunnelPresetsDesc": "Guarde a lista de túneis locais deste cliente de ambiente de trabalho como uma predefinição de servidor nomeada ou carregue uma predefinição de volta para este cliente.",
"c2sTunnelPresetsUnavailable": "As predefinições de túneis do cliente estão disponíveis apenas no cliente de ambiente de trabalho.",
"c2sPresetName": "Nome da predefinição",
"c2sPresetNamePlaceholder": "Nome da predefinição do cliente",
"c2sPresetToLoad": "Predefinição a carregar",
"c2sNoPresetSelected": "Nenhuma predefinição selecionada",
"c2sNoPresets": "Nenhuma predefinição guardada",
"c2sLoadPreset": "Carregar",
"c2sCurrentLocalConfig": "{{count}} túnel/túneis de cliente local configurado(s) neste ambiente de trabalho.",
"c2sPresetSyncNote": "As predefinições são instantâneos explícitos; carregar uma substitui a lista de túneis de cliente local deste cliente de ambiente de trabalho.",
"c2sPresetSaved": "Predefinição de túnel do cliente guardada",
"c2sPresetLoaded": "Predefinição de túnel do cliente carregada localmente",
"c2sPresetRenamed": "Predefinição de túnel do cliente renomeada",
"c2sPresetDeleted": "Predefinição de túnel do cliente eliminada",
"c2sPresetLoadError": "Falha ao carregar as predefinições de túneis do cliente"
"c2sTunnelPresetsDesc": "Guarde a lista de túneis locais deste cliente de ambiente de trabalho como uma predefinição de servidor nomeada ou carregue uma predefinição de volta para este cliente."
},
"placeholders": {
"maxRetries": "3",
"retryInterval": "10",
"language": "Idioma",
"keyPassword": "palavra-passe da chave",
"pastePrivateKey": "Cole aqui a sua chave privada...",
"localListenerHost": "127.0.0.1 (escuta localmente)",
"localTargetHost": "127.0.0.1 (alvo neste computador)",
"remoteTargetHost": "127.0.0.1 (destino do ponto final)",
"remoteBindHost": "127.0.0.1 (escutar no ponto final)",
"socksListenerHost": "127.0.0.1 (escuta SOCKS)",
"enterPassword": "Introduza a sua palavra-passe",
"defaultPort": "22",
"defaultEndpointPort": "224"
"enterPassword": "Introduza a sua palavra-passe"
},
"dashboard": {
"title": "Painel de Controlo",