🎨 Support configuration of cloud provider connectivity check URL https://github.com/siyuan-note/siyuan/issues/7805

This commit is contained in:
Liang Ding 2023-03-29 14:10:18 +08:00
parent 947e5aad9d
commit 07414dcdc8
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
5 changed files with 35 additions and 1 deletions

View file

@ -93,6 +93,11 @@ const renderProvider = (provider: number) => {
<option ${window.siyuan.config.sync.s3.skipTlsVerify ? "" : "selected"} value="false">Verify</option>
<option ${window.siyuan.config.sync.s3.skipTlsVerify ? "selected" : ""} value="true">Skip</option>
</select>
</label>
<label class="b3-label b3-label--noborder fn__flex config__item">
<div class="fn__flex-center fn__size200">Connectivity Check URL</div>
<div class="fn__space"></div>
<input id="checkURL" class="b3-text-field fn__block" value="${window.siyuan.config.sync.s3.checkURL}">
</label>`;
} else if (provider === 3) {
const tip = `<div class="b3-label b3-label--inner">
@ -133,6 +138,11 @@ const renderProvider = (provider: number) => {
<option ${window.siyuan.config.sync.webdav.skipTlsVerify ? "" : "selected"} value="false">Verify</option>
<option ${window.siyuan.config.sync.webdav.skipTlsVerify ? "selected" : ""} value="true">Skip</option>
</select>
</label>
<label class="b3-label b3-label--noborder fn__flex config__item">
<div class="fn__flex-center fn__size200">Connectivity Check URL</div>
<div class="fn__space"></div>
<input id="checkURL" class="b3-text-field fn__block" value="${window.siyuan.config.sync.webdav.checkURL}">
</label>`;
}
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;

View file

@ -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

View file

@ -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"
}

View file

@ -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
}

View file

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