From 74f6824d03ce861990507825715338860e18b428 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Wed, 27 Dec 2023 22:16:15 +0100 Subject: [PATCH] Add option to disable version check in admin web UI (#3040) Co-authored-by: qwerty287 <80460567+qwerty287@users.noreply.github.com> --- cmd/server/flags.go | 5 +++++ cmd/server/server.go | 3 ++- docs/docs/30-administration/10-server-config.md | 6 ++++++ server/config.go | 5 ++++- server/router/router.go | 2 +- server/web/config.go | 14 ++++++++------ web/src/compositions/useConfig.ts | 2 ++ web/src/compositions/useVersion.ts | 2 +- 8 files changed, 29 insertions(+), 10 deletions(-) diff --git a/cmd/server/flags.go b/cmd/server/flags.go index 4c5ee0d7d..3eaee1962 100644 --- a/cmd/server/flags.go +++ b/cmd/server/flags.go @@ -251,6 +251,11 @@ var flags = append([]cli.Flag{ Name: "enable-swagger", Value: true, }, + &cli.BoolFlag{ + EnvVars: []string{"WOODPECKER_DISABLE_VERSION_CHECK"}, + Usage: "Disable version check in admin web ui.", + Name: "skip-version-check", + }, &cli.StringSliceFlag{ EnvVars: []string{"WOODPECKER_ADDONS"}, Name: "addons", diff --git a/cmd/server/server.go b/cmd/server/server.go index 4e258efce..aab385c1d 100644 --- a/cmd/server/server.go +++ b/cmd/server/server.go @@ -370,7 +370,8 @@ func setupEvilGlobals(c *cli.Context, v store.Store, f forge.Forge) error { server.Config.Pipeline.Networks = c.StringSlice("network") server.Config.Pipeline.Volumes = c.StringSlice("volume") server.Config.Pipeline.Privileged = c.StringSlice("escalate") - server.Config.Server.EnableSwagger = c.Bool("enable-swagger") + server.Config.WebUI.EnableSwagger = c.Bool("enable-swagger") + server.Config.WebUI.SkipVersionCheck = c.Bool("skip-version-check") // prometheus server.Config.Prometheus.AuthToken = c.String("prometheus-auth-token") diff --git a/docs/docs/30-administration/10-server-config.md b/docs/docs/30-administration/10-server-config.md index fd6b55d59..523b5d414 100644 --- a/docs/docs/30-administration/10-server-config.md +++ b/docs/docs/30-administration/10-server-config.md @@ -592,6 +592,12 @@ Specify how many seconds before timeout when fetching the Woodpecker configurati Enable the Swagger UI for API documentation. +### `WOODPECKER_DISABLE_VERSION_CHECK` + +> Default: false + +Disable version check in admin web UI. + --- ### `WOODPECKER_GITHUB_...` diff --git a/server/config.go b/server/config.go index e1483739a..a06f42b16 100644 --- a/server/config.go +++ b/server/config.go @@ -70,7 +70,10 @@ var Config = struct { RootPath string CustomCSSFile string CustomJsFile string - EnableSwagger bool + } + WebUI struct { + EnableSwagger bool + SkipVersionCheck bool } Prometheus struct { AuthToken string diff --git a/server/router/router.go b/server/router/router.go index d05a62bc8..d64833c75 100644 --- a/server/router/router.go +++ b/server/router/router.go @@ -72,7 +72,7 @@ func Load(noRouteHandler http.HandlerFunc, middleware ...gin.HandlerFunc) http.H } apiRoutes(base) - if server.Config.Server.EnableSwagger { + if server.Config.WebUI.EnableSwagger { setupSwaggerConfigAndRoutes(e) } diff --git a/server/web/config.go b/server/web/config.go index 4344dea7f..8c58b3b88 100644 --- a/server/web/config.go +++ b/server/web/config.go @@ -40,12 +40,13 @@ func Config(c *gin.Context) { } configData := map[string]any{ - "user": user, - "csrf": csrf, - "version": version.String(), - "forge": server.Config.Services.Forge.Name(), - "root_path": server.Config.Server.RootPath, - "enable_swagger": server.Config.Server.EnableSwagger, + "user": user, + "csrf": csrf, + "version": version.String(), + "skip_version_check": server.Config.WebUI.SkipVersionCheck, + "forge": server.Config.Services.Forge.Name(), + "root_path": server.Config.Server.RootPath, + "enable_swagger": server.Config.WebUI.EnableSwagger, } // default func map with json parser. @@ -75,4 +76,5 @@ window.WOODPECKER_VERSION = "{{ .version }}"; window.WOODPECKER_FORGE = "{{ .forge }}"; window.WOODPECKER_ROOT_PATH = "{{ .root_path }}"; window.WOODPECKER_ENABLE_SWAGGER = {{ .enable_swagger }}; +window.WOODPECKER_SKIP_VERSION_CHECK = {{ .skip_version_check }} ` diff --git a/web/src/compositions/useConfig.ts b/web/src/compositions/useConfig.ts index 4db98fe52..9bc36291c 100644 --- a/web/src/compositions/useConfig.ts +++ b/web/src/compositions/useConfig.ts @@ -4,6 +4,7 @@ declare global { interface Window { WOODPECKER_USER: User | undefined; WOODPECKER_VERSION: string | undefined; + WOODPECKER_SKIP_VERSION_CHECK: boolean | undefined; WOODPECKER_CSRF: string | undefined; WOODPECKER_FORGE: 'github' | 'gitlab' | 'gitea' | 'bitbucket' | undefined; WOODPECKER_ROOT_PATH: string | undefined; @@ -14,6 +15,7 @@ declare global { export default () => ({ user: window.WOODPECKER_USER || null, version: window.WOODPECKER_VERSION, + skipVersionCheck: window.WOODPECKER_SKIP_VERSION_CHECK || false, csrf: window.WOODPECKER_CSRF || null, forge: window.WOODPECKER_FORGE || null, rootPath: window.WOODPECKER_ROOT_PATH || '', diff --git a/web/src/compositions/useVersion.ts b/web/src/compositions/useVersion.ts index bb557e50c..3113cf6e3 100644 --- a/web/src/compositions/useVersion.ts +++ b/web/src/compositions/useVersion.ts @@ -42,7 +42,7 @@ export function useVersion() { const usesNext = current.startsWith('next'); const { user } = useAuthentication(); - if (!user?.admin) { + if (config.skipVersionCheck || !user?.admin) { version.value = { latest: undefined, current,