diff options
-rw-r--r-- | app.go | 6 | ||||
-rw-r--r-- | app_config.go | 5 | ||||
-rw-r--r-- | internal/config/config.go | 27 | ||||
-rw-r--r-- | internal/serving/disk/zip/serving_test.go | 5 | ||||
-rw-r--r-- | internal/vfs/zip/archive_test.go | 1 | ||||
-rw-r--r-- | main.go | 22 |
6 files changed, 37 insertions, 29 deletions
@@ -21,6 +21,7 @@ import ( "gitlab.com/gitlab-org/gitlab-pages/internal/acme" "gitlab.com/gitlab-org/gitlab-pages/internal/artifact" "gitlab.com/gitlab-org/gitlab-pages/internal/auth" + cfg "gitlab.com/gitlab-org/gitlab-pages/internal/config" "gitlab.com/gitlab-org/gitlab-pages/internal/domain" "gitlab.com/gitlab-org/gitlab-pages/internal/handlers" "gitlab.com/gitlab-org/gitlab-pages/internal/httperrors" @@ -504,6 +505,11 @@ func runApp(config appConfig) { log.WithError(err).Warn("Loading extended MIME database failed") } + cfg.Default.Zip.ExpirationInterval = config.ZipCacheExpiry + cfg.Default.Zip.CleanupInterval = config.ZipCacheCleanup + cfg.Default.Zip.RefreshInterval = config.ZipCacheRefresh + cfg.Default.Zip.OpenTimeout = config.ZipeOpenTimeout + a.Run() } diff --git a/app_config.go b/app_config.go index bb4aa917..0dd192d5 100644 --- a/app_config.go +++ b/app_config.go @@ -41,6 +41,11 @@ type appConfig struct { SentryDSN string SentryEnvironment string CustomHeaders []string + + ZipCacheExpiry time.Duration + ZipCacheRefresh time.Duration + ZipCacheCleanup time.Duration + ZipeOpenTimeout time.Duration } // InternalGitLabServerURL returns URL to a GitLab instance. diff --git a/internal/config/config.go b/internal/config/config.go index 527b423b..f1d70f2c 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,28 +1,19 @@ package config import ( - "fmt" "time" - - "github.com/namsral/flag" ) // Default configuration that can be accessed by different packages -var Default *Config - -// TODO: move all flags to this package, including flag.Parse() -func Init() { - Default = &Config{ - Zip: &ZipServing{}, - } - - flag.DurationVar(&Default.Zip.ExpirationInterval, "zip-cache-expiration", 60*time.Second, "Zip serving archive cache expiration interval") - flag.DurationVar(&Default.Zip.CleanupInterval, "zip-cache-cleanup", 30*time.Second, "Zip serving archive cache cleanup interval") - flag.DurationVar(&Default.Zip.RefreshInterval, "zip-cache-refresh", 30*time.Second, "Zip serving archive cache refresh interval") - flag.DurationVar(&Default.Zip.OpenTimeout, "zip-open-timeout", 30*time.Second, "Zip archive open timeout") - - // flag.Parse() - fmt.Printf("init: CONFIG: %+v\n", Default.Zip) +var Default = &Config{ + // TODO: remove duplication once all flags are defined in this package + // https://gitlab.com/gitlab-org/gitlab-pages/-/issues/507 + Zip: &ZipServing{ + ExpirationInterval: time.Minute, + CleanupInterval: time.Minute / 2, + RefreshInterval: time.Minute / 2, + OpenTimeout: time.Minute / 2, + }, } type Config struct { diff --git a/internal/serving/disk/zip/serving_test.go b/internal/serving/disk/zip/serving_test.go index 9a7618fe..bca2ae51 100644 --- a/internal/serving/disk/zip/serving_test.go +++ b/internal/serving/disk/zip/serving_test.go @@ -8,15 +8,10 @@ import ( "github.com/stretchr/testify/require" - cfg "gitlab.com/gitlab-org/gitlab-pages/internal/config" "gitlab.com/gitlab-org/gitlab-pages/internal/serving" "gitlab.com/gitlab-org/gitlab-pages/internal/testhelpers" ) -func init() { - cfg.Init() -} - func TestZip_ServeFileHTTP(t *testing.T) { testServerURL, cleanup := newZipFileServerURL(t, "group/zip.gitlab.io/public-without-dirs.zip") defer cleanup() diff --git a/internal/vfs/zip/archive_test.go b/internal/vfs/zip/archive_test.go index 37e81d7a..e5fcde54 100644 --- a/internal/vfs/zip/archive_test.go +++ b/internal/vfs/zip/archive_test.go @@ -23,7 +23,6 @@ var ( ) func init() { - config.Init() zipCfg = config.Default.Zip } @@ -31,6 +31,7 @@ var VERSION = "dev" var REVISION = "HEAD" func init() { + // TODO: move all flags to config pkg https://gitlab.com/gitlab-org/gitlab-pages/-/issues/507 flag.Var(&listenHTTP, "listen-http", "The address(es) to listen on for HTTP requests") flag.Var(&listenHTTPS, "listen-https", "The address(es) to listen on for HTTPS requests") flag.Var(&listenProxy, "listen-proxy", "The address(es) to listen on for proxy requests") @@ -39,6 +40,7 @@ func init() { } var ( + // TODO: move all flags to config pkg https://gitlab.com/gitlab-org/gitlab-pages/-/issues/507 pagesRootCert = flag.String("root-cert", "", "The default path to file certificate to serve static pages") pagesRootKey = flag.String("root-key", "", "The default path to file certificate to serve static pages") redirectHTTP = flag.Bool("redirect-http", false, "Redirect pages from HTTP to HTTPS") @@ -77,6 +79,11 @@ var ( insecureCiphers = flag.Bool("insecure-ciphers", false, "Use default list of cipher suites, may contain insecure ones like 3DES and RC4") tlsMinVersion = flag.String("tls-min-version", "tls1.2", tlsconfig.FlagUsage("min")) tlsMaxVersion = flag.String("tls-max-version", "", tlsconfig.FlagUsage("max")) + // TODO: move all flags to config pkg https://gitlab.com/gitlab-org/gitlab-pages/-/issues/507 + zipCacheExpiration = flag.Duration("zip-cache-expiration", 60*time.Second, "Zip serving archive cache expiration interval") + zipCacheCleanup = flag.Duration("zip-cache-cleanup", 30*time.Second, "Zip serving archive cache cleanup interval") + zipCacheRefresh = flag.Duration("zip-cache-refresh", 30*time.Second, "Zip serving archive cache refresh interval") + zipOpenTimeout = flag.Duration("zip-open-timeout", 30*time.Second, "Zip archive open timeout") disableCrossOriginRequests = flag.Bool("disable-cross-origin-requests", false, "Disable cross-origin requests") @@ -212,6 +219,11 @@ func configFromFlags() appConfig { config.SentryDSN = *sentryDSN config.SentryEnvironment = *sentryEnvironment + config.ZipCacheExpiry = *zipCacheExpiration + config.ZipCacheCleanup = *zipCacheCleanup + config.ZipCacheRefresh = *zipCacheRefresh + config.ZipeOpenTimeout = *zipOpenTimeout + checkAuthenticationConfig(config) return config @@ -296,10 +308,10 @@ func loadConfig() appConfig { "api-secret-key": *gitLabAPISecretKey, "domain-config-source": config.DomainConfigurationSource, "auth-redirect-uri": config.RedirectURI, - "zip-cache-expiration": cfg.Default.Zip.ExpirationInterval, - "zip-cache-cleanup": cfg.Default.Zip.CleanupInterval, - "zip-cache-refresh": cfg.Default.Zip.RefreshInterval, - "zip-open-timeout": cfg.Default.Zip.OpenTimeout, + "zip-cache-expiration": config.ZipCacheExpiry, + "zip-cache-cleanup": config.ZipCacheCleanup, + "zip-cache-refresh": config.ZipCacheRefresh, + "zip-open-timeout": config.ZipeOpenTimeout, }).Debug("Start daemon with configuration") return config @@ -310,6 +322,7 @@ func appMain() { // read from -config=/path/to/gitlab-pages-config flag.String(flag.DefaultConfigFlagname, "", "path to config file") + flag.Parse() fmt.Printf("appMain: CONFIG: %+v\n", cfg.Default.Zip) @@ -447,7 +460,6 @@ func main() { metrics.MustRegister() - cfg.Init() daemonMain() appMain() } |