Documentation
¶
Index ¶
Constants ¶
View Source
const (
EnvSecret = "SECRET"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Auth ¶
type Auth struct { AuthMethod constant.ConfigAuthMode `env:"AUTH_MODE,default=basic_single" validate:"required,oneof=basic_single basic_credentials"` BasicAuthUser string `env:"BASIC_AUTH_USER" validate:"required_if=AuthMethod basic_single"` BasicAuthPassword string `env:"BASIC_AUTH_PASSWORD" validate:"required_if=AuthMethod basic_single"` BasicAuthCredentials map[string]string `env:"BASIC_AUTH_CREDENTIALS,separator=|,delimiter=;" validate:"required_if=AuthMethod basic_credentials"` }
type Configuration ¶
type Configuration struct { App *App Auth *Auth Cors *Cors Database *Database Lock *Lock Logging *Logging Prometheus *Prometheus Secret *Secret Server *Server Task *Task Webhook *Webhook Webinterface *Webinterface WebinterfaceCacheControl *WebinterfaceCacheControl }
func LoadFromEnvironment ¶
func LoadFromEnvironment(ctx context.Context) (*Configuration, *gorm.DB)
type Cors ¶
type Cors struct { AllowCredentials bool `env:"CORS_ALLOW_CREDENTIALS,default=true"` AllowOrigins []string `env:"CORS_ALLOW_ORIGINS,default=*"` AllowMethods []string `env:"CORS_ALLOW_METHODS,default=HEAD,GET,POST,PUT,PATCH,DELETE,OPTIONS"` AllowHeaders []string `env:"CORS_ALLOW_HEADERS,default=Authorization,Content-Type"` ExposeHeaders []string `env:"CORS_EXPOSE_HEADERS,default=*"` }
type Database ¶
type Database struct { Type constant.ConfigDatabaseType `env:"DB_TYPE,default=postgres" validate:"required,oneof=postgres"` MigrationEnabled bool `env:"DB_MIGRATION_ENABLED,default=true"` PostgresHost string `env:"DB_POSTGRES_HOST,default=localhost" validate:"required_if=Type postgres"` PostgresPort int `env:"DB_POSTGRES_PORT,default=5432" validate:"required_if=Type postgres"` PostgresName string `env:"DB_POSTGRES_NAME" validate:"required_if=Type postgres"` PostgresTimeZone string `env:"DB_POSTGRES_TZ,default=Etc/UTC" validate:"required_if=Type postgres"` PostgresUser string `env:"DB_POSTGRES_USER" validate:"required_if=Type postgres"` PostgresPassword string `env:"DB_POSTGRES_PASSWORD" validate:"required_if=Type postgres"` }
type Lock ¶
type Lock struct { RedisEnabled bool `env:"LOCK_REDIS_ENABLED,default=false"` RedisHost string `env:"LOCK_REDIS_HOST,default=localhost" validate:"required_if=RedisEnabled true"` RedisPort int `env:"LOCK_REDIS_PORT,default=6379" validate:"required_if=RedisEnabled true,numeric,gte=1"` RedisDbName int `env:"LOCK_REDIS_DB_NAME,default=0" validate:"numeric,gte=0"` RedisUsername string `env:"LOCK_REDIS_USERNAME"` RedisPassword string `env:"LOCK_REDIS_PASSWORD"` RedisTaskTries int `env:"LOCK_REDIS_TASK_LOCK_TRIES,default=1" validate:"required_if=RedisEnabled true,numeric,gte=1"` RedisTaskLockAtMost time.Duration `env:"LOCK_REDIS_TASK_LOCK_AT_MOST,default=30s" validate:"required_if=RedisEnabled true,gte=0"` RedisTaskRetryDelay time.Duration `env:"LOCK_REDIS_TASK_RETRY_DELAY,default=5s" validate:"required_if=RedisEnabled true,gte=0"` RedisUrl string }
type Logging ¶
type Logging struct { Debug bool `env:"DEBUG,default=false"` Development bool `env:"DEVELOPMENT,default=false"` Directory string `env:"LOGGING_DIRECTORY"` Encoding constant.ConfigLogEncoding `env:"LOGGING_ENCODING,default=json" validate:"required,oneof=json console"` EncodingCallerEncoder constant.ConfigLogCallerEncoder `env:"LOGGING_ENCODING_CALLER_ENCODER,default=short" validate:"required,oneof=full short"` EncodingDurationEncoder constant.ConfigLogDurationEncoder `env:"LOGGING_ENCODING_DURATION_ENCODER,default=seconds" validate:"required,oneof=seconds nanos millis string"` EncodingLevelEncoder constant.ConfigLogLevelEncoder `` /* 126-byte string literal not displayed */ EncodingLevelKey string `env:"LOGGING_ENCODING_LEVEL_KEY,default=level" validate:"required_if=Encoding json"` EncodingMessageKey string `env:"LOGGING_ENCODING_MESSAGE_KEY,default=msg" validate:"required_if=Encoding json"` EncodingStacktraceKey string `env:"LOGGING_ENCODING_STACKTRACE_KEY,default=stacktrace" validate:"required_if=Encoding json"` EncodingTimeEncoder constant.ConfigLogTimeEncoder `` /* 134-byte string literal not displayed */ EncodingTimeKey string `env:"LOGGING_ENCODING_TIME_KEY,default=ts" validate:"required_if=Encoding json"` Level string `env:"LOGGING_LEVEL,default=info" validate:"required,oneof=debug info warn error dpanic panic fatal"` UTC bool `env:"LOGGING_UTC"` }
type Prometheus ¶
type Prometheus struct { Enabled bool `env:"PROMETHEUS_ENABLED,default=false"` Port int `env:"PROMETHEUS_PORT,default=8080" validate:"required_if=Enabled true,gte=1"` Listen string `env:"PROMETHEUS_LISTEN"` BasePath string `env:"PROMETHEUS_BASE_PATH,default=/" validate:"required_if=Enabled true"` Path string `env:"PROMETHEUS_METRICS_PATH,default=/metrics" validate:"required_if=Enabled true"` SecureTokenEnabled bool `env:"PROMETHEUS_SECURE_TOKEN_ENABLED,default=true"` SecureToken string `env:"PROMETHEUS_SECURE_TOKEN" validate:"required_if=Enabled true SecureTokenEnabled true"` }
type Server ¶
type Server struct { Port int `env:"SERVER_PORT,default=8080" validate:"gte=1"` Listen string `env:"SERVER_LISTEN"` BasePath string `env:"SERVER_BASE_PATH,default=/" validate:"required"` TlsEnabled bool `env:"SERVER_TLS_ENABLED,default=false"` TlsCertPath string `env:"SERVER_TLS_CERT_PATH"` TlsKeyPath string `env:"SERVER_TLS_KEY_PATH"` Timeout time.Duration `env:"SERVER_TIMEOUT,default=10s" validate:"gte=0"` }
type Task ¶
type Task struct { UpdateCleanStaleEnabled bool `env:"TASK_UPDATE_CLEAN_STALE_ENABLED,default=true"` UpdateCleanStaleInterval time.Duration `env:"TASK_EVENT_CLEAN_STALE_INTERVAL,default=1h" validate:"required_if=UpdateCleanStaleEnabled true,gt=0"` UpdateCleanStaleMaxAge time.Duration `env:"TASK_UPDATE_CLEAN_STALE_MAX_AGE,default=720h" validate:"required_if=UpdateCleanStaleEnabled true,gt=0"` EventCleanStaleEnabled bool `env:"TASK_EVENT_CLEAN_STALE_ENABLED,default=false"` EventCleanStaleInterval time.Duration `env:"TASK_EVENT_CLEAN_STALE_INTERVAL,default=8h" validate:"required_if=EventCleanStaleEnabled true,gt=0"` EventCleanStaleMaxAge time.Duration `env:"TASK_EVENT_CLEAN_STALE_MAX_AGE,default=2190h" validate:"required_if=EventCleanStaleEnabled true,gt=0"` ActionsEnqueueEnabled bool `env:"TASK_ACTIONS_ENQUEUE_ENABLED,default=true"` ActionsEnqueueInterval time.Duration `env:"TASK_ACTIONS_ENQUEUE_INTERVAL,default=10s" validate:"required_if=ActionsEnqueueEnabled true,gt=0"` ActionsEnqueueBatchSize int `env:"TASK_ACTIONS_ENQUEUE_BATCH_SIZE,default=1" validate:"required_if=ActionsEnqueueEnabled true,numeric,gte=1"` ActionsInvokeEnabled bool `env:"TASK_ACTIONS_INVOKE_ENABLED,default=true"` ActionsInvokeInterval time.Duration `env:"TASK_ACTIONS_INVOKE_INTERVAL,default=10s" validate:"required_if=ActionsInvokeEnabled true,gt=0"` ActionsInvokeBatchSize int `env:"TASK_ACTIONS_INVOKE_BATCH_SIZE,default=1" validate:"required_if=ActionsInvokeEnabled true,numeric,gte=1"` ActionsInvokeMaxRetries int `env:"TASK_ACTIONS_INVOKE_MAX_RETRIES,default=3" validate:"required_if=ActionsInvokeEnabled true,numeric,gte=1"` ActionsCleanStaleEnabled bool `env:"TASK_ACTIONS_CLEAN_STALE_ENABLED,default=true"` ActionsCleanStaleInterval time.Duration `env:"TASK_ACTIONS_CLEAN_STALE_INTERVAL,default=12h" validate:"required_if=ActionsCleanStaleEnabled true,gt=0"` ActionsCleanStaleMaxAge time.Duration `env:"TASK_ACTIONS_CLEAN_STALE_MAX_AGE,default=720h" validate:"required_if=ActionsCleanStaleEnabled true,gt=0"` PrometheusRefreshInterval time.Duration `env:"TASK_PROMETHEUS_REFRESH_INTERVAL,default=60s" validate:"required,gte=0"` }
type Webhook ¶
type Webhook struct {
TokenLength int `env:"WEBHOOKS_TOKEN_LENGTH,default=32" validate:"required,numeric,gte=4"`
}
type Webinterface ¶
type Webinterface struct { Enabled bool `env:"WEB_INTERFACE_ENABLED,default=true"` ApiUrl string `env:"WEB_INTERFACE_API_URL,default=http://localhost:8080" validate:"required_if=Enabled true"` Title string `env:"WEB_INTERFACE_TITLE,default=upda" validate:"required_if=Enabled true"` DarkThemeEnabled bool `env:"WEB_INTERFACE_DARK_THEME_ENABLED,default=false"` }
type WebinterfaceCacheControl ¶
type WebinterfaceCacheControl struct { Enabled bool `env:"WEB_INTERFACE_CC_ENABLED,default=true"` MustRevalidate bool `env:"WEB_INTERFACE_CC_MUST_REVALIDATE,default=true"` NoCache bool `env:"WEB_INTERFACE_CC_NO_CACHE,default=false"` NoStore bool `env:"WEB_INTERFACE_CC_NO_STORE,default=false"` NoTransform bool `env:"WEB_INTERFACE_CC_NO_TRANSFORM,default=false"` Public bool `env:"WEB_INTERFACE_CC_PUBLIC,default=true"` Private bool `env:"WEB_INTERFACE_CC_PRIVATE,default=false"` ProxyRevalidate bool `env:"WEB_INTERFACE_CC_PROXY_REVALIDATE,default=true"` MaxAge *time.Duration `env:"WEB_INTERFACE_CC_MAX_AGE,noinit,default=48h"` SMaxAge *time.Duration `env:"WEB_INTERFACE_CC_SMAX_AGE,noinit"` Immutable bool `env:"WEB_INTERFACE_CC_IMMUTABLE,default=false"` StaleWhileRevalidate *time.Duration `env:"WEB_INTERFACE_CC_STALE_WHILE_REVALIDATE,noinit"` StaleIfError *time.Duration `env:"WEB_INTERFACE_CC_STALE_IF_ERROR,noinit"` }
Click to show internal directories.
Click to hide internal directories.