|
|
|
|
@ -54,9 +54,7 @@ var ( |
|
|
|
|
ApplicationName string |
|
|
|
|
|
|
|
|
|
// Paths
|
|
|
|
|
LogsPath string |
|
|
|
|
HomePath string |
|
|
|
|
DataPath string |
|
|
|
|
PluginsPath string |
|
|
|
|
CustomInitPath = "conf/custom.ini" |
|
|
|
|
|
|
|
|
|
@ -187,11 +185,18 @@ var ( |
|
|
|
|
ImageUploadProvider string |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
// TODO move all global vars to this struct
|
|
|
|
|
type Cfg struct { |
|
|
|
|
Raw *ini.File |
|
|
|
|
|
|
|
|
|
// HTTP Server Settings
|
|
|
|
|
AppUrl string |
|
|
|
|
AppSubUrl string |
|
|
|
|
|
|
|
|
|
// Paths
|
|
|
|
|
ProvisioningPath string |
|
|
|
|
DataPath string |
|
|
|
|
LogsPath string |
|
|
|
|
|
|
|
|
|
// SMTP email settings
|
|
|
|
|
Smtp SmtpSettings |
|
|
|
|
@ -411,7 +416,7 @@ func loadSpecifedConfigFile(configFile string, masterFile *ini.File) error { |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func loadConfiguration(args *CommandLineArgs) (*ini.File, error) { |
|
|
|
|
func (cfg *Cfg) loadConfiguration(args *CommandLineArgs) (*ini.File, error) { |
|
|
|
|
var err error |
|
|
|
|
|
|
|
|
|
// load config defaults
|
|
|
|
|
@ -442,7 +447,7 @@ func loadConfiguration(args *CommandLineArgs) (*ini.File, error) { |
|
|
|
|
// load specified config file
|
|
|
|
|
err = loadSpecifedConfigFile(args.Config, parsedFile) |
|
|
|
|
if err != nil { |
|
|
|
|
initLogging(parsedFile) |
|
|
|
|
cfg.initLogging(parsedFile) |
|
|
|
|
log.Fatal(3, err.Error()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -459,8 +464,8 @@ func loadConfiguration(args *CommandLineArgs) (*ini.File, error) { |
|
|
|
|
evalConfigValues(parsedFile) |
|
|
|
|
|
|
|
|
|
// update data path and logging config
|
|
|
|
|
DataPath = makeAbsolute(parsedFile.Section("paths").Key("data").String(), HomePath) |
|
|
|
|
initLogging(parsedFile) |
|
|
|
|
cfg.DataPath = makeAbsolute(parsedFile.Section("paths").Key("data").String(), HomePath) |
|
|
|
|
cfg.initLogging(parsedFile) |
|
|
|
|
|
|
|
|
|
return parsedFile, err |
|
|
|
|
} |
|
|
|
|
@ -517,7 +522,7 @@ func NewCfg() *Cfg { |
|
|
|
|
func (cfg *Cfg) Load(args *CommandLineArgs) error { |
|
|
|
|
setHomePath(args) |
|
|
|
|
|
|
|
|
|
iniFile, err := loadConfiguration(args) |
|
|
|
|
iniFile, err := cfg.loadConfiguration(args) |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
@ -538,6 +543,8 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error { |
|
|
|
|
cfg.ProvisioningPath = makeAbsolute(iniFile.Section("paths").Key("provisioning").String(), HomePath) |
|
|
|
|
server := iniFile.Section("server") |
|
|
|
|
AppUrl, AppSubUrl = parseAppUrlAndSubUrl(server) |
|
|
|
|
cfg.AppUrl = AppUrl |
|
|
|
|
cfg.AppSubUrl = AppSubUrl |
|
|
|
|
|
|
|
|
|
Protocol = HTTP |
|
|
|
|
if server.Key("protocol").MustString("http") == "https" { |
|
|
|
|
@ -662,7 +669,7 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error { |
|
|
|
|
log.Fatal(4, "Invalid callback_url(%s): %s", cfg.RendererCallbackUrl, err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
cfg.ImagesDir = filepath.Join(DataPath, "png") |
|
|
|
|
cfg.ImagesDir = filepath.Join(cfg.DataPath, "png") |
|
|
|
|
cfg.PhantomDir = filepath.Join(HomePath, "tools/phantomjs") |
|
|
|
|
cfg.TempDataLifetime = iniFile.Section("paths").Key("temp_data_lifetime").MustDuration(time.Second * 3600 * 24) |
|
|
|
|
cfg.MetricsEndpointEnabled = iniFile.Section("metrics").Key("enabled").MustBool(true) |
|
|
|
|
@ -720,7 +727,7 @@ func (cfg *Cfg) readSessionConfig() { |
|
|
|
|
SessionOptions.IDLength = 16 |
|
|
|
|
|
|
|
|
|
if SessionOptions.Provider == "file" { |
|
|
|
|
SessionOptions.ProviderConfig = makeAbsolute(SessionOptions.ProviderConfig, DataPath) |
|
|
|
|
SessionOptions.ProviderConfig = makeAbsolute(SessionOptions.ProviderConfig, cfg.DataPath) |
|
|
|
|
os.MkdirAll(path.Dir(SessionOptions.ProviderConfig), os.ModePerm) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -731,15 +738,15 @@ func (cfg *Cfg) readSessionConfig() { |
|
|
|
|
SessionConnMaxLifetime = cfg.Raw.Section("session").Key("conn_max_lifetime").MustInt64(14400) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func initLogging(file *ini.File) { |
|
|
|
|
func (cfg *Cfg) initLogging(file *ini.File) { |
|
|
|
|
// split on comma
|
|
|
|
|
LogModes = strings.Split(file.Section("log").Key("mode").MustString("console"), ",") |
|
|
|
|
logModes := strings.Split(file.Section("log").Key("mode").MustString("console"), ",") |
|
|
|
|
// also try space
|
|
|
|
|
if len(LogModes) == 1 { |
|
|
|
|
LogModes = strings.Split(file.Section("log").Key("mode").MustString("console"), " ") |
|
|
|
|
if len(logModes) == 1 { |
|
|
|
|
logModes = strings.Split(file.Section("log").Key("mode").MustString("console"), " ") |
|
|
|
|
} |
|
|
|
|
LogsPath = makeAbsolute(file.Section("paths").Key("logs").String(), HomePath) |
|
|
|
|
log.ReadLoggingConfig(LogModes, LogsPath, file) |
|
|
|
|
cfg.LogsPath = makeAbsolute(file.Section("paths").Key("logs").String(), HomePath) |
|
|
|
|
log.ReadLoggingConfig(logModes, cfg.LogsPath, file) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (cfg *Cfg) LogConfigSources() { |
|
|
|
|
@ -763,8 +770,8 @@ func (cfg *Cfg) LogConfigSources() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
logger.Info("Path Home", "path", HomePath) |
|
|
|
|
logger.Info("Path Data", "path", DataPath) |
|
|
|
|
logger.Info("Path Logs", "path", LogsPath) |
|
|
|
|
logger.Info("Path Data", "path", cfg.DataPath) |
|
|
|
|
logger.Info("Path Logs", "path", cfg.LogsPath) |
|
|
|
|
logger.Info("Path Plugins", "path", PluginsPath) |
|
|
|
|
logger.Info("Path Provisioning", "path", cfg.ProvisioningPath) |
|
|
|
|
logger.Info("App mode " + Env) |
|
|
|
|
|