settings.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package settings
  2. import (
  3. "log"
  4. "os"
  5. "github.com/go-ini/ini"
  6. )
  7. // Settings represents a app settings
  8. type Settings struct {
  9. IsInit bool
  10. AppName string
  11. ServerProtocol string
  12. ServerHost string
  13. ServerPort string
  14. AuthAcceptHeader string
  15. AuthPrefixHeader string
  16. AuthSecretKey string
  17. DatabaseDialect string
  18. DatabaseHost string
  19. DatabasePort string
  20. DatabaseUser string
  21. DatabasePasswd string
  22. DatabaseLogger bool
  23. DatabaseAutomigrate bool
  24. DockerSockDir string
  25. DockerHostIP string
  26. DockerNetworkName string
  27. DockerNetworkIP string
  28. DockerHiddenContainers []string
  29. OdooImageName string
  30. OdooRootPath string
  31. OdooConfigPath string
  32. OdooAddonsPath string
  33. OdooFilesPath string
  34. OdooPortsRange []int
  35. OdooCfgName string
  36. OdooAdminPasswd string
  37. OdooDbContainerName string
  38. OdooDbContainerIP string
  39. OdooDbContainerPort string
  40. OdooDbUser string
  41. OdooDbPasswd string
  42. GitReposPath string
  43. MailerHost string
  44. MailerPort string
  45. MailerUser string
  46. MailerPasswd string
  47. }
  48. // Ctx is a global context settings instance
  49. var Ctx = Settings{
  50. IsInit: false,
  51. }
  52. // Init initialize all app configuration
  53. func Init() {
  54. if Ctx.IsInit {
  55. return
  56. }
  57. cfg, err := ini.Load("data/app.ini")
  58. if err != nil {
  59. log.Fatal("Cannot read file")
  60. os.Exit(1)
  61. }
  62. // Read root section
  63. rootSection := cfg.Section("")
  64. Ctx.AppName = rootSection.Key("appName").MustString("No name")
  65. // Read server section
  66. srvSection := cfg.Section("server")
  67. Ctx.ServerProtocol = srvSection.Key("protocol").MustString("http")
  68. Ctx.ServerHost = srvSection.Key("host").MustString("127.0.0.1")
  69. Ctx.ServerPort = srvSection.Key("port").MustString("8080")
  70. // Read auth section
  71. authSection := cfg.Section("auth")
  72. Ctx.AuthAcceptHeader = authSection.Key("acceptHeader").String()
  73. Ctx.AuthPrefixHeader = authSection.Key("prefixHeader").String()
  74. Ctx.AuthSecretKey = authSection.Key("secretKey").String()
  75. // Read database section
  76. dbSection := cfg.Section("database")
  77. Ctx.DatabaseDialect = dbSection.Key("dbDialect").MustString("sqlite")
  78. Ctx.DatabaseHost = dbSection.Key("dbHost").String()
  79. Ctx.DatabasePort = dbSection.Key("dbPort").String()
  80. Ctx.DatabaseUser = dbSection.Key("dbUser").String()
  81. Ctx.DatabasePasswd = dbSection.Key("dbPasswd").String()
  82. Ctx.DatabaseLogger = dbSection.Key("dbLogger").MustBool(true)
  83. Ctx.DatabaseAutomigrate = dbSection.Key("dbAutomigrate").MustBool(true)
  84. // Read docker section
  85. dockerSection := cfg.Section("docker")
  86. Ctx.DockerSockDir = dockerSection.Key("sockDir").MustString("/var/run/docker.sock")
  87. Ctx.DockerHostIP = dockerSection.Key("hostIP").MustString("127.0.0.1")
  88. Ctx.DockerNetworkName = dockerSection.Key("networkName").MustString("bridge")
  89. Ctx.DockerNetworkIP = dockerSection.Key("networkIP").MustString("172.10.0.1")
  90. Ctx.DockerHiddenContainers = dockerSection.Key("hiddenContainers").Strings(",")
  91. // Read odoo section
  92. odooSection := cfg.Section("odoo")
  93. Ctx.OdooImageName = odooSection.Key("imageName").String()
  94. Ctx.OdooRootPath = odooSection.Key("rootPath").String()
  95. Ctx.OdooConfigPath = odooSection.Key("configPath").String()
  96. Ctx.OdooAddonsPath = odooSection.Key("addonsPath").String()
  97. Ctx.OdooFilesPath = odooSection.Key("filesPath").String()
  98. Ctx.OdooPortsRange = odooSection.Key("portsRange").Ints(",")
  99. Ctx.OdooCfgName = odooSection.Key("cfgName").String()
  100. Ctx.OdooAdminPasswd = odooSection.Key("adminPasswd").String()
  101. Ctx.OdooDbContainerName = odooSection.Key("dbContainerName").String()
  102. Ctx.OdooDbContainerIP = odooSection.Key("dbContainerIP").String()
  103. Ctx.OdooDbContainerPort = odooSection.Key("dbContainerPort").String()
  104. Ctx.OdooDbUser = odooSection.Key("dbUser").String()
  105. Ctx.OdooDbPasswd = odooSection.Key("dbPasswd").String()
  106. // Read git section
  107. gitSection := cfg.Section("git")
  108. Ctx.GitReposPath = gitSection.Key("reposPath").String()
  109. // Read mailer section
  110. mailerSection := cfg.Section("mailer")
  111. Ctx.MailerHost = mailerSection.Key("emailHost").String()
  112. Ctx.MailerPort = mailerSection.Key("emailPort").String()
  113. Ctx.MailerUser = mailerSection.Key("emailHostUser").String()
  114. Ctx.MailerPasswd = mailerSection.Key("emailHostPasswd").String()
  115. Ctx.IsInit = true
  116. }