123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- package imgproxy
- import (
- "github.com/imgproxy/imgproxy/v3/auximageprovider"
- "github.com/imgproxy/imgproxy/v3/cookies"
- "github.com/imgproxy/imgproxy/v3/ensure"
- "github.com/imgproxy/imgproxy/v3/fetcher"
- processinghandler "github.com/imgproxy/imgproxy/v3/handlers/processing"
- streamhandler "github.com/imgproxy/imgproxy/v3/handlers/stream"
- "github.com/imgproxy/imgproxy/v3/monitoring"
- "github.com/imgproxy/imgproxy/v3/monitoring/prometheus"
- optionsparser "github.com/imgproxy/imgproxy/v3/options/parser"
- "github.com/imgproxy/imgproxy/v3/processing"
- "github.com/imgproxy/imgproxy/v3/security"
- "github.com/imgproxy/imgproxy/v3/server"
- "github.com/imgproxy/imgproxy/v3/workers"
- )
- // HandlerConfigs holds the configurations for imgproxy handlers
- type HandlerConfigs struct {
- Processing processinghandler.Config
- Stream streamhandler.Config
- }
- // Config represents an instance configuration
- type Config struct {
- Workers workers.Config
- FallbackImage auximageprovider.StaticConfig
- WatermarkImage auximageprovider.StaticConfig
- Fetcher fetcher.Config
- Handlers HandlerConfigs
- Server server.Config
- Security security.Config
- Processing processing.Config
- OptionsParser optionsparser.Config
- Cookies cookies.Config
- Monitoring monitoring.Config
- }
- // NewDefaultConfig creates a new default configuration
- func NewDefaultConfig() Config {
- return Config{
- Workers: workers.NewDefaultConfig(),
- FallbackImage: auximageprovider.NewDefaultStaticConfig(),
- WatermarkImage: auximageprovider.NewDefaultStaticConfig(),
- Fetcher: fetcher.NewDefaultConfig(),
- Handlers: HandlerConfigs{
- Processing: processinghandler.NewDefaultConfig(),
- Stream: streamhandler.NewDefaultConfig(),
- },
- Server: server.NewDefaultConfig(),
- Security: security.NewDefaultConfig(),
- Processing: processing.NewDefaultConfig(),
- OptionsParser: optionsparser.NewDefaultConfig(),
- Cookies: cookies.NewDefaultConfig(),
- Monitoring: monitoring.NewDefaultConfig(),
- }
- }
- // LoadConfigFromEnv loads configuration from environment variables
- func LoadConfigFromEnv(c *Config) (*Config, error) {
- c = ensure.Ensure(c, NewDefaultConfig)
- var err error
- if _, err = server.LoadConfigFromEnv(&c.Server); err != nil {
- return nil, err
- }
- if _, err = auximageprovider.LoadFallbackStaticConfigFromEnv(&c.FallbackImage); err != nil {
- return nil, err
- }
- if _, err = auximageprovider.LoadWatermarkStaticConfigFromEnv(&c.WatermarkImage); err != nil {
- return nil, err
- }
- if _, err = workers.LoadConfigFromEnv(&c.Workers); err != nil {
- return nil, err
- }
- if _, err = fetcher.LoadConfigFromEnv(&c.Fetcher); err != nil {
- return nil, err
- }
- if _, err = processinghandler.LoadConfigFromEnv(&c.Handlers.Processing); err != nil {
- return nil, err
- }
- if _, err = streamhandler.LoadConfigFromEnv(&c.Handlers.Stream); err != nil {
- return nil, err
- }
- if _, err = security.LoadConfigFromEnv(&c.Security); err != nil {
- return nil, err
- }
- if _, err = optionsparser.LoadConfigFromEnv(&c.OptionsParser); err != nil {
- return nil, err
- }
- if _, err = processing.LoadConfigFromEnv(&c.Processing); err != nil {
- return nil, err
- }
- if _, err = cookies.LoadConfigFromEnv(&c.Cookies); err != nil {
- return nil, err
- }
- if _, err = monitoring.LoadConfigFromEnv(&c.Monitoring); err != nil {
- return nil, err
- }
- return c, nil
- }
- func (c *Config) Validate() error {
- if c.Monitoring.Prometheus.Enabled() && c.Monitoring.Prometheus.Bind == c.Server.Bind {
- return prometheus.IMGPROXY_PROMETHEUS_BIND.Errorf("should be different than IMGPROXY_BIND: %s", c.Server.Bind)
- }
- return nil
- }
|