diff --git a/.github/scripts/build-catalog.sh b/.github/scripts/build-catalog.sh index daaa3a3d01a..8d6884e69a3 100755 --- a/.github/scripts/build-catalog.sh +++ b/.github/scripts/build-catalog.sh @@ -296,6 +296,61 @@ include_questions(){ /# Include{proxyProtocol}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + # Replace # Include{basicAuth} with the standard basicAuth codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{basicAuth}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{forwardAuth} with the standard forwardAuth codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{forwardAuth}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{chain} with the standard chain codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{chain}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{redirectScheme} with the standard redirectScheme codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{redirectScheme}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{rateLimit} with the standard rateLimit codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{rateLimit}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{redirectRegex} with the standard redirectRegex codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{redirectRegex}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{stripPrefixRegex} with the standard stripPrefixRegex codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{stripPrefixRegex}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{ipWhitelist} with the standard ipWhitelist codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{ipWhitelist}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{themePark} with the standard themePark codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{themePark}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{realIP} with the standard realIP codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{realIP}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{addPrefix} with the standard addPrefix codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{addPrefix}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + } export -f include_questions diff --git a/.github/scripts/updateTraefikMiddlewareVersions.sh b/.github/scripts/updateTraefikMiddlewareVersions.sh new file mode 100755 index 00000000000..69bf89a87f2 --- /dev/null +++ b/.github/scripts/updateTraefikMiddlewareVersions.sh @@ -0,0 +1,49 @@ +#! /bin/bash + +trainsPath="./charts" +traefikTrain="stable" + +get_latest_release() { + # Get latest release from GitHub api + curl --silent \ + --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \ + --url "https://api.github.com/repos/$1/releases/latest" | + # Get tag line + grep '"tag_name":' | + # Pluck JSON value + sed -E 's/.*"([^"]+)".*/\1/' +} + +set_key_to_version() { + key="$1" + version="$2" + traefikValuesFile="$trainsPath/$traefikTrain/traefik/values.yaml" + echo "Setting $key to $version..." + sed -i "s/${key}: .*/${key}: ${version}/" $traefikValuesFile + + content=$(grep "$key:" "$traefikValuesFile" | sed "s/\s*${key}:\s*//" ) + echo "New content of $key in values.yaml: $content" + echo "" +} + +update_plugin() { + repo="$1" + key="$2" + pluginName="$3" + + version=$(get_latest_release "$repo") + if [ -z "$version" ] + then + echo "Got empty version, skipping..." + else + echo "Fetched $pluginName plugin version: $version" + set_key_to_version "$key" "$version" + fi; +} +# Example +# update_plugin "repo" "key_holding_version_in_values.yaml" "plugin_name_used_for_verbose_printing_only" +# Real IP +update_plugin "soulbalz/traefik-real-ip" "realIPVersion" "RealIP" + +# Theme Park +update_plugin "packruler/traefik-themepark" "themeParkVersion" "ThemePark" diff --git a/.github/workflows/renovate-bump.yaml b/.github/workflows/renovate-bump.yaml index 892c09c6dc3..9c11bac1cb2 100644 --- a/.github/workflows/renovate-bump.yaml +++ b/.github/workflows/renovate-bump.yaml @@ -45,7 +45,7 @@ jobs: echo "changed apps: ${APPS[*]}" for chart in ${APPS[*]} do - if [[ "${chart}" == '.gitkee' ]]; then + if [[ "${chart}" == '.gitkeep' ]]; then echo "Skipping..." return elif test -f "./charts/stable/${chart}/Chart.yaml"; then diff --git a/charts/stable/traefik/Chart.yaml b/charts/stable/traefik/Chart.yaml index eb481e44bbf..fe5deca51c8 100644 --- a/charts/stable/traefik/Chart.yaml +++ b/charts/stable/traefik/Chart.yaml @@ -23,7 +23,7 @@ sources: - https://github.com/traefik/traefik-helm-chart - https://traefik.io/ type: application -version: 13.3.11 +version: 13.4.0 annotations: truecharts.org/catagories: | - network diff --git a/charts/stable/traefik/docs/redirect-regex-middleware.md b/charts/stable/traefik/docs/redirect-regex-middleware.md index 19c2f80618f..0fa7a311c9d 100644 --- a/charts/stable/traefik/docs/redirect-regex-middleware.md +++ b/charts/stable/traefik/docs/redirect-regex-middleware.md @@ -22,7 +22,7 @@ Edit your existing traefik install (or install fresh if you don't have it instal This will capture `https://remote.domain.com` or `https://remote.domain.com/` and redirect it to `https://remote.domain.com/guacamole` -## Applying the theme to the app +## Applying the regex redirect middleware to the app Edit your existing _App_, in this example we will use `guacamole-client`. diff --git a/charts/stable/traefik/questions.yaml b/charts/stable/traefik/questions.yaml index 3e796255e36..82f6fe969ab 100644 --- a/charts/stable/traefik/questions.yaml +++ b/charts/stable/traefik/questions.yaml @@ -176,366 +176,17 @@ questions: additional_attrs: true type: dict attrs: - - variable: basicAuth - label: "basicAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: users - label: "Users" - schema: - type: list - default: [] - items: - - variable: usersEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - default: "" - - variable: forwardAuth - label: "forwardAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: address - label: "Address" - schema: - type: string - required: true - default: "" - - variable: trustForwardHeader - label: "trustForwardHeader" - schema: - type: boolean - default: false - - variable: authResponseHeadersRegex - label: "authResponseHeadersRegex" - schema: - type: string - default: "" - - variable: authResponseHeaders - label: "authResponseHeaders" - schema: - type: list - default: [] - items: - - variable: authResponseHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: authRequestHeaders - label: "authRequestHeaders" - schema: - type: list - default: [] - items: - - variable: authRequestHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: chain - label: "chain" - schema: - type: list - default: [] - items: - - variable: chainEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: middlewares - label: "Middlewares to Chain" - schema: - type: list - default: [] - items: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: redirectScheme - label: "redirectScheme" - schema: - type: list - default: [] - items: - - variable: redirectSchemeEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: scheme - label: "Scheme" - schema: - type: string - required: true - default: "https" - enum: - - value: "https" - description: "https" - - value: "http" - description: "http" - - variable: permanent - label: "Permanent" - schema: - type: boolean - default: false - - variable: rateLimit - label: "rateLimit" - schema: - type: list - default: [] - items: - - variable: rateLimitEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: average - label: "Average" - schema: - type: int - required: true - default: 300 - - variable: burst - label: "Burst" - schema: - type: int - required: true - default: 200 - - variable: redirectRegex - label: "redirectRegex" - schema: - type: list - default: [] - items: - - variable: redirectRegexEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: regex - label: "Regex" - schema: - type: string - required: true - default: "" - - variable: replacement - label: "Replacement" - schema: - type: string - required: true - default: "" - - variable: permanent - label: "Permanent" - schema: - type: boolean - default: false - - variable: stripPrefixRegex - label: "stripPrefixRegex" - schema: - type: list - default: [] - items: - - variable: stripPrefixRegexEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: regex - label: "Regex" - schema: - type: list - default: [] - items: - - variable: regexEntry - label: "Regex" - schema: - type: string - required: true - default: "" - - variable: ipWhiteList - label: "ipWhiteList" - schema: - type: list - default: [] - items: - - variable: ipWhiteListEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: sourceRange - label: "Source Range" - schema: - type: list - default: [] - items: - - variable: sourceRangeEntry - label: "" - schema: - type: string - required: true - default: "" - - variable: ipStrategy - label: "IP Strategy" - schema: - additional_attrs: true - type: dict - attrs: - - variable: depth - label: "Depth" - schema: - type: int - required: true - - variable: excludedIPs - label: "Excluded IPs" - schema: - type: list - default: [] - items: - - variable: excludedIPsEntry - label: "" - schema: - type: string - required: true - default: "" - - variable: themePark - label: "theme.park" - schema: - type: list - default: [] - items: - - variable: themeParkEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: "Name" - description: This is a 3rd party plugin and not maintained by TrueCharts, - for more information go to traefik-themepark - schema: - type: string - required: true - - variable: appName - label: App Name - description: Lower case, name of the app to be themed. -
Go to https://docs.theme-park.dev/themes/ to see supported apps. - schema: - type: string - required: true - - variable: themeName - label: Theme Name - description: Lower case, name of the theme to be applied. -
Go to https://docs.theme-park.dev/theme-options/ to see supported themes. - schema: - type: string - required: true - - variable: baseUrl - label: Base URL - description: Replace `https://theme-park.dev` URL for self-hosting reference. - schema: - type: string - required: true - default: https://theme-park.dev - - variable: addons - label: Addons - schema: - type: list - default: [] - items: - - variable: addonEntry - label: "Addon" - description: Currently only supports 'darker' and '4k-logo' for *arr apps. -
Go to https://docs.theme-park.dev/themes/addons/ for Addon information. -
Go to https://github.com/packruler/traefik-themepark for more context on plugin - schema: - type: string - required: true - default: "" +# Include{basicAuth} +# Include{forwardAuth} +# Include{chain} +# Include{redirectScheme} +# Include{rateLimit} +# Include{redirectRegex} +# Include{stripPrefixRegex} +# Include{ipWhitelist} +# Include{themePark} +# Include{realIP} +# Include{addPrefix} - variable: service group: "Networking and Services" label: "Configure Service Entrypoint" diff --git a/charts/stable/traefik/templates/_args.tpl b/charts/stable/traefik/templates/_args.tpl index 68c640bf0df..68a0c916ce1 100644 --- a/charts/stable/traefik/templates/_args.tpl +++ b/charts/stable/traefik/templates/_args.tpl @@ -158,6 +158,12 @@ args: - "--experimental.plugins.traefik-themepark.version={{ .Values.middlewares.themeParkVersion }}" {{- end }} {{/* End of theme.park */}} + {{/* RealIP */}} + {{- if .Values.middlewares.realIP }} + - "--experimental.plugins.traefik-real-ip.modulename=github.com/soulbalz/traefik-real-ip" + - "--experimental.plugins.traefik-real-ip.version={{ .Values.middlewares.realIPVersion }}" + {{- end }} + {{/* End of RealIP */}} {{- with .Values.additionalArguments }} {{- range . }} - {{ . | quote }} diff --git a/charts/stable/traefik/templates/middlewares/addPrefix.yaml b/charts/stable/traefik/templates/middlewares/addPrefix.yaml new file mode 100644 index 00000000000..233b23834c3 --- /dev/null +++ b/charts/stable/traefik/templates/middlewares/addPrefix.yaml @@ -0,0 +1,17 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{- range $index, $middlewareData := .Values.middlewares.addPrefix }} + +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + addPrefix: + prefix: {{ $middlewareData.prefix }} +{{- end }} diff --git a/charts/stable/traefik/templates/middlewares/real-ip.yaml b/charts/stable/traefik/templates/middlewares/real-ip.yaml new file mode 100644 index 00000000000..2dd1ae030a4 --- /dev/null +++ b/charts/stable/traefik/templates/middlewares/real-ip.yaml @@ -0,0 +1,21 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{- range $index, $middlewareData := .Values.middlewares.realIP }} + +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + plugin: + traefik-real-ip: + excludednets: + {{- range $middlewareData.excludedNetworks }} + - {{ . | quote }} + {{- end }} +{{- end }} diff --git a/charts/stable/traefik/values.yaml b/charts/stable/traefik/values.yaml index c980da8e168..98eb5649133 100644 --- a/charts/stable/traefik/values.yaml +++ b/charts/stable/traefik/values.yaml @@ -12,14 +12,6 @@ ingressClass: # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. "v1beta1" fallbackApiVersion: "" -# -- Deprecated (will be removed later) -# -- Activate Pilot integration -pilot: - enabled: false - token: "" - # Toggle Pilot Dashboard - # dashboard: false - # -- Create an IngressRoute for the dashboard ingressRoute: dashboard: @@ -359,8 +351,7 @@ middlewares: # ipStrategy: # depth: 2 # excludedIPs: [] - # -- Currently requires to enable Traefik Pilot. - # -- Until it's deprecated. + themeParkVersion: v1.2.2 themePark: [] # - name: themeParkName # -- Supported apps, lower case name @@ -372,7 +363,19 @@ middlewares: # theme: themenamehere # -- https://theme-park.dev or a self hosted url # baseUrl: https://theme-park.dev - themeParkVersion: v1.2.1 + realIPVersion: v1.0.3 + # Sets X-Real-Ip with an IP from the X-Forwarded-For or + # Cf-Connecting-Ip (If from Cloudflare) + # Evaluation of those headers will go from last to first + realIP: [] + # - name: realIPName + # -- The real IP will be the first one that is + # -- not included in any of the CIDRs passed here + # excludedNetworks: + # - 1.1.1.1/24 + addPrefix: [] + # - name: addPrefixName + # prefix: "/foo" portalhook: enabled: true diff --git a/cspell.config.yaml b/cspell.config.yaml index 1fa920335ea..17e6fadf240 100644 --- a/cspell.config.yaml +++ b/cspell.config.yaml @@ -57,6 +57,7 @@ words: - duplicati - dynmap - ebgp + - elif - emby - entrypoints - eptgmk diff --git a/templates/questions/traefik/middlewares/addPrefix.yaml b/templates/questions/traefik/middlewares/addPrefix.yaml new file mode 100644 index 00000000000..cba3c6fa422 --- /dev/null +++ b/templates/questions/traefik/middlewares/addPrefix.yaml @@ -0,0 +1,24 @@ + - variable: addPrefix + label: Add Prefix + schema: + type: list + default: [] + items: + - variable: addPrefixEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: prefix + label: Prefix + schema: + type: string + required: true + default: "" diff --git a/templates/questions/traefik/middlewares/basciAuth.yaml b/templates/questions/traefik/middlewares/basciAuth.yaml new file mode 100644 index 00000000000..f5b1c380ef6 --- /dev/null +++ b/templates/questions/traefik/middlewares/basciAuth.yaml @@ -0,0 +1,42 @@ + - variable: basicAuth + label: basicAuth + schema: + type: list + default: [] + items: + - variable: basicAuthEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: users + label: Users + schema: + type: list + default: [] + items: + - variable: usersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: username + label: Username + schema: + type: string + required: true + default: "" + - variable: password + label: Password + schema: + type: string + required: true + default: "" diff --git a/templates/questions/traefik/middlewares/chain.yaml b/templates/questions/traefik/middlewares/chain.yaml new file mode 100644 index 00000000000..a2a53824d16 --- /dev/null +++ b/templates/questions/traefik/middlewares/chain.yaml @@ -0,0 +1,29 @@ + - variable: chain + label: Chain + schema: + type: list + default: [] + items: + - variable: chainEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: middlewares + label: Middlewares to Chain + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + required: true + default: "" diff --git a/templates/questions/traefik/middlewares/forwardAuth.yaml b/templates/questions/traefik/middlewares/forwardAuth.yaml new file mode 100644 index 00000000000..98d37838ef2 --- /dev/null +++ b/templates/questions/traefik/middlewares/forwardAuth.yaml @@ -0,0 +1,56 @@ + - variable: forwardAuth + label: forwardAuth + schema: + type: list + default: [] + items: + - variable: basicAuthEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: address + label: Address + schema: + type: string + required: true + default: "" + - variable: trustForwardHeader + label: trustForwardHeader + schema: + type: boolean + default: false + - variable: authResponseHeadersRegex + label: authResponseHeadersRegex + schema: + type: string + default: "" + - variable: authResponseHeaders + label: authResponseHeaders + schema: + type: list + default: [] + items: + - variable: authResponseHeadersEntry + label: "" + schema: + type: string + default: "" + - variable: authRequestHeaders + label: authRequestHeaders + schema: + type: list + default: [] + items: + - variable: authRequestHeadersEntry + label: "" + schema: + type: string + default: "" diff --git a/templates/questions/traefik/middlewares/ipWhitelist.yaml b/templates/questions/traefik/middlewares/ipWhitelist.yaml new file mode 100644 index 00000000000..cb2066af600 --- /dev/null +++ b/templates/questions/traefik/middlewares/ipWhitelist.yaml @@ -0,0 +1,53 @@ + - variable: ipWhiteList + label: ipWhiteList + schema: + type: list + default: [] + items: + - variable: ipWhiteListEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: sourceRange + label: Source Range + schema: + type: list + default: [] + items: + - variable: sourceRangeEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: ipStrategy + label: IP Strategy + schema: + additional_attrs: true + type: dict + attrs: + - variable: depth + label: Depth + schema: + type: int + required: true + - variable: excludedIPs + label: Excluded IPs + schema: + type: list + default: [] + items: + - variable: excludedIPsEntry + label: "" + schema: + type: string + required: true + default: "" diff --git a/templates/questions/traefik/middlewares/rateLimit.yaml b/templates/questions/traefik/middlewares/rateLimit.yaml new file mode 100644 index 00000000000..80fdb3dcab9 --- /dev/null +++ b/templates/questions/traefik/middlewares/rateLimit.yaml @@ -0,0 +1,29 @@ + - variable: rateLimit + label: rateLimit + schema: + type: list + default: [] + items: + - variable: rateLimitEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: average + label: Average + schema: + type: int + required: true + default: 300 + - variable: burst + label: Burst + schema: + type: int + required: true + default: 200 diff --git a/templates/questions/traefik/middlewares/realIP.yaml b/templates/questions/traefik/middlewares/realIP.yaml new file mode 100644 index 00000000000..aa59f893abf --- /dev/null +++ b/templates/questions/traefik/middlewares/realIP.yaml @@ -0,0 +1,31 @@ + - variable: realIP + label: Real IP + schema: + type: list + default: [] + items: + - variable: realIPEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: excludedNetworks + label: Excluded Networks + schema: + type: list + default: [] + items: + - variable: excludedNetEntry + label: Excluded Network Entry + description: Network to exclude setting it to X-Real-Ip + schema: + type: string + required: true + default: "" diff --git a/templates/questions/traefik/middlewares/redirectRegex.yaml b/templates/questions/traefik/middlewares/redirectRegex.yaml new file mode 100644 index 00000000000..75b958619da --- /dev/null +++ b/templates/questions/traefik/middlewares/redirectRegex.yaml @@ -0,0 +1,34 @@ + - variable: redirectRegex + label: redirectRegex + schema: + type: list + default: [] + items: + - variable: redirectRegexEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: regex + label: Regex + schema: + type: string + required: true + default: "" + - variable: replacement + label: Replacement + schema: + type: string + required: true + default: "" + - variable: permanent + label: Permanent + schema: + type: boolean + default: false diff --git a/templates/questions/traefik/middlewares/redirectScheme.yaml b/templates/questions/traefik/middlewares/redirectScheme.yaml new file mode 100644 index 00000000000..5b32458e0b8 --- /dev/null +++ b/templates/questions/traefik/middlewares/redirectScheme.yaml @@ -0,0 +1,33 @@ + - variable: redirectScheme + label: redirectScheme + schema: + type: list + default: [] + items: + - variable: redirectSchemeEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: scheme + label: Scheme + schema: + type: string + required: true + default: https + enum: + - value: https + description: https + - value: http + description: http + - variable: permanent + label: Permanent + schema: + type: boolean + default: false diff --git a/templates/questions/traefik/middlewares/stripPrefixRegex.yaml b/templates/questions/traefik/middlewares/stripPrefixRegex.yaml new file mode 100644 index 00000000000..6af8a7685ee --- /dev/null +++ b/templates/questions/traefik/middlewares/stripPrefixRegex.yaml @@ -0,0 +1,29 @@ + - variable: stripPrefixRegex + label: stripPrefixRegex + schema: + type: list + default: [] + items: + - variable: stripPrefixRegexEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: regex + label: Regex + schema: + type: list + default: [] + items: + - variable: regexEntry + label: Regex + schema: + type: string + required: true + default: "" diff --git a/templates/questions/traefik/middlewares/themePark.yaml b/templates/questions/traefik/middlewares/themePark.yaml new file mode 100644 index 00000000000..aa2d03cf9c5 --- /dev/null +++ b/templates/questions/traefik/middlewares/themePark.yaml @@ -0,0 +1,58 @@ + - variable: themePark + label: theme.park + schema: + type: list + default: [] + items: + - variable: themeParkEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: This is a 3rd party plugin and not maintained by TrueCharts, + for more information go to traefik-themepark + schema: + type: string + required: true + default: "" + - variable: appName + label: App Name + description: Lower case, name of the app to be themed. +
Go to https://docs.theme-park.dev/themes/ to see supported apps. + schema: + type: string + required: true + default: "" + - variable: themeName + label: Theme Name + description: Lower case, name of the theme to be applied. +
Go to https://docs.theme-park.dev/theme-options/ to see supported themes. + schema: + type: string + required: true + default: "" + - variable: baseUrl + label: Base URL + description: Replace `https://theme-park.dev` URL for self-hosting reference. + schema: + type: string + required: true + default: https://theme-park.dev + - variable: addons + label: Addons + schema: + type: list + default: [] + items: + - variable: addonEntry + label: Addon + description: Currently only supports 'darker' and '4k-logo' for *arr apps. +
Go to https://docs.theme-park.dev/themes/addons/ for Addon information. +
Go to https://github.com/packruler/traefik-themepark for more context on plugin + schema: + type: string + required: true + default: "" diff --git a/tools/build-release.sh b/tools/build-release.sh index c067f239196..bde26e3ea2d 100755 --- a/tools/build-release.sh +++ b/tools/build-release.sh @@ -388,6 +388,61 @@ include_questions(){ /# Include{proxyProtocol}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + # Replace # Include{basicAuth} with the standard basicAuth codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{basicAuth}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{forwardAuth} with the standard forwardAuth codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{forwardAuth}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{chain} with the standard chain codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{chain}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{redirectScheme} with the standard redirectScheme codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{redirectScheme}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{rateLimit} with the standard rateLimit codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{rateLimit}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{redirectRegex} with the standard redirectRegex codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{redirectRegex}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{stripPrefixRegex} with the standard stripPrefixRegex codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{stripPrefixRegex}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{ipWhitelist} with the standard ipWhitelist codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{ipWhitelist}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{themePark} with the standard themePark codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{themePark}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{realIP} with the standard realIP codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{realIP}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + + # Replace # Include{addPrefix} with the standard addPrefix codesnippet + awk 'NR==FNR { a[n++]=$0; next } + /# Include{addPrefix}/ { for (i=0;i "tmp${chartname}" && mv "tmp${chartname}" ${target}/questions.yaml + } export -f include_questions