settings.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package settings
  2. import (
  3. "gopkg.in/ini.v1"
  4. "log"
  5. "os"
  6. "path"
  7. )
  8. var Conf *ini.File
  9. type Server struct {
  10. HttpPort string
  11. RunMode string
  12. WebSocketToken string
  13. JwtSecret string
  14. HTTPChallengePort string
  15. Email string
  16. }
  17. var ServerSettings = &Server{}
  18. var DataDir string
  19. var confPath string
  20. func Init(dataDir string) {
  21. DataDir = dataDir
  22. confPath = path.Join(dataDir, "app.ini")
  23. if _, err := os.Stat(confPath); os.IsNotExist(err) {
  24. confPath = path.Join(dataDir, "app.example.ini")
  25. }
  26. Setup()
  27. }
  28. func Setup() {
  29. var err error
  30. Conf, err = ini.Load(confPath)
  31. if err != nil {
  32. log.Fatalf("setting.Setup, fail to parse '%s': %v", confPath, err)
  33. }
  34. mapTo("server", ServerSettings)
  35. }
  36. func mapTo(section string, v interface{}) {
  37. err := Conf.Section(section).MapTo(v)
  38. if err != nil {
  39. log.Fatalf("Cfg.MapTo %s err: %v", section, err)
  40. }
  41. }
  42. func Save() (err error) {
  43. confPath = path.Join(DataDir, "app.ini")
  44. err = Conf.SaveTo(confPath)
  45. if err != nil {
  46. return
  47. }
  48. Setup()
  49. return
  50. }