Skip to content

Commit

Permalink
Improve iCloud path checking (#9066)
Browse files Browse the repository at this point in the history
* fix: icloud目录判断范围太广

icloud 目录匹配包含导致全局无法正常使用

* fix: 提交修复icloud判断问题

1.删除无用的else块
2.完善simpleCheckIcloudPath方法 添加 桌面 和文档的路径判断
  • Loading branch information
AnonymousMister authored Aug 29, 2023
1 parent 2bfefbe commit b0b7b6f
Showing 1 changed file with 35 additions and 9 deletions.
44 changes: 35 additions & 9 deletions app/electron/init.html
Original file line number Diff line number Diff line change
Expand Up @@ -421,17 +421,45 @@ <h2>SiYuan</h2>

// macOS 端对工作空间放置在 iCloud 路径下做检查 https://github.com/siyuan-note/siyuan/issues/7747
const path = require('path')
const iCloudRoot = path.join(decodeURIComponent(getSearch('home')), 'Library', 'Mobile Documents')
const allFiles = walk(iCloudRoot)
const homePath = decodeURIComponent(getSearch('home'))
const absPathLower = absPath.toLowerCase()
for (const file of allFiles) {
if (-1 < absPathLower.indexOf(file.toLowerCase())) {
return true
const iCloudRoot = path.join(homePath, 'Library', 'Mobile Documents')
if(!simpleCheckIcloudPath(absPath, homePath)){
//简单判断无法通过则复杂验证
const allFiles = walk(iCloudRoot)
for (const file of allFiles) {
if (-1 < absPathLower.indexOf(file.toLowerCase())) {
return true
}
}
}
}
return false
}
//简单判断Icloud同步目录
//不允许 为桌面 文档 和 icloud 文件夹 和软链接
const simpleCheckIcloudPath =(absPath, homePath)=>{
const fs = require('fs')
let stat = fs.lstatSync(absPath)
if(stat.isSymbolicLink()){
return false
}
const path = require('path')
const absPathLower = absPath.toLowerCase()
const iCloudRoot = path.join(homePath, 'Library', 'Mobile Documents')
if(absPathLower.startsWith(iCloudRoot.toLowerCase())){
return false
}
const documentsRoot = path.join(homePath, 'Documents')
if (absPathLower.startsWith(documentsRoot.toLowerCase())) {
return false
}
const desktopRoot = path.join(homePath, 'Desktop')
if (absPathLower.startsWith(desktopRoot.toLowerCase())) {
return false
}
return true

}
const walk = (dir, files = []) => {
let dirFiles;
const fs = require('fs')
Expand All @@ -440,7 +468,6 @@ <h2>SiYuan</h2>
console.log("dir [" + dir + "] not exists")
return files
}

dirFiles = fs.readdirSync(dir)
} catch (e) {
console.error("read dir [" + dir + "] failed: ", e)
Expand All @@ -459,9 +486,8 @@ <h2>SiYuan</h2>
if (files.includes(dir + path.sep + f)) {
continue
}
walk(dir + path.sep + f, files)
} else {
files.push(dir + path.sep + f)
walk(dir + path.sep + f, files)
}
}
return files
Expand Down

0 comments on commit b0b7b6f

Please sign in to comment.