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": "Главная",
"terminal": "Терминал",
"localTerminal": "Локальный терминал",
"tunnels": "Туннели",
"fileManager": "Файловый менеджер",
"serverStats": "Метрики хоста",
"admin": "Администрирование",
@@ -714,7 +713,6 @@
"macros": "Макросы",
"hostManager": "Менеджер хостов",
"credentials": "Учетные данные",
"portForwarding": "Пересылка",
"connections": "Подключения",
"serial": "Последовательный порт",
"keepSideMenuOpen": "Оставить меню открытым",
@@ -765,7 +763,6 @@
"tabTerminal": "Терминал",
"tabRdp": "RDP",
"tabVnc": "VNC",
"tabTunnels": "Туннели",
"tabStats": "Метрики хоста",
"tabTelnet": "Telnet",
"tabSharing": "Общий доступ",
@@ -1071,31 +1068,8 @@
"startupSnippetLabel": "Фрагмент запуска",
"keepaliveIntervalLabel": "Интервал keepalive (секунд)",
"maxKeepaliveMisses": "Макс. пропусков keepalive",
"tunnelSettings": "Настройки туннеля",
"enableTunneling": "Включить туннелирование",
"enableTunnelingDesc": "Включить функциональность SSH-туннеля для этого хоста",
"serverTunnelsSection": "Серверные туннели",
"addTunnelBtn": "Добавить туннель",
"noTunnelsConfigured": "Туннели не настроены.",
"tunnelLabel": "Туннель {{number}}",
"tunnelType": "Тип туннеля",
"tunnelModeLocalDesc": "Пробросить локальный порт на порт удалённого сервера (или хоста, доступного с него).",
"tunnelModeRemoteDesc": "Пробросить порт на удалённом сервере на локальный порт вашей машины.",
"tunnelModeDynamicDesc": "Создать SOCKS5-прокси на локальном порту для динамического пробрасывания портов.",
"sameHost": "Этот хост (прямой туннель)",
"endpointHost": "Целевой хост",
"endpointHostPlaceholder": "Тот же хост, SSH-хост или доступный хост/IP-адрес",
"endpointPort": "Целевой порт",
"bindHost": "Хост для привязки",
"sourcePort": "Исходный порт",
"maxRetries": "Макс. число попыток",
"retryIntervalS": "Интервал повтора (с)",
"autoStartLabel": "Автозапуск",
"autoStartDesc": "Автоматически подключать этот туннель при загрузке хоста",
"tunnelConnecting": "Туннель подключается...",
"tunnelDisconnected": "Туннель отключён",
"failedToConnectTunnel": "Не удалось подключиться",
"failedToDisconnectTunnel": "Не удалось отключиться",
"enableTmuxMonitor": "Включить монитор Tmux",
"enableTmuxMonitorDesc": "Показывать этот хост в Мониторе Tmux и добавлять действия tmux в боковую панель",
"enableTerminalToolbar": "Включить панель инструментов терминала",
@@ -1326,12 +1300,9 @@
"refreshBtn": "Обновить",
"addTag": "Добавить теги...",
"deleteConfirmBtn": "Удалить",
"tunnelRequirementsText": "На SSH-сервере должны быть установлены параметры GatewayPorts yes, AllowTcpForwarding yes и PermitRootLogin yes в /etc/ssh/sshd_config.",
"deleteHostConfirm": "Удалить \"{{name}}\"?",
"enableAtLeastOneProtocol": "Включите хотя бы один протокол выше, чтобы настроить параметры аутентификации и подключения.",
"keyPassphrase": "Парольная фраза ключа",
"connectBtn": "Подключиться",
"disconnectBtn": "Отключиться",
"basicInformation": "Основная информация",
"authDetailsSection": "Данные аутентификации",
"credTypeLabel": "Тип",
@@ -1952,100 +1923,26 @@
"transferFailedRetryHint": "Частичные данные сохранены в месте назначения. Повтор возобновится, когда соединение восстановится."
},
"tunnels": {
"noSshTunnels": "Нет SSH-туннелей",
"createFirstTunnelMessage": "Вы ещё не создали ни одного SSH-туннеля. Настройте туннельные соединения в Менеджере хостов, чтобы начать.",
"connected": "Подключено",
"disconnected": "Отключено",
"connecting": "Подключение...",
"error": "Ошибка",
"canceling": "Отмена...",
"connect": "Подключить",
"disconnect": "Отключить",
"cancel": "Отмена",
"port": "Порт",
"localPort": "Локальный порт",
"remotePort": "Удаленный порт",
"destinationPort": "Порт назначения",
"currentHostPort": "Порт текущего хоста",
"endpointPort": "Порт конечной точки",
"bindIp": "Локальный IP",
"localAddress": "Местный адрес",
"remoteAddress": "Удаленный адрес",
"destinationAddress": "Адрес назначения",
"remoteBindAddress": "Удаленный адрес привязки",
"intermediateHost": "Промежуточный хост",
"endpointSshConfig": "Конфигурация SSH конечной точки",
"endpointSshHost": "Хост SSH конечной точки",
"endpointSshHostPlaceholder": "Выберите настроенный хост",
"endpointSshHostRequired": "Выберите хост SSH конечной точки для каждого клиентского туннеля.",
"attempt": "Попытка {{current}} из {{max}}",
"nextRetryIn": "Следующая попытка через {{seconds}} сек.",
"clientTunnels": "Клиентские туннели",
"clientTunnel": "Клиентский туннель",
"addClientTunnel": "Добавить клиентский туннель",
"noClientTunnels": "На этом рабочем столе не настроено ни одного клиентского туннеля.",
"tunnelName": "Имя туннеля",
"remoteHost": "Удаленный хост",
"autoStart": "Автозапуск",
"clientAutoStartDesc": "Запускается при открытии этого клиента рабочего стола и остается подключенным.",
"clientManualStartDesc": "Используйте «Запустить» и «Остановить» в этой строке. Termix не будет запускать его автоматически.",
"clientRemoteServerNote": "Удаленная переадресация может потребовать AllowTcpForwarding и GatewayPorts на конечном SSH-сервере. Удаленный порт закрывается при отключении этого рабочего стола.",
"clientTunnelStarted": "Клиентский туннель запущен",
"clientTunnelStopped": "Клиентский туннель остановлен",
"tunnelTestSucceeded": "Проверка туннеля успешна",
"tunnelTestFailed": "Проверка туннеля не удалась",
"localSaved": "Клиентские туннели сохранены",
"localSaveError": "Не удалось сохранить локальные клиентские туннели",
"invalidBindIp": "Локальный IP-адрес должен быть действительным адресом IPv4.",
"invalidLocalTargetIp": "Локальный целевой IP-адрес должен быть действительным адресом IPv4.",
"invalidRemoteAddress": "Требуется удаленный адрес.",
"invalidLocalPort": "Локальный порт должен быть в диапазоне от 1 до 65535.",
"invalidRemotePort": "Удаленный порт должен быть в диапазоне от 1 до 65535.",
"invalidLocalTargetPort": "Локальный целевой порт должен быть в диапазоне от 1 до 65535.",
"invalidEndpointPort": "Порт конечной точки должен быть в диапазоне от 1 до 65535.",
"duplicateAutoStartBind": "Только один клиентский туннель с автозапуском может использовать {{bind}}.",
"manualControlError": "Не удалось обновить состояние туннеля.",
"active": "Активные",
"start": "Запустить",
"stop": "Остановить",
"test": "Проверить",
"type": "Тип туннеля",
"typeLocal": "Локальный (-L)",
"typeRemote": "Удалённый (-R)",
"typeDynamic": "Динамический (-D)",
"typeServerLocalDesc": "С текущего хоста на конечную точку.",
"typeServerRemoteDesc": "С конечной точки обратно на текущий хост.",
"typeClientLocalDesc": "С локального компьютера на конечную точку.",
"typeClientRemoteDesc": "С конечной точки обратно на локальный компьютер.",
"typeClientDynamicDesc": "SOCKS на локальном компьютере.",
"typeDynamicDesc": "Проброс трафика SOCKS5 CONNECT через SSH",
"forwardDescriptionServerLocal": "Текущий хост {{sourcePort}} → конечная точка {{endpointPort}}.",
"forwardDescriptionServerRemote": "Конечная точка {{endpointPort}} → текущий хост {{sourcePort}}.",
"forwardDescriptionServerDynamic": "SOCKS на текущем хосте {{sourcePort}}.",
"forwardDescriptionClientLocal": "Локальный {{sourcePort}} → удалённый {{endpointPort}}.",
"forwardDescriptionClientRemote": "Удалённый {{sourcePort}} → локальный {{endpointPort}}.",
"forwardDescriptionClientDynamic": "SOCKS на локальном порту {{sourcePort}}.",
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{remoteHost}}:{{remotePort}} через {{endpoint}}",
"summaryClientRemote": "{{remoteHost}}:{{remotePort}} на {{endpoint}} → {{localHost}}:{{localPort}}",
"summaryClientDynamic": "{{localHost}}:{{localPort}} → SOCKS через {{endpoint}}",
"autoNameClientLocal": "Локальный {{localPort}} → {{endpoint}} {{remotePort}}",
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → локальный {{localPort}}",
"autoNameClientDynamic": "SOCKS {{localPort}} через {{endpoint}}",
"route": "Маршрут:",
"lastStarted": "Последний запуск",
"lastTested": "Последняя проверка",
"lastError": "Последняя ошибка",
"maxRetries": "Макс. попыток",
"maxRetriesDescription": "Максимальное количество повторных попыток.",
"retryInterval": "Интервал повтора (секунд)",
"retryIntervalDescription": "Время ожидания между повторными попытками.",
"local": "Локальный",
"remote": "Удалённый",
"destination": "Назначение",
"host": "Хост",
"mode": "Режим",
"noHostSelected": "Хост не выбран",
"working": "Выполняется..."
"remote": "Удалённый"
},
"cardGrid": {
"dragToMove": "Перетащите для перемещения",
@@ -2175,37 +2072,13 @@
},
"profile": {
"c2sTunnelConfigDesc": "Локальные туннели рабочего стола, нацеленные на настроенные хосты SSH.",
"c2sTunnelPresets": "Предустановки клиентских туннелей",
"c2sTunnelPresetsDesc": "Сохраните список локальных туннелей этого клиента как именованную предустановку на сервере или загрузите предустановку обратно в клиент.",
"c2sTunnelPresetsUnavailable": "Предустановки клиентских туннелей доступны только в десктопном клиенте.",
"c2sPresetName": "Имя предустановки",
"c2sPresetNamePlaceholder": "Имя клиентской предустановки",
"c2sPresetToLoad": "Предустановка для загрузки",
"c2sNoPresetSelected": "Предустановка не выбрана",
"c2sNoPresets": "Нет сохраненных предустановок",
"c2sLoadPreset": "Загрузить",
"c2sCurrentLocalConfig": "На этом рабочем столе настроено {{count}} локальных клиентских туннелей.",
"c2sPresetSyncNote": "Предустановки — это явные снимки; загрузка одной заменяет список локальных клиентских туннелей этого десктопного клиента.",
"c2sPresetSaved": "Предустановка клиентского туннеля сохранена",
"c2sPresetLoaded": "Предустановка клиентского туннеля загружена локально",
"c2sPresetRenamed": "Предустановка клиентского туннеля переименована",
"c2sPresetDeleted": "Предустановка клиентского туннеля удалена",
"c2sPresetLoadError": "Не удалось загрузить предустановки клиентских туннелей"
"c2sTunnelPresetsDesc": "Сохраните список локальных туннелей этого клиента как именованную предустановку на сервере или загрузите предустановку обратно в клиент."
},
"placeholders": {
"maxRetries": "3",
"retryInterval": "10",
"language": "Язык",
"keyPassword": "пароль ключа",
"pastePrivateKey": "Вставьте свой закрытый ключ сюда...",
"localListenerHost": "127.0.0.1 (слушать локально)",
"localTargetHost": "127.0.0.1 (цель на этом компьютере)",
"remoteTargetHost": "127.0.0.1 (цель с конечной точки)",
"remoteBindHost": "127.0.0.1 (прослушивание конечной точки)",
"socksListenerHost": "127.0.0.1 (SOCKS-слушатель)",
"enterPassword": "Введите пароль",
"defaultPort": "22",
"defaultEndpointPort": "224"
"enterPassword": "Введите пароль"
},
"dashboard": {
"title": "Панель управления",