123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package settings
- import (
- "gopkg.in/ini.v1"
- "log"
- "os"
- "path"
- )
- var Conf *ini.File
- type Server struct {
- HttpPort string
- RunMode string
- WebSocketToken string
- JwtSecret string
- HTTPChallengePort string
- Email string
- }
- var ServerSettings = &Server{}
- var DataDir string
- var confPath string
- func Init(dataDir string) {
- DataDir = dataDir
- confPath = path.Join(dataDir, "app.ini")
- if _, err := os.Stat(confPath); os.IsNotExist(err) {
- confPath = path.Join(dataDir, "app.example.ini")
- }
- Setup()
- }
- func Setup() {
- var err error
- Conf, err = ini.Load(confPath)
- if err != nil {
- log.Fatalf("setting.Setup, fail to parse '%s': %v", confPath, err)
- }
- mapTo("server", ServerSettings)
- }
- func mapTo(section string, v interface{}) {
- err := Conf.Section(section).MapTo(v)
- if err != nil {
- log.Fatalf("Cfg.MapTo %s err: %v", section, err)
- }
- }
- func Save() (err error) {
- confPath = path.Join(DataDir, "app.ini")
- err = Conf.SaveTo(confPath)
- if err != nil {
- return
- }
- Setup()
- return
- }
|