diff --git a/containers/moneyapp/moneyapp.svg b/containers/moneyapp/moneyapp.svg new file mode 100644 index 0000000..dc0a61c --- /dev/null +++ b/containers/moneyapp/moneyapp.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/containers/onlyoffice/scripts/onlyoffice_traefik.sh b/containers/onlyoffice/scripts/onlyoffice_traefik.sh new file mode 100644 index 0000000..b384ed1 --- /dev/null +++ b/containers/onlyoffice/scripts/onlyoffice_traefik.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# OnlyOffice traefik middleware hooks (consumed by traefikSetupLabelsMiddlewares +# and tagsProcessorPortMiddlewares). It serves the document editor with its own +# header requirements, so it opts out of the default chain and adds its own +# headers middleware. + +# Marker — presence means: don't attach default@file to this app's routers. +appTraefikSkipsDefaultMiddleware_onlyoffice() { :; } + +# Extra middleware entries appended for this app. +appTraefikExtraMiddlewares_onlyoffice() { echo "onlyoffice-headers"; } diff --git a/containers/owncloud/scripts/owncloud_traefik.sh b/containers/owncloud/scripts/owncloud_traefik.sh new file mode 100644 index 0000000..64388d3 --- /dev/null +++ b/containers/owncloud/scripts/owncloud_traefik.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# ownCloud traefik middleware hook. It does its own routing, so it opts out of +# the default middleware chain (no app-specific extras). + +# Marker — presence means: don't attach default@file to this app's routers. +appTraefikSkipsDefaultMiddleware_owncloud() { :; } diff --git a/scripts/network/traefik/traefik_middlewares.sh b/scripts/network/traefik/traefik_middlewares.sh index 43edf18..e8d42a5 100755 --- a/scripts/network/traefik/traefik_middlewares.sh +++ b/scripts/network/traefik/traefik_middlewares.sh @@ -5,16 +5,19 @@ traefikSetupLabelsMiddlewares() local app_name="$1" local middleware_entries=() - # List of app names to exclude from default middleware - local exclude_apps=("onlyoffice" "owncloud") - # Check if app_name is not in the list of excluded apps - if [[ ! " ${exclude_apps[@]} " =~ " $app_name " ]]; then + # Default chain unless the app opts out via its per-app hook + # (containers//scripts/_traefik.sh defines + # appTraefikSkipsDefaultMiddleware_). + if ! declare -F "appTraefikSkipsDefaultMiddleware_${app_name}" >/dev/null 2>&1; then middleware_entries+=("default@file") fi - # App Specific middlewears - if [[ "$app_name" == "onlyoffice" ]]; then - middleware_entries+=("onlyoffice-headers") + # App-specific extras (e.g. onlyoffice-headers) via the per-app hook. + if declare -F "appTraefikExtraMiddlewares_${app_name}" >/dev/null 2>&1; then + local _mw + while IFS= read -r _mw; do + [[ -n "$_mw" ]] && middleware_entries+=("$_mw") + done < <("appTraefikExtraMiddlewares_${app_name}") fi if [[ "$authelia_setup" == "true" && "$whitelist" == "true" ]]; then diff --git a/scripts/network/traefik/traefik_port_middlewares.sh b/scripts/network/traefik/traefik_port_middlewares.sh index 7cbcd23..9c57773 100644 --- a/scripts/network/traefik/traefik_port_middlewares.sh +++ b/scripts/network/traefik/traefik_port_middlewares.sh @@ -26,14 +26,12 @@ tagsProcessorPortMiddlewares() return 0 fi - # Excluded apps that historically opted out of the default middleware - # chain — keeps existing behavior for onlyoffice / owncloud which do - # their own routing. - local exclude_apps=("onlyoffice" "owncloud") + # Apps opt out of the default middleware chain via a per-app hook + # (containers//scripts/_traefik.sh defines + # appTraefikSkipsDefaultMiddleware_) — e.g. onlyoffice / owncloud, which + # do their own routing. local include_default="true" - if [[ " ${exclude_apps[@]} " =~ " $app_name " ]]; then - include_default="false" - fi + declare -F "appTraefikSkipsDefaultMiddleware_${app_name}" >/dev/null 2>&1 && include_default="false" local count=${#port_service_names[@]} local i=0 @@ -67,9 +65,12 @@ tagsProcessorPortMiddlewares() mw+=("crowdsec-bouncer@file") fi - # onlyoffice / mastodon / similar app-specific middlewares - if [[ "$app_name" == "onlyoffice" ]]; then - mw+=("onlyoffice-headers") + # App-specific extras (e.g. onlyoffice-headers) via the per-app hook. + if declare -F "appTraefikExtraMiddlewares_${app_name}" >/dev/null 2>&1; then + local _mw + while IFS= read -r _mw; do + [[ -n "$_mw" ]] && mw+=("$_mw") + done < <("appTraefikExtraMiddlewares_${app_name}") fi local joined; joined=$(IFS=,; echo "${mw[*]}")