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": "วีเอ็นซี",
"tabTunnels": "อุโมงค์",
"tabStats": "เมตริกโฮสต์",
"tabTelnet": "เทลเน็ต",
"tabSharing": "การแบ่งปัน",
@@ -1071,31 +1068,8 @@
"startupSnippetLabel": "ตัวอย่างโค้ดสำหรับเริ่มต้น",
"keepaliveIntervalLabel": "ช่วงเวลาการเชื่อมต่อ (วินาที)",
"maxKeepaliveMisses": "แม็กซ์ คีทอะไลฟ์ พลาด",
"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 Monitor",
"enableTmuxMonitorDesc": "แสดงโฮสต์นี้ใน Tmux Monitor และเพิ่มการดำเนินการ 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 ใดๆ เลย กำหนดค่าการเชื่อมต่ออุโมงค์ใน 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": "ใช้ปุ่ม Start และ Stop จากแถวนี้ 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": "ถุงเท้าบนคอมพิวเตอร์เครื่องโลคัล",
"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": "แดชบอร์ด",