feat: restore CHFS JWT session compatibility

This commit is contained in:
OpenClaw Agent
2026-09-21 17:36:21 +08:00
parent a7192fd96e
commit d771c3c521
6 changed files with 165 additions and 53 deletions
+49
View File
@@ -8,6 +8,16 @@ import (
"strings"
)
type AccountConfig struct {
Username string
Password string
Default string
None []string
Read []string
Write []string
Delete []string
}
type Config struct {
Path []string
Port int
@@ -22,6 +32,7 @@ type Config struct {
HTMLNotice string
SSLCert string
SSLKey string
Accounts []AccountConfig
}
func Default() Config {
@@ -36,17 +47,45 @@ func Load(path string) (Config, error) {
}
defer f.Close()
s := bufio.NewScanner(f)
var section *AccountConfig
for s.Scan() {
line := strings.TrimSpace(s.Text())
if line == "" || strings.HasPrefix(line, ";") || strings.HasPrefix(line, "#") {
continue
}
if strings.HasPrefix(line, "[") && strings.HasSuffix(line, "]") {
name := strings.TrimSpace(line[1 : len(line)-1])
if name != "" {
c.Accounts = append(c.Accounts, AccountConfig{Username: name})
section = &c.Accounts[len(c.Accounts)-1]
} else {
section = nil
}
continue
}
i := strings.IndexByte(line, '=')
if i < 0 {
continue
}
key, val := strings.TrimSpace(line[:i]), strings.TrimSpace(line[i+1:])
val = strings.Trim(val, "\\\"")
if section != nil {
switch strings.ToLower(key) {
case "password":
section.Password = val
case "rule.default":
section.Default = val
case "rule.none":
section.None = appendNonEmpty(section.None, val)
case "rule.r":
section.Read = appendNonEmpty(section.Read, val)
case "rule.w":
section.Write = appendNonEmpty(section.Write, val)
case "rule.d":
section.Delete = appendNonEmpty(section.Delete, val)
}
continue
}
switch strings.ToLower(key) {
case "path":
c.Path = splitPath(val)
@@ -126,3 +165,13 @@ func (c Config) Validate() error {
}
return nil
}
func appendNonEmpty(dst []string, value string) []string {
for _, item := range strings.Split(value, "|") {
item = strings.TrimSpace(item)
if item != "" {
dst = append(dst, item)
}
}
return dst
}