80 lines
1.4 KiB
Go
80 lines
1.4 KiB
Go
package zsub
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
var (
|
|
config = make(map[string]string)
|
|
LogDebug bool
|
|
DataDir = ""
|
|
)
|
|
|
|
func LoadConf(path string) {
|
|
f, err := os.Open(path)
|
|
if err != nil {
|
|
log.Panicln(err)
|
|
}
|
|
|
|
reader := bufio.NewReader(f)
|
|
space := ""
|
|
for {
|
|
bytes, err := reader.ReadBytes('\n')
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
line := string(bytes)
|
|
line = strings.Trim(line, " \r\n")
|
|
if len(line) == 0 {
|
|
continue
|
|
}
|
|
if strings.Contains(line, "#") {
|
|
line = line[0:strings.Index(line, "#")]
|
|
}
|
|
|
|
switch {
|
|
case strings.EqualFold(line, ""):
|
|
case strings.Index(line, "[") == 0 && strings.Index(line, "]") > 0:
|
|
space = line[1:strings.Index(line, "]")]
|
|
space = strings.Trim(space, " ")
|
|
case strings.Index(line, "=") > 0:
|
|
arr := strings.Split(line, "=")
|
|
if len(arr) < 2 {
|
|
continue
|
|
}
|
|
|
|
config[space+"."+strings.Trim(arr[0], " ")] = strings.Trim(arr[1], " ")
|
|
default:
|
|
continue
|
|
}
|
|
}
|
|
|
|
LogDebug = strings.EqualFold(config["log.level"], "debug")
|
|
DataDir = GetStr("data.dir", "data")
|
|
os.MkdirAll(DataDir, os.ModeDir)
|
|
}
|
|
|
|
func GetStr(key string, def string) string {
|
|
if len(config[key]) == 0 {
|
|
return def
|
|
}
|
|
return config[key]
|
|
}
|
|
|
|
func GetInt(key string, def int) int {
|
|
if len(config[key]) == 0 {
|
|
return def
|
|
}
|
|
n, err := strconv.Atoi(config[key])
|
|
if err != nil {
|
|
log.Println(err, "return def;")
|
|
return def
|
|
}
|
|
return n
|
|
}
|