Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2026-01-02 10:24:32 +08:00
parent 171d030c3d
commit cab9a573df
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -36,46 +36,6 @@ import (
"github.com/siyuan-note/siyuan/kernel/util"
)
// validateChars 验证从指定索引开始的字符是否合法(小写字母、数字、连字符)
func validateChars(name string, startIdx, n int) bool {
for i := startIdx; i < n; i++ {
c := name[i]
if c != '-' && (c < 'a' || c > 'z') && (c < '0' || c > '9') {
return false
}
}
return true
}
// isValidAttrName 验证属性名是否合法
func isValidAttrName(name string) bool {
n := len(name)
if n == 0 {
return false
}
// 首字符必须是小写字母
c := name[0]
if c < 'a' || c > 'z' {
return false
}
// 后续字符只能是小写字母、数字、连字符
if c != 'c' {
return validateChars(name, 1, n)
}
// 首字符是 'c',检查自定义属性 custom- 前缀
if n >= 7 && name[1] == 'u' && name[2] == 's' && name[3] == 't' && name[4] == 'o' && name[5] == 'm' && name[6] == '-' {
if n == 7 {
return false // 不允许只包含前缀
}
if c = name[7]; c < 'a' || c > 'z' {
return false // 首字符必须是小写字母
}
return validateChars(name, 7, n)
}
// 非自定义属性
return validateChars(name, 1, n)
}
func SetBlockReminder(id string, timed string) (err error) {
if !IsSubscriber() {
if "ios" == util.Container {
@ -356,3 +316,48 @@ func ResetBlockAttrs(id string, nameValues map[string]string) (err error) {
cache.RemoveBlockIAL(id)
return
}
// isValidAttrName 验证属性名是否合法
func isValidAttrName(name string) bool {
n := len(name)
if n == 0 {
return false
}
// 首字符必须是小写字母
c := name[0]
if c < 'a' || c > 'z' {
return false
}
// 后续字符只能是小写字母、数字、连字符
if c != 'c' {
return validateChars(name, 1, n)
}
// 首字符是 'c',检查自定义属性 custom- 前缀
if n >= 7 && name[1] == 'u' && name[2] == 's' && name[3] == 't' && name[4] == 'o' && name[5] == 'm' && name[6] == '-' {
if n == 7 {
return false // 不允许只包含前缀
}
if c = name[7]; c < 'a' || c > 'z' {
return false // 首字符必须是小写字母
}
return validateChars(name, 7, n)
}
// 非自定义属性
return validateChars(name, 1, n)
}
// validateChars 验证从指定索引开始的字符是否合法(小写字母、数字、连字符)
func validateChars(name string, startIdx, n int) bool {
for i := startIdx; i < n; i++ {
c := name[i]
if (c < 'a' || c > 'z') && (c < '0' || c > '9') && c != '-' {
return false
}
}
return true
}