diff options
Diffstat (limited to 'model/config.go')
-rw-r--r-- | model/config.go | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/model/config.go b/model/config.go index 853e2bbc0..5d822e263 100644 --- a/model/config.go +++ b/model/config.go @@ -16,6 +16,9 @@ const ( IMAGE_DRIVER_LOCAL = "local" IMAGE_DRIVER_S3 = "amazons3" + DATABASE_DRIVER_MYSQL = "mysql" + DATABASE_DRIVER_POSTGRES = "postgres" + SERVICE_GITLAB = "gitlab" ) @@ -156,3 +159,92 @@ func ConfigFromJson(data io.Reader) *Config { return nil } } + +func (o *Config) IsValid() *AppError { + + if o.ServiceSettings.MaximumLoginAttempts <= 0 { + return NewAppError("Config.IsValid", "Invalid maximum login attempts for service settings. Must be a positive number.", "") + } + + if len(o.ServiceSettings.ListenAddress) == 0 { + return NewAppError("Config.IsValid", "Invalid listen address for service settings Must be set.", "") + } + + if o.TeamSettings.MaxUsersPerTeam <= 0 { + return NewAppError("Config.IsValid", "Invalid maximum users per team for team settings. Must be a positive number.", "") + } + + if len(o.SqlSettings.AtRestEncryptKey) != 32 { + return NewAppError("Config.IsValid", "Invalid at rest encrypt key for SQL settings. Must be 32 chars.", "") + } + + if !(o.SqlSettings.DriverName == DATABASE_DRIVER_MYSQL || o.SqlSettings.DriverName == DATABASE_DRIVER_POSTGRES) { + return NewAppError("Config.IsValid", "Invalid driver name for SQL settings. Must be 'mysql' or 'postgres'", "") + } + + if o.SqlSettings.MaxIdleConns <= 0 { + return NewAppError("Config.IsValid", "Invalid maximum idle connection for SQL settings. Must be a positive number.", "") + } + + if len(o.SqlSettings.DataSource) == 0 { + return NewAppError("Config.IsValid", "Invalid data source for SQL settings. Must be set.", "") + } + + if o.SqlSettings.MaxOpenConns <= 0 { + return NewAppError("Config.IsValid", "Invalid maximum open connection for SQL settings. Must be a positive number.", "") + } + + if !(o.FileSettings.DriverName == IMAGE_DRIVER_LOCAL || o.FileSettings.DriverName == IMAGE_DRIVER_S3) { + return NewAppError("Config.IsValid", "Invalid driver name for file settings. Must be 'local' or 'amazons3'", "") + } + + if o.FileSettings.PreviewHeight < 0 { + return NewAppError("Config.IsValid", "Invalid preview height for file settings. Must be a zero or positive number.", "") + } + + if o.FileSettings.PreviewWidth <= 0 { + return NewAppError("Config.IsValid", "Invalid preview width for file settings. Must be a positive number.", "") + } + + if o.FileSettings.ProfileHeight <= 0 { + return NewAppError("Config.IsValid", "Invalid profile height for file settings. Must be a positive number.", "") + } + + if o.FileSettings.ProfileWidth <= 0 { + return NewAppError("Config.IsValid", "Invalid profile width for file settings. Must be a positive number.", "") + } + + if o.FileSettings.ThumbnailHeight <= 0 { + return NewAppError("Config.IsValid", "Invalid thumbnail height for file settings. Must be a positive number.", "") + } + + if o.FileSettings.ThumbnailHeight <= 0 { + return NewAppError("Config.IsValid", "Invalid thumbnail width for file settings. Must be a positive number.", "") + } + + if len(o.FileSettings.PublicLinkSalt) != 32 { + return NewAppError("Config.IsValid", "Invalid public link salt for file settings. Must be 32 chars.", "") + } + + if !(o.EmailSettings.ConnectionSecurity == CONN_SECURITY_NONE || o.EmailSettings.ConnectionSecurity == CONN_SECURITY_TLS || o.EmailSettings.ConnectionSecurity == CONN_SECURITY_STARTTLS) { + return NewAppError("Config.IsValid", "Invalid connection security for email settings. Must be '', 'TLS', or 'STARTTLS'", "") + } + + if len(o.EmailSettings.InviteSalt) != 32 { + return NewAppError("Config.IsValid", "Invalid invite salt for email settings. Must be 32 chars.", "") + } + + if len(o.EmailSettings.PasswordResetSalt) != 32 { + return NewAppError("Config.IsValid", "Invalid password reset salt for email settings. Must be 32 chars.", "") + } + + if o.RateLimitSettings.MemoryStoreSize <= 0 { + return NewAppError("Config.IsValid", "Invalid memory store size for rate limit settings. Must be a positive number", "") + } + + if o.RateLimitSettings.PerSec <= 0 { + return NewAppError("Config.IsValid", "Invalid per sec for rate limit settings. Must be a positive number", "") + } + + return nil +} |