🎨 Use Endpoint for network connectivity checks when syncing with third-party cloud providers https://github.com/siyuan-note/siyuan/issues/7805

This commit is contained in:
Liang Ding 2023-03-29 14:43:02 +08:00
parent 0f912cf1b3
commit 2b58079d94
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
7 changed files with 43 additions and 61 deletions

View file

@ -31,21 +31,36 @@ import (
"github.com/siyuan-note/logging"
)
func IsOnline() (ret bool) {
c := req.C().SetTimeout(1 * time.Second)
resp, err := c.R().Head("https://www.baidu.com")
if nil != err {
resp, err = c.R().Head("https://icanhazip.com")
if nil != err {
resp, err = c.R().Head("https://api.ipify.org")
func IsOnline(checkURL string) bool {
if "" == checkURL {
if isOnline("https://www.baidu.com") {
return true
}
if isOnline("https://icanhazip.com") {
return true
}
if isOnline("https://api.ipify.org") {
return true
}
logging.LogWarnf("network is offline")
return false
}
ret = nil == err && nil != resp && nil != resp.Response
if !ret {
logging.LogWarnf("network is offline: %v", err)
if isOnline(checkURL) {
return true
}
return
logging.LogWarnf("network is offline [checkURL=%s]", checkURL)
return false
}
func isOnline(checkURL string) bool {
c := req.C().SetTimeout(1 * time.Second)
_, err := c.R().Head("https://www.baidu.com")
return nil == err
}
func GetRemoteAddr(session *melody.Session) string {