P7: restore agent node type, agent heartbeat expiry, build-version injection, remove log/history/xray-metrics modules, optional sub port
- nodes: port node-type (traditional/agent) picker back from web-src into the embedded frontend; backend annotates NodeView.nodeType from agent_nodes bindings; fix agent-node update path (skip reachability probe and apiToken requirement for agent-managed nodes); restore i18n keys in all 13 locales; install command now uses the Gitea mirror - jobs: expire agent-bound nodes whose agent_nodes.last_seen is older than max(3x heartbeat interval, 120s) = 180s; last_seen=0 (never registered) is left untouched; transitions reuse UpdateHeartbeat + node event broadcast - config: GetBaseVersion honors ldflags-injected buildVersion; release builds inject 3.7.0-agent.1 so the panel no longer reports a phantom update against the Gitea release tag - logger/server: remove the three log viewers (panel/xray/amneziawg), their API endpoints and the 10240-entry in-memory log buffer; file logging via lumberjack unchanged; tests assert via a new optional logger hook instead of the removed buffer - server: remove system history and xray metrics modules end to end (endpoints, sampling appends in RefreshStatus, per-minute persist cron, gob snapshot/restore, XrayMetricsService); realtime status and per-node history are untouched - settings: subPort may be 0/unset - subscription links are generated without a port while the subscription service keeps binding the default 2096; the settings form declares the cleared state via onNumber's new onClear option instead of snapping back to 1
This commit is contained in:
@@ -136,45 +136,6 @@
|
||||
"currentCommit": "Commit atual",
|
||||
"latestCommit": "Último commit",
|
||||
"updateChannelChanged": "Canal de atualização alterado",
|
||||
"systemHistoryTitle": "Histórico do Sistema",
|
||||
"historyTitleCpu": "Uso da CPU",
|
||||
"historyTitleMem": "Uso de Memória",
|
||||
"historyTitleNetwork": "Largura de Banda da Rede",
|
||||
"historyTitlePackets": "Pacotes de Rede",
|
||||
"historyTitleDisk": "E/S de Disco",
|
||||
"historyTitleOnline": "Clientes Online",
|
||||
"historyTitleLoad": "Média de Carga do Sistema (1 / 5 / 15 min)",
|
||||
"historyTitleConnections": "Conexões Ativas (TCP / UDP)",
|
||||
"historyTitleDiskUsage": "Uso do Espaço em Disco",
|
||||
"historyTabBandwidth": "Largura de Banda",
|
||||
"historyTabPackets": "Pacotes",
|
||||
"historyTabDisk": "Disco I/O",
|
||||
"historyTabOnline": "Online",
|
||||
"historyTabLoad": "Carga",
|
||||
"historyTabConnections": "Conexões",
|
||||
"historyTabDiskUsage": "Uso de Disco",
|
||||
"xrayMetricsTitle": "Métricas do Xray",
|
||||
"xrayTitleHeap": "Memória Heap Alocada",
|
||||
"xrayTitleSys": "Memória Reservada do SO",
|
||||
"xrayTitleObjects": "Objetos Heap Ativos",
|
||||
"xrayTitleGcCount": "Ciclos de GC Concluídos",
|
||||
"xrayTitleGcPause": "Duração da Pausa do GC",
|
||||
"xrayTitleObservatory": "Saúde das Conexões de Saída",
|
||||
"xrayTabHeap": "Heap",
|
||||
"xrayTabSys": "Sys",
|
||||
"xrayTabObjects": "Objetos",
|
||||
"xrayTabGcCount": "Contagem GC",
|
||||
"xrayTabGcPause": "Pausa GC",
|
||||
"xrayTabObservatory": "Observatório",
|
||||
"xrayMetricsDisabled": "Endpoint de métricas do Xray não configurado",
|
||||
"xrayMetricsHint": "Adicione um bloco metrics de nível superior à configuração do xray com tag metrics_out e listen 127.0.0.1:11111, depois reinicie o xray.",
|
||||
"xrayObservatoryEmpty": "Ainda não há dados do Observatory",
|
||||
"xrayObservatoryHint": "Adicione um bloco observatory à configuração do xray listando as tags de outbound a sondar, depois reinicie o xray.",
|
||||
"xrayObservatoryTagPlaceholder": "Selecionar outbound",
|
||||
"xrayObservatoryAlive": "Ativo",
|
||||
"xrayObservatoryDead": "Inativo",
|
||||
"xrayObservatoryLastSeen": "Visto pela última vez",
|
||||
"xrayObservatoryLastTry": "Última tentativa",
|
||||
"connectionCount": "Estatísticas de Conexão",
|
||||
"ipAddresses": "Endereços IP",
|
||||
"toggleIpVisibility": "Alternar visibilidade do IP",
|
||||
@@ -191,18 +152,6 @@
|
||||
"panelUpdateUnknownTitle": "Não foi possível confirmar se a atualização terminou",
|
||||
"panelUpdateUnknownDesc": "O painel não retornou um resultado a tempo. Recarregue a página para verificar a versão atual, ou verifique os logs do servidor.",
|
||||
"dontRefresh": "Instalação em andamento, por favor não atualize a página",
|
||||
"logs": "Logs",
|
||||
"accessLogs": "Logs de acesso",
|
||||
"autoUpdate": "Atualização automática",
|
||||
"amneziawgLogs": "Logs do AmneziaWG",
|
||||
"amneziawgHandshake": "Último handshake",
|
||||
"amneziawgInterface": "Interface",
|
||||
"amneziawgInbound": "Entrada",
|
||||
"amneziawgEndpoint": "Endpoint",
|
||||
"amneziawgIdle": "Ocioso",
|
||||
"amneziawgEvents": "Eventos",
|
||||
"amneziawgNoPeers": "Nenhum peer do AmneziaWG está ativo",
|
||||
"amneziawgNoEvents": "Nenhum evento do AmneziaWG registrado ainda",
|
||||
"config": "Configuração",
|
||||
"backupTitle": "Backup & Restauração",
|
||||
"exportDatabase": "Backup",
|
||||
@@ -219,25 +168,14 @@
|
||||
"importDatabasePgDesc": "Clique para selecionar e enviar um backup do PostgreSQL (.dump), um banco de dados SQLite (.db) ou um dump de migração do SQLite para restaurar seu banco de dados. Isso substitui todos os dados atuais.",
|
||||
"migrationDownload": "Baixar migração",
|
||||
"migrationDownloadPgDesc": "Clique para baixar um banco de dados SQLite .db criado a partir dos seus dados do PostgreSQL, pronto para executar este painel no SQLite.",
|
||||
"avg": "média",
|
||||
"peak": "pico",
|
||||
"free": "livre",
|
||||
"openSockets": "sockets abertos",
|
||||
"throughputSub": "Total da interface",
|
||||
"avgWindow": "Média do período",
|
||||
"healthWarm": "{list} — um pouco alto",
|
||||
"healthCritical": "{list} — crítico",
|
||||
"panel": "Painel",
|
||||
"threads": "Threads",
|
||||
"uptime": "Tempo ativo",
|
||||
"logLevelDebug": "Debug",
|
||||
"logLevelInfo": "Info",
|
||||
"logLevelNotice": "Notice",
|
||||
"logLevelWarning": "Warning",
|
||||
"logLevelError": "Error",
|
||||
"accessDirect": "DIRECT",
|
||||
"accessBlocked": "BLOCKED",
|
||||
"accessProxy": "PROXY",
|
||||
"importKeepHostSettings": "Manter as configurações desta máquina",
|
||||
"importKeepHostSettingsDesc": "Mantém os endereços de escuta, as portas, o caminho base, os certificados e a identidade de nó deste painel em vez de obtê-los do arquivo enviado."
|
||||
},
|
||||
@@ -970,7 +908,19 @@
|
||||
"pinnedCertPlaceholder": "SHA-256 em base64 ou hex",
|
||||
"fetchPin": "Obter",
|
||||
"pinFetched": "Certificado atual do nó obtido",
|
||||
"pinFetchFailed": "Não foi possível obter o certificado"
|
||||
"pinFetchFailed": "Não foi possível obter o certificado",
|
||||
"nodeType": "Node Type",
|
||||
"nodeTypeTraditional": "Traditional Panel Node",
|
||||
"nodeTypeAgent": "Agent Lightweight Node",
|
||||
"agentHint": "Agent nodes connect out to the master; no address, port or API token needed. An install command is generated on creation.",
|
||||
"agentTokenTitle": "Agent Node Setup",
|
||||
"agentTokenCreated": "Node {{name}} created successfully",
|
||||
"agentTokenHint": "Copy the command below and run it on the node machine. This token is shown only once!",
|
||||
"agentTokenInstructions": "The command downloads the installer, configures the master URL and token. The node comes online in ~30s.",
|
||||
"agentTokenCopied": "Install command copied",
|
||||
"agentTokenCopyFailed": "Copy failed, please copy manually",
|
||||
"copyToken": "Copy Install Command",
|
||||
"agentMasterUrlHint": "Master URL (used by agent to reach the master; change to public address if behind proxy):"
|
||||
},
|
||||
"settings": {
|
||||
"defaultTag": "Padrão",
|
||||
@@ -1725,4 +1675,4 @@
|
||||
"noIpRecord": "❗ Nenhum registro de IP!"
|
||||
},
|
||||
"email": {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user