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": "Lar",
"terminal": "terminal",
"localTerminal": "Terminal local",
"tunnels": "Túneis",
"fileManager": "Gerenciador de arquivos",
"serverStats": "Métricas do host",
"admin": "Administrador",
@@ -714,7 +713,6 @@
"macros": "Macros",
"hostManager": "Gerente de Hospedagem",
"credentials": "Credenciais",
"portForwarding": "Encaminhamento",
"connections": "Conexõ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": "Compartilhamento",
@@ -1071,31 +1068,8 @@
"startupSnippetLabel": "Trecho de startup",
"keepaliveIntervalLabel": "Intervalo de Keepalive (segundos)",
"maxKeepaliveMisses": "Max Keepalive falha",
"tunnelSettings": "Configurações do túnel",
"enableTunneling": "Habilitar o tunelamento",
"enableTunnelingDesc": "Ative a funcionalidade de túnel SSH para este host.",
"serverTunnelsSection": "Túneis de servidor",
"addTunnelBtn": "Adicionar túnel",
"noTunnelsConfigured": "Nenhum túnel configurado.",
"tunnelLabel": "Túnel {{number}}",
"tunnelType": "Tipo de túnel",
"tunnelModeLocalDesc": "Encaminhar uma porta local para uma porta no servidor remoto (ou em um host acessível a partir dele).",
"tunnelModeRemoteDesc": "Encaminhe uma porta no servidor remoto de volta para uma porta local em sua máquina.",
"tunnelModeDynamicDesc": "Crie um proxy SOCKS5 em uma porta local para encaminhamento dinâmico de portas.",
"sameHost": "Este host (túnel direto)",
"endpointHost": "Host do ponto final",
"endpointHostPlaceholder": "Mesmo host, host SSH ou host/IP acessível",
"endpointPort": "Porta de ponto final",
"bindHost": "Vincular host",
"sourcePort": "Porta de origem",
"maxRetries": "Número máximo de tentativas",
"retryIntervalS": "Intervalo de tentativas (s)",
"autoStartLabel": "Início automático",
"autoStartDesc": "Conecte este túnel automaticamente quando o host estiver carregado.",
"tunnelConnecting": "Túnel de ligação...",
"tunnelDisconnected": "Túnel desconectado",
"failedToConnectTunnel": "Falha ao conectar",
"failedToDisconnectTunnel": "Falha ao desconectar",
"enableTmuxMonitor": "Ativar monitor Tmux",
"enableTmuxMonitorDesc": "Exiba este host no Monitor Tmux e adicione suas ações tmux à barra lateral.",
"enableTerminalToolbar": "Ativar a barra de ferramentas do terminal",
@@ -1326,12 +1300,9 @@
"refreshBtn": "Atualizar",
"addTag": "Adicionar etiquetas...",
"deleteConfirmBtn": "Excluir",
"tunnelRequirementsText": "O servidor SSH deve ter as seguintes configurações definidas em /etc/ssh/sshd_config: GatewayPorts yes, AllowTcpForwarding yes e PermitRootLogin yes.",
"deleteHostConfirm": "Apagar \"{{name}}\"?",
"enableAtLeastOneProtocol": "Habilite pelo menos um dos protocolos acima para configurar as definições de autenticação e conexão.",
"keyPassphrase": "Senha da chave",
"connectBtn": "Conectar",
"disconnectBtn": "Desconectar",
"basicInformation": "Informações básicas",
"authDetailsSection": "Detalhes de autenticação",
"credTypeLabel": "Tipo",
@@ -1952,100 +1923,26 @@
"transferFailedRetryHint": "Dados parciais foram mantidos no destino. A tentativa será retomada quando a conexão for restabelecida."
},
"tunnels": {
"noSshTunnels": "Sem túneis SSH",
"createFirstTunnelMessage": "Você ainda não criou nenhum túnel SSH. Configure as conexões de túnel no Gerenciador de Hosts para começar.",
"connected": "Conectado",
"disconnected": "Desconectado",
"connecting": "Conectando...",
"error": "Erro",
"canceling": "Cancelando...",
"connect": "Conectar",
"disconnect": "Desconectar",
"cancel": "Cancelar",
"port": "Porta",
"localPort": "Porto local",
"remotePort": "Porta remota",
"destinationPort": "Porto de destino",
"currentHostPort": "Porta do host atual",
"endpointPort": "Porta de ponto final",
"bindIp": "IP local",
"localAddress": "Endereço local",
"remoteAddress": "Endereço remoto",
"destinationAddress": "Endereço de destino",
"remoteBindAddress": "Endereço de vinculação remota",
"intermediateHost": "Anfitrião intermediário",
"endpointSshConfig": "Configuração SSH do endpoint",
"endpointSshHost": "Host SSH de ponto final",
"endpointSshHostPlaceholder": "Selecione um host configurado",
"endpointSshHostRequired": "Selecione um host SSH de ponto final para cada túnel de cliente.",
"attempt": "Tentativa {{current}} de {{max}}",
"nextRetryIn": "Próxima tentativa em {{seconds}} segundos",
"clientTunnels": "Túneis para clientes",
"clientTunnel": "Túnel do Cliente",
"addClientTunnel": "Adicionar túnel de cliente",
"noClientTunnels": "Nenhum túnel de cliente configurado nesta área de trabalho.",
"tunnelName": "Nome do túnel",
"remoteHost": "Host remoto",
"autoStart": "Início automático",
"clientAutoStartDesc": "Inicia quando este cliente de desktop é aberto e permanece conectado.",
"clientManualStartDesc": "Use os botões Iniciar e Parar a partir desta linha. O Termix não os abrirá automaticamente.",
"clientRemoteServerNote": "O encaminhamento remoto pode exigir as permissões AllowTcpForwarding e GatewayPorts no servidor SSH do endpoint. A porta remota é fechada quando esta área de trabalho se desconecta.",
"clientTunnelStarted": "O túnel do cliente foi iniciado.",
"clientTunnelStopped": "O túnel do cliente foi interrompido.",
"tunnelTestSucceeded": "O teste no túnel foi bem-sucedido.",
"tunnelTestFailed": "O teste do túnel falhou",
"localSaved": "Túneis de clientes salvos",
"localSaveError": "Falha ao salvar os túneis do cliente local.",
"invalidBindIp": "O endereço IP local deve ser um endereço IPv4 válido.",
"invalidLocalTargetIp": "O endereç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 ponto final deve estar entre 1 e 65535.",
"duplicateAutoStartBind": "Apenas um túnel de cliente de inicialização automática pode usar {{bind}}.",
"manualControlError": "Falha ao atualizar o estado do túnel.",
"active": "Ativo",
"start": "Começar",
"stop": "Parar",
"test": "Teste",
"type": "Tipo de túnel",
"typeLocal": "Local (-L)",
"typeRemote": "Remoto (-R)",
"typeDynamic": "Dinâmico (-D)",
"typeServerLocalDesc": "Host atual para endpoint.",
"typeServerRemoteDesc": "Retorno do ponto final para o host atual.",
"typeClientLocalDesc": "Computador local para ponto final.",
"typeClientRemoteDesc": "O ponto de extremidade retorna ao computador local.",
"typeClientDynamicDesc": "SOCKS no computador local.",
"typeDynamicDesc": "Encaminhar tráfego SOCKS5 CONNECT através de SSH",
"forwardDescriptionServerLocal": "Host atual {{sourcePort}} → endpoint {{endpointPort}}.",
"forwardDescriptionServerRemote": "Ponto final {{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}} → MEIAS via {{endpoint}}",
"autoNameClientLocal": "Local {{localPort}} → {{endpoint}} {{remotePort}}",
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → local {{localPort}}",
"autoNameClientDynamic": "MEIAS {{localPort}} via {{endpoint}}",
"route": "Rota:",
"lastStarted": "Última vez iniciado",
"lastTested": "Último teste",
"lastError": "Último erro",
"maxRetries": "Número máximo de tentativas",
"maxRetriesDescription": "Número máximo de tentativas.",
"retryInterval": "Intervalo de tentativas (segundos)",
"retryIntervalDescription": "Tempo de espera entre tentativas de repetição.",
"local": "Local",
"remote": "Remoto",
"destination": "Destino",
"host": "Hospedar",
"mode": "Modo",
"noHostSelected": "Nenhum host selecionado",
"working": "Trabalhando..."
"remote": "Remoto"
},
"cardGrid": {
"dragToMove": "Arraste para mover",
@@ -2175,37 +2072,13 @@
},
"profile": {
"c2sTunnelConfigDesc": "Túneis de desktop locais direcionados a hosts SSH configurados.",
"c2sTunnelPresets": "Configurações predefinidas do túnel do cliente",
"c2sTunnelPresetsDesc": "Salve a lista de túneis locais deste cliente de desktop como uma predefinição de servidor nomeada ou carregue uma predefinição de volta neste cliente.",
"c2sTunnelPresetsUnavailable": "As configurações predefinidas de túnel do cliente estão disponíveis apenas no cliente para desktop.",
"c2sPresetName": "Nome predefinido",
"c2sPresetNamePlaceholder": "Nome predefinido do cliente",
"c2sPresetToLoad": "Predefinido para carregar",
"c2sNoPresetSelected": "Nenhuma predefinição selecionada",
"c2sNoPresets": "Nenhuma predefinição salva",
"c2sLoadPreset": "Carregar",
"c2sCurrentLocalConfig": "{{count}} Túneis de cliente local configurados nesta área de trabalho.",
"c2sPresetSyncNote": "As predefinições são instantâneos explícitos; carregar uma substitui a lista de túneis de clientes locais deste cliente de desktop.",
"c2sPresetSaved": "Configuração predefinida do túnel do cliente salva",
"c2sPresetLoaded": "Configuração predefinida do túnel do cliente carregada localmente",
"c2sPresetRenamed": "A predefinição do túnel do cliente foi renomeada.",
"c2sPresetDeleted": "Configuração de túnel do cliente excluída",
"c2sPresetLoadError": "Falha ao carregar as predefinições do túnel do cliente."
"c2sTunnelPresetsDesc": "Salve a lista de túneis locais deste cliente de desktop como uma predefinição de servidor nomeada ou carregue uma predefinição de volta neste cliente."
},
"placeholders": {
"maxRetries": "3",
"retryInterval": "10",
"language": "Linguagem",
"keyPassword": "senha chave",
"pastePrivateKey": "Cole sua chave privada aqui...",
"localListenerHost": "127.0.0.1 (ouvir localmente)",
"localTargetHost": "127.0.0.1 (alvo neste computador)",
"remoteTargetHost": "127.0.0.1 (destino do ponto de extremidade)",
"remoteBindHost": "127.0.0.1 (escutar no ponto de extremidade)",
"socksListenerHost": "127.0.0.1 (ouvinte SOCKS)",
"enterPassword": "Digite sua senha",
"defaultPort": "22",
"defaultEndpointPort": "224"
"enterPassword": "Digite sua senha"
},
"dashboard": {
"title": "Painel",