This commit is contained in:
Liang Ding 2023-01-05 19:35:27 +08:00
parent 8a6c1688b6
commit b3d23b65f2
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -41,16 +41,23 @@ func createWorkspaceDir(c *gin.Context) {
return return
} }
path := arg["path"].(string) absPath := arg["path"].(string)
if gulu.File.IsExist(path) { absPath = gulu.Str.RemoveInvisible(absPath)
absPath = strings.TrimSpace(absPath)
if gulu.File.IsExist(absPath) {
ret.Code = -1 ret.Code = -1
ret.Msg = model.Conf.Language(78) ret.Msg = model.Conf.Language(78)
return return
} }
if isInvalidWorkspacePath(absPath) {
if err := os.MkdirAll(path, 0755); nil != err {
ret.Code = -1 ret.Code = -1
ret.Msg = fmt.Sprintf("create workspace dir [%s] failed: %s", path, err) ret.Msg = "This workspace name is not allowed, please use another name"
return
}
if err := os.MkdirAll(absPath, 0755); nil != err {
ret.Code = -1
ret.Msg = fmt.Sprintf("create workspace dir [%s] failed: %s", absPath, err)
return return
} }
@ -61,7 +68,7 @@ func createWorkspaceDir(c *gin.Context) {
return return
} }
workspacePaths = append(workspacePaths, path) workspacePaths = append(workspacePaths, absPath)
if err = writeWorkspacePaths(workspacePaths); nil != err { if err = writeWorkspacePaths(workspacePaths); nil != err {
ret.Code = -1 ret.Code = -1
@ -211,3 +218,14 @@ func writeWorkspacePaths(workspacePaths []string) (err error) {
} }
return return
} }
func isInvalidWorkspacePath(absPath string) bool {
if "" == absPath {
return true
}
name := filepath.Base(absPath)
if "" == name {
return true
}
return "siyuan" == name || "conf" == name || "home" == name || "data" == name || "temp" == name
}