diff --git a/kernel/model/sync.go b/kernel/model/sync.go index fe7a9f677..97eb788b5 100644 --- a/kernel/model/sync.go +++ b/kernel/model/sync.go @@ -563,18 +563,21 @@ func planSyncAfter(d time.Duration) { func isProviderOnline() (ret bool) { checkURL := util.SiYuanSyncServer + skipTlsVerify := false switch Conf.Sync.Provider { case conf.ProviderSiYuan: case conf.ProviderS3: checkURL = Conf.Sync.S3.Endpoint + skipTlsVerify = Conf.Sync.S3.SkipTlsVerify case conf.ProviderWebDAV: checkURL = Conf.Sync.WebDAV.Endpoint + skipTlsVerify = Conf.Sync.WebDAV.SkipTlsVerify default: logging.LogWarnf("unknown provider: %d", Conf.Sync.Provider) return false } - if ret = util.IsOnline(checkURL); !ret { + if ret = util.IsOnline(checkURL, skipTlsVerify); !ret { util.PushErrMsg(Conf.Language(76), 5000) } return diff --git a/kernel/util/net.go b/kernel/util/net.go index b7a964a16..701380801 100644 --- a/kernel/util/net.go +++ b/kernel/util/net.go @@ -31,7 +31,7 @@ import ( "github.com/siyuan-note/logging" ) -func IsOnline(checkURL string) bool { +func IsOnline(checkURL string, skipTlsVerify bool) bool { _, err := url.Parse(checkURL) if nil != err { logging.LogWarnf("invalid check URL [%s]", checkURL) @@ -42,7 +42,7 @@ func IsOnline(checkURL string) bool { return false } - if isOnline(checkURL) { + if isOnline(checkURL, skipTlsVerify) { return true } @@ -50,10 +50,14 @@ func IsOnline(checkURL string) bool { return false } -func isOnline(checkURL string) (ret bool) { +func isOnline(checkURL string, skipTlsVerify bool) (ret bool) { + c := req.C().SetTimeout(3 * time.Second) + if skipTlsVerify { + c.EnableInsecureSkipVerify() + } + for i := 0; i < 3; i++ { - c := req.C().SetTimeout(3 * time.Second) - _, err := c.R().Head(checkURL) + _, err := c.R().Get(checkURL) ret = nil == err if ret { break