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 হোস্ট, অথবা পৌঁছানো যায় এমন হোস্ট/আইপি",
"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 yes, AllowTcpForwarding yes, এবং PermitRootLogin yes সেট করা থাকতে হবে।",
"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": "স্থানীয় আইপি",
"localAddress": "স্থানীয় ঠিকানা",
"remoteAddress": "দূরবর্তী ঠিকানা",
"destinationAddress": "গন্তব্য ঠিকানা",
"remoteBindAddress": "রিমোট বাইন্ড অ্যাড্রেস",
"intermediateHost": "মধ্যবর্তী হোস্ট",
"endpointSshConfig": "এন্ডপয়েন্ট SSH কনফিগারেশন",
"endpointSshHost": "এন্ডপয়েন্ট SSH হোস্ট",
"endpointSshHostPlaceholder": "একটি কনফিগার করা হোস্ট নির্বাচন করুন",
"endpointSshHostRequired": "প্রতিটি ক্লায়েন্ট টানেলের জন্য একটি এন্ডপয়েন্ট SSH হোস্ট নির্বাচন করুন।",
"attempt": "{{max}} এর {{current}} প্রচেষ্টা",
"nextRetryIn": "{{seconds}} সেকেন্ড পর আবার চেষ্টা করা হবে।",
"clientTunnels": "ক্লায়েন্ট টানেল",
"clientTunnel": "ক্লায়েন্ট টানেল",
"addClientTunnel": "ক্লায়েন্ট টানেল যোগ করুন",
"noClientTunnels": "এই ডেস্কটপে কোনো ক্লায়েন্ট টানেল কনফিগার করা নেই।",
"tunnelName": "টানেলের নাম",
"remoteHost": "রিমোট হোস্ট",
"autoStart": "অটো স্টার্ট",
"clientAutoStartDesc": "এই ডেস্কটপ ক্লায়েন্টটি খুললে এটি চালু হয় এবং সংযুক্ত থাকে।",
"clientManualStartDesc": "এই সারি থেকে স্টার্ট এবং স্টপ ব্যবহার করুন। টারমিক্স এটি স্বয়ংক্রিয়ভাবে খুলবে না।",
"clientRemoteServerNote": "রিমোট ফরওয়ার্ডিংয়ের জন্য এন্ডপয়েন্ট SSH সার্ভারে AllowTcpForwarding এবং GatewayPorts চালু করার প্রয়োজন হতে পারে। এই ডেস্কটপটি সংযোগ বিচ্ছিন্ন করলে রিমোট পোর্টটি বন্ধ হয়ে যায়।",
"clientTunnelStarted": "ক্লায়েন্ট টানেল শুরু হয়েছে",
"clientTunnelStopped": "ক্লায়েন্ট টানেল বন্ধ হয়ে গেছে",
"tunnelTestSucceeded": "টানেল পরীক্ষা সফল হয়েছে",
"tunnelTestFailed": "টানেল পরীক্ষা ব্যর্থ হয়েছে",
"localSaved": "ক্লায়েন্ট টানেলগুলি সংরক্ষিত হয়েছে",
"localSaveError": "স্থানীয় ক্লায়েন্ট টানেলগুলি সংরক্ষণ করতে ব্যর্থ হয়েছে",
"invalidBindIp": "লোকাল আইপি অবশ্যই একটি বৈধ IPv4 অ্যাড্রেস হতে হবে।",
"invalidLocalTargetIp": "স্থানীয় টার্গেট আইপি অবশ্যই একটি বৈধ IPv4 অ্যাড্রেস হতে হবে।",
"invalidRemoteAddress": "দূরবর্তী ঠিকানা প্রয়োজন।",
"invalidLocalPort": "স্থানীয় পোর্ট অবশ্যই ১ থেকে ৬৫৫৩৫-এর মধ্যে হতে হবে।",
"invalidRemotePort": "রিমোট পোর্ট অবশ্যই ১ থেকে ৬৫৫৩৫-এর মধ্যে হতে হবে।",
"invalidLocalTargetPort": "স্থানীয় টার্গেট পোর্ট অবশ্যই ১ থেকে ৬৫৫৩৫-এর মধ্যে হতে হবে।",
"invalidEndpointPort": "এন্ডপয়েন্ট পোর্ট অবশ্যই ১ থেকে ৬৫৫৩৫-এর মধ্যে হতে হবে।",
"duplicateAutoStartBind": "শুধুমাত্র একটি অটো-স্টার্ট ক্লায়েন্ট টানেল {{bind}} ব্যবহার করতে পারে।",
"manualControlError": "টানেলের অবস্থা আপডেট করতে ব্যর্থ হয়েছে।",
"active": "সক্রিয়",
"start": "শুরু করুন",
"stop": "থামুন",
"test": "পরীক্ষা",
"type": "টানেল টাইপ",
"typeLocal": "স্থানীয় (-L)",
"typeRemote": "রিমোট (-R)",
"typeDynamic": "গতিশীল (-D)",
"typeServerLocalDesc": "বর্তমান হোস্ট থেকে এন্ডপয়েন্ট।",
"typeServerRemoteDesc": "এন্ডপয়েন্টটি বর্তমান হোস্টে ফিরে যাচ্ছে।",
"typeClientLocalDesc": "স্থানীয় কম্পিউটার থেকে এন্ডপয়েন্ট পর্যন্ত।",
"typeClientRemoteDesc": "এন্ডপয়েন্টটি স্থানীয় কম্পিউটারে ফিরে যাচ্ছে।",
"typeClientDynamicDesc": "স্থানীয় কম্পিউটারে SOCKS।",
"typeDynamicDesc": "SSH এর মাধ্যমে SOCKS5 CONNECT ট্র্যাফিক ফরওয়ার্ড করুন",
"forwardDescriptionServerLocal": "বর্তমান হোস্ট {{sourcePort}} → শেষ বিন্দু {{endpointPort}}.",
"forwardDescriptionServerRemote": "এন্ডপয়েন্ট {{endpointPort}} → বর্তমান হোস্ট {{sourcePort}}.",
"forwardDescriptionServerDynamic": "বর্তমান হোস্টে SOCKS {{sourcePort}}।",
"forwardDescriptionClientLocal": "স্থানীয় {{sourcePort}} → দূরবর্তী {{endpointPort}}.",
"forwardDescriptionClientRemote": "রিমোট {{sourcePort}} → লোকাল {{endpointPort}}.",
"forwardDescriptionClientDynamic": "স্থানীয় পোর্ট {{sourcePort}}-এ SOCKS।",
"summaryClientLocal": "{{localHost}}:{{localPort}} → {{remoteHost}}:{{remotePort}} {{endpoint}} এর মাধ্যমে",
"summaryClientRemote": "{{remoteHost}}:{{remotePort}} {{endpoint}} এর উপর → {{localHost}}:{{localPort}}",
"summaryClientDynamic": "{{localHost}}:{{localPort}} → SOCKS via {{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": "৩",
"retryInterval": "১০",
"language": "ভাষা",
"keyPassword": "কী পাসওয়ার্ড",
"pastePrivateKey": "আপনার প্রাইভেট কী এখানে পেস্ট করুন...",
"localListenerHost": "১২৭.০.০.১ (স্থানীয়ভাবে শুনুন)",
"localTargetHost": "১২৭.০.০.১ (এই কম্পিউটারে লক্ষ্যবস্তু)",
"remoteTargetHost": "১২৭.০.০.১ (এন্ডপয়েন্ট থেকে টার্গেট)",
"remoteBindHost": "১২৭.০.০.১ (এন্ডপয়েন্টে শুনুন)",
"socksListenerHost": "১২৭.০.০.১ (SOCKS লিসেনার)",
"enterPassword": "আপনার পাসওয়ার্ড লিখুন",
"defaultPort": "২২",
"defaultEndpointPort": "২২৪"
"enterPassword": "আপনার পাসওয়ার্ড লিখুন"
},
"dashboard": {
"title": "ড্যাশবোর্ড",