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": "Trang chủ",
"terminal": "Terminal",
"localTerminal": "Ga địa phương",
"tunnels": "Đường hầm",
"fileManager": "Quản lý tệp",
"serverStats": "Chỉ số máy chủ",
"admin": "Quản trị",
@@ -714,7 +713,6 @@
"macros": "Macro",
"hostManager": "Quản lý máy chủ",
"credentials": "Thông tin đăng nhập",
"portForwarding": "Chuyển tiếp",
"connections": "Kết nối",
"serial": "Nối tiếp",
"keepSideMenuOpen": "Giữ menu luôn mở",
@@ -765,7 +763,6 @@
"tabTerminal": "Terminal",
"tabRdp": "RDP",
"tabVnc": "VNC",
"tabTunnels": "Đường hầm",
"tabStats": "Số liệu máy chủ",
"tabTelnet": "Telnet",
"tabSharing": "Chia sẻ",
@@ -1071,31 +1068,8 @@
"startupSnippetLabel": "Đoạn mã khởi động",
"keepaliveIntervalLabel": "Khoảng thời gian Keepalive (giây)",
"maxKeepaliveMisses": "Số lần bỏ lỡ Keepalive tối đa",
"tunnelSettings": "Cài đặt đường hầm",
"enableTunneling": "Kích hoạt đường hầm",
"enableTunnelingDesc": "Kích hoạt chức năng đường hầm SSH cho máy chủ này",
"serverTunnelsSection": "Đường hầm máy chủ",
"addTunnelBtn": "Thêm đường hầm",
"noTunnelsConfigured": "Chưa cấu hình đường hầm nào.",
"tunnelLabel": "Đường hầm {{number}}",
"tunnelType": "Loại đường hầm",
"tunnelModeLocalDesc": "Chuyển tiếp một cổng cục bộ đến một cổng trên máy chủ từ xa (hoặc máy chủ có thể truy cập từ đó).",
"tunnelModeRemoteDesc": "Chuyển tiếp một cổng trên máy chủ từ xa về một cổng cục bộ trên máy của bạn.",
"tunnelModeDynamicDesc": "Tạo proxy SOCKS5 trên một cổng cục bộ để chuyển tiếp cổng động.",
"sameHost": "Máy chủ này (đường hầm trực tiếp)",
"endpointHost": "Máy chủ đích",
"endpointHostPlaceholder": "Cùng máy chủ, máy chủ SSH, hoặc máy chủ/IP có thể truy cập",
"endpointPort": "Cổng đích",
"bindHost": "Máy chủ bind",
"sourcePort": "Cổng nguồn",
"maxRetries": "Số lần thử lại tối đa",
"retryIntervalS": "Khoảng thời gian thử lại (giây)",
"autoStartLabel": "Tự động khởi động",
"autoStartDesc": "Tự động kết nối đường hầm này khi máy chủ được tải",
"tunnelConnecting": "Đang kết nối đường hầm...",
"tunnelDisconnected": "Đã ngắt kết nối đường hầm",
"failedToConnectTunnel": "Kết nối thất bại",
"failedToDisconnectTunnel": "Ngắt kết nối thất bại",
"enableTmuxMonitor": "Bật Tmux Monitor",
"enableTmuxMonitorDesc": "Hiển thị máy chủ này trong Tmux Monitor và thêm các hành động tmux của nó vào thanh bên",
"enableTerminalToolbar": "Kích hoạt thanh công cụ Terminal",
@@ -1326,12 +1300,9 @@
"refreshBtn": "Làm mới",
"addTag": "Thêm thẻ...",
"deleteConfirmBtn": "Xoá",
"tunnelRequirementsText": "Máy chủ SSH phải có GatewayPorts yes, AllowTcpForwarding yes, và PermitRootLogin yes được đặt trong /etc/ssh/sshd_config.",
"deleteHostConfirm": "Xoá \"{{name}}\"?",
"enableAtLeastOneProtocol": "Bật ít nhất một giao thức ở trên để cấu hình cài đặt xác thực và kết nối.",
"keyPassphrase": "Cụm mật khẩu khóa",
"connectBtn": "Kết nối",
"disconnectBtn": "Ngắt kết nối",
"basicInformation": "Thông tin cơ bản",
"authDetailsSection": "Chi tiết xác thực",
"credTypeLabel": "Loại",
@@ -1952,100 +1923,26 @@
"transferFailedRetryHint": "Dữ liệu chưa hoàn chỉnh được giữ ở đích. Thử lại sẽ tiếp tục khi kết nối được khôi phục."
},
"tunnels": {
"noSshTunnels": "Không có đường hầm SSH",
"createFirstTunnelMessage": "Bạn chưa tạo đường hầm SSH nào. Hãy cấu hình kết nối đường hầm trong Trình quản lý máy chủ để bắt đầu.",
"connected": "Đã kết nối",
"disconnected": "Đã ngắt kết nối",
"connecting": "Đang kết nối...",
"error": "Lỗi",
"canceling": "Đang hủy...",
"connect": "Kết nối",
"disconnect": "Ngắt kết nối",
"cancel": "Hủy",
"port": "Cổng",
"localPort": "Cổng cục bộ",
"remotePort": "Cổng từ xa",
"destinationPort": "Cảng đích",
"currentHostPort": "Cổng máy hiện tại",
"endpointPort": "Cổng điểm cuối",
"bindIp": "IP cục bộ",
"localAddress": "Địa chỉ địa phương",
"remoteAddress": "Địa chỉ từ xa",
"destinationAddress": "Địa chỉ đích",
"remoteBindAddress": "Địa chỉ liên kết từ xa",
"intermediateHost": "Máy chủ trung gian",
"endpointSshConfig": "Cấu hình SSH điểm cuối",
"endpointSshHost": "Máy chủ SSH điểm cuối",
"endpointSshHostPlaceholder": "Chọn máy chủ đã cấu hình",
"endpointSshHostRequired": "Chọn máy chủ SSH điểm cuối cho mỗi đường hầm máy khách.",
"attempt": "Lần thử {{current}} / {{max}}",
"nextRetryIn": "Thử lại sau {{seconds}} giây",
"clientTunnels": "Đường hầm máy khách",
"clientTunnel": "Đường hầm máy khách",
"addClientTunnel": "Thêm đường hầm máy khách",
"noClientTunnels": "Chưa có đường hầm máy khách nào được cấu hình trên máy này.",
"tunnelName": "Tên đường hầm",
"remoteHost": "Máy chủ từ xa",
"autoStart": "Tự động khởi động",
"clientAutoStartDesc": "Tự động khởi động khi mở ứng dụng máy khách và duy trì kết nối.",
"clientManualStartDesc": "Sử dụng nút Bắt đầu và Dừng trên dòng này. Termix sẽ không tự động mở.",
"clientRemoteServerNote": "Chuyển tiếp từ xa có thể yêu cầu AllowTcpForwarding và GatewayPorts trên máy chủ SSH điểm cuối. Cổng từ xa sẽ đóng khi máy này ngắt kết nối.",
"clientTunnelStarted": "Đường hầm máy khách đã khởi động",
"clientTunnelStopped": "Đường hầm máy khách đã dừng",
"tunnelTestSucceeded": "Kiểm tra đường hầm thành công",
"tunnelTestFailed": "Kiểm tra đường hầm thất bại",
"localSaved": "Đã lưu đường hầm máy khách",
"localSaveError": "Lưu đường hầm máy khách cục bộ thất bại",
"invalidBindIp": "IP cục bộ phải là địa chỉ IPv4 hợp lệ.",
"invalidLocalTargetIp": "IP đích cục bộ phải là địa chỉ IPv4 hợp lệ.",
"invalidRemoteAddress": "Cần có địa chỉ từ xa.",
"invalidLocalPort": "Cổng cục bộ phải nằm trong khoảng 1 đến 65535.",
"invalidRemotePort": "Cổng từ xa phải nằm trong khoảng 1 đến 65535.",
"invalidLocalTargetPort": "Cổng đích cục bộ phải nằm trong khoảng 1 đến 65535.",
"invalidEndpointPort": "Cổng điểm cuối phải nằm trong khoảng 1 đến 65535.",
"duplicateAutoStartBind": "Chỉ một đường hầm máy khách tự động có thể sử dụng {{bind}}.",
"manualControlError": "Cập nhật trạng thái đường hầm thất bại.",
"active": "Hoạt động",
"start": "Bắt đầu",
"stop": "Dừng",
"test": "Kiểm tra",
"type": "Loại đường hầm",
"typeLocal": "Cục bộ (-L)",
"typeRemote": "Từ xa (-R)",
"typeDynamic": "Động (-D)",
"typeServerLocalDesc": "Máy chủ hiện tại đến điểm cuối.",
"typeServerRemoteDesc": "Điểm cuối trở về máy chủ hiện tại.",
"typeClientLocalDesc": "Máy tính cục bộ đến điểm cuối.",
"typeClientRemoteDesc": "Điểm cuối trở về máy tính cục bộ.",
"typeClientDynamicDesc": "SOCKS trên máy tính cục bộ.",
"typeDynamicDesc": "Chuyển tiếp lưu lượng SOCKS5 CONNECT qua SSH",
"forwardDescriptionServerLocal": "Máy chủ hiện tại {{sourcePort}} → điểm cuối {{endpointPort}}.",
"forwardDescriptionServerRemote": "Điểm cuối {{endpointPort}} → máy chủ hiện tại {{sourcePort}}.",
"forwardDescriptionServerDynamic": "SOCKS trên máy chủ hiện tại {{sourcePort}}.",
"forwardDescriptionClientLocal": "Cục bộ {{sourcePort}} → từ xa {{endpointPort}}.",
"forwardDescriptionClientRemote": "Từ xa {{sourcePort}} → cục bộ {{endpointPort}}.",
"forwardDescriptionClientDynamic": "SOCKS trên cổng cục bộ {{sourcePort}}.",
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{remoteHost}}:{{remotePort}} qua {{endpoint}}",
"summaryClientRemote": "{{remoteHost}}:{{remotePort}} trên {{endpoint}} → {{localHost}}:{{localPort}}",
"summaryClientDynamic": "{{localHost}}:{{localPort}} → SOCKS qua {{endpoint}}",
"autoNameClientLocal": "Cục bộ {{localPort}} → {{endpoint}} {{remotePort}}",
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → cục bộ {{localPort}}",
"autoNameClientDynamic": "SOCKS {{localPort}} qua {{endpoint}}",
"route": "Tuyến:",
"lastStarted": "Lần bắt đầu cuối",
"lastTested": "Lần kiểm tra cuối",
"lastError": "Lỗi cuối cùng",
"maxRetries": "Số lần thử lại tối đa",
"maxRetriesDescription": "Số lần thử lại tối đa.",
"retryInterval": "Khoảng thời gian thử lại (giây)",
"retryIntervalDescription": "Thời gian chờ giữa các lần thử lại.",
"local": "Cục bộ",
"remote": "Từ xa",
"destination": "Điểm đến",
"host": "Máy chủ",
"mode": "Chế độ",
"noHostSelected": "Chưa chọn máy chủ",
"working": "Đang làm việc..."
"remote": "Từ xa"
},
"cardGrid": {
"dragToMove": "Kéo để di chuyển",
@@ -2175,37 +2072,13 @@
},
"profile": {
"c2sTunnelConfigDesc": "Đường hầm máy tính cục bộ trỏ đến các máy chủ SSH đã cấu hình.",
"c2sTunnelPresets": "Cài đặt sẵn Đường hầm Máy khách",
"c2sTunnelPresetsDesc": "Lưu danh sách đường hầm cục bộ của máy khách này thành cài đặt sẵn trên máy chủ có tên, hoặc tải cài đặt sẵn trở lại máy khách này.",
"c2sTunnelPresetsUnavailable": "Cài đặt sẵn đường hầm máy khách chỉ khả dụng trên ứng dụng máy tính.",
"c2sPresetName": "Tên cài đặt sẵn",
"c2sPresetNamePlaceholder": "Tên cài đặt sẵn máy khách",
"c2sPresetToLoad": "Cài đặt sẵn để tải",
"c2sNoPresetSelected": "Chưa chọn cài đặt sẵn",
"c2sNoPresets": "Chưa lưu cài đặt sẵn nào",
"c2sLoadPreset": "Tải",
"c2sCurrentLocalConfig": "{{count}} đường hầm máy khách cục bộ đã được cấu hình trên máy tính này.",
"c2sPresetSyncNote": "Cài đặt sẵn là ảnh chụp tức thời; tải một cài đặt sẽ thay thế danh sách đường hầm máy khách cục bộ trên máy này.",
"c2sPresetSaved": "Đã lưu cài đặt sẵn đường hầm máy khách",
"c2sPresetLoaded": "Đã tải cài đặt sẵn đường hầm máy khách cục bộ",
"c2sPresetRenamed": "Đã đổi tên cài đặt sẵn đường hầm máy khách",
"c2sPresetDeleted": "Đã xóa cài đặt sẵn đường hầm máy khách",
"c2sPresetLoadError": "Tải cài đặt sẵn đường hầm máy khách thất bại"
"c2sTunnelPresetsDesc": "Lưu danh sách đường hầm cục bộ của máy khách này thành cài đặt sẵn trên máy chủ có tên, hoặc tải cài đặt sẵn trở lại máy khách này."
},
"placeholders": {
"maxRetries": "3",
"retryInterval": "10",
"language": "Ngôn ngữ",
"keyPassword": "mật khẩu khóa",
"pastePrivateKey": "Dán khóa riêng tư của bạn vào đây...",
"localListenerHost": "127.0.0.1 (lắng nghe cục bộ)",
"localTargetHost": "127.0.0.1 (đích trên máy này)",
"remoteTargetHost": "127.0.0.1 (mục tiêu từ điểm cuối)",
"remoteBindHost": "127.0.0.1 (lắng nghe trên điểm cuối)",
"socksListenerHost": "127.0.0.1 (Trình nghe SOCKS)",
"enterPassword": "Nhập mật khẩu của bạn",
"defaultPort": "22",
"defaultEndpointPort": "224"
"enterPassword": "Nhập mật khẩu của bạn"
},
"dashboard": {
"title": "Bảng điều khiển",