in configuration/configuration.go [1168:1244]
func ApplyDefaults(config *Configuration) {
if config.Log.Level == "" {
config.Log.Level = defaultLogLevel
}
if config.Log.Output == "" {
config.Log.Output = defaultLogOutput
}
if config.Log.Formatter == "" {
config.Log.Formatter = defaultLogFormat
}
if !config.Log.AccessLog.Disabled && config.Log.AccessLog.Formatter == "" {
config.Log.AccessLog.Formatter = defaultAccessLogFormat
}
if config.HTTP.Debug.Prometheus.Enabled && config.HTTP.Debug.Prometheus.Path == "" {
config.HTTP.Debug.Prometheus.Path = "/metrics"
}
if config.Redis.Addr != "" && config.Redis.Pool.Size == 0 {
config.Redis.Pool.Size = 10
}
// If no custom cipher suites are specified in the configuration,
// default to a secure set of TLS 1.2 cipher suites. TLS 1.3 cipher
// suites are automatically enabled in Go and do not need explicit
// configuration.
if len(config.HTTP.TLS.CipherSuites) == 0 {
config.HTTP.TLS.CipherSuites = defaultCipherSuites()
}
// copy TLS config to debug server when enabled and debug TLS certificate is empty
if config.HTTP.Debug.TLS.Enabled {
if config.HTTP.Debug.TLS.Certificate == "" {
config.HTTP.Debug.TLS.Certificate = config.HTTP.TLS.Certificate
config.HTTP.Debug.TLS.Key = config.HTTP.TLS.Key
}
// Only replace if the debug section is empty which allows finer configuration settings for the
// debug server, for example allowing only certain clients to access it.
if len(config.HTTP.Debug.TLS.ClientCAs) == 0 {
config.HTTP.Debug.TLS.ClientCAs = config.HTTP.TLS.ClientCAs
}
if config.HTTP.Debug.TLS.MinimumTLS == "" {
config.HTTP.Debug.TLS.MinimumTLS = config.HTTP.TLS.MinimumTLS
}
}
if config.Database.BackgroundMigrations.Enabled && config.Database.BackgroundMigrations.JobInterval == 0 {
config.Database.BackgroundMigrations.JobInterval = defaultBackgroundMigrationsJobInterval
}
// Database Load Balancing
if config.Database.LoadBalancing.Enabled {
if config.Database.LoadBalancing.Nameserver == "" {
config.Database.LoadBalancing.Nameserver = defaultDLBNameserver
}
if config.Database.LoadBalancing.Port == 0 {
config.Database.LoadBalancing.Port = defaultDLBPort
}
if config.Database.LoadBalancing.ReplicaCheckInterval == 0 {
config.Database.LoadBalancing.ReplicaCheckInterval = defaultDLBReplicaCheckInterval
}
}
// Rate limiter
if config.RateLimiter.Enabled {
for _, limiter := range config.RateLimiter.Limiters {
limiter.Match.Type = strings.ToLower(limiter.Match.Type)
if limiter.Limit.Period == "" {
limiter.Limit.Period = "second"
limiter.Limit.PeriodDuration = defaultRateLimiterPeriodDuration
}
if limiter.Action.WarnAction == "" {
limiter.Action.WarnAction = "none"
}
if limiter.Action.HardAction == "" {
limiter.Action.HardAction = "none"
}
}
}
}