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": "ПРП",
"tabVnc": "VNC",
"tabTunnels": "Тунелі",
"tabStats": "Метрики хоста",
"tabTelnet": "Телнет",
"tabSharing": "Спільне використання",
@@ -1071,31 +1068,8 @@
"startupSnippetLabel": "Фрагмент запуску",
"keepaliveIntervalLabel": "Інтервал підтримки активності (секунди)",
"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-сервера у файлі /etc/ssh/sshd_config мають бути встановлені значення GatewayPorts: «так», AllowTcpForwarding: «так» та PermitRootLogin: «так».",
"deleteHostConfirm": "Видалити \"{{name}}\"?",
"enableAtLeastOneProtocol": "Увімкніть принаймні один протокол вище, щоб налаштувати параметри автентифікації та підключення.",
"keyPassphrase": "Ключова парольна фраза",
"connectBtn": "Підключитися",
"disconnectBtn": "Відключитися",
"basicInformation": "Основна інформація",
"authDetailsSection": "Деталі автентифікації",
"credTypeLabel": "Тип",
@@ -1952,100 +1923,26 @@
"transferFailedRetryHint": "На місці призначення збережено частку даних. Повторна спроба відновиться після відновлення з’єднання."
},
"tunnels": {
"noSshTunnels": "Без SSH-тунелів",
"createFirstTunnelMessage": "Ви ще не створили жодного SSH-тунелю. Налаштуйте тунельні з’єднання в Host Manager, щоб розпочати.",
"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}} → ШКАРПЕТКИ через {{endpoint}}",
"autoNameClientLocal": "Місцевий {{localPort}} → {{endpoint}} {{remotePort}}",
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → місцевий {{localPort}}",
"autoNameClientDynamic": "ШКАРПЕТКИ {{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": "Інформаційна панель",