From d291d6a74dd2afc1dc3e3318b41635548317e680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Guillot?= Date: Sun, 15 Jun 2025 14:42:28 -0700 Subject: [PATCH] refactor(config): remove deprecated config options --- internal/config/config_test.go | 174 +----------------------- internal/config/parser.go | 32 ----- internal/mediaproxy/media_proxy_test.go | 108 +++++++-------- 3 files changed, 56 insertions(+), 258 deletions(-) diff --git a/internal/config/config_test.go b/internal/config/config_test.go index c5da1f08..0777351c 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -184,35 +184,6 @@ func TestLogFormatWithInvalidValue(t *testing.T) { } } -func TestDebugModeOn(t *testing.T) { - os.Clearenv() - os.Setenv("DEBUG", "1") - - parser := NewParser() - opts, err := parser.ParseEnvironmentVariables() - if err != nil { - t.Fatalf(`Parsing failure: %v`, err) - } - - if opts.LogLevel() != "debug" { - t.Fatalf(`Unexpected debug mode value, got %q`, opts.LogLevel()) - } -} - -func TestDebugModeOff(t *testing.T) { - os.Clearenv() - - parser := NewParser() - opts, err := parser.ParseEnvironmentVariables() - if err != nil { - t.Fatalf(`Parsing failure: %v`, err) - } - - if opts.LogLevel() != "info" { - t.Fatalf(`Unexpected debug mode value, got %q`, opts.LogLevel()) - } -} - func TestCustomBaseURL(t *testing.T) { os.Clearenv() os.Setenv("BASE_URL", "http://example.org") @@ -1652,147 +1623,6 @@ func TestMediaProxyPrivateKey(t *testing.T) { } } -func TestProxyImagesOptionForBackwardCompatibility(t *testing.T) { - os.Clearenv() - os.Setenv("PROXY_IMAGES", "all") - - parser := NewParser() - opts, err := parser.ParseEnvironmentVariables() - if err != nil { - t.Fatalf(`Parsing failure: %v`, err) - } - - expected := []string{"image"} - if len(expected) != len(opts.MediaProxyResourceTypes()) { - t.Fatalf(`Unexpected PROXY_IMAGES value, got %v instead of %v`, opts.MediaProxyResourceTypes(), expected) - } - - resultMap := make(map[string]bool) - for _, mediaType := range opts.MediaProxyResourceTypes() { - resultMap[mediaType] = true - } - - for _, mediaType := range expected { - if !resultMap[mediaType] { - t.Fatalf(`Unexpected PROXY_IMAGES value, got %v instead of %v`, opts.MediaProxyResourceTypes(), expected) - } - } - - expectedProxyOption := "all" - result := opts.MediaProxyMode() - if result != expectedProxyOption { - t.Fatalf(`Unexpected PROXY_OPTION value, got %q instead of %q`, result, expectedProxyOption) - } -} - -func TestProxyImageURLForBackwardCompatibility(t *testing.T) { - os.Clearenv() - os.Setenv("PROXY_IMAGE_URL", "http://example.org/proxy") - - parser := NewParser() - opts, err := parser.ParseEnvironmentVariables() - if err != nil { - t.Fatalf(`Parsing failure: %v`, err) - } - - expected := "http://example.org/proxy" - result := opts.MediaCustomProxyURL() - if result != expected { - t.Fatalf(`Unexpected PROXY_IMAGE_URL value, got %q instead of %q`, result, expected) - } -} - -func TestProxyURLOptionForBackwardCompatibility(t *testing.T) { - os.Clearenv() - os.Setenv("PROXY_URL", "http://example.org/proxy") - - parser := NewParser() - opts, err := parser.ParseEnvironmentVariables() - if err != nil { - t.Fatalf(`Parsing failure: %v`, err) - } - - expected := "http://example.org/proxy" - result := opts.MediaCustomProxyURL() - if result != expected { - t.Fatalf(`Unexpected PROXY_URL value, got %q instead of %q`, result, expected) - } -} - -func TestProxyMediaTypesOptionForBackwardCompatibility(t *testing.T) { - os.Clearenv() - os.Setenv("PROXY_MEDIA_TYPES", "image,audio") - - parser := NewParser() - opts, err := parser.ParseEnvironmentVariables() - if err != nil { - t.Fatalf(`Parsing failure: %v`, err) - } - expected := []string{"audio", "image"} - if len(expected) != len(opts.MediaProxyResourceTypes()) { - t.Fatalf(`Unexpected PROXY_MEDIA_TYPES value, got %v instead of %v`, opts.MediaProxyResourceTypes(), expected) - } - - resultMap := make(map[string]bool) - for _, mediaType := range opts.MediaProxyResourceTypes() { - resultMap[mediaType] = true - } - - for _, mediaType := range expected { - if !resultMap[mediaType] { - t.Fatalf(`Unexpected PROXY_MEDIA_TYPES value, got %v instead of %v`, opts.MediaProxyResourceTypes(), expected) - } - } -} - -func TestProxyOptionForBackwardCompatibility(t *testing.T) { - os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - - parser := NewParser() - opts, err := parser.ParseEnvironmentVariables() - if err != nil { - t.Fatalf(`Parsing failure: %v`, err) - } - expected := "all" - result := opts.MediaProxyMode() - if result != expected { - t.Fatalf(`Unexpected PROXY_OPTION value, got %q instead of %q`, result, expected) - } -} - -func TestProxyHTTPClientTimeoutOptionForBackwardCompatibility(t *testing.T) { - os.Clearenv() - os.Setenv("PROXY_HTTP_CLIENT_TIMEOUT", "24") - - parser := NewParser() - opts, err := parser.ParseEnvironmentVariables() - if err != nil { - t.Fatalf(`Parsing failure: %v`, err) - } - expected := 24 - result := opts.MediaProxyHTTPClientTimeout() - if result != expected { - t.Fatalf(`Unexpected PROXY_HTTP_CLIENT_TIMEOUT value, got %d instead of %d`, result, expected) - } -} - -func TestProxyPrivateKeyOptionForBackwardCompatibility(t *testing.T) { - os.Clearenv() - os.Setenv("PROXY_PRIVATE_KEY", "foobar") - - parser := NewParser() - opts, err := parser.ParseEnvironmentVariables() - if err != nil { - t.Fatalf(`Parsing failure: %v`, err) - } - expected := []byte("foobar") - result := opts.MediaProxyPrivateKey() - if !bytes.Equal(result, expected) { - t.Fatalf(`Unexpected PROXY_PRIVATE_KEY value, got %q instead of %q`, result, expected) - } -} - func TestHTTPSOff(t *testing.T) { os.Clearenv() @@ -1931,7 +1761,7 @@ func TestParseConfigFile(t *testing.T) { content := []byte(` # This is a comment -DEBUG = yes +LOG_LEVEL = debug Invalid text `) @@ -1954,7 +1784,7 @@ Invalid text } if opts.LogLevel() != "debug" { - t.Errorf(`Unexpected debug mode value, got %q`, opts.LogLevel()) + t.Errorf(`Unexpected log level value, got %q`, opts.LogLevel()) } if err := tmpfile.Close(); err != nil { diff --git a/internal/config/parser.go b/internal/config/parser.go index 9fbb2df5..a546dad9 100644 --- a/internal/config/parser.go +++ b/internal/config/parser.go @@ -10,7 +10,6 @@ import ( "errors" "fmt" "io" - "log/slog" "net/url" "os" "strconv" @@ -87,12 +86,6 @@ func (p *Parser) parseLines(lines []string) (err error) { if parsedValue == "json" || parsedValue == "text" { p.opts.logFormat = parsedValue } - case "DEBUG": - slog.Warn("The DEBUG environment variable is deprecated, use LOG_LEVEL instead") - parsedValue := parseBool(value, defaultDebug) - if parsedValue { - p.opts.logLevel = "debug" - } case "BASE_URL": p.opts.baseURL, p.opts.rootURL, p.opts.basePath, err = parseBaseURL(value) if err != nil { @@ -162,37 +155,12 @@ func (p *Parser) parseLines(lines []string) (err error) { p.opts.schedulerRoundRobinMaxInterval = parseInt(value, defaultSchedulerRoundRobinMaxInterval) case "POLLING_PARSING_ERROR_LIMIT": p.opts.pollingParsingErrorLimit = parseInt(value, defaultPollingParsingErrorLimit) - case "PROXY_IMAGES": - slog.Warn("The PROXY_IMAGES environment variable is deprecated, use MEDIA_PROXY_MODE instead") - p.opts.mediaProxyMode = parseString(value, defaultMediaProxyMode) - case "PROXY_HTTP_CLIENT_TIMEOUT": - slog.Warn("The PROXY_HTTP_CLIENT_TIMEOUT environment variable is deprecated, use MEDIA_PROXY_HTTP_CLIENT_TIMEOUT instead") - p.opts.mediaProxyHTTPClientTimeout = parseInt(value, defaultMediaProxyHTTPClientTimeout) case "MEDIA_PROXY_HTTP_CLIENT_TIMEOUT": p.opts.mediaProxyHTTPClientTimeout = parseInt(value, defaultMediaProxyHTTPClientTimeout) - case "PROXY_OPTION": - slog.Warn("The PROXY_OPTION environment variable is deprecated, use MEDIA_PROXY_MODE instead") - p.opts.mediaProxyMode = parseString(value, defaultMediaProxyMode) case "MEDIA_PROXY_MODE": p.opts.mediaProxyMode = parseString(value, defaultMediaProxyMode) - case "PROXY_MEDIA_TYPES": - slog.Warn("The PROXY_MEDIA_TYPES environment variable is deprecated, use MEDIA_PROXY_RESOURCE_TYPES instead") - p.opts.mediaProxyResourceTypes = parseStringList(value, []string{defaultMediaResourceTypes}) case "MEDIA_PROXY_RESOURCE_TYPES": p.opts.mediaProxyResourceTypes = parseStringList(value, []string{defaultMediaResourceTypes}) - case "PROXY_IMAGE_URL": - slog.Warn("The PROXY_IMAGE_URL environment variable is deprecated, use MEDIA_PROXY_CUSTOM_URL instead") - p.opts.mediaProxyCustomURL = parseString(value, defaultMediaProxyURL) - case "PROXY_URL": - slog.Warn("The PROXY_URL environment variable is deprecated, use MEDIA_PROXY_CUSTOM_URL instead") - p.opts.mediaProxyCustomURL = parseString(value, defaultMediaProxyURL) - case "PROXY_PRIVATE_KEY": - slog.Warn("The PROXY_PRIVATE_KEY environment variable is deprecated, use MEDIA_PROXY_PRIVATE_KEY instead") - randomKey := make([]byte, 16) - if _, err := rand.Read(randomKey); err != nil { - return fmt.Errorf("config: unable to generate random key: %w", err) - } - p.opts.mediaProxyPrivateKey = parseBytes(value, randomKey) case "MEDIA_PROXY_PRIVATE_KEY": randomKey := make([]byte, 16) if _, err := rand.Read(randomKey); err != nil { diff --git a/internal/mediaproxy/media_proxy_test.go b/internal/mediaproxy/media_proxy_test.go index 27043194..b43b7dee 100644 --- a/internal/mediaproxy/media_proxy_test.go +++ b/internal/mediaproxy/media_proxy_test.go @@ -14,9 +14,9 @@ import ( func TestProxyFilterWithHttpDefault(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "http-only") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "http-only") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -39,8 +39,8 @@ func TestProxyFilterWithHttpDefault(t *testing.T) { func TestProxyFilterWithHttpsDefault(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "http-only") - os.Setenv("PROXY_MEDIA_TYPES", "image") + os.Setenv("MEDIA_PROXY_MODE", "http-only") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") var err error parser := config.NewParser() @@ -63,7 +63,7 @@ func TestProxyFilterWithHttpsDefault(t *testing.T) { func TestProxyFilterWithHttpNever(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "none") + os.Setenv("MEDIA_PROXY_MODE", "none") var err error parser := config.NewParser() @@ -86,7 +86,7 @@ func TestProxyFilterWithHttpNever(t *testing.T) { func TestProxyFilterWithHttpsNever(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "none") + os.Setenv("MEDIA_PROXY_MODE", "none") var err error parser := config.NewParser() @@ -109,9 +109,9 @@ func TestProxyFilterWithHttpsNever(t *testing.T) { func TestProxyFilterWithHttpAlways(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -134,9 +134,9 @@ func TestProxyFilterWithHttpAlways(t *testing.T) { func TestProxyFilterWithHttpsAlways(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -159,9 +159,9 @@ func TestProxyFilterWithHttpsAlways(t *testing.T) { func TestAbsoluteProxyFilterWithHttpsAlways(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -221,9 +221,9 @@ func TestAbsoluteProxyFilterWithCustomPortAndSubfolderInBaseURL(t *testing.T) { func TestAbsoluteProxyFilterWithHttpsAlwaysAndAudioTag(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "audio") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "audio") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -246,9 +246,9 @@ func TestAbsoluteProxyFilterWithHttpsAlwaysAndAudioTag(t *testing.T) { func TestProxyFilterWithHttpsAlwaysAndCustomProxyServer(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_URL", "https://proxy-example/proxy") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_CUSTOM_URL", "https://proxy-example/proxy") var err error parser := config.NewParser() @@ -271,9 +271,9 @@ func TestProxyFilterWithHttpsAlwaysAndCustomProxyServer(t *testing.T) { func TestProxyFilterWithHttpsAlwaysAndIncorrectCustomProxyServer(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_URL", "http://:8080example.com") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_CUSTOM_URL", "http://:8080example.com") var err error parser := config.NewParser() @@ -321,8 +321,8 @@ func TestAbsoluteProxyFilterWithHttpsAlwaysAndCustomProxyServer(t *testing.T) { func TestProxyFilterWithHttpInvalid(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "invalid") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "invalid") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -345,8 +345,8 @@ func TestProxyFilterWithHttpInvalid(t *testing.T) { func TestProxyFilterWithHttpsInvalid(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "invalid") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "invalid") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -369,9 +369,9 @@ func TestProxyFilterWithHttpsInvalid(t *testing.T) { func TestProxyFilterWithSrcset(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -394,9 +394,9 @@ func TestProxyFilterWithSrcset(t *testing.T) { func TestProxyFilterWithEmptySrcset(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -419,9 +419,9 @@ func TestProxyFilterWithEmptySrcset(t *testing.T) { func TestProxyFilterWithPictureSource(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -444,9 +444,9 @@ func TestProxyFilterWithPictureSource(t *testing.T) { func TestProxyFilterOnlyNonHTTPWithPictureSource(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "https") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "https") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -469,8 +469,8 @@ func TestProxyFilterOnlyNonHTTPWithPictureSource(t *testing.T) { func TestProxyWithImageDataURL(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") var err error parser := config.NewParser() @@ -493,8 +493,8 @@ func TestProxyWithImageDataURL(t *testing.T) { func TestProxyWithImageSourceDataURL(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") var err error parser := config.NewParser() @@ -517,9 +517,9 @@ func TestProxyWithImageSourceDataURL(t *testing.T) { func TestProxyFilterWithVideo(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "video") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "video") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -542,9 +542,9 @@ func TestProxyFilterWithVideo(t *testing.T) { func TestProxyFilterVideoPoster(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser() @@ -567,9 +567,9 @@ func TestProxyFilterVideoPoster(t *testing.T) { func TestProxyFilterVideoPosterOnce(t *testing.T) { os.Clearenv() - os.Setenv("PROXY_OPTION", "all") - os.Setenv("PROXY_MEDIA_TYPES", "image,video") - os.Setenv("PROXY_PRIVATE_KEY", "test") + os.Setenv("MEDIA_PROXY_MODE", "all") + os.Setenv("MEDIA_PROXY_RESOURCE_TYPES", "image,video") + os.Setenv("MEDIA_PROXY_PRIVATE_KEY", "test") var err error parser := config.NewParser()