From 7edab93ec2a8216bb30b6b2106d3e2c50d2cab81 Mon Sep 17 00:00:00 2001
From: azens <892553927@qq.com>
Date: Tue, 21 Jul 2026 22:56:39 +0800
Subject: [PATCH] feat(proxy-tunnel): add proxy endpoint profile test
---
.../connection/TunnelProfileManager.vue | 18 +-
apps/desktop/src/i18n/backend-errors.ts | 32 +
apps/desktop/src/i18n/locales/en.ts | 23 +-
apps/desktop/src/i18n/locales/es.ts | 23 +-
apps/desktop/src/i18n/locales/it.ts | 23 +-
apps/desktop/src/i18n/locales/ja.ts | 23 +-
apps/desktop/src/i18n/locales/pt-BR.ts | 23 +-
apps/desktop/src/i18n/locales/zh-CN.ts | 23 +-
apps/desktop/src/i18n/locales/zh-TW.ts | 23 +-
apps/desktop/src/types/database.ts | 2 +
crates/dbx-core/src/connection.rs | 122 ++-
crates/dbx-core/src/db/proxy_tunnel.rs | 834 +++++++++++++++++-
.../dbx-core/src/db/transport_layer_tunnel.rs | 1 +
crates/dbx-core/src/models/connection.rs | 6 +
crates/dbx-web/src/routes/connection.rs | 1 +
15 files changed, 1085 insertions(+), 92 deletions(-)
diff --git a/apps/desktop/src/components/connection/TunnelProfileManager.vue b/apps/desktop/src/components/connection/TunnelProfileManager.vue
index df740ec44..b22b7d5fe 100644
--- a/apps/desktop/src/components/connection/TunnelProfileManager.vue
+++ b/apps/desktop/src/components/connection/TunnelProfileManager.vue
@@ -86,7 +86,7 @@ function invalidateProfileTest() {
// Profile tests are asynchronous, so any selection or configuration change
// must invalidate the request before it can publish a stale result.
watch(
- [selectedId, selectedSsh],
+ [selectedId, selectedSsh, selectedProxy],
() => {
invalidateProfileTest();
},
@@ -148,7 +148,7 @@ async function save() {
}
async function testSelected() {
- const profile = selectedSsh.value;
+ const profile = selectedSsh.value || selectedProxy.value;
if (!profile || isTesting.value) return;
const profileSnapshot = cloneProfiles([profile])[0];
const requestId = testGuard.start(profileSnapshot);
@@ -156,13 +156,13 @@ async function testSelected() {
testResult.value = null;
try {
const message = await store.testProfile(profileSnapshot);
- if (!testGuard.isCurrent(requestId, selectedSsh.value)) return;
- testResult.value = { ok: true, message: message || t("settings.tunnelsTestSuccess") };
+ if (!testGuard.isCurrent(requestId, profile)) return;
+ testResult.value = { ok: true, message: message ? t("settings.tunnelsTestSuccess") + ": " + message : t("settings.tunnelsTestSuccess") };
} catch (error) {
- if (!testGuard.isCurrent(requestId, selectedSsh.value)) return;
+ if (!testGuard.isCurrent(requestId, profile)) return;
testResult.value = { ok: false, message: t("settings.tunnelsTestFailed", { message: translateBackendError(t, String(error)) }) };
} finally {
- if (testGuard.isCurrent(requestId, selectedSsh.value)) isTesting.value = false;
+ if (testGuard.isCurrent(requestId, selectedSsh.value || selectedProxy.value)) isTesting.value = false;
}
}
@@ -288,6 +288,10 @@ async function testSelected() {
+
+
+
+
@@ -314,7 +318,7 @@ async function testSelected() {
-