From 805d10346af1bdfb233f867bf45a1e601e8c334d Mon Sep 17 00:00:00 2001 From: yimiaoxiehou Date: Mon, 14 Sep 2026 18:31:27 +0800 Subject: [PATCH] feat(elasticsearch): support custom CA and mutual TLS --- .../connection/ConnectionDialog.vue | 24 ++- crates/dbx-core/src/connection.rs | 10 +- crates/dbx-core/src/db/easysearch_driver.rs | 22 ++- .../dbx-core/src/db/elasticsearch_driver.rs | 114 ++++++++++-- crates/dbx-core/src/db/mod.rs | 163 ++++++++++++++++++ src-tauri/src/commands/connection.rs | 20 ++- 6 files changed, 327 insertions(+), 26 deletions(-) diff --git a/apps/desktop/src/components/connection/ConnectionDialog.vue b/apps/desktop/src/components/connection/ConnectionDialog.vue index badd87f8c0..c7494b0599 100644 --- a/apps/desktop/src/components/connection/ConnectionDialog.vue +++ b/apps/desktop/src/components/connection/ConnectionDialog.vue @@ -4402,12 +4402,30 @@ function connectionConfigForSubmit(id: string, generatedName = "", validatePlugi if ((config.client_cert_path && !config.client_key_path) || (!config.client_cert_path && config.client_key_path)) { throw new Error(t("connection.etcdClientCertPairRequired")); } - } else if (form.value.db_type !== "consul" && config.db_type !== "zookeeper") { + } else if (form.value.db_type !== "consul" && config.db_type !== "zookeeper" && config.db_type !== "elasticsearch" && config.db_type !== "easysearch") { config.etcd_endpoints = undefined; config.client_cert_path = undefined; config.client_key_path = undefined; } - if (config.db_type !== "mysql" && config.db_type !== "clickhouse" && config.db_type !== "etcd" && config.db_type !== "consul" && config.db_type !== "starrocks" && config.db_type !== "mongodb" && config.db_type !== "victoriametrics" && config.db_type !== "zookeeper") { + if (config.db_type === "elasticsearch" || config.db_type === "easysearch") { + config.client_cert_path = config.client_cert_path?.trim() || ""; + config.client_key_path = config.client_key_path?.trim() || ""; + if ((config.client_cert_path && !config.client_key_path) || (!config.client_cert_path && config.client_key_path)) { + throw new Error(t("connection.etcdClientCertPairRequired")); + } + } + if ( + config.db_type !== "mysql" && + config.db_type !== "clickhouse" && + config.db_type !== "etcd" && + config.db_type !== "consul" && + config.db_type !== "starrocks" && + config.db_type !== "mongodb" && + config.db_type !== "victoriametrics" && + config.db_type !== "zookeeper" && + config.db_type !== "elasticsearch" && + config.db_type !== "easysearch" + ) { config.ca_cert_path = undefined; } else { config.ca_cert_path = config.ca_cert_path?.trim() || ""; @@ -8344,7 +8362,7 @@ function openExternalUrl(url: string) { -