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": "Rumah",
"terminal": "Terminal",
"localTerminal": "Terminal Lokal",
"tunnels": "Terowongan",
"fileManager": "Pengelola File",
"serverStats": "Metrik Host",
"admin": "Admin",
@@ -714,7 +713,6 @@
"macros": "Makro",
"hostManager": "Manajer Host",
"credentials": "Kredensial",
"portForwarding": "Meneruskan",
"connections": "Koneksi",
"serial": "Serial",
"keepSideMenuOpen": "Biarkan Menu Tetap Terbuka",
@@ -765,7 +763,6 @@
"tabTerminal": "Terminal",
"tabRdp": "RDP",
"tabVnc": "VNC",
"tabTunnels": "Terowongan",
"tabStats": "Metrik Host",
"tabTelnet": "Telnet",
"tabSharing": "Membagikan",
@@ -1071,31 +1068,8 @@
"startupSnippetLabel": "Cuplikan Startup",
"keepaliveIntervalLabel": "Interval Keepalive (detik)",
"maxKeepaliveMisses": "Max Keepalive Gagal",
"tunnelSettings": "Pengaturan Terowongan",
"enableTunneling": "Aktifkan Tunneling",
"enableTunnelingDesc": "Aktifkan fungsi terowongan SSH untuk host ini.",
"serverTunnelsSection": "Terowongan Server",
"addTunnelBtn": "Tambahkan Terowongan",
"noTunnelsConfigured": "Tidak ada terowongan yang dikonfigurasi.",
"tunnelLabel": "Terowongan {{number}}",
"tunnelType": "Jenis Terowongan",
"tunnelModeLocalDesc": "Teruskan port lokal ke port pada server jarak jauh (atau host yang dapat dijangkau dari server tersebut).",
"tunnelModeRemoteDesc": "Teruskan port pada server jarak jauh kembali ke port lokal pada mesin Anda.",
"tunnelModeDynamicDesc": "Buat proxy SOCKS5 pada port lokal untuk penerusan port dinamis.",
"sameHost": "Host ini (terowongan langsung)",
"endpointHost": "Host Titik Akhir",
"endpointHostPlaceholder": "Host yang sama, host SSH, atau host/IP yang dapat dijangkau",
"endpointPort": "Port Titik Akhir",
"bindHost": "Host Terikat",
"sourcePort": "Port Sumber",
"maxRetries": "Jumlah Percobaan Maksimum",
"retryIntervalS": "Interval Percobaan Ulang (detik)",
"autoStartLabel": "Mulai otomatis",
"autoStartDesc": "Terowongan ini akan terhubung secara otomatis saat host dimuat.",
"tunnelConnecting": "Terowongan penghubung...",
"tunnelDisconnected": "Terowongan terputus",
"failedToConnectTunnel": "Gagal terhubung",
"failedToDisconnectTunnel": "Gagal memutuskan koneksi",
"enableTmuxMonitor": "Aktifkan Monitor Tmux",
"enableTmuxMonitorDesc": "Tampilkan host ini di Tmux Monitor dan tambahkan aksi tmux-nya ke sidebar.",
"enableTerminalToolbar": "Aktifkan Toolbar Terminal",
@@ -1326,12 +1300,9 @@
"refreshBtn": "Menyegarkan",
"addTag": "Tambahkan tag...",
"deleteConfirmBtn": "Menghapus",
"tunnelRequirementsText": "Server SSH harus memiliki pengaturan GatewayPorts yes, AllowTcpForwarding yes, dan PermitRootLogin yes di /etc/ssh/sshd_config.",
"deleteHostConfirm": "Hapus \"{{name}}\"?",
"enableAtLeastOneProtocol": "Aktifkan setidaknya satu protokol di atas untuk mengkonfigurasi pengaturan otentikasi dan koneksi.",
"keyPassphrase": "Kata Sandi Kunci",
"connectBtn": "Menghubungkan",
"disconnectBtn": "Memutuskan",
"basicInformation": "Informasi Dasar",
"authDetailsSection": "Detail Otentikasi",
"credTypeLabel": "Jenis",
@@ -1952,100 +1923,26 @@
"transferFailedRetryHint": "Sebagian data tersimpan di tujuan. Upaya pengulangan akan dilanjutkan saat koneksi kembali pulih."
},
"tunnels": {
"noSshTunnels": "Tidak ada terowongan SSH",
"createFirstTunnelMessage": "Anda belum membuat terowongan SSH apa pun. Konfigurasikan koneksi terowongan di Host Manager untuk memulai.",
"connected": "Terhubung",
"disconnected": "Terputus",
"connecting": "Menghubungkan...",
"error": "Kesalahan",
"canceling": "Membatalkan...",
"connect": "Menghubungkan",
"disconnect": "Memutuskan",
"cancel": "Membatalkan",
"port": "Pelabuhan",
"localPort": "Pelabuhan Lokal",
"remotePort": "Port Jarak Jauh",
"destinationPort": "Pelabuhan Tujuan",
"currentHostPort": "Port Host Saat Ini",
"endpointPort": "Port Titik Akhir",
"bindIp": "IP Lokal",
"localAddress": "Alamat Lokal",
"remoteAddress": "Alamat Jarak Jauh",
"destinationAddress": "Alamat Tujuan",
"remoteBindAddress": "Alamat Pengikatan Jarak Jauh",
"intermediateHost": "Inang Perantara",
"endpointSshConfig": "Konfigurasi Endpoint SSH",
"endpointSshHost": "Host SSH Titik Akhir",
"endpointSshHostPlaceholder": "Pilih host yang telah dikonfigurasi.",
"endpointSshHostRequired": "Pilih host SSH titik akhir untuk setiap terowongan klien.",
"attempt": "Percobaan {{current}} dari {{max}}",
"nextRetryIn": "Percobaan berikutnya dalam {{seconds}} detik",
"clientTunnels": "Terowongan Klien",
"clientTunnel": "Terowongan Klien",
"addClientTunnel": "Tambahkan Terowongan Klien",
"noClientTunnels": "Tidak ada terowongan klien yang dikonfigurasi pada desktop ini.",
"tunnelName": "Nama Terowongan",
"remoteHost": "Host Jarak Jauh",
"autoStart": "Mulai Otomatis",
"clientAutoStartDesc": "Proses dimulai saat klien desktop ini dibuka dan tetap terhubung.",
"clientManualStartDesc": "Gunakan tombol Mulai dan Berhenti dari baris ini. Termix tidak akan membukanya secara otomatis.",
"clientRemoteServerNote": "Penerusan jarak jauh mungkin memerlukan AllowTcpForwarding dan GatewayPorts pada server SSH titik akhir. Port jarak jauh akan tertutup ketika desktop ini terputus.",
"clientTunnelStarted": "Terowongan klien telah dimulai.",
"clientTunnelStopped": "Terowongan klien dihentikan",
"tunnelTestSucceeded": "Uji terowongan berhasil",
"tunnelTestFailed": "Uji terowongan gagal",
"localSaved": "Terowongan klien tersimpan",
"localSaveError": "Gagal menyimpan terowongan klien lokal",
"invalidBindIp": "IP lokal harus berupa alamat IPv4 yang valid.",
"invalidLocalTargetIp": "Alamat IP target lokal harus berupa alamat IPv4 yang valid.",
"invalidRemoteAddress": "Alamat jarak jauh diperlukan.",
"invalidLocalPort": "Port lokal harus berada di antara 1 dan 65535.",
"invalidRemotePort": "Port jarak jauh harus berada di antara 1 dan 65535.",
"invalidLocalTargetPort": "Port target lokal harus berada di antara 1 dan 65535.",
"invalidEndpointPort": "Port endpoint harus berada di antara 1 dan 65535.",
"duplicateAutoStartBind": "Hanya satu terowongan klien auto-start yang dapat menggunakan {{bind}}.",
"manualControlError": "Gagal memperbarui status terowongan.",
"active": "Aktif",
"start": "Awal",
"stop": "Berhenti",
"test": "Tes",
"type": "Jenis Terowongan",
"typeLocal": "Lokal (-L)",
"typeRemote": "Jarak Jauh (-R)",
"typeDynamic": "Dinamis (-D)",
"typeServerLocalDesc": "Host saat ini ke titik akhir.",
"typeServerRemoteDesc": "Endpoint kembali ke host saat ini.",
"typeClientLocalDesc": "Komputer lokal ke titik akhir.",
"typeClientRemoteDesc": "Titik akhir kembali ke komputer lokal.",
"typeClientDynamicDesc": "SOCKS di komputer lokal.",
"typeDynamicDesc": "Meneruskan lalu lintas SOCKS5 CONNECT melalui SSH",
"forwardDescriptionServerLocal": "Host saat ini {{sourcePort}} → titik akhir {{endpointPort}}.",
"forwardDescriptionServerRemote": "Titik akhir {{endpointPort}} → host saat ini {{sourcePort}}.",
"forwardDescriptionServerDynamic": "SOCKS pada host saat ini {{sourcePort}}.",
"forwardDescriptionClientLocal": "Lokal {{sourcePort}} → jarak jauh {{endpointPort}}.",
"forwardDescriptionClientRemote": "Jarak jauh {{sourcePort}} → lokal {{endpointPort}}.",
"forwardDescriptionClientDynamic": "SOCKS pada port lokal {{sourcePort}}.",
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{remoteHost}}:{{remotePort}} melalui {{endpoint}}",
"summaryClientRemote": "{{remoteHost}}:{{remotePort}} pada {{endpoint}} → {{localHost}}:{{localPort}}",
"summaryClientDynamic": "{{localHost}}:{{localPort}} → KAOS KAKI melalui {{endpoint}}",
"autoNameClientLocal": "Lokal {{localPort}} → {{endpoint}} {{remotePort}}",
"autoNameClientRemote": "{{endpoint}} {{remotePort}} → lokal {{localPort}}",
"autoNameClientDynamic": "KAOS KAKI {{localPort}} melalui {{endpoint}}",
"route": "Rute:",
"lastStarted": "Terakhir dimulai",
"lastTested": "Terakhir diuji",
"lastError": "Kesalahan terakhir",
"maxRetries": "Jumlah Percobaan Maksimum",
"maxRetriesDescription": "Jumlah maksimum percobaan ulang.",
"retryInterval": "Interval Percobaan Ulang (detik)",
"retryIntervalDescription": "Waktu tunggu antar upaya percobaan ulang.",
"local": "Lokal",
"remote": "Terpencil",
"destination": "Tujuan",
"host": "Tuan rumah",
"mode": "Mode",
"noHostSelected": "Tidak ada pembawa acara yang dipilih.",
"working": "Bekerja..."
"remote": "Terpencil"
},
"cardGrid": {
"dragToMove": "Seret untuk memindahkan",
@@ -2175,37 +2072,13 @@
},
"profile": {
"c2sTunnelConfigDesc": "Terowongan desktop lokal yang menargetkan host SSH yang telah dikonfigurasi.",
"c2sTunnelPresets": "Pengaturan Awal Terowongan Klien",
"c2sTunnelPresetsDesc": "Simpan daftar terowongan lokal klien desktop ini sebagai preset server bernama, atau muat preset kembali ke klien ini.",
"c2sTunnelPresetsUnavailable": "Pengaturan terowongan klien hanya tersedia di klien desktop.",
"c2sPresetName": "Nama Preset",
"c2sPresetNamePlaceholder": "Nama preset klien",
"c2sPresetToLoad": "Preset untuk Memuat",
"c2sNoPresetSelected": "Tidak ada preset yang dipilih.",
"c2sNoPresets": "Tidak ada preset yang tersimpan.",
"c2sLoadPreset": "Memuat",
"c2sCurrentLocalConfig": "{{count}} terowongan klien lokal yang dikonfigurasi pada desktop ini.",
"c2sPresetSyncNote": "Preset adalah snapshot eksplisit; memuat salah satunya akan mengganti daftar terowongan klien lokal klien desktop ini.",
"c2sPresetSaved": "Pengaturan terowongan klien tersimpan.",
"c2sPresetLoaded": "Pengaturan terowongan klien dimuat secara lokal.",
"c2sPresetRenamed": "Pengaturan terowongan klien diubah namanya.",
"c2sPresetDeleted": "Pengaturan awal terowongan klien telah dihapus.",
"c2sPresetLoadError": "Gagal memuat preset terowongan klien"
"c2sTunnelPresetsDesc": "Simpan daftar terowongan lokal klien desktop ini sebagai preset server bernama, atau muat preset kembali ke klien ini."
},
"placeholders": {
"maxRetries": "3",
"retryInterval": "10",
"language": "Bahasa",
"keyPassword": "kata sandi kunci",
"pastePrivateKey": "Tempelkan kunci pribadi Anda di sini...",
"localListenerHost": "127.0.0.1 (dengarkan secara lokal)",
"localTargetHost": "127.0.0.1 (target pada komputer ini)",
"remoteTargetHost": "127.0.0.1 (target dari titik akhir)",
"remoteBindHost": "127.0.0.1 (dengarkan di titik akhir)",
"socksListenerHost": "127.0.0.1 (Pendengar SOCKS)",
"enterPassword": "Masukkan kata sandi Anda",
"defaultPort": "22",
"defaultEndpointPort": "224"
"enterPassword": "Masukkan kata sandi Anda"
},
"dashboard": {
"title": "Dasbor",