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()