From 69a2da889a55057b297de948432bc1ac20071a60 Mon Sep 17 00:00:00 2001 From: jkoberg Date: Thu, 16 Nov 2023 15:41:27 +0100 Subject: [PATCH] allow configuring addtional proxy routes Signed-off-by: jkoberg --- .../allow-configuring-additional-routes.md | 5 +++++ services/proxy/pkg/config/config.go | 1 + .../pkg/config/defaults/defaultconfig.go | 20 ++++++++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 changelog/unreleased/allow-configuring-additional-routes.md diff --git a/changelog/unreleased/allow-configuring-additional-routes.md b/changelog/unreleased/allow-configuring-additional-routes.md new file mode 100644 index 0000000000..449d4fcd12 --- /dev/null +++ b/changelog/unreleased/allow-configuring-additional-routes.md @@ -0,0 +1,5 @@ +Enhancement: Allow configuring additional routes + +Allows adding custom routes to the ocis proxy. This enables customs ocis extensions + +https://github.com/owncloud/ocis/pull/7740 diff --git a/services/proxy/pkg/config/config.go b/services/proxy/pkg/config/config.go index e937c036e1..9ff1928e0c 100644 --- a/services/proxy/pkg/config/config.go +++ b/services/proxy/pkg/config/config.go @@ -26,6 +26,7 @@ type Config struct { RoleQuotas map[string]uint64 `yaml:"role_quotas"` Policies []Policy `yaml:"policies"` + AdditionalPolicies []Policy `yaml:"additional_policies"` OIDC OIDC `yaml:"oidc"` ServiceAccount ServiceAccount `yaml:"service_account"` RoleAssignment RoleAssignment `yaml:"role_assignment"` diff --git a/services/proxy/pkg/config/defaults/defaultconfig.go b/services/proxy/pkg/config/defaults/defaultconfig.go index 460c0b1b30..f7e0487303 100644 --- a/services/proxy/pkg/config/defaults/defaultconfig.go +++ b/services/proxy/pkg/config/defaults/defaultconfig.go @@ -292,7 +292,7 @@ func EnsureDefaults(cfg *config.Config) { // Sanitize sanitizes the configuration func Sanitize(cfg *config.Config) { if cfg.Policies == nil { - cfg.Policies = DefaultPolicies() + cfg.Policies = mergePolicies(DefaultPolicies(), cfg.AdditionalPolicies) } if cfg.PolicySelector == nil { @@ -307,3 +307,21 @@ func Sanitize(cfg *config.Config) { cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/") } } + +func mergePolicies(policies []config.Policy, additionalPolicies []config.Policy) []config.Policy { + for _, p := range additionalPolicies { + found := false + for i, po := range policies { + if po.Name == p.Name { + po.Routes = append(po.Routes, p.Routes...) + policies[i] = po + found = true + break + } + } + if !found { + policies = append(policies, p) + } + } + return policies +}