Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2023-04-04 11:18:33 +08:00
commit 18c7d76886
4 changed files with 25 additions and 31 deletions

View file

@ -58,7 +58,7 @@ func performSync(c *gin.Context) {
}
if 3 != model.Conf.Sync.Mode {
model.SyncData(false, false, true)
model.SyncData(true)
return
}

View file

@ -450,7 +450,7 @@ func Close(force bool, execInstallPkg int) (exitCode int) {
if !force {
if Conf.Sync.Enabled && 3 != Conf.Sync.Mode &&
((IsSubscriber() && conf.ProviderSiYuan == Conf.Sync.Provider) || conf.ProviderSiYuan != Conf.Sync.Provider) {
syncData(false, true, false)
syncData(true, false)
if 0 != ExitSyncSucc {
exitCode = 1
return

View file

@ -126,7 +126,7 @@ func SyncDataJob() {
return
}
SyncData(false, false, false)
SyncData(false)
}
func BootSyncData() {
@ -170,19 +170,19 @@ func BootSyncData() {
return
}
func SyncData(boot, exit, byHand bool) {
syncData(boot, exit, byHand)
func SyncData(byHand bool) {
syncData(false, byHand)
}
func syncData(boot, exit, byHand bool) {
func syncData(exit, byHand bool) {
defer logging.Recover()
if !checkSync(boot, exit, byHand) {
if !checkSync(false, exit, byHand) {
return
}
util.BroadcastByType("main", "syncing", 0, Conf.Language(81), nil)
if !isProviderOnline() { // 这个操作比较耗时,所以要先推送 syncing 事件后再判断网络,这样才能给用户更即时的反馈
if !exit && !isProviderOnline() { // 这个操作比较耗时,所以要先推送 syncing 事件后再判断网络,这样才能给用户更即时的反馈
util.BroadcastByType("main", "syncing", 2, Conf.Language(28), nil)
return
}
@ -190,11 +190,6 @@ func syncData(boot, exit, byHand bool) {
syncLock.Lock()
defer syncLock.Unlock()
if boot {
util.IncBootProgress(3, "Syncing data from the cloud...")
BootSyncSucc = 0
logging.LogInfof("sync before boot")
}
if exit {
ExitSyncSucc = 0
logging.LogInfof("sync before exit")
@ -576,7 +571,7 @@ func isProviderOnline() (ret bool) {
checkURL = Conf.Sync.WebDAV.Endpoint
default:
logging.LogWarnf("unknown provider: %d", Conf.Sync.Provider)
util.IsOnline("")
return false
}
if ret = util.IsOnline(checkURL); !ret {

View file

@ -32,20 +32,13 @@ import (
)
func IsOnline(checkURL string) bool {
_, err := url.Parse(checkURL)
if nil != err {
logging.LogWarnf("invalid check URL [%s]", checkURL)
return false
}
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
}
@ -57,10 +50,16 @@ func IsOnline(checkURL string) bool {
return false
}
func isOnline(checkURL string) bool {
c := req.C().SetTimeout(1 * time.Second)
_, err := c.R().Head(checkURL)
return nil == err
func isOnline(checkURL string) (ret bool) {
for i := 0; i < 3; i++ {
c := req.C().SetTimeout(3 * time.Second)
_, err := c.R().Head(checkURL)
ret = nil == err
if ret {
break
}
}
return
}
func GetRemoteAddr(session *melody.Session) string {