123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package settings
- import (
- "log"
- "os"
- "github.com/go-ini/ini"
- )
- // Settings represents a app settings
- type Settings struct {
- IsInit bool
- AppName string
- ServerProtocol string
- ServerHost string
- ServerPort string
- AuthAcceptHeader string
- AuthPrefixHeader string
- AuthSecretKey string
- DatabaseDialect string
- DatabaseHost string
- DatabasePort string
- DatabaseUser string
- DatabasePasswd string
- DatabaseLogger bool
- DatabaseAutomigrate bool
- DockerSockDir string
- DockerHostIP string
- DockerNetworkName string
- DockerNetworkIP string
- DockerHiddenContainers []string
- OdooImageName string
- OdooRootPath string
- OdooConfigPath string
- OdooAddonsPath string
- OdooFilesPath string
- OdooPortsRange []int
- OdooCfgName string
- OdooAdminPasswd string
- OdooDbContainerName string
- OdooDbContainerIP string
- OdooDbContainerPort string
- OdooDbUser string
- OdooDbPasswd string
- GitReposPath string
- MailerHost string
- MailerPort string
- MailerUser string
- MailerPasswd string
- }
- // Ctx is a global context settings instance
- var Ctx = Settings{
- IsInit: false,
- }
- // Init initialize all app configuration
- func Init() {
- if Ctx.IsInit {
- return
- }
- cfg, err := ini.Load("data/app.ini")
- if err != nil {
- log.Fatal("Cannot read file")
- os.Exit(1)
- }
- // Read root section
- rootSection := cfg.Section("")
- Ctx.AppName = rootSection.Key("appName").MustString("No name")
- // Read server section
- srvSection := cfg.Section("server")
- Ctx.ServerProtocol = srvSection.Key("protocol").MustString("http")
- Ctx.ServerHost = srvSection.Key("host").MustString("127.0.0.1")
- Ctx.ServerPort = srvSection.Key("port").MustString("8080")
- // Read auth section
- authSection := cfg.Section("auth")
- Ctx.AuthAcceptHeader = authSection.Key("acceptHeader").String()
- Ctx.AuthPrefixHeader = authSection.Key("prefixHeader").String()
- Ctx.AuthSecretKey = authSection.Key("secretKey").String()
- // Read database section
- dbSection := cfg.Section("database")
- Ctx.DatabaseDialect = dbSection.Key("dbDialect").MustString("sqlite")
- Ctx.DatabaseHost = dbSection.Key("dbHost").String()
- Ctx.DatabasePort = dbSection.Key("dbPort").String()
- Ctx.DatabaseUser = dbSection.Key("dbUser").String()
- Ctx.DatabasePasswd = dbSection.Key("dbPasswd").String()
- Ctx.DatabaseLogger = dbSection.Key("dbLogger").MustBool(true)
- Ctx.DatabaseAutomigrate = dbSection.Key("dbAutomigrate").MustBool(true)
- // Read docker section
- dockerSection := cfg.Section("docker")
- Ctx.DockerSockDir = dockerSection.Key("sockDir").MustString("/var/run/docker.sock")
- Ctx.DockerHostIP = dockerSection.Key("hostIP").MustString("127.0.0.1")
- Ctx.DockerNetworkName = dockerSection.Key("networkName").MustString("bridge")
- Ctx.DockerNetworkIP = dockerSection.Key("networkIP").MustString("172.10.0.1")
- Ctx.DockerHiddenContainers = dockerSection.Key("hiddenContainers").Strings(",")
- // Read odoo section
- odooSection := cfg.Section("odoo")
- Ctx.OdooImageName = odooSection.Key("imageName").String()
- Ctx.OdooRootPath = odooSection.Key("rootPath").String()
- Ctx.OdooConfigPath = odooSection.Key("configPath").String()
- Ctx.OdooAddonsPath = odooSection.Key("addonsPath").String()
- Ctx.OdooFilesPath = odooSection.Key("filesPath").String()
- Ctx.OdooPortsRange = odooSection.Key("portsRange").Ints(",")
- Ctx.OdooCfgName = odooSection.Key("cfgName").String()
- Ctx.OdooAdminPasswd = odooSection.Key("adminPasswd").String()
- Ctx.OdooDbContainerName = odooSection.Key("dbContainerName").String()
- Ctx.OdooDbContainerIP = odooSection.Key("dbContainerIP").String()
- Ctx.OdooDbContainerPort = odooSection.Key("dbContainerPort").String()
- Ctx.OdooDbUser = odooSection.Key("dbUser").String()
- Ctx.OdooDbPasswd = odooSection.Key("dbPasswd").String()
- // Read git section
- gitSection := cfg.Section("git")
- Ctx.GitReposPath = gitSection.Key("reposPath").String()
- // Read mailer section
- mailerSection := cfg.Section("mailer")
- Ctx.MailerHost = mailerSection.Key("emailHost").String()
- Ctx.MailerPort = mailerSection.Key("emailPort").String()
- Ctx.MailerUser = mailerSection.Key("emailHostUser").String()
- Ctx.MailerPasswd = mailerSection.Key("emailHostPasswd").String()
- Ctx.IsInit = true
- }
|