mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-02 22:09:06 +08:00
✨ 数据同步支持接入第三方云端存储 https://github.com/siyuan-note/siyuan/issues/6446 https://github.com/siyuan-note/siyuan/issues/6426
This commit is contained in:
parent
b31c6d6f26
commit
e80d95997d
@ -184,6 +184,9 @@ func ServeAPI(ginServer *gin.Engine) {
|
|||||||
ginServer.Handle("POST", "/api/sync/setSyncEnable", model.CheckAuth, setSyncEnable)
|
ginServer.Handle("POST", "/api/sync/setSyncEnable", model.CheckAuth, setSyncEnable)
|
||||||
ginServer.Handle("POST", "/api/sync/setSyncGenerateConflictDoc", model.CheckAuth, setSyncGenerateConflictDoc)
|
ginServer.Handle("POST", "/api/sync/setSyncGenerateConflictDoc", model.CheckAuth, setSyncGenerateConflictDoc)
|
||||||
ginServer.Handle("POST", "/api/sync/setSyncMode", model.CheckAuth, setSyncMode)
|
ginServer.Handle("POST", "/api/sync/setSyncMode", model.CheckAuth, setSyncMode)
|
||||||
|
ginServer.Handle("POST", "/api/sync/setSyncProvider", model.CheckAuth, setSyncProvider)
|
||||||
|
ginServer.Handle("POST", "/api/sync/setSyncProviderS3", model.CheckAuth, setSyncProviderS3)
|
||||||
|
ginServer.Handle("POST", "/api/sync/setSyncProviderWebDAV", model.CheckAuth, setSyncProviderWebDAV)
|
||||||
ginServer.Handle("POST", "/api/sync/setCloudSyncDir", model.CheckAuth, setCloudSyncDir)
|
ginServer.Handle("POST", "/api/sync/setCloudSyncDir", model.CheckAuth, setCloudSyncDir)
|
||||||
ginServer.Handle("POST", "/api/sync/createCloudSyncDir", model.CheckAuth, model.CheckReadonly, createCloudSyncDir)
|
ginServer.Handle("POST", "/api/sync/createCloudSyncDir", model.CheckAuth, model.CheckReadonly, createCloudSyncDir)
|
||||||
ginServer.Handle("POST", "/api/sync/removeCloudSyncDir", model.CheckAuth, model.CheckReadonly, removeCloudSyncDir)
|
ginServer.Handle("POST", "/api/sync/removeCloudSyncDir", model.CheckAuth, model.CheckReadonly, removeCloudSyncDir)
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
|
|
||||||
"github.com/88250/gulu"
|
"github.com/88250/gulu"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/siyuan-note/siyuan/kernel/conf"
|
||||||
"github.com/siyuan-note/siyuan/kernel/model"
|
"github.com/siyuan-note/siyuan/kernel/model"
|
||||||
"github.com/siyuan-note/siyuan/kernel/util"
|
"github.com/siyuan-note/siyuan/kernel/util"
|
||||||
)
|
)
|
||||||
@ -159,6 +160,95 @@ func setSyncMode(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setSyncProvider(c *gin.Context) {
|
||||||
|
ret := gulu.Ret.NewResult()
|
||||||
|
defer c.JSON(http.StatusOK, ret)
|
||||||
|
|
||||||
|
arg, ok := util.JsonArg(c, ret)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
provider := int(arg["provider"].(float64))
|
||||||
|
err := model.SetSyncProvider(provider)
|
||||||
|
if nil != err {
|
||||||
|
ret.Code = 1
|
||||||
|
ret.Msg = err.Error()
|
||||||
|
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func setSyncProviderS3(c *gin.Context) {
|
||||||
|
ret := gulu.Ret.NewResult()
|
||||||
|
defer c.JSON(http.StatusOK, ret)
|
||||||
|
|
||||||
|
arg, ok := util.JsonArg(c, ret)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
s3Arg := arg["s3"].(interface{})
|
||||||
|
data, err := gulu.JSON.MarshalJSON(s3Arg)
|
||||||
|
if nil != err {
|
||||||
|
ret.Code = 1
|
||||||
|
ret.Msg = err.Error()
|
||||||
|
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
s3 := &conf.S3{}
|
||||||
|
if err = gulu.JSON.UnmarshalJSON(data, s3); nil != err {
|
||||||
|
ret.Code = 1
|
||||||
|
ret.Msg = err.Error()
|
||||||
|
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = model.SetSyncProviderS3(s3)
|
||||||
|
if nil != err {
|
||||||
|
ret.Code = 1
|
||||||
|
ret.Msg = err.Error()
|
||||||
|
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func setSyncProviderWebDAV(c *gin.Context) {
|
||||||
|
ret := gulu.Ret.NewResult()
|
||||||
|
defer c.JSON(http.StatusOK, ret)
|
||||||
|
|
||||||
|
arg, ok := util.JsonArg(c, ret)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
webdavArg := arg["webdav"].(interface{})
|
||||||
|
data, err := gulu.JSON.MarshalJSON(webdavArg)
|
||||||
|
if nil != err {
|
||||||
|
ret.Code = 1
|
||||||
|
ret.Msg = err.Error()
|
||||||
|
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
webdav := &conf.WebDAV{}
|
||||||
|
if err = gulu.JSON.UnmarshalJSON(data, webdav); nil != err {
|
||||||
|
ret.Code = 1
|
||||||
|
ret.Msg = err.Error()
|
||||||
|
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = model.SetSyncProviderWebDAV(webdav)
|
||||||
|
if nil != err {
|
||||||
|
ret.Code = 1
|
||||||
|
ret.Msg = err.Error()
|
||||||
|
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func setCloudSyncDir(c *gin.Context) {
|
func setCloudSyncDir(c *gin.Context) {
|
||||||
ret := gulu.Ret.NewResult()
|
ret := gulu.Ret.NewResult()
|
||||||
defer c.JSON(http.StatusOK, ret)
|
defer c.JSON(http.StatusOK, ret)
|
||||||
|
@ -301,6 +301,33 @@ func SetSyncMode(mode int) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetSyncProvider(provider int) (err error) {
|
||||||
|
syncLock.Lock()
|
||||||
|
defer syncLock.Unlock()
|
||||||
|
|
||||||
|
Conf.Sync.Provider = provider
|
||||||
|
Conf.Save()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetSyncProviderS3(s3 *conf.S3) (err error) {
|
||||||
|
syncLock.Lock()
|
||||||
|
defer syncLock.Unlock()
|
||||||
|
|
||||||
|
Conf.Sync.S3 = s3
|
||||||
|
Conf.Save()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetSyncProviderWebDAV(webdav *conf.WebDAV) (err error) {
|
||||||
|
syncLock.Lock()
|
||||||
|
defer syncLock.Unlock()
|
||||||
|
|
||||||
|
Conf.Sync.WebDAV = webdav
|
||||||
|
Conf.Save()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var syncLock = sync.Mutex{}
|
var syncLock = sync.Mutex{}
|
||||||
|
|
||||||
func CreateCloudSyncDir(name string) (err error) {
|
func CreateCloudSyncDir(name string) (err error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user