feat: restore CHFS JWT session compatibility
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user