🎨 改进判断工作空间路径实现 Fix https://github.com/siyuan-note/siyuan/issues/7569

This commit is contained in:
Liang Ding 2023-03-04 18:11:17 +08:00
parent 0f15fd2550
commit 3c9e80b411
No known key found for this signature in database
GPG Key ID: 136F30F901A2231D
2 changed files with 9 additions and 7 deletions

View File

@ -198,8 +198,10 @@ func setWorkspaceDir(c *gin.Context) {
}
if gulu.OS.IsWindows() {
installDir := filepath.Dir(util.WorkingDir)
if strings.HasPrefix(path, installDir) {
// 改进判断工作空间路径实现 https://github.com/siyuan-note/siyuan/issues/7569
installDirLower := strings.ToLower(filepath.Dir(util.WorkingDir))
pathLower := strings.ToLower(path)
if strings.HasPrefix(pathLower, installDirLower) && util.IsSubPath(installDirLower, pathLower) {
ret.Code = -1
ret.Msg = model.Conf.Language(98)
ret.Data = map[string]interface{}{"closeTimeout": 5000}

View File

@ -148,13 +148,13 @@ func FilterFileName(name string) string {
return name
}
func IsSubFolder(parent, sub string) bool {
if 1 > len(parent) || 1 > len(sub) {
func IsSubPath(absPath, toCheckPath string) bool {
if 1 > len(absPath) || 1 > len(toCheckPath) {
return false
}
if gulu.OS.IsWindows() {
if filepath.IsAbs(parent) && filepath.IsAbs(sub) {
if strings.ToLower(parent)[0] != strings.ToLower(sub)[0] {
if filepath.IsAbs(absPath) && filepath.IsAbs(toCheckPath) {
if strings.ToLower(absPath)[0] != strings.ToLower(toCheckPath)[0] {
// 不在一个盘
return false
}
@ -162,7 +162,7 @@ func IsSubFolder(parent, sub string) bool {
}
up := ".." + string(os.PathSeparator)
rel, err := filepath.Rel(parent, sub)
rel, err := filepath.Rel(absPath, toCheckPath)
if err != nil {
return false
}