From 07414dcdc8a69e03cc7662badbdefea9ab48af8f Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 29 Mar 2023 14:10:18 +0800 Subject: [PATCH] :art: Support configuration of cloud provider connectivity check URL https://github.com/siyuan-note/siyuan/issues/7805 --- app/src/config/repos.ts | 12 ++++++++++++ app/src/types/index.d.ts | 2 ++ kernel/conf/sync.go | 6 ++++++ kernel/model/conf.go | 8 +++++++- kernel/model/sync.go | 8 ++++++++ 5 files changed, 35 insertions(+), 1 deletion(-) diff --git a/app/src/config/repos.ts b/app/src/config/repos.ts index 26ae55ae5..da0384c74 100644 --- a/app/src/config/repos.ts +++ b/app/src/config/repos.ts @@ -93,6 +93,11 @@ const renderProvider = (provider: number) => { + +`; } else if (provider === 3) { const tip = `
@@ -133,6 +138,11 @@ const renderProvider = (provider: number) => { + +`; } return ""; @@ -217,6 +227,7 @@ const bindProviderEvent = () => { region: (providerPanelElement.querySelector("#region") as HTMLInputElement).value, skipTlsVerify: (providerPanelElement.querySelector("#s3SkipTlsVerify") as HTMLInputElement).value === "true", timeout: timeout, + checkURL: (providerPanelElement.querySelector("#checkURL") as HTMLInputElement).value, }; fetchPost("/api/sync/setSyncProviderS3", {s3}, () => { window.siyuan.config.sync.s3 = s3; @@ -236,6 +247,7 @@ const bindProviderEvent = () => { password: (providerPanelElement.querySelector("#password") as HTMLInputElement).value, skipTlsVerify: (providerPanelElement.querySelector("#webdavSkipTlsVerify") as HTMLInputElement).value === "true", timeout: timeout, + checkURL: (providerPanelElement.querySelector("#checkURL") as HTMLInputElement).value, }; fetchPost("/api/sync/setSyncProviderWebDAV", {webdav}, () => { window.siyuan.config.sync.webdav = webdav; diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index d038c73f3..3bdabd405 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -433,6 +433,7 @@ declare interface IConfig { region: string skipTlsVerify: boolean timeout: number + checkURL: string } webdav: { endpoint: string @@ -440,6 +441,7 @@ declare interface IConfig { password: string skipTlsVerify: boolean timeout: number + checkURL: string } }, lang: string diff --git a/kernel/conf/sync.go b/kernel/conf/sync.go index bf80edf79..da2899393 100644 --- a/kernel/conf/sync.go +++ b/kernel/conf/sync.go @@ -47,6 +47,7 @@ type S3 struct { PathStyle bool `json:"pathStyle"` // 是否使用路径风格 SkipTlsVerify bool `json:"skipTlsVerify"` // 是否跳过 TLS 验证 Timeout int `json:"timeout"` // 超时时间,单位:秒 + CheckURL string `json:"checkURL"` // 连通性检查 URL // https://github.com/siyuan-note/siyuan/issues/7805 } type WebDAV struct { @@ -55,6 +56,7 @@ type WebDAV struct { Password string `json:"password"` // 密码 SkipTlsVerify bool `json:"skipTlsVerify"` // 是否跳过 TLS 验证 Timeout int `json:"timeout"` // 超时时间,单位:秒 + CheckURL string `json:"checkUrl"` // 连通性检查 URL // https://github.com/siyuan-note/siyuan/issues/7805 } const ( @@ -62,3 +64,7 @@ const ( ProviderS3 = 2 // ProviderS3 为 S3 协议对象存储提供的云端存储服务 ProviderWebDAV = 3 // ProviderWebDAV 为 WebDAV 协议提供的云端存储服务 ) + +func NewSyncProviderCheckURL() string { + return "https://www.baidu.com https://icanhazip.com https://api.ipify.org" +} diff --git a/kernel/model/conf.go b/kernel/model/conf.go index f62182955..774787a8e 100644 --- a/kernel/model/conf.go +++ b/kernel/model/conf.go @@ -268,11 +268,17 @@ func InitConf() { } Conf.Sync.S3.Endpoint = util.NormalizeEndpoint(Conf.Sync.S3.Endpoint) Conf.Sync.S3.Timeout = util.NormalizeTimeout(Conf.Sync.S3.Timeout) + if "" == strings.TrimSpace(Conf.Sync.S3.CheckURL) { + Conf.Sync.S3.CheckURL = conf.NewSyncProviderCheckURL() + } if nil == Conf.Sync.WebDAV { Conf.Sync.WebDAV = &conf.WebDAV{} } Conf.Sync.WebDAV.Endpoint = util.NormalizeEndpoint(Conf.Sync.WebDAV.Endpoint) Conf.Sync.WebDAV.Timeout = util.NormalizeTimeout(Conf.Sync.WebDAV.Timeout) + if "" == strings.TrimSpace(Conf.Sync.WebDAV.CheckURL) { + Conf.Sync.WebDAV.CheckURL = conf.NewSyncProviderCheckURL() + } if nil == Conf.Api { Conf.Api = conf.NewAPI() @@ -297,7 +303,7 @@ func InitConf() { if 0 > Conf.Editor.BacklinkExpandCount { Conf.Editor.BacklinkExpandCount = 0 } - if 0> Conf.Editor.BackmentionExpandCount { + if 0 > Conf.Editor.BackmentionExpandCount { Conf.Editor.BackmentionExpandCount = 0 } diff --git a/kernel/model/sync.go b/kernel/model/sync.go index 1d570c1aa..e1ae9ea39 100644 --- a/kernel/model/sync.go +++ b/kernel/model/sync.go @@ -365,6 +365,10 @@ func SetSyncProviderS3(s3 *conf.S3) (err error) { s3.Bucket = strings.TrimSpace(s3.Bucket) s3.Region = strings.TrimSpace(s3.Region) s3.Timeout = util.NormalizeTimeout(s3.Timeout) + s3.CheckURL = strings.TrimSpace(s3.CheckURL) + if "" == s3.CheckURL { + s3.CheckURL = conf.NewSyncProviderCheckURL() + } Conf.Sync.S3 = s3 Conf.Save() @@ -384,6 +388,10 @@ func SetSyncProviderWebDAV(webdav *conf.WebDAV) (err error) { webdav.Username = strings.TrimSpace(webdav.Username) webdav.Password = strings.TrimSpace(webdav.Password) webdav.Timeout = util.NormalizeTimeout(webdav.Timeout) + webdav.CheckURL = strings.TrimSpace(webdav.CheckURL) + if "" == webdav.CheckURL { + webdav.CheckURL = conf.NewSyncProviderCheckURL() + } Conf.Sync.WebDAV = webdav Conf.Save()