diff --git a/.gitignore b/.gitignore index 354b96f..9a533b8 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ __pycache__/ .ruff_cache/ + +.venv/ + # disable coverage coverage.lcov htmlcov/ diff --git a/.sops.yaml b/.sops.yaml index 5706156..67432ca 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -1,4 +1,4 @@ creation_rules: - - path_regex: .*secret.* + - path_regex: .*secrets\.yaml$ encrypted_regex: ^(data|stringData)$ age: "age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn" \ No newline at end of file diff --git a/generate-by-apps.sh b/generate-by-apps.sh new file mode 100755 index 0000000..40c0058 --- /dev/null +++ b/generate-by-apps.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +OPENDESK_REPO_PATH=${OPENDESK_REPO_PATH:=../opendesk/opendesk} +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +cd ${OPENDESK_REPO_PATH}/../ + +for APP_PATH in ${OPENDESK_REPO_PATH}/helmfile/apps/* ; do + APP_NAME=${APP_PATH##*/} + echo "Generating manifests for ${APP_NAME}" + + helmfile template -e dev -f "${APP_PATH}/helmfile.yaml.gotmpl" > "${SCRIPT_DIR}/manifests/${APP_NAME}.yaml" + +done diff --git a/kustomization.yaml b/kustomization.yaml index 8f1a827..025e710 100644 --- a/kustomization.yaml +++ b/kustomization.yaml @@ -2,3 +2,30 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: tn-openbsw-opendesk + +resources: + - manifests/migrations-pre-secrets.yaml + - manifests/migrations-pre.yaml + - manifests/services-secrets.yaml + - manifests/services.yaml + - manifests/nubus-secrets.yaml + - manifests/nubus.yaml + - manifests/open-xchange-secrets.yaml + - manifests/open-xchange.yaml + - manifests/nextcloud-secrets.yaml + - manifests/nextcloud.yaml + - manifests/collabora-secrets.yaml + - manifests/collabora.yaml + - manifests/cryptpad.yaml + - manifests/jitsi-secrets.yaml + - manifests/jitsi.yaml + - manifests/element-secrets.yaml + - manifests/element.yaml + - manifests/openproject-secrets.yaml + - manifests/openproject.yaml + - manifests/xwiki-secrets.yaml + - manifests/xwiki.yaml + - manifests/openproject-bootstrap-secrets.yaml + - manifests/openproject-bootstrap.yaml + - manifests/migrations-post-secrets.yaml + - manifests/migrations-post.yaml diff --git a/manifests/collabora-secrets.yaml b/manifests/collabora-secrets.yaml new file mode 100644 index 0000000..3ea5770 --- /dev/null +++ b/manifests/collabora-secrets.yaml @@ -0,0 +1,34 @@ +# Source: collabora-online/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: collabora + labels: + helm.sh/chart: collabora-online-1.1.21 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: 24.04.7.2.1 + app.kubernetes.io/managed-by: Helm +data: + username: ENC[AES256_GCM,data:yTTMfLS+vFXJ9KSkXKRGQILDEAeMeDsGCV9znb7dZK4=,iv:VuRKWEfgelmELv+E606v/nJWAy1TYF597ZGPI7970fs=,tag:dwV/jRvUUju0SOaDUWQWCQ==,type:str] + password: ENC[AES256_GCM,data:cIC/+ltCC41g7FjsIADCZgeU+5zhxN/zF2xY/JfjiQP6qq6pD3tUZ6VtG5exic4MCZ8N3uvLmTw=,iv:eoQDNOgclGd9YnVJaN57c5flLr9xy6nRdOO36rggTt8=,tag:ozEeAHiLt2xkjxyUD7eEgA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5Nk9NUC9rVnZ6Z1gvNTI5 + UzNvaXJOTUJ4ZDREWU4yN2FndEdQMVJYUUFvCmJiWU9FdzRWMGIzdHU2SFdXWlo0 + cjVjZFpIbXdtNURKdTQ5dzRDcmtoZHcKLS0tIG94Zjdpem50RnR2TnF2YjIxYTE3 + dmtpbFAxQUYwQmZMYlRZZ1cya1N0S2cK0ZB6xEtKP1wBe+jy+LhpKdbQ5u8mXQiF + s4ZdxmihwEjuKT66IBxvfvfvgwc/Caus2GczGf9hSTCCG8PwKg04XQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:01Z" + mac: ENC[AES256_GCM,data:x8Q3V52uXEKq5kS2ZK2yMGBgbT8EyEjoDuG/7FxEFUrq3W5sYNna7QNax0QE0tkPbxHb6tiLtpoHMOOVlJcZH5O41DlOOChYYetaumFoKLyBeW6UxcJfbe4gls5hCE9OtK3hFzI1QP9WoZq69qyPE/BVqOate9Ot1Hl686Cl7kI=,iv:6FR9L+b/MGjl5m5WSulXSoN6RVUQnyyKFz4bCOmkdTE=,tag:w2ejc2TKCYDhv7tYBOvC+g==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/collabora.yaml b/manifests/collabora.yaml new file mode 100644 index 0000000..2e54b1d --- /dev/null +++ b/manifests/collabora.yaml @@ -0,0 +1,237 @@ +# Source: collabora-online/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: collabora + labels: + helm.sh/chart: collabora-online-1.1.21 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: 24.04.7.2.1 + app.kubernetes.io/managed-by: Helm +--- +# Source: collabora-online/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: collabora + annotations: + confighash: config-583854b8559f211f26d630547459ea9f + labels: + helm.sh/chart: collabora-online-1.1.21 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: 24.04.7.2.1 + app.kubernetes.io/managed-by: Helm +data: + extra_params: --o:ssl.enable=false --o:ssl.termination=true --o:fetch_update_check=0 + --o:remote_font_config.url=https://files.opendesk.apps.digilab.network/apps/richdocuments/settings/fonts.json + --o:net.proto=all + + aliasgroup1: https://files.opendesk.apps.digilab.network +--- +# Source: collabora-online/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: collabora + labels: + helm.sh/chart: collabora-online-1.1.21 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: 24.04.7.2.1 + app.kubernetes.io/managed-by: Helm + type: main +spec: + type: ClusterIP + ports: + - port: 9980 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + type: main +--- +# Source: collabora-online/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: collabora + labels: + helm.sh/chart: collabora-online-1.1.21 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: 24.04.7.2.1 + app.kubernetes.io/managed-by: Helm +spec: + minReadySeconds: 0 + replicas: 1 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + selector: + matchLabels: + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + type: main + template: + metadata: + annotations: + confighash: config-583854b8559f211f26d630547459ea9f + cluster-autoscaler.kubernetes.io/safe-to-evict: 'true' + labels: + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + type: main + spec: + terminationGracePeriodSeconds: 60 + serviceAccountName: collabora + securityContext: + fsGroup: 100 + containers: + - name: collabora-online + securityContext: + allowPrivilegeEscalation: true + capabilities: + add: + - CHOWN + - FOWNER + - SYS_CHROOT + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 100 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk:24.04.7.2.1@sha256:5b00478f2c6c7372b2a67e68783d9b1a91265679bbd4afdc1416e50720d50ce6 + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 9980 + protocol: TCP + startupProbe: + httpGet: + path: / + port: 9980 + scheme: HTTP + failureThreshold: 30 + periodSeconds: 3 + livenessProbe: + httpGet: + path: / + port: 9980 + scheme: HTTP + initialDelaySeconds: 0 + periodSeconds: 10 + timeoutSeconds: 30 + successThreshold: 1 + failureThreshold: 4 + readinessProbe: + httpGet: + path: / + port: 9980 + scheme: HTTP + initialDelaySeconds: 0 + periodSeconds: 10 + timeoutSeconds: 30 + successThreshold: 1 + failureThreshold: 2 + + envFrom: + - configMapRef: + name: collabora + env: + - name: username + valueFrom: + secretKeyRef: + name: collabora + key: username + - name: password + valueFrom: + secretKeyRef: + name: collabora + key: password + resources: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.5 + memory: 512Mi + volumeMounts: + - name: tmp + mountPath: /tmp + volumes: + - name: tmp + emptyDir: {} +--- +# Source: collabora-online/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: collabora + labels: + helm.sh/chart: collabora-online-1.1.21 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: 24.04.7.2.1 + app.kubernetes.io/managed-by: Helm + annotations: + haproxy-ingress.github.io/balance-algorithm: url_param WOPISrc check_post + haproxy-ingress.github.io/config-backend: | + hash-type consistent + # block admin urls from outside + acl admin_url path_beg /cool/getMetrics + acl admin_url path_beg /cool/adminws/ + acl admin_url path_beg /browser/dist/admin/admin.html + http-request deny if admin_url + haproxy-ingress.github.io/timeout-tunnel: 600s + haproxy.org/backend-config-snippet: | + balance url_param WOPISrc check_post + hash-type consistent + haproxy.org/timeout-tunnel: 600s + nginx.ingress.kubernetes.io/proxy-body-size: 100M + nginx.ingress.kubernetes.io/proxy-read-timeout: '600' + nginx.ingress.kubernetes.io/proxy-send-timeout: '600' + nginx.ingress.kubernetes.io/server-snippet: | + # block admin and metrics endpoint from outside by default + location /cool/getMetrics { deny all; return 403; } + location /cool/adminws/ { deny all; return 403; } + location /browser/dist/admin/admin.html { deny all; return 403; } + nginx.ingress.kubernetes.io/upstream-hash-by: $arg_WOPISrc + nginx.org/client-max-body-size: 100M + nginx.org/lb-method: hash $arg_WOPISrc consistent + nginx.org/proxy-read-timeout: 600s + nginx.org/proxy-send-timeout: 600s + nginx.org/server-snippets: | + # block admin and metrics endpoint from outside by default + location /cool/getMetrics { deny all; return 403; } + location /cool/adminws/ { deny all; return 403; } + location /browser/dist/admin/admin.html { deny all; return 403; } + nginx.org/websocket-services: collabora +spec: + tls: + - hosts: + - office.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: office.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: collabora + port: + number: 9980 + diff --git a/manifests/cryptpad.yaml b/manifests/cryptpad.yaml new file mode 100644 index 0000000..c75dad6 --- /dev/null +++ b/manifests/cryptpad.yaml @@ -0,0 +1,283 @@ +# Source: cryptpad/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cryptpad + labels: + helm.sh/chart: cryptpad-0.0.20 + app.kubernetes.io/name: cryptpad + app.kubernetes.io/instance: cryptpad + app.kubernetes.io/managed-by: Helm +--- +# Source: cryptpad/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: cryptpad + labels: + helm.sh/chart: cryptpad-0.0.20 + app.kubernetes.io/name: cryptpad + app.kubernetes.io/instance: cryptpad + app.kubernetes.io/managed-by: Helm +data: + config.js: | + /* globals module */ + + module.exports = { + httpUnsafeOrigin: 'https://pad.opendesk.apps.digilab.network', + httpSafeOrigin: 'https://pad.opendesk.apps.digilab.network', + adminKeys: [], + archivePath: "./data/archive", + blobPath: "./blob", + blobStagingPath: "./data/blobstage", + blockPath: "./block", + decreePath: "./data/decrees", + filePath: "./datastore/", + httpAddress: "0.0.0.0", + installMethod: "helm-docker", + logFeedback: "false", + logLevel: "info", + logPath: "./data/logs", + logToStdout: "false", + pinPath: "./data/pins", + taskPath: "./data/tasks", + verbose: "false", + + + }; + application_config.js: | + /* + * You can override the configurable values from this file. + * The recommended method is to make a copy of this file (/customize.dist/application_config.js) + in a 'customize' directory (/customize/application_config.js). + * If you want to check all the configurable values, you can open the internal configuration file + but you should not change it directly (/common/application_config_internal.js) + */ + define(['/common/application_config_internal.js'], function (AppConfig) { + AppConfig.availablePadTypes = ["diagram"]; + + return AppConfig; + }); +--- +# Source: cryptpad/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: cryptpad + labels: + helm.sh/chart: cryptpad-0.0.20 + app.kubernetes.io/name: cryptpad + app.kubernetes.io/instance: cryptpad + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + - port: 83 + targetPort: ws + protocol: TCP + name: ws + sessionAffinity: ClientIP + selector: + app.kubernetes.io/name: cryptpad + app.kubernetes.io/instance: cryptpad +--- +# Source: cryptpad/templates/cryptpad.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: cryptpad + labels: + helm.sh/chart: cryptpad-0.0.20 + app.kubernetes.io/name: cryptpad + app.kubernetes.io/instance: cryptpad + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: cryptpad + app.kubernetes.io/instance: cryptpad + template: + metadata: + annotations: + checksum/configmap: b48fcf297555b0deb86ac68f2f888d84bfd9172583df31321841f76085af955b + labels: + app.kubernetes.io/name: cryptpad + app.kubernetes.io/instance: cryptpad + spec: + serviceAccountName: cryptpad + securityContext: + fsGroup: 4001 + initContainers: + - name: init-cryptpad + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 4001 + runAsNonRoot: true + runAsUser: 4001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad:opendesk-20231222@sha256:f4d20d5c38c87b11ed1a1b46ef6a3633d32c6758ebdff8556458f040318fa5e2 + imagePullPolicy: IfNotPresent + command: [/bin/sh, -c] + volumeMounts: + - name: cryptpad-data + mountPath: /cryptpad/data + args: + - | + FILE=/cryptpad/data/decrees/decree.ndjson + mkdir -p /cryptpad/data/decrees + VALUE='["ENABLE_EMBEDDING", [true], "", 0]' + if [ -f $FILE ] && [ $(grep -c "ENABLE_EMBEDDING" $FILE) -gt 0 ] + then + sed -i "s|.*ENABLE_EMBEDDING.*|$VALUE|g" "$FILE" + else + echo "$VALUE" >> "$FILE" + fi + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 512Mi + containers: + - name: cryptpad + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 4001 + runAsNonRoot: true + runAsUser: 4001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad:opendesk-20231222@sha256:f4d20d5c38c87b11ed1a1b46ef6a3633d32c6758ebdff8556458f040318fa5e2 + imagePullPolicy: IfNotPresent + env: + - name: CPAD_MAIN_DOMAIN + value: https://pad.opendesk.apps.digilab.network + - name: CPAD_SANDBOX_DOMAIN + value: https://pad.opendesk.apps.digilab.network + - name: CPAD_CONF + value: /cryptpad/config/config.js + ports: + - name: http + containerPort: 3000 + protocol: TCP + - name: ws + containerPort: 3003 + protocol: TCP + startupProbe: + tcpSocket: + port: 3000 + initialDelaySeconds: 0 + timeoutSeconds: 1 + periodSeconds: 10 + failureThreshold: 5 + successThreshold: 1 + livenessProbe: + httpGet: + path: / + port: 3000 + initialDelaySeconds: 0 + timeoutSeconds: 1 + periodSeconds: 10 + failureThreshold: 5 + successThreshold: 1 + readinessProbe: + httpGet: + path: / + port: 3000 + initialDelaySeconds: 0 + timeoutSeconds: 1 + periodSeconds: 10 + failureThreshold: 5 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 512Mi + volumeMounts: + - name: cryptpad-blob + mountPath: /cryptpad/blob + - name: cryptpad-block + mountPath: /cryptpad/block + - name: cryptpad-data + mountPath: /cryptpad/data + - name: cryptpad-datastore + mountPath: /cryptpad/datastore + - name: configmaps + mountPath: /cryptpad/config/config.js + subPath: config.js + - name: configmaps + mountPath: /cryptpad/customize/application_config.js + subPath: application_config.js + volumes: + - name: configmaps + configMap: + name: cryptpad + - name: cryptpad-blob + emptyDir: {} + - name: cryptpad-block + emptyDir: {} + - name: cryptpad-data + emptyDir: {} + - name: cryptpad-datastore + emptyDir: {} +--- +# Source: cryptpad/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: cryptpad + labels: + helm.sh/chart: cryptpad-0.0.20 + app.kubernetes.io/name: cryptpad + app.kubernetes.io/instance: cryptpad + app.kubernetes.io/managed-by: Helm + annotations: + nginx.org/websocket-services: cryptpad +spec: + tls: + - hosts: + - pad.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: pad.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: cryptpad + port: + number: 80 + - path: /cryptpad_websocket + pathType: ImplementationSpecific + backend: + service: + name: cryptpad + port: + number: 83 + diff --git a/manifests/element-secrets.yaml b/manifests/element-secrets.yaml new file mode 100644 index 0000000..b5a2754 --- /dev/null +++ b/manifests/element-secrets.yaml @@ -0,0 +1,99 @@ +# Source: opendesk-synapse/templates/secret.yaml +kind: Secret +apiVersion: v1 +metadata: + name: opendesk-synapse + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-3.4.1 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +stringData: + app-service-0.yaml: ENC[AES256_GCM,data:uam/noIX+JALn61rvKI13bawjFB6iQf8JrFlBaea63JCHd81fcZVOBPbFasQI7GLSz+NH7PRe85jZ4QN7a3i4g8wZQMBSrmZepSX1CGEWB8IL2tG1p7G1Kx8TqeQSpMignsviZfaxNd38T9SLx3DmclG1L54WRJbzlqx0ZLFu0UFRsOUidIU2mpYz8zbSb7Ry77tRDcouSDlANPuHUAMydPuzhQoa0JHvHuc4qnbMGLqS85XPNx+o3YPx7uePQkG+BqrELPIvygbY7kTJaBbWe/xtvGItyRcb1Yt8nSTDkh44eU=,iv:GiwCxIgWeOtWdxfun3CtI5vBoRzEXp06vaqqJNMTKPA=,tag:+XYenZDz02cUQ6j/shxvAA==,type:str] + app-service-1.yaml: ENC[AES256_GCM,data:ow1PalMrtKM4FLzpoip/Dy5xbhe1863E4O301Zzqn3/+U4JJp/HnMFmq7ZefWaLtpAvnLrK5/XW6DBFznI0+9L7EW2K1fdRI5wO6RiFX9TkMmHuxZSX6TvSkmE8cyhRZZ/RGPZ8tw6QNw+KhlHfeiwxx1Ja6DhUP198uAK4YE6TLwyAnqijsZ0KaMhXtzp0niPKR36eTg9f7Vpomc9zURxdoLSpC/oSyP/OnpYdL4JKLWm01hhO4OeDS+OJ3qx58yPHVriCEHS+ZMKq/BIx833cLTj8W0+yxMQ==,iv:ieF6Ip6J2QzA4znvDM3SFY/EmRksy7F2oIqh10Xcoys=,tag:PpyFQsSzRhEf0Wzy2J5qGg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrT3BTMEcyemNJaktkOFFz + YkRmRG5UNkZMK0ViOWZZaVVjK1BUamJTZFFVCkJwR1ROZ01YYWc5dEgwTEJWWFUx + WlBuNFhzYkJ5cnZhZ0tnc2V5ZDd1ZDAKLS0tIFhrNzJ6ZkxQSXNPVlliRTNjNW53 + cnNxQ3RKdmxSdHlUK0ZpOFBlZXlsbFkKQfnnSWfCUpcD/3wngZk8uudz15GXqpMw + fVxbe/xFRFQFrnZNedcMXexjWiIvARfF1Q1PH9J2UnmQqU63q3muqw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:26Z" + mac: ENC[AES256_GCM,data:6fjr4YOCqObwdXbUXwP7xoRByWFrai2n2AUDBXPToVV7bNZtu0+FyHsL9e9fTjwCueNFK00nTNStIxSEYZzQp1DoaxPiV+4qRLPJR/ajDW+piSTFl5LF1sXDKt+NxzqSWZ6/I0WB3q71oiIr3gX9pl5BYIl2WXWpurmb99ON3d0=,iv:uwyuz0lpxmYq9IbAsS5PWTAIrTEicIZaeTiCePZiLZg=,tag:vijc1gxTOhKRwK3zYi1vWQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-synapse-create-account/templates/secret.yaml +kind: Secret +apiVersion: v1 +metadata: + name: opendesk-matrix-user-verification-service-bootstrap + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-3.4.1 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:wtkVZzxEB3iHn2Ed8DiTmHk/eqyZxF2ycP4X+MEpmw7YrJLNzCPJFg==,iv:UQkMOZChYcWFKH0RTJgM1iN5PSFXtNpuH12ZG0zMK/M=,tag:RzKp3uz72VQ6GUL6wVXZLw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrT3BTMEcyemNJaktkOFFz + YkRmRG5UNkZMK0ViOWZZaVVjK1BUamJTZFFVCkJwR1ROZ01YYWc5dEgwTEJWWFUx + WlBuNFhzYkJ5cnZhZ0tnc2V5ZDd1ZDAKLS0tIFhrNzJ6ZkxQSXNPVlliRTNjNW53 + cnNxQ3RKdmxSdHlUK0ZpOFBlZXlsbFkKQfnnSWfCUpcD/3wngZk8uudz15GXqpMw + fVxbe/xFRFQFrnZNedcMXexjWiIvARfF1Q1PH9J2UnmQqU63q3muqw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:26Z" + mac: ENC[AES256_GCM,data:6fjr4YOCqObwdXbUXwP7xoRByWFrai2n2AUDBXPToVV7bNZtu0+FyHsL9e9fTjwCueNFK00nTNStIxSEYZzQp1DoaxPiV+4qRLPJR/ajDW+piSTFl5LF1sXDKt+NxzqSWZ6/I0WB3q71oiIr3gX9pl5BYIl2WXWpurmb99ON3d0=,iv:uwyuz0lpxmYq9IbAsS5PWTAIrTEicIZaeTiCePZiLZg=,tag:vijc1gxTOhKRwK3zYi1vWQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-synapse-create-account/templates/secret.yaml +kind: Secret +apiVersion: v1 +metadata: + name: matrix-neodatefix-bot-bootstrap + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-3.4.1 + app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:6u9JdOefociklKSLnhKBRFKIaO81Hq6eoxE+EQUWuS4lh/6QIjNw5g==,iv:Q+24I2jjUM6D6TisrYEoQv6KCCjiHOL0q73yCltbOdU=,tag:j7pzORbFWKWIIvviqgpHzA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrT3BTMEcyemNJaktkOFFz + YkRmRG5UNkZMK0ViOWZZaVVjK1BUamJTZFFVCkJwR1ROZ01YYWc5dEgwTEJWWFUx + WlBuNFhzYkJ5cnZhZ0tnc2V5ZDd1ZDAKLS0tIFhrNzJ6ZkxQSXNPVlliRTNjNW53 + cnNxQ3RKdmxSdHlUK0ZpOFBlZXlsbFkKQfnnSWfCUpcD/3wngZk8uudz15GXqpMw + fVxbe/xFRFQFrnZNedcMXexjWiIvARfF1Q1PH9J2UnmQqU63q3muqw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:26Z" + mac: ENC[AES256_GCM,data:6fjr4YOCqObwdXbUXwP7xoRByWFrai2n2AUDBXPToVV7bNZtu0+FyHsL9e9fTjwCueNFK00nTNStIxSEYZzQp1DoaxPiV+4qRLPJR/ajDW+piSTFl5LF1sXDKt+NxzqSWZ6/I0WB3q71oiIr3gX9pl5BYIl2WXWpurmb99ON3d0=,iv:uwyuz0lpxmYq9IbAsS5PWTAIrTEicIZaeTiCePZiLZg=,tag:vijc1gxTOhKRwK3zYi1vWQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/element.yaml b/manifests/element.yaml new file mode 100644 index 0000000..ae17fb0 --- /dev/null +++ b/manifests/element.yaml @@ -0,0 +1,3170 @@ +# Source: opendesk-element/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-element + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-3.4.1 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +--- +# Source: opendesk-element/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: opendesk-element + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-3.4.1 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm +data: + config.json: |- + { + "default_server_config": { + "m.homeserver": { + "base_url": "https://matrix.opendesk.apps.digilab.network" + } + }, + "sso_redirect_options": { + "on_welcome_page": true + }, + "jitsi": { + "preferred_domain": "meet.opendesk.apps.digilab.network" + }, + "jitsi_widget": { + "skip_built_in_welcome_screen": true + }, + "permalink_prefix": "https://chat.opendesk.apps.digilab.network", + "default_federate": false, + "disable_custom_urls": true, + "integrations_ui_url": "", + "integrations_rest_url": "", + "integrations_widgets_urls": [], + "features": { + "feature_rust_crypto": true, + "feature_video_rooms": false, + "feature_ask_to_join": true + }, + "enable_presence_by_hs_url": { + "https://matrix.org": false, + "https://matrix-client.matrix.org": false + }, + "setting_defaults": { + "UIFeature.feedback": false, + "UIFeature.advancedSettings": false, + "UIFeature.shareQrCode": false, + "UIFeature.shareSocial": false, + "UIFeature.identityServer": false, + "UIFeature.thirdPartyId": false, + "UIFeature.registration": false, + "UIFeature.passwordReset": false, + "UIFeature.deactivate": false, + "UIFeature.advancedEncryption": false, + "UIFeature.roomHistorySettings": false, + "MessageComposerInput.showStickersButton": false, + "breadcrumbs": false, + "fallbackICEServerAllowed": false + }, + "default_theme": "light", + "brand": "MijnBureau Collaboration", + "custom_translations_url": "/custom-translations.json", + "embeddedPages": { + "homeUrl": "/custom-home.html" + }, + "net.nordeck.element_web.module.widget_toggles": { + "config": { + "types": [ + "jitsi", + "net.nordeck" + ] + } + }, + "net.nordeck.element_web.module.guest": { + "config": { + "guest_user_homeserver_url": "https://matrix.opendesk.apps.digilab.network" + } + }, + "logout_redirect_url":"https://id.opendesk.apps.digilab.network/realms/opendesk/protocol/openid-connect/logout?client_id=opendesk-matrix\u0026post_logout_redirect_uri=https%3A%2F%2Fportal.opendesk.apps.digilab.network","net.nordeck.element_web.module.opendesk":{"config":{"banner":{"ics_navigation_json_url":"https://ics.opendesk.apps.digilab.network/navigation.json","ics_silent_url":"https://ics.opendesk.apps.digilab.network/silent","portal_logo_svg_url":"https://portal.opendesk.apps.digilab.network/univention/portal/icons/logos/domain.svg","portal_url":"https://portal.opendesk.apps.digilab.network/"},"custom_css_variables":{"--cpd-color-bg-action-primary-rest":"#6af56a","--cpd-color-text-action-accent":"#6af56a"}}},"net.nordeck.element_web.module.widget_lifecycle":{"widget_permissions":{"https://chat.opendesk.apps.digilab.network/jitsi.html":{"identity_approved":true},"https://matrix-neoboard-widget.opendesk.apps.digilab.network/*":{"capabilities_approved":["org.matrix.msc2762.send.event:net.nordeck.whiteboard.document.create","org.matrix.msc2762.receive.event:net.nordeck.whiteboard.document.create","org.matrix.msc2762.send.event:net.nordeck.whiteboard.document.chunk","org.matrix.msc2762.receive.event:net.nordeck.whiteboard.document.chunk","org.matrix.msc2762.send.event:net.nordeck.whiteboard.document.snapshot","org.matrix.msc2762.receive.event:net.nordeck.whiteboard.document.snapshot","org.matrix.msc2762.send.state_event:m.room.power_levels#","org.matrix.msc2762.receive.state_event:m.room.power_levels#","org.matrix.msc2762.receive.state_event:m.room.member","org.matrix.msc2762.receive.state_event:m.room.name","org.matrix.msc2762.send.state_event:net.nordeck.whiteboard","org.matrix.msc2762.receive.state_event:net.nordeck.whiteboard","org.matrix.msc2762.send.state_event:net.nordeck.whiteboard.sessions#*","org.matrix.msc2762.receive.state_event:net.nordeck.whiteboard.sessions","org.matrix.msc3819.send.to_device:net.nordeck.whiteboard.connection_signaling","org.matrix.msc3819.receive.to_device:net.nordeck.whiteboard.connection_signaling","town.robin.msc3846.turn_servers","org.matrix.msc4039.upload_file","org.matrix.msc4039.download_file"],"preload_approved":true},"https://matrix-neochoice-widget.opendesk.apps.digilab.network/*":{"capabilities_approved":["org.matrix.msc2762.send.event:net.nordeck.poll.vote","org.matrix.msc2762.receive.event:net.nordeck.poll.vote","org.matrix.msc2762.send.state_event:net.nordeck.poll","org.matrix.msc2762.receive.state_event:net.nordeck.poll","org.matrix.msc2762.send.state_event:net.nordeck.poll.settings","org.matrix.msc2762.receive.state_event:net.nordeck.poll.settings","org.matrix.msc2762.receive.state_event:m.room.power_levels","org.matrix.msc2762.receive.state_event:m.room.name","org.matrix.msc2762.receive.state_event:m.room.member","org.matrix.msc2762.send.state_event:net.nordeck.poll.group","org.matrix.msc2762.receive.state_event:net.nordeck.poll.group","org.matrix.msc2762.send.event:net.nordeck.poll.start","org.matrix.msc2762.receive.event:net.nordeck.poll.start"],"preload_approved":true},"https://matrix-neodatefix-widget.opendesk.apps.digilab.network/*":{"capabilities_approved":["org.matrix.msc2931.navigate","org.matrix.msc2762.timeline:*","org.matrix.msc2762.receive.state_event:m.room.power_levels","org.matrix.msc2762.receive.event:m.reaction","org.matrix.msc2762.receive.state_event:m.room.create","org.matrix.msc2762.receive.state_event:m.room.tombstone","org.matrix.msc2762.receive.state_event:m.room.member","org.matrix.msc2762.send.state_event:m.room.member","org.matrix.msc2762.receive.state_event:m.room.name","org.matrix.msc2762.receive.state_event:m.room.topic","org.matrix.msc2762.receive.state_event:m.space.parent","org.matrix.msc2762.receive.state_event:m.space.child","org.matrix.msc2762.receive.state_event:net.nordeck.meetings.metadata","org.matrix.msc2762.receive.state_event:im.vector.modular.widgets","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.create","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.create","org.matrix.msc2762.send.event:net.nordeck.meetings.breakoutsessions.create","org.matrix.msc2762.receive.event:net.nordeck.meetings.breakoutsessions.create","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.close","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.close","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.widgets.handle","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.widgets.handle","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.participants.handle","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.participants.handle","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.update","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.update","org.matrix.msc2762.send.event:net.nordeck.meetings.meeting.change.message_permissions","org.matrix.msc2762.receive.event:net.nordeck.meetings.meeting.change.message_permissions","org.matrix.msc2762.send.event:net.nordeck.meetings.sub_meetings.send_message","org.matrix.msc2762.receive.event:net.nordeck.meetings.sub_meetings.send_message","org.matrix.msc3973.user_directory_search"],"identity_approved":true,"preload_approved":true}}}, + "dummy_end": "placeholder" + } + custom-home.html: |- + +

Willkommen

+ Terminplaner öffnen + custom-translations.json: |- + { + "power_level|default": { + "de": "Teilnehmer*in", + "en": "Participant" + }, + "power_level|moderator": { + "de": "Assistent*in", + "en": "Assistant" + }, + "power_level|mod": { + "de": "Assistent*in", + "en": "Assistant" + }, + "power_level|admin": { + "de": "Moderator*in", + "en": "Moderator" + }, + "room|header|n_people_asking_to_join": { + "de": { + "one": "Möchte beitreten", + "other": "%(count)s Personen möchten beitreten" + }, + "en": { + "one": "Asking to join", + "other": "%(count)s people asking to join" + } + }, + "room|knock_denied_subtitle": { + "de": "Da deine Beitrittsanfrage abgelehnt wurde, bitten wir um Geduld, bis du eine Einladung vom Administrator oder Moderator erhältst.", + "en": "As you have been denied access, you cannot rejoin unless you are invited by the admin or moderator of the group." + }, + "room|knock_denied_title": { + "de": "Deine Beitrittsanfrage wurde abgelehnt", + "en": "You have been denied access" + }, + "room_settings|security|publish_room": { + "de": "Diesen Raum im Raumverzeichnis veröffentlichen.", + "en": "Make this room visible in the public room directory." + } + } +--- +# Source: opendesk-element/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: opendesk-element-nginx + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-3.4.1 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm +data: + nginx.conf: |2- + + worker_processes auto; + + error_log stderr warn; + pid /tmp/nginx.pid; + + + events { + worker_connections 1024; + } + + http { + client_body_temp_path /tmp/client_temp; + proxy_temp_path /tmp/proxy_temp_path; + fastcgi_temp_path /tmp/fastcgi_temp; + uwsgi_temp_path /tmp/uwsgi_temp; + scgi_temp_path /tmp/scgi_temp; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + set_real_ip_from 0.0.0.0/0; + real_ip_header X-Forwarded-For; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + server { + listen 8080; + + add_header X-Frame-Options SAMEORIGIN; + add_header X-Content-Type-Options nosniff; + add_header X-XSS-Protection "1; mode=block"; + add_header Content-Security-Policy "frame-ancestors 'self'"; + add_header X-Robots-Tag "noindex, nofollow, noarchive, noimageindex"; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + + charset utf-8; + } + + location = /health { + allow all; + default_type 'application/json'; + return 200 '{"status": "ok"}'; + } + + } + } +--- +# Source: opendesk-element/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: opendesk-element + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-3.4.1 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: element + port: 8080 + targetPort: 8080 + protocol: TCP + selector: + app.kubernetes.io/name: opendesk-element + app.kubernetes.io/instance: opendesk-element +--- +# Source: opendesk-element/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: opendesk-element + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-3.4.1 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: clamd +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: opendesk-element + app.kubernetes.io/instance: opendesk-element + strategy: + rollingUpdate: + maxSurge: 2 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 9849a2f09058498ab21b6a988bc276bec239e5198b06c5f1c13c0b4c5efd799b + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-3.4.1 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/instance + operator: In + values: + - opendesk-element + topologyKey: kubernetes.io/hostname + securityContext: + fsGroup: 101 + serviceAccountName: opendesk-element + terminationGracePeriodSeconds: 30 + containers: + - name: element + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images/opendesk-element-web:1.11.2@sha256:faf57be74ff715e0f7c833a977f9f7b974ed3230d5d4e30733be7ed01b295a4c + imagePullPolicy: IfNotPresent + env: + ports: + - name: element + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: element + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: /health + port: element + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 1 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + startupProbe: + httpGet: + path: /health + port: element + scheme: HTTP + initialDelaySeconds: 2 + periodSeconds: 2 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: config + mountPath: /app/config.json + subPath: config.json + readOnly: true + - name: config + mountPath: /app/custom-home.html + subPath: custom-home.html + readOnly: true + - name: config + mountPath: /app/custom-translations.json + subPath: custom-translations.json + readOnly: true + - name: nginx-config + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + readOnly: true + - name: tmp + mountPath: /tmp + volumes: + - name: config + configMap: + name: opendesk-element + defaultMode: 420 + - name: nginx-config + configMap: + name: opendesk-element-nginx + defaultMode: 420 + - name: tmp + emptyDir: + medium: Memory + sizeLimit: 50Mi +--- +# Source: opendesk-element/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: opendesk-element + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-3.4.1 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm +spec: + tls: + - hosts: + - chat.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: chat.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: opendesk-element + port: + name: element +--- +# Source: opendesk-well-known/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-well-known + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-3.4.1 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +--- +# Source: opendesk-well-known/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: opendesk-well-known + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-3.4.1 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm +data: + client: |- + { + "m.homeserver": { + "base_url": "https://matrix.opendesk.apps.digilab.network" + }, + "im.vector.riot.jitsi": { + "preferredDomain": "meet.opendesk.apps.digilab.network" + } + } + server: |- + { + "m.server": "matrix-federation.opendesk.apps.digilab.network:443" + } +--- +# Source: opendesk-well-known/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: opendesk-well-known-nginx + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-3.4.1 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm +data: + nginx.conf: |- + # © 2023 New-Vector + # + # SPDX-License-Identifier: AGPL-3.0-or-later + + + worker_processes auto; + + error_log stderr warn; + pid /tmp/nginx.pid; + + + events { + worker_connections 1024; + } + + http { + client_body_temp_path /tmp/client_temp; + proxy_temp_path /tmp/proxy_temp_path; + fastcgi_temp_path /tmp/fastcgi_temp; + uwsgi_temp_path /tmp/uwsgi_temp; + scgi_temp_path /tmp/scgi_temp; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + set_real_ip_from 0.0.0.0/0; + real_ip_header X-Forwarded-For; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + server { + listen 8080; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + + charset utf-8; + + location /.well-known/matrix { + default_type application/json; + + add_header X-Frame-Options SAMEORIGIN; + add_header X-Content-Type-Options nosniff; + add_header X-XSS-Protection "1; mode=block"; + add_header Content-Security-Policy "frame-ancestors 'self'"; + add_header X-Robots-Tag "noindex, nofollow, noarchive, noimageindex"; + + add_header "Access-Control-Allow-Origin" *; + add_header "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS"; + add_header "Access-Control-Allow-Headers" "X-Requested-With, Content-Type, Authorization"; + + if ($request_method = OPTIONS) { + return 200; + } + } + } + + } + } +--- +# Source: opendesk-well-known/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: opendesk-well-known + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-3.4.1 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: well-known + port: 8080 + targetPort: 8080 + protocol: TCP + selector: + app.kubernetes.io/name: opendesk-well-known + app.kubernetes.io/instance: opendesk-well-known +--- +# Source: opendesk-well-known/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: opendesk-well-known + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-3.4.1 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: clamd +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: opendesk-well-known + app.kubernetes.io/instance: opendesk-well-known + strategy: + rollingUpdate: + maxSurge: 2 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 7f514db788cc7f78eda7062354a85335ec283ec0328ecc2d079c6152af22638d + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-3.4.1 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/instance + operator: In + values: + - opendesk-well-known + topologyKey: kubernetes.io/hostname + securityContext: + fsGroup: 101 + serviceAccountName: opendesk-well-known + terminationGracePeriodSeconds: 30 + containers: + - name: well-known + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/library/nginx:1.27.0-bookworm@sha256:1445eb9c6dc5e9619346c836ef6fbd6a95092e4663f27dcfce116f051cdbd232 + imagePullPolicy: IfNotPresent + env: + ports: + - name: well-known + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /.well-known/matrix/server + port: well-known + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: /.well-known/matrix/server + port: well-known + scheme: HTTP + initialDelaySeconds: 20 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 3 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: config + mountPath: /usr/share/nginx/html/.well-known/matrix + readOnly: true + - name: nginx-config + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + readOnly: true + - name: tmp + mountPath: /tmp + volumes: + - name: config + configMap: + name: opendesk-well-known + defaultMode: 420 + - name: nginx-config + configMap: + name: opendesk-well-known-nginx + defaultMode: 420 + - name: tmp + emptyDir: + medium: Memory + sizeLimit: 50Mi +--- +# Source: opendesk-well-known/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: opendesk-well-known + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-3.4.1 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm +spec: + tls: + - hosts: + - opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: opendesk.apps.digilab.network + http: + paths: + - path: /.well-known/matrix + pathType: Prefix + backend: + service: + name: opendesk-well-known + port: + name: well-known +--- +# Source: opendesk-synapse-web/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-synapse-web + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-3.4.1 + app.kubernetes.io/instance: opendesk-synapse-web + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +--- +# Source: opendesk-synapse-web/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: opendesk-synapse-web + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-3.4.1 + app.kubernetes.io/instance: opendesk-synapse-web + app.kubernetes.io/managed-by: Helm +data: + 429.http: > + HTTP/1.0 429 Too Many Requests + + Cache-Control: no-cache + + Connection: close + + Content-Type: text/html + + access-control-allow-origin: * + + access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS + + access-control-allow-headers: Origin, X-Requested-With, Content-Type, + Accept, Authorization + + +

429 Too Many Requests

+ + No server is available to handle this request. + + + haproxy.cfg: |2 + + global + maxconn 40000 + log stdout format raw local0 info + + # Allow for rewriting HTTP headers (e.g. Authorization) up to 4k + # https://github.com/haproxy/haproxy/issues/1743 + tune.maxrewrite 4096 + + # Allow start of container when fd limit is too low + # https://github.com/haproxy/haproxy/issues/1866 + no strict-limits + + defaults + mode http + fullconn 20000 + + # wait for 5s when connecting to a server + timeout connect 5s + + # ... but if there is a backlog of requests, wait for 60s before returning a 500 + timeout queue 60s + + # close client connections 5m after the last request + # (as recommened by https://support.cloudflare.com/hc/en-us/articles/212794707-General-Best-Practices-for-Load-Balancing-with-CloudFlare) + timeout client 900s + + # give clients 5m between requests (otherwise it defaults to the value of 'timeout http-request') + timeout http-keep-alive 900s + + # give clients 10s to complete a request (either time between handshake and first request, or time spent sending headers) + timeout http-request 10s + + # time out server responses after 90s + timeout server 180s + + # allow backend sessions to be shared across frontend sessions + http-reuse aggressive + + # limit the number of concurrent requests to each server, to stop + # the python process having to juggle hundreds of queued + # requests. Any requests beyond this limit are held in a queue for + # up to seconds, before being rejected according + # to "errorfile 503" below. + # + # (bear in mind that we have two haproxies, each of which will use + # up to this number of connections, so the actual number of + # connections to the server may be up to twice this figure.) + # + # Note that this is overridden for some servers and backends. + default-server maxconn 500 + + option redispatch + + compression algo gzip + compression type text/plain text/html text/xml application/json text/css + + # if we hit the maxconn on a server, and the queue timeout expires, we want + # to avoid returning 503, since that will cause cloudflare to mark us down. + # + # https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#1.3.1 says: + # + # 503 when no server was available to handle the request, or in response to + # monitoring requests which match the "monitor fail" condition + # + errorfile 503 /usr/local/etc/haproxy/429.http + + resolvers kubedns + parse-resolv-conf + hold timeout 600s + hold refused 600s + + frontend http-in + bind :::8008 v4v6 + + maxconn 20000 + + log global + # same as http log, with %Th (handshake time) + log-format "%ci:%cp [%tr] %ft %b/%s %Th/%TR/%Tw/%Tc/%Tr/%Ta %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r" + + capture request header Host len 32 + capture request header Referer len 200 + capture request header User-Agent len 200 + + # before we change the 'src', stash it in a session variable + http-request set-var(sess.orig_src) src if !{ var(sess.orig_src) -m found } + + # in case this is not the first request on the connection, restore the + # 'src' to the original, in case we fail to parse the x-f-f header. + http-request set-src var(sess.orig_src) + + # Traditionally do this only for traffic from some limited IP addreses + # but the incoming router being what it is, means we have no fixed IP here. + http-request set-src hdr(x-forwarded-for) + + # We always add a X-Forwarded-For header (clobbering any existing + # headers). + http-request set-header X-Forwarded-For %[src] + + # Ingresses by definition run on both 80 & 443 and there's no customising of that + # It is up to the ingress controller and any annotations provided to it whether + # it sets any additional headers or not or whether it redirects http -> https + # We don't have control (or even visiblity) on what the ingress controller is or does + # So we can't guarantee the header is present + # https is a more sensible default than http for the missing header as we force public_baseurl to https + http-request set-header X-Forwarded-Proto https if !{ hdr(X-Forwarded-Proto) -m found } + + monitor-uri /haproxy_test + # If we get here then we want to proxy everything to synapse or a worker. + + use_backend return_204 if { method OPTIONS } + + # try to extract a useful access token from either the auth header or a + # query-param + http-request set-var(req.access_token) urlp("access_token") if { urlp("access_token") -m found } + http-request set-var(req.access_token) req.fhdr(Authorization),word(2," ") if { hdr_beg("Authorization") -i "Bearer " } + + # We also need a http header format to allow us to loadbalance and make decisions: + http-request set-header X-Access-Token %[var(req.access_token)] + + # Disable Google FLoC + http-response set-header Permissions-Policy "interest-cohort=()" + + + + # Load the backend from one of the map files. + acl has_get_map path -m reg -M -f /usr/local/etc/haproxy/path_map_file_get + + http-request set-var(req.backend) path,map_reg(/usr/local/etc/haproxy/path_map_file_get,main) if has_get_map METH_GET + http-request set-var(req.backend) path,map_reg(/usr/local/etc/haproxy/path_map_file,main) unless { var(req.backend) -m found } + + use_backend %[var(req.backend)] + + backend main + default-server maxconn 250 + # Use DNS SRV service discovery on the headless service + server-template main 1 _synapse-http._tcp.opendesk-synapse.tn-openbsw-opendesk.svc.cluster.local resolvers kubedns init-addr none + + + # a backend which responds to everything with a 204 + backend return_204 + http-request return status 204 hdr "Access-Control-Allow-Origin" "*" hdr "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS" hdr "Access-Control-Allow-Headers" "Origin, X-Requested-With, Content-Type, Accept, Authorization" + + # a fake backend which fonxes every request with a 500. Useful for + # handling overloads etc. + backend return_500 + http-request deny deny_status 500 + path_map_file: |2 + + # A map file that is used in haproxy config to map from matrix paths to the + # named backend. The format is: path_regexp backend_name + path_map_file_get: |2 + + # A map file that is used in haproxy config to map from matrix paths to the + # named backend. The format is: path_regexp backend_name + +--- +# Source: opendesk-synapse-web/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: opendesk-synapse-web + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-3.4.1 + app.kubernetes.io/instance: opendesk-synapse-web + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: web + port: 8008 + targetPort: 8008 + protocol: TCP + selector: + app.kubernetes.io/name: opendesk-synapse-web + app.kubernetes.io/instance: opendesk-synapse-web +--- +# Source: opendesk-synapse-web/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: opendesk-synapse-web + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-3.4.1 + app.kubernetes.io/instance: opendesk-synapse-web + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: opendesk-synapse-web + app.kubernetes.io/instance: opendesk-synapse-web + strategy: + rollingUpdate: + maxSurge: 2 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 7d3a93f721743131a4da2eba9b43a560ae5e7ed9caf2bc61e43aaf5f470ceb1f + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-3.4.1 + app.kubernetes.io/instance: opendesk-synapse-web + app.kubernetes.io/managed-by: Helm + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/instance + operator: In + values: + - opendesk-synapse-web + topologyKey: kubernetes.io/hostname + securityContext: + fsGroup: 101 + serviceAccountName: opendesk-synapse-web + terminationGracePeriodSeconds: 30 + containers: + - name: haproxy + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/rapidfort/haproxy-official:2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c + imagePullPolicy: IfNotPresent + env: + ports: + - name: web + containerPort: 8008 + protocol: TCP + livenessProbe: + httpGet: + path: /haproxy_test + port: web + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: /haproxy_test + port: web + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 1 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 64Mi + volumeMounts: + - name: config + mountPath: /usr/local/etc/haproxy + readOnly: true + volumes: + - name: config + configMap: + name: opendesk-synapse-web + defaultMode: 420 +--- +# Source: opendesk-synapse-web/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: opendesk-synapse-web + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-3.4.1 + app.kubernetes.io/instance: opendesk-synapse-web + app.kubernetes.io/managed-by: Helm + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: 100M + nginx.ingress.kubernetes.io/proxy-read-timeout: '60' + nginx.ingress.kubernetes.io/proxy-send-timeout: '60' + nginx.org/client-max-body-size: 100M + nginx.org/proxy-read-timeout: 60s + nginx.org/proxy-send-timeout: 60s +spec: + tls: + - hosts: + - matrix.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: matrix.opendesk.apps.digilab.network + http: + paths: + - path: /_matrix + pathType: Prefix + backend: + service: + name: opendesk-synapse-web + port: + name: web + - path: /_synapse + pathType: Prefix + backend: + service: + name: opendesk-synapse-web + port: + name: web +--- +# Source: opendesk-synapse/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-synapse + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-3.4.1 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +--- +# Source: opendesk-synapse/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: opendesk-synapse-main + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-3.4.1 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +data: + instance_template.yaml: |2- + + worker_app: synapse.app.homeserver + + database: + name: psycopg2 + args: + user: matrix_user + password: "8ca06719161716168c6a8f61c50a9236b11092da" + database: matrix + host: postgresql + port: 5432 + cp_min: 5 + cp_max: 10 + application_name: REPLACE_HOSTNAME + sslmode: disable + keepalives: 1 + keepalives_idle: 10 + keepalives_interval: 10 + keepalives_count: 3 +--- +# Source: opendesk-synapse/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: opendesk-synapse-shared + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-3.4.1 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +data: + homeserver.yaml: | + server_name: opendesk.apps.digilab.network + public_baseurl: https://matrix.opendesk.apps.digilab.network + report_stats: false + signing_key_path: /media/generatedSecrets/signingKey + + log_config: "/config/log_config.yaml" + + email: + enable_notifs: true + enable_tls: false + force_tls: false + require_transport_security: false + notif_from: "no-reply@opendesk.apps.digilab.network" + smtp_host: "postfix.tn-openbsw-opendesk.svc.cluster.local" + smtp_port: "25" + + ip_range_blacklist: + - '127.0.0.0/8' + - '10.0.0.0/8' + - '172.16.0.0/12' + - '192.168.0.0/16' + - '100.64.0.0/10' + - '192.0.0.0/24' + - '169.254.0.0/16' + - '192.88.99.0/24' + - '198.18.0.0/15' + - '192.0.2.0/24' + - '198.51.100.0/24' + - '203.0.113.0/24' + - '224.0.0.0/4' + - '::1/128' + - 'fe80::/10' + - 'fc00::/7' + - '2001:db8::/32' + - 'ff00::/8' + - 'fec0::/10' + + listeners: + - port: 8008 + tls: false + bind_addresses: ['0.0.0.0'] + type: http + x_forwarded: true + resources: + - names: [client] + compress: false + - port: 8448 + tls: false + bind_addresses: ['0.0.0.0'] + type: http + x_forwarded: true + resources: + - names: [federation] + compress: false + - port: 9093 + tls: false + bind_addresses: ['0.0.0.0'] + type: http + x_forwarded: false + resources: + - names: [replication] + compress: false + - type: metrics + port: 9001 + bind_addresses: ['0.0.0.0'] + - port: 8080 + tls: false + bind_addresses: ['0.0.0.0'] + type: http + x_forwarded: false + resources: + - names: [] + compress: false + + enabled_media_repo: True + media_store_path: "/media/media_store" + uploads_path: "/media/uploads" + + enable_metrics: true + registration_shared_secret_path: "/media/generatedSecrets/sharedSecret" + + use_presence: false + presence: + enabled: false + + enable_set_displayname: true + + require_auth_for_profile_requests: true + limit_profile_requests_to_users_who_share_rooms: false + allow_public_rooms_without_auth: false + allow_public_rooms_over_federation: false + + sso: + client_whitelist: + - https://chat.opendesk.apps.digilab.network + oidc_providers: + - idp_id: oidc + idp_name: OIDC + issuer: https://id.opendesk.apps.digilab.network/realms/opendesk + client_id: opendesk-matrix + client_secret: "c04826f44bd0d2bf9c377c3852170e8b010c5ed6" + scopes: + + - openid + + - opendesk-matrix-scope + + allow_existing_users: true + user_mapping_provider: + config: + subject_template: "{{ user.opendesk_useruuid }}" + display_name_template: "{{ user.name }}" + localpart_template: "{{ user.opendesk_username }}" + email_template: "{{ user.email }}" + backchannel_logout_enabled: true + backchannel_logout_ignore_sub: true + + password_config: + enabled: true + localdb_enabled: true + turn_uris: + turn_username: "" + turn_password: "" + turn_user_lifetime: 1h + turn_allow_guests: true + allow_guest_access: true + modules: + - module: synapse_guest_module.GuestModule + config: + display_name_suffix: ' (Gast)' + + + instance_map: + main: + host: opendesk-synapse + port: 9093 + + send_federation: True + + start_pushers: True + app_service_config_files: + - /secrets/app-service-0.yaml + - /secrets/app-service-1.yaml + + rc_login: + account: + burst_count: 8 + per_second: 2 + address: + burst_count: 12 + per_second: 2 + room_prejoin_state: + additional_event_types: + - m.space.parent + - net.nordeck.meetings.metadata + - m.room.power_levels + user_directory: + enabled: true + search_all_users: true + + log_config.yaml: |2 + + version: 1 + + formatters: + precise: + format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' + + handlers: + console: + class: logging.StreamHandler + formatter: precise + + loggers: + synapse.storage.SQL: + level: "INFO" + + root: + level: "INFO" + handlers: + - console + + disable_existing_loggers: false + +--- +# Source: opendesk-synapse/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: opendesk-synapse + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-3.4.1 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + clusterIP: None + ports: + - name: synapse-health + port: 8080 + targetPort: 8080 + protocol: TCP + - name: synapse-http + port: 8008 + targetPort: 8008 + protocol: TCP + - name: synapse-metrics + port: 9001 + targetPort: 9001 + protocol: TCP + - name: synapse-repl + port: 9093 + targetPort: 9093 + protocol: TCP + selector: + app.kubernetes.io/name: opendesk-synapse + app.kubernetes.io/instance: opendesk-synapse +--- +# Source: opendesk-synapse/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: opendesk-synapse-federation + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-3.4.1 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: federation + port: 8448 + targetPort: 8448 + protocol: TCP + selector: + app.kubernetes.io/name: opendesk-synapse + app.kubernetes.io/instance: opendesk-synapse +--- +# Source: opendesk-synapse/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: opendesk-synapse + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-3.4.1 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + serviceName: opendesk-synapse + selector: + matchLabels: + app.kubernetes.io/name: opendesk-synapse + app.kubernetes.io/instance: opendesk-synapse + updateStrategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 0bb75164b04775666eea3c3be41f56e9ceb33238e9620d06348490086de3fbb1 + checksum/secret: 3e5475ce4b83ff9f2602397d51a5f9c0fdee4195f9f1db55df51c066c5173c74 + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-3.4.1 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 10991 + serviceAccountName: opendesk-synapse + terminationGracePeriodSeconds: 30 + initContainers: + - name: install-guest-module + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/synapse-guest-module:2.0.0@sha256:0fb4ee93cf6fc58f3f3b2f7f8c95d5e6d259b9a5dc354bde516e441187819283 + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 10991 + runAsNonRoot: true + runAsUser: 10991 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 1 + memory: 256Mi + volumeMounts: + - name: synapse-modules + mountPath: /modules + containers: + - name: synapse + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 10991 + runAsNonRoot: true + runAsUser: 10991 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/synapse:v1.115.0@sha256:abf4a5b5b2030f7deb555a8ec7b945607db9e98b057eb06364e66ba8308bdd40 + imagePullPolicy: IfNotPresent + command: + - bash + - -cx + - | + mkdir -p /media/generatedSecrets + sed "s/REPLACE_HOSTNAME/$(hostname -s)/g" /config/instance_template.yaml > /config/rendered/instance.yaml + /start.py run --config-path=/config/homeserver.yaml --config-path=/config/rendered/instance.yaml + env: + - name: SYNAPSE_WORKER + value: synapse.app.homeserver + - name: SSL_CERT_DIR + value: /etc/ssl/certs + - name: PYTHONPATH + value: /modules + ports: + - name: synapse-health + containerPort: 8080 + protocol: TCP + - name: synapse-http + containerPort: 8008 + protocol: TCP + - name: synapse-metrics + containerPort: 9001 + protocol: TCP + - name: synapse-repl + containerPort: 9093 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: synapse-health + scheme: HTTP + initialDelaySeconds: 1 + periodSeconds: 6 + timeoutSeconds: 2 + failureThreshold: 8 + successThreshold: 1 + readinessProbe: + httpGet: + path: /health + port: synapse-health + scheme: HTTP + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 2 + failureThreshold: 8 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 1 + memory: 256Mi + volumeMounts: + - mountPath: /config/homeserver.yaml + name: shared-config + readOnly: true + subPath: homeserver.yaml + - mountPath: /config/instance_template.yaml + name: process-type-config + readOnly: true + subPath: instance_template.yaml + - mountPath: /config/log_config.yaml + name: shared-config + readOnly: true + subPath: log_config.yaml + - mountPath: /secrets/ + name: external-secrets + readOnly: true + - mountPath: /config/rendered + name: rendered-config + - mountPath: /media + name: media + - mountPath: /tmp + name: tmp + - name: synapse-modules + mountPath: /modules + volumes: + - name: external-secrets + secret: + secretName: opendesk-synapse + defaultMode: 420 + - name: shared-config + configMap: + name: opendesk-synapse-shared + defaultMode: 420 + - name: process-type-config + configMap: + name: opendesk-synapse-main + defaultMode: 420 + - name: rendered-config + emptyDir: + medium: Memory + sizeLimit: 50Mi + - name: tmp + emptyDir: + medium: Memory + sizeLimit: 50Mi + - name: synapse-modules + emptyDir: + medium: Memory + sizeLimit: 50Mi + volumeClaimTemplates: + - metadata: + name: media + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: managed +--- +# Source: opendesk-synapse/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: opendesk-synapse + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-3.4.1 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +spec: + tls: + - hosts: + - matrix-federation.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: matrix-federation.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: opendesk-synapse-federation + port: + name: federation +--- +# Source: opendesk-synapse-create-account/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-matrix-user-verification-service-bootstrap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-3.4.1 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap + app.kubernetes.io/managed-by: Helm +--- +# Source: opendesk-synapse-create-account/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + namespace: tn-openbsw-opendesk + name: opendesk-matrix-user-verification-service-bootstrap +rules: + # needed to execute commands inside pod +- apiGroups: [''] + resources: + - pods + resourceNames: [opendesk-synapse-0] + verbs: [get] +- apiGroups: [''] + resources: + - pods/exec + resourceNames: [opendesk-synapse-0] + verbs: [create] + # needed to create and replace the secret +- apiGroups: [''] + resources: + - secrets + verbs: [create] +- apiGroups: [''] + resources: + - secrets + resourceNames: [opendesk-matrix-user-verification-service-account] + verbs: [delete] +--- +# Source: opendesk-synapse-create-account/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: opendesk-matrix-user-verification-service-bootstrap + namespace: tn-openbsw-opendesk +roleRef: # points to the ClusterRole + apiGroup: rbac.authorization.k8s.io + kind: Role + name: opendesk-matrix-user-verification-service-bootstrap +subjects: # points to the ServiceAccount +- kind: ServiceAccount + name: opendesk-matrix-user-verification-service-bootstrap + namespace: tn-openbsw-opendesk # ns of service account +--- +# Source: opendesk-synapse-create-account/templates/delete-job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: opendesk-matrix-user-verification-service-bootstrap + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-3.4.1 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: pre-delete + helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded + argocd.argoproj.io/hook: Skip +spec: + ttlSecondsAfterFinished: 60 + template: + spec: + serviceAccountName: opendesk-matrix-user-verification-service-bootstrap + containers: + - name: opendesk-synapse-create-account + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/alpine/k8s:1.30.0@sha256:d7a11b7032550e992667fd7725b039dcd639270fbceec368d7e66e3d9e41ee15 + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + tty: true + env: + - name: NAMESPACE + value: tn-openbsw-opendesk + - name: SECRET_NAME + value: opendesk-matrix-user-verification-service-account + command: + - /bin/bash + - -c + - | + kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found + restartPolicy: Never + backoffLimit: 4 +--- +# Source: opendesk-synapse-create-account/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: opendesk-matrix-user-verification-service-bootstrap-2 + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-3.4.1 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap-2 + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: post-install + argocd.argoproj.io/hook: Sync +spec: + ttlSecondsAfterFinished: 60 + template: + spec: + serviceAccountName: opendesk-matrix-user-verification-service-bootstrap + containers: + - name: opendesk-synapse-create-account + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/alpine/k8s:1.30.0@sha256:d7a11b7032550e992667fd7725b039dcd639270fbceec368d7e66e3d9e41ee15 + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + tty: true + env: + - name: NAMESPACE + value: tn-openbsw-opendesk + - name: SYNAPSE_POD + value: opendesk-synapse-0 + - name: MATRIX_USERNAME + value: uvs + - name: MATRIX_PASSWORD + valueFrom: + secretKeyRef: + name: opendesk-matrix-user-verification-service-bootstrap + key: password + - name: DEVICE_ID + value: DEFAULT + - name: SECRET_NAME + value: opendesk-matrix-user-verification-service-account + command: + - /bin/bash + - -c + - | + # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + # + # SPDX-License-Identifier: Apache-2.0 + + until kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \ + -- bash -c 'curl -sf http://localhost:8008/health'; + do + echo "waiting for container to be alive..." + sleep 1 + done + + ACCESS_TOKEN=$(kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \ + -- bash -c " + echo \"create the user ${MATRIX_USERNAME} if not exists\" + register_new_matrix_user -u ${MATRIX_USERNAME} -a -c /config/homeserver.yaml -p ${MATRIX_PASSWORD} || true + + RESULT='' + ACCESS_TOKEN='' + MATRIX_USER_ID='' + + create_user() { + RESULT=\$(curl -X POST -d '{\"type\":\"m.login.password\", \"user\":\"$MATRIX_USERNAME\", \"password\":\"$MATRIX_PASSWORD\", \"device_id\":\"$DEVICE_ID\"}' http://localhost:8008/_matrix/client/v3/login) + ACCESS_TOKEN=\$(echo \$RESULT | sed -n 's/.*\"access_token\":\"\([^\"]*\)\".*/\1/p') + MATRIX_USER_ID=\$(echo \$RESULT | sed -n 's/.*\"user_id\":\"\([^\"]*\)\".*/\1/p') + + if [ -z "\${ACCESS_TOKEN}" ] + then + return 1 + else + return 0 + fi + } + + echo \"login as user ${MATRIX_USERNAME}\" + until create_user + do + echo \$RESULT + echo 'waiting for user to login...' + sleep 5 + done + + echo \"disable rate limiting for user ${MATRIX_USERNAME}\" + until curl -X POST -f -d '{\"messages_per_second\": 0, \"burst_count\": 0}' -H \"Authorization: Bearer \$ACCESS_TOKEN\" -H 'Content-Type: application/json' http://localhost:8008/_synapse/admin/v1/users/\$MATRIX_USER_ID/override_ratelimit + do + echo 'waiting for rate limit to be set...' + sleep 5 + done + + echo "\n" + echo \$ACCESS_TOKEN + " | tee /dev/tty | tail -1) + + kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found + kubectl create secret --namespace="${NAMESPACE}" generic ${SECRET_NAME} --from-literal=access_token=$ACCESS_TOKEN + + restartPolicy: Never + backoffLimit: 4 +--- +# Source: opendesk-matrix-user-verification-service/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-matrix-user-verification-service + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + helm.sh/chart: opendesk-matrix-user-verification-service-3.4.0 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: opendesk-matrix-user-verification-service/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: opendesk-matrix-user-verification-service + labels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + helm.sh/chart: opendesk-matrix-user-verification-service-3.4.0 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service + app.kubernetes.io/managed-by: Helm +data: {} +--- +# Source: opendesk-matrix-user-verification-service/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: opendesk-matrix-user-verification-service + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + helm.sh/chart: opendesk-matrix-user-verification-service-3.4.0 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service + app.kubernetes.io/managed-by: Helm + annotations: +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + app.kubernetes.io/instance: opendesk-matrix-user-verification-service +--- +# Source: opendesk-matrix-user-verification-service/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: opendesk-matrix-user-verification-service + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + helm.sh/chart: opendesk-matrix-user-verification-service-3.4.0 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + app.kubernetes.io/instance: opendesk-matrix-user-verification-service + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 069e564416956e1137aea4921885cf9258f54b70e4d0305c48efd453100bb959 + labels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + helm.sh/chart: opendesk-matrix-user-verification-service-3.4.0 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: opendesk-matrix-user-verification-service + containers: + - name: uvs + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/matrix-user-verification-service:v3.0.0@sha256:25e685d595785e2a72e75a525dac78cf8c782445454f8ac090d3702431c38008 + imagePullPolicy: IfNotPresent + env: + - name: UVS_HOMESERVER_URL + value: https://matrix.opendesk.apps.digilab.network + - name: UVS_ACCESS_TOKEN + valueFrom: + secretKeyRef: + key: access_token + name: opendesk-matrix-user-verification-service-account + - name: UVS_DISABLE_IP_BLACKLIST + value: 'true' + livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ports: + - name: http + containerPort: 3000 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 128Mi + volumeMounts: + volumes: +--- +# Source: matrix-neoboard-widget/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: matrix-neoboard-widget + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.0 + app.kubernetes.io/instance: matrix-neoboard-widget + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: matrix-neoboard-widget/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: matrix-neoboard-widget + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.0 + app.kubernetes.io/instance: matrix-neoboard-widget + app.kubernetes.io/managed-by: Helm +data: {} +--- +# Source: matrix-neoboard-widget/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: matrix-neoboard-widget + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.0 + app.kubernetes.io/instance: matrix-neoboard-widget + app.kubernetes.io/managed-by: Helm + annotations: +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: matrix-neoboard-widget + app.kubernetes.io/instance: matrix-neoboard-widget +--- +# Source: matrix-neoboard-widget/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: matrix-neoboard-widget + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.0 + app.kubernetes.io/instance: matrix-neoboard-widget + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: matrix-neoboard-widget + app.kubernetes.io/instance: matrix-neoboard-widget + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 0ca01953c011830f6251e7a760c37ecdf3c0ea4eb5dfbef1a261c2e1917798a2 + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.0 + app.kubernetes.io/instance: matrix-neoboard-widget + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: matrix-neoboard-widget + containers: + - name: widget + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget:1.20.0@sha256:e72bca018af1c0087587f6bcd1748c820ff520c8cf2a042b9b58354cdc878345 + imagePullPolicy: IfNotPresent + env: + - name: REACT_APP_HOME_SERVER_URL + value: https://matrix.opendesk.apps.digilab.network + - name: REACT_APP_PRIMARY_COLOR + value: '#6af56a' + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ports: + - name: http + containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 48Mi + volumeMounts: + - name: cache + mountPath: /var/cache/nginx + - name: tmp + mountPath: /tmp + volumes: + - name: cache + emptyDir: + medium: Memory + sizeLimit: 50Mi + - name: tmp + emptyDir: + medium: Memory + sizeLimit: 50Mi +--- +# Source: matrix-neoboard-widget/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: matrix-neoboard-widget + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.0 + app.kubernetes.io/instance: matrix-neoboard-widget + app.kubernetes.io/managed-by: Helm + annotations: +spec: + tls: + - hosts: + - matrix-neoboard-widget.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: matrix-neoboard-widget.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: matrix-neoboard-widget + port: + name: http +--- +# Source: matrix-neochoice-widget/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: matrix-neochoice-widget + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.0 + app.kubernetes.io/instance: matrix-neochoice-widget + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: matrix-neochoice-widget/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: matrix-neochoice-widget + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.0 + app.kubernetes.io/instance: matrix-neochoice-widget + app.kubernetes.io/managed-by: Helm +data: {} +--- +# Source: matrix-neochoice-widget/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: matrix-neochoice-widget + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.0 + app.kubernetes.io/instance: matrix-neochoice-widget + app.kubernetes.io/managed-by: Helm + annotations: +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: matrix-neochoice-widget + app.kubernetes.io/instance: matrix-neochoice-widget +--- +# Source: matrix-neochoice-widget/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: matrix-neochoice-widget + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.0 + app.kubernetes.io/instance: matrix-neochoice-widget + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: matrix-neochoice-widget + app.kubernetes.io/instance: matrix-neochoice-widget + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: e1ff68244925e6b735edbb8c45c5fe9776ab3f51b54968228578c2228a1f0513 + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.0 + app.kubernetes.io/instance: matrix-neochoice-widget + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: matrix-neochoice-widget + containers: + - name: widget + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget:1.4.0@sha256:216cb88aaa47449a15af9a531d60eee593cb1923c4e8fcc67c119982972911e5 + imagePullPolicy: IfNotPresent + env: + - name: REACT_APP_HOME_SERVER_URL + value: https://matrix.opendesk.apps.digilab.network + - name: REACT_APP_POLL_DESCRIPTION_REQUIRED + value: 'true' + - name: REACT_APP_IGNORE_USER_IDS + value: '@meetings-bot:opendesk.apps.digilab.network' + - name: REACT_APP_PRIMARY_COLOR + value: '#6af56a' + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ports: + - name: http + containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + volumeMounts: + - name: cache + mountPath: /var/cache/nginx + - name: tmp + mountPath: /tmp + volumes: + - name: cache + emptyDir: + medium: Memory + sizeLimit: 50Mi + - name: tmp + emptyDir: + medium: Memory + sizeLimit: 50Mi +--- +# Source: matrix-neochoice-widget/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: matrix-neochoice-widget + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.0 + app.kubernetes.io/instance: matrix-neochoice-widget + app.kubernetes.io/managed-by: Helm + annotations: +spec: + tls: + - hosts: + - matrix-neochoice-widget.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: matrix-neochoice-widget.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: matrix-neochoice-widget + port: + name: http +--- +# Source: matrix-neodatefix-widget/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: matrix-neodatefix-widget + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-widget + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: matrix-neodatefix-widget/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: matrix-neodatefix-widget + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-widget + app.kubernetes.io/managed-by: Helm +data: {} +--- +# Source: matrix-neodatefix-widget/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: matrix-neodatefix-widget + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-widget + app.kubernetes.io/managed-by: Helm + annotations: +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: matrix-neodatefix-widget + app.kubernetes.io/instance: matrix-neodatefix-widget +--- +# Source: matrix-neodatefix-widget/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: matrix-neodatefix-widget + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-widget + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: matrix-neodatefix-widget + app.kubernetes.io/instance: matrix-neodatefix-widget + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: bb3a65d460fb1516ab1d569a3662692d757f07146df5b095e723218fbc08be00 + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-widget + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: matrix-neodatefix-widget + containers: + - name: widget + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget:1.6.1@sha256:70bebd9293a977124a5da955e1a520381129d476d6414a083093c1b48a55dadd + imagePullPolicy: IfNotPresent + env: + - name: REACT_APP_HOME_SERVER_URL + value: https://matrix.opendesk.apps.digilab.network + - name: REACT_APP_API_BASE_URL + value: https://matrix-neodatefix-bot.opendesk.apps.digilab.network + - name: REACT_APP_BOT_USER_ID + value: '@meetings-bot:opendesk.apps.digilab.network' + - name: REACT_APP_DISPLAY_ALL_MEETINGS + value: 'true' + - name: REACT_APP_PRIMARY_COLOR + value: '#6af56a' + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ports: + - name: http + containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + volumeMounts: + - name: cache + mountPath: /var/cache/nginx + - name: tmp + mountPath: /tmp + volumes: + - name: cache + emptyDir: + medium: Memory + sizeLimit: 50Mi + - name: tmp + emptyDir: + medium: Memory + sizeLimit: 50Mi +--- +# Source: matrix-neodatefix-widget/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: matrix-neodatefix-widget + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-widget + app.kubernetes.io/managed-by: Helm + annotations: +spec: + tls: + - hosts: + - matrix-neodatefix-widget.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: matrix-neodatefix-widget.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: matrix-neodatefix-widget + port: + name: http +--- +# Source: opendesk-synapse-create-account/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: matrix-neodatefix-bot-bootstrap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-3.4.1 + app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap + app.kubernetes.io/managed-by: Helm +--- +# Source: opendesk-synapse-create-account/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + namespace: tn-openbsw-opendesk + name: matrix-neodatefix-bot-bootstrap +rules: + # needed to execute commands inside pod +- apiGroups: [''] + resources: + - pods + resourceNames: [opendesk-synapse-0] + verbs: [get] +- apiGroups: [''] + resources: + - pods/exec + resourceNames: [opendesk-synapse-0] + verbs: [create] + # needed to create and replace the secret +- apiGroups: [''] + resources: + - secrets + verbs: [create] +- apiGroups: [''] + resources: + - secrets + resourceNames: [matrix-neodatefix-bot-account] + verbs: [delete] +--- +# Source: opendesk-synapse-create-account/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: matrix-neodatefix-bot-bootstrap + namespace: tn-openbsw-opendesk +roleRef: # points to the ClusterRole + apiGroup: rbac.authorization.k8s.io + kind: Role + name: matrix-neodatefix-bot-bootstrap +subjects: # points to the ServiceAccount +- kind: ServiceAccount + name: matrix-neodatefix-bot-bootstrap + namespace: tn-openbsw-opendesk # ns of service account +--- +# Source: opendesk-synapse-create-account/templates/delete-job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: matrix-neodatefix-bot-bootstrap + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-3.4.1 + app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: pre-delete + helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded + argocd.argoproj.io/hook: Skip +spec: + ttlSecondsAfterFinished: 60 + template: + spec: + serviceAccountName: matrix-neodatefix-bot-bootstrap + containers: + - name: opendesk-synapse-create-account + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/alpine/k8s:1.30.0@sha256:d7a11b7032550e992667fd7725b039dcd639270fbceec368d7e66e3d9e41ee15 + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + tty: true + env: + - name: NAMESPACE + value: tn-openbsw-opendesk + - name: SECRET_NAME + value: matrix-neodatefix-bot-account + command: + - /bin/bash + - -c + - | + kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found + restartPolicy: Never + backoffLimit: 4 +--- +# Source: opendesk-synapse-create-account/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: matrix-neodatefix-bot-bootstrap-v2 + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-3.4.1 + app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap-v2 + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: post-install + argocd.argoproj.io/hook: Sync +spec: + ttlSecondsAfterFinished: 60 + template: + spec: + serviceAccountName: matrix-neodatefix-bot-bootstrap + containers: + - name: opendesk-synapse-create-account + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/alpine/k8s:1.30.0@sha256:d7a11b7032550e992667fd7725b039dcd639270fbceec368d7e66e3d9e41ee15 + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + tty: true + env: + - name: NAMESPACE + value: tn-openbsw-opendesk + - name: SYNAPSE_POD + value: opendesk-synapse-0 + - name: MATRIX_USERNAME + value: meetings-bot + - name: MATRIX_PASSWORD + valueFrom: + secretKeyRef: + name: matrix-neodatefix-bot-bootstrap + key: password + - name: DEVICE_ID + value: DEFAULT + - name: SECRET_NAME + value: matrix-neodatefix-bot-account + command: + - /bin/bash + - -c + - | + # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + # + # SPDX-License-Identifier: Apache-2.0 + + until kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \ + -- bash -c 'curl -sf http://localhost:8008/health'; + do + echo "waiting for container to be alive..." + sleep 1 + done + + ACCESS_TOKEN=$(kubectl exec --namespace="${NAMESPACE}" ${SYNAPSE_POD} -c synapse \ + -- bash -c " + echo \"create the user ${MATRIX_USERNAME} if not exists\" + register_new_matrix_user -u ${MATRIX_USERNAME} -a -c /config/homeserver.yaml -p ${MATRIX_PASSWORD} || true + + RESULT='' + ACCESS_TOKEN='' + MATRIX_USER_ID='' + + create_user() { + RESULT=\$(curl -X POST -d '{\"type\":\"m.login.password\", \"user\":\"$MATRIX_USERNAME\", \"password\":\"$MATRIX_PASSWORD\", \"device_id\":\"$DEVICE_ID\"}' http://localhost:8008/_matrix/client/v3/login) + ACCESS_TOKEN=\$(echo \$RESULT | sed -n 's/.*\"access_token\":\"\([^\"]*\)\".*/\1/p') + MATRIX_USER_ID=\$(echo \$RESULT | sed -n 's/.*\"user_id\":\"\([^\"]*\)\".*/\1/p') + + if [ -z "\${ACCESS_TOKEN}" ] + then + return 1 + else + return 0 + fi + } + + echo \"login as user ${MATRIX_USERNAME}\" + until create_user + do + echo \$RESULT + echo 'waiting for user to login...' + sleep 5 + done + + echo \"disable rate limiting for user ${MATRIX_USERNAME}\" + until curl -X POST -f -d '{\"messages_per_second\": 0, \"burst_count\": 0}' -H \"Authorization: Bearer \$ACCESS_TOKEN\" -H 'Content-Type: application/json' http://localhost:8008/_synapse/admin/v1/users/\$MATRIX_USER_ID/override_ratelimit + do + echo 'waiting for rate limit to be set...' + sleep 5 + done + + echo "\n" + echo \$ACCESS_TOKEN + " | tee /dev/tty | tail -1) + + kubectl delete secret --namespace="${NAMESPACE}" ${SECRET_NAME} --ignore-not-found + kubectl create secret --namespace="${NAMESPACE}" generic ${SECRET_NAME} --from-literal=access_token=$ACCESS_TOKEN + + restartPolicy: Never + backoffLimit: 4 +--- +# Source: matrix-neodatefix-bot/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: matrix-neodatefix-bot + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: matrix-neodatefix-bot/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: matrix-neodatefix-bot-config + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm +data: + default_events.json: |+ + { + "state_events": [ + { + "type": "m.room.power_levels", + "state_key": "", + "content": { + "events": { + "net.nordeck.meetings.metadata": 100, + "net.nordeck.whiteboard.sessions": 0, + "net.nordeck.whiteboard": 0, + "net.nordeck.meetings.meeting.update": 100, + "net.nordeck.meetings.meeting.close": 100, + "m.room.tombstone": 100, + "im.vector.modular.widgets": 50, + "net.nordeck.meetings.meeting.widgets.handle": 50, + "io.element.widgets.layout": 50, + "net.nordeck.meetings.meeting.participants.handle": 50, + "net.nordeck.meetings.breakoutsessions.create": 25, + "net.nordeck.meetings.meeting.change.message_permissions": 25, + "net.nordeck.meetings.sub_meetings.send_message": 50, + "net.nordeck.poll": 50, + "net.nordeck.poll.settings": 50, + "net.nordeck.poll.vote": 25 + }, + "users_default": 25, + "events_default": 0, + "state_default": 50, + "ban": 50, + "kick": 50, + "redact": 50, + "invite": 50 + } + }, + { + "type": "m.room.history_visibility", + "content": { + "history_visibility": "shared" + } + }, + { + "type": "m.room.guest_access", + "content": { + "guest_access": "forbidden" + } + }, + { + "type": "m.room.join_rules", + "content": { + "join_rule": "knock" + } + }, + { + "type": "im.vector.modular.widgets", + "state_key": "jitsi", + "content": { + "type": "jitsi", + "url": "https://chat.opendesk.apps.digilab.network/jitsi.html", + "name": "Videokonferenz", + "data": { + "domain": "meet.opendesk.apps.digilab.network", + "conferenceId": "{{base32_room_id}}", + "roomName": "{{title}}", + "startWithAudioMuted": "true", + "startWithVideoMuted": "true", + "auth": "openidtoken-jwt" + } + } + }, + { + "type": "im.vector.modular.widgets", + "state_key": "neochoice", + "content": { + "type": "net.nordeck.neochoice", + "url": "https://matrix-neochoice-widget.opendesk.apps.digilab.network/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url", + "name": "Abstimmungen", + "avatar_url": "../widget-images/poll.png" + } + }, + { + "type": "im.vector.modular.widgets", + "state_key": "neoboard", + "content": { + "type": "net.nordeck.neoboard", + "url": "https://matrix-neoboard-widget.opendesk.apps.digilab.network/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url", + "name": "Whiteboard", + "avatar_url": "../widget-images/neoboard.png" + } + } + ], + "room_events": [] + } + + default_widget_layouts.json: | + [ + { + "widgetIds": ["jitsi"], + "layouts": { + "jitsi": { + "container": "top", + "index": 0, + "width": 100, + "height": 100 + } + } + }, + { + "widgetIds": ["neoboard"], + "layouts": { + "neoboard": { + "container": "top", + "index": 0, + "width": 100, + "height": 100 + } + } + }, + { + "widgetIds": ["jitsi", "neoboard"], + "layouts": { + "jitsi": { + "container": "top", + "index": 0, + "width": 50, + "height": 100 + }, + "neoboard": { + "container": "top", + "index": 0, + "width": 50, + "height": 100 + } + } + }, + { + "widgetIds": ["jitsi", "neochoice"], + "layouts": { + "jitsi": { + "container": "top", + "index": 0, + "width": 100, + "height": 100 + } + } + }, + { + "widgetIds": ["jitsi", "neoboard", "neochoice"], + "layouts": { + "jitsi": { + "container": "top", + "index": 0, + "width": 50, + "height": 100 + }, + "neoboard": { + "container": "top", + "index": 0, + "width": 50, + "height": 100 + } + } + } + ] +--- +# Source: matrix-neodatefix-bot/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: matrix-neodatefix-bot-widget-images + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm +binaryData: + neoboard.png: |- + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAEfklEQVRYCcVXfVBUVRT/7RNEiBAisAEZ/GKkqCSjBmjcmKzAqRnGBsYwzdSykGCQcESnBKfBQYXIzNYPItPNxmSicJDUxsJJ46OSj7FkREEjRGlZQViElaV37nCXfbvvwS6DdP54795zzv39znv3nXfPUQ2KgiE5ef5P7Ck7g3MXL6O9sxumYRN3GdNdUKngM9UdkcGz8c4iNV584hEzjooC6DMa8eauQ9D+XGU23MvBsqinUZC8HC7OzhCIaCLJiY8elDhJVCf+uDAYnfkJm9DlsUA/ZMTFIMjPF/TqxkNoKy+13kRO0Q+ov9pqhjyxJQWqxdmaweKKGqYk8orcDLi5TDY7jefA0NeP8PQccxCLw0Mh0AfHhZ78XpETB2ETBxfidqKvnQu9dmvRd/dgd2k5fqpvAD3B4zP8kbjoWYTOCrB2tWtuyUHcgmWqWe95XVMLQpK2YPNXJegy9MJJEHDwdAXC0rai8NRZuwitnSw5iNvJ2oHPe8Wnjc3WsFSp2/UBHg30Z6ZW3S0s2b4fa3ZrMf1BL0lO87WO3Fkayi04evZ3NN/UYc/apWZy8vPz9kRp5ruY4euNFfkH0HG7R2653TrFACobmhmIOiTIBszDzRV5q+LQdqsLW4+W2dgdUSgGwEF6+418KLnHiikUMXcmNMfL0dnTK7E5MlEMIDx4JsMp/vW8Il7SS1EwiAGWVNUq+oxmUAwg/pknMV3c7w1fFuNae4cszpIFYdi79jVEWxwuso4jKBUDmDLZGQdS32DpF715J/7R6W1gnCZNwpqYBfD19EB6YRHa9J02PqMpFAOghQvnBePgupVovN4u/kK3obKhSRHvWFUd5qdmo+bK34o+coYRA6AFr6qfQllWMrrv9EG9MZfVC3JAK56LwHV9F6I25YF+YPbKqAEQ0POhD6M6byPm+k9DouYw1hV8A5PJJOF4W9wK9ykumP2QDwJ8vNAonn4XW9okPnITuwKghXPEc4JOygTxjXxcchrJe49I8Lw93FGZuwGVeRkYMA0iLmcfItdvx2Vx+0YSuwMgEDrNtGkr8UpEKD4rK0dpdb0Ee5r4MWqOn8G8lA9R29wCfY8BCTsKYLw7IPGznDgUAC0UxANpX9Iy3O/qgqyvj1lioemGDin7j6C1Yzgbqhuv4n3t9xI/y4nDAdBiet1xkfPxW+M13DbcMeOFBQWyLTIrhgY7vj2JH2v+slaz+ZgCoJVe7m4MYMDqY9QkLmUHFTMOXajsfj3/C+i6hmsPbh9TAHRUf1dRy7LCcygQDjj1PlccTl/Nageuozul6Fufai1VbOxwAP3Gu3hB/DNeufEvshJetgEkRUTwLGTK2Kj2LDx1TrJGsK5QJFaZCa+g8lfHs5+UjAtTbYqPgTpkjo2ZsocLcQvUsXCh0nk0oTPil23rkRq7cERXyhZt2ip4iluiJMQtULvEhep2KjzHSwJ8HmApq4RH3BPSmLz3eRHKL1yyiYM1JtQbLv+ocML6Qh4F9YeHxC1iWUCNIikmSnhzSnysO+bE/0d7/h9DXZ8X7llkrwAAAABJRU5ErkJggg== + poll.png: |- + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNpiZIACpR1dAkCqAIjjgViBgTbgARAvBOIJ9zzKPoAEGKGWgyxcD8QGDPQBF4A4EeiIC4xQn++no+XIjnBkggY7vS1ngNpZwASN84EC8Uw0THDEAAUmhgEGNHWAJq/YwDmgS8eTYYtVPBjzsbDT1wEgy4OldeChsMwsAqcjmGhpOXJUJCqY0N4B2CyHgWufXtHWAfgsL7uynWH3q9ukOwAUdPkq1gwynPwUWb726RXSEyEs8eQpWzFsBqZkXFmKEstxOgA95YJoEB/dEZRajtMBbuKqGNkG3RHUsBynA3a9vM3w6c9PDHGYI2YYBlDFcpwOuP75FUPUqRU4HeEqpkoVy/EmQnyOoJblBLMhsY4g13KiCiJCjqDEcqJLQlyOoNRykopidEdQw3JwsxzYKv5PigZQLuBj5WB48v0jVeoQFlI1gEKA2Jwx4E0yYh3wYADtf8AE7asNFFgIcsAEaDeJ3gBk5wQmaC81kc6OgHVOPzAOdPccIMAAntC9XAhEIcEAAAAASUVORK5CYII= +--- +# Source: matrix-neodatefix-bot/templates/persistentvolumeclaim.yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: matrix-neodatefix-bot + annotations: + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: managed +--- +# Source: matrix-neodatefix-bot/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: matrix-neodatefix-bot + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm + annotations: +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: matrix-neodatefix-bot + app.kubernetes.io/instance: matrix-neodatefix-bot +--- +# Source: matrix-neodatefix-bot/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: matrix-neodatefix-bot + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: matrix-neodatefix-bot + app.kubernetes.io/instance: matrix-neodatefix-bot + strategy: + type: Recreate + template: + metadata: + annotations: + checksum/configmap: a33326b554eaed5c2bf1fb44a6fefdc23834772252bfed269398b64312d02e86 + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: matrix-neodatefix-bot + containers: + - name: widget + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot:2.8.0@sha256:db1d99c13a9facfd08a7da1d0a9c7c05715bad47110e93649ad6b389e462b42c + imagePullPolicy: IfNotPresent + env: + - name: LOG_LEVEL + value: info + - name: ENABLE_PRIVATE_ROOM_ERROR_SENDING + value: 'false' + - name: STORAGE_FILE_DATA_PATH + value: /app/storage + - name: ENABLE_CRYPTO + value: 'false' + - name: HOMESERVER_URL + value: https://matrix.opendesk.apps.digilab.network + - name: MEETINGWIDGET_URL + value: + https://matrix-neodatefix-widget.opendesk.apps.digilab.network/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url + - name: MEETINGWIDGET_COCKPIT_URL + value: + https://matrix-neodatefix-widget.opendesk.apps.digilab.network/cockpit/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url + - name: BREAKOUT_SESSION_WIDGET_URL + value: + https://matrix-neodatefix-widget.opendesk.apps.digilab.network/#/?theme=$org.matrix.msc2873.client_theme&matrix_user_id=$matrix_user_id&matrix_display_name=$matrix_display_name&matrix_avatar_url=$matrix_avatar_url&matrix_room_id=$matrix_room_id&matrix_client_id=$org.matrix.msc2873.client_id&matrix_client_language=$org.matrix.msc2873.client_language&matrix_device_id=$org.matrix.msc3819.matrix_device_id&matrix_base_url=$org.matrix.msc4039.matrix_base_url + - name: MATRIX_LINK_SHARE + value: https://chat.opendesk.apps.digilab.network/#/room/ + - name: MEETINGWIDGET_NAME + value: Terminplaner + - name: MEETINGWIDGET_COCKPIT_NAME + value: Meeting Steuerung + - name: BREAKOUT_SESSION_WIDGET_NAME + value: Breakoutsessions + - name: CALENDAR_ROOM_NAME + value: Terminplaner + - name: BOT_DISPLAYNAME + value: Meetings Bot + - name: OPEN_XCHANGE_MEETING_URL_TEMPLATE + value: + https://webmail.opendesk.apps.digilab.network/appsuite/#app=io.ox/calendar&id={{id}}&folder={{folder}} + - name: ENABLE_GUEST_USER_POWER_LEVEL_CHANGE + value: 'true' + # TODO: enable this if the room reaper is deployed + #- name: AUTO_DELETION_OFFSET + # value: 60 + - name: ACCESS_TOKEN + valueFrom: + secretKeyRef: + key: access_token + name: matrix-neodatefix-bot-account + livenessProbe: + tcpSocket: + port: http + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + tcpSocket: + port: http + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ports: + - name: http + containerPort: 3000 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 128Mi + volumeMounts: + - name: data + mountPath: /app/storage + - name: config + mountPath: /app/conf + - name: widget-images + mountPath: /app/widget-images + + #- name: "tmp" + # mountPath: "/tmp" + volumes: + - name: data + persistentVolumeClaim: + claimName: matrix-neodatefix-bot + - name: config + configMap: + name: matrix-neodatefix-bot-config + - name: widget-images + configMap: + name: matrix-neodatefix-bot-widget-images + - name: tmp + emptyDir: + medium: Memory + sizeLimit: 50Mi +--- +# Source: matrix-neodatefix-bot/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: matrix-neodatefix-bot + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.0 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm + annotations: +spec: + tls: + - hosts: + - matrix-neodatefix-bot.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: matrix-neodatefix-bot.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: matrix-neodatefix-bot + port: + name: http diff --git a/manifests/jitsi-secrets.yaml b/manifests/jitsi-secrets.yaml new file mode 100644 index 0000000..623e38d --- /dev/null +++ b/manifests/jitsi-secrets.yaml @@ -0,0 +1,147 @@ +# Source: opendesk-jitsi/charts/jitsi/charts/prosody/templates/envs-secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: jitsi-prosody + labels: + helm.sh/chart: prosody-1.3.8 + app.kubernetes.io/name: prosody + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm +type: Opaque +data: null +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBM1FDeDZSbUx4MVV2K0lX + SXBGL2pSNXczbE1ISEY4dHRrYURGc01qQ2l3Cldmd0VoRHMvWllMZ0hDK3g0TDk1 + bDE4aXlJdFNNN2l4V3V1Y1JaTnlPN28KLS0tIGhMQld5UkI5UVQxN0ZTNForbG1E + VjhhcnRlbis5aE1pSHhPYUR6dy9TZlUKmukSSa1akKeWhPWictQ78s7deSc6AIMg + nAcUpw05cGxijzJtFBRlKAmpLfMD6bbnXygwR0M1IpYBTmarY+PvsQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:35Z" + mac: ENC[AES256_GCM,data:hajCmiS6g3GSKpWjlGGSEDASWNobswzAafQiMGrrhQi9Mna+8DWjW8fKy79r/ROMw+A/NrXMwxoNOBUI+jm6Nsy4AqJB/CV6H7K/VHdCdoaMOiRz4VybMWDHg0x0cYusASVaHGmMKO5Sn/Euq9doJiJfXnJ3QrVRNaM3IbU/I30=,iv:7hP4WLNn6vMIT3mMD1OZ2HqGelZCDUNZFW7P8dQK7U0=,tag:BCWdWLt/X2KSxXG7e9ZXLg==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jibri/xmpp-secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: jitsi-prosody-jibri + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jibri +type: Opaque +data: + JIBRI_XMPP_USER: ENC[AES256_GCM,data:NC0f9iW/4J0=,iv:rpj63o921khwVAlGUm3reHV+NasM9MwbbBlh+c1hSxE=,tag:8qSltJ0Ha8fflHPftOsk4Q==,type:str] + JIBRI_XMPP_PASSWORD: ENC[AES256_GCM,data:4OvbMKgywcquda8x/1HssiqbX1L1TxQMxiK29hmSD81TeQugFlg9O9XgIlVnM3Ti690SG5wXB2M=,iv:tlAo3zVoSp+OLAHh5dDWJEu5IATAvjfsvxZbDNgi2cw=,tag:yyxfFep06/t13Ag/PWH5uA==,type:str] + JIBRI_RECORDER_USER: ENC[AES256_GCM,data:iH4kPVoiBcrwKs9i,iv:NIvoEaoUfmxNqbXmD+dpKyhnV9bdjgTmrdZZAnKKi7Y=,tag:Q5IOXCKYxWF0SBgp7y+eOQ==,type:str] + JIBRI_RECORDER_PASSWORD: ENC[AES256_GCM,data:XRxhAVFWQQF92QZJ0SbNkCmh6f/ls3Sb8d3gKFVeoHH7jGeRDCAGbHsHpBQKiz+1b9b+ChcvU8A=,iv:R5EXLVEzFPOyTMNqPk/4Toz+4kGC4OW8A6183snpeD4=,tag:ibMyfGV7RsVpON/BDGkdpQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBM1FDeDZSbUx4MVV2K0lX + SXBGL2pSNXczbE1ISEY4dHRrYURGc01qQ2l3Cldmd0VoRHMvWllMZ0hDK3g0TDk1 + bDE4aXlJdFNNN2l4V3V1Y1JaTnlPN28KLS0tIGhMQld5UkI5UVQxN0ZTNForbG1E + VjhhcnRlbis5aE1pSHhPYUR6dy9TZlUKmukSSa1akKeWhPWictQ78s7deSc6AIMg + nAcUpw05cGxijzJtFBRlKAmpLfMD6bbnXygwR0M1IpYBTmarY+PvsQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:35Z" + mac: ENC[AES256_GCM,data:hajCmiS6g3GSKpWjlGGSEDASWNobswzAafQiMGrrhQi9Mna+8DWjW8fKy79r/ROMw+A/NrXMwxoNOBUI+jm6Nsy4AqJB/CV6H7K/VHdCdoaMOiRz4VybMWDHg0x0cYusASVaHGmMKO5Sn/Euq9doJiJfXnJ3QrVRNaM3IbU/I30=,iv:7hP4WLNn6vMIT3mMD1OZ2HqGelZCDUNZFW7P8dQK7U0=,tag:BCWdWLt/X2KSxXG7e9ZXLg==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jicofo/xmpp-secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: jitsi-prosody-jicofo + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jicofo +type: Opaque +data: + JICOFO_AUTH_USER: ENC[AES256_GCM,data:DBaGuzUirx0=,iv:Wv1WjIKEI9sWUCD08pul53ZyIdKbqPriMrivWx7ka6E=,tag:htuZk5TB2FDISuW66EKX6A==,type:str] + JICOFO_AUTH_PASSWORD: ENC[AES256_GCM,data:Y6Rrnho1GsYdNe0k85zJ3qzBtKW1p9TFyNoZ1mQtew4rl5ItggEG4777I584AVZfjs+gcq0weYk=,iv:koey+sMGiaL1hzaVZx31pBtvWFQWujUQAesbDjxqhVA=,tag:RrEGSktAcEgJ17GJDOETJA==,type:str] + JICOFO_COMPONENT_SECRET: ENC[AES256_GCM,data:U/xQ/uz5jsPnf/wW/zb8QerzaO1+u6zg86U19VcRaJbJiRonEyFoazTyW0M3mVWlJC/VpCMADKw=,iv:HGTnPzIjlvi+z6RV4yk4nIMT7Jg4cvirI3lOdyEN9vY=,tag:Gih+pt4E6e730atA6WSkzg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBM1FDeDZSbUx4MVV2K0lX + SXBGL2pSNXczbE1ISEY4dHRrYURGc01qQ2l3Cldmd0VoRHMvWllMZ0hDK3g0TDk1 + bDE4aXlJdFNNN2l4V3V1Y1JaTnlPN28KLS0tIGhMQld5UkI5UVQxN0ZTNForbG1E + VjhhcnRlbis5aE1pSHhPYUR6dy9TZlUKmukSSa1akKeWhPWictQ78s7deSc6AIMg + nAcUpw05cGxijzJtFBRlKAmpLfMD6bbnXygwR0M1IpYBTmarY+PvsQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:35Z" + mac: ENC[AES256_GCM,data:hajCmiS6g3GSKpWjlGGSEDASWNobswzAafQiMGrrhQi9Mna+8DWjW8fKy79r/ROMw+A/NrXMwxoNOBUI+jm6Nsy4AqJB/CV6H7K/VHdCdoaMOiRz4VybMWDHg0x0cYusASVaHGmMKO5Sn/Euq9doJiJfXnJ3QrVRNaM3IbU/I30=,iv:7hP4WLNn6vMIT3mMD1OZ2HqGelZCDUNZFW7P8dQK7U0=,tag:BCWdWLt/X2KSxXG7e9ZXLg==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jvb/xmpp-secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: jitsi-prosody-jvb + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jvb +type: Opaque +data: + JVB_AUTH_USER: ENC[AES256_GCM,data:8OzlKA==,iv:/t6aBCAG6Roc+dd/zY1Xzfza9Tr6qpUsAvimNYEPw6M=,tag:gdn5l96TGFDkewjQHcuk+g==,type:str] + JVB_AUTH_PASSWORD: ENC[AES256_GCM,data:KN8LqVx9a3T7QUL7f7K3qI5pV6jt1eaqw36jl55/JoT+xpSoKUBM8lpltm347T9onKbIlCovpq4=,iv:mulcpeKVKTg+Aeh1C1QAVwHjcc0hhY5cHraaS6SPw6A=,tag:2vxFh8s7R+mg4m9OjHykIQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBM1FDeDZSbUx4MVV2K0lX + SXBGL2pSNXczbE1ISEY4dHRrYURGc01qQ2l3Cldmd0VoRHMvWllMZ0hDK3g0TDk1 + bDE4aXlJdFNNN2l4V3V1Y1JaTnlPN28KLS0tIGhMQld5UkI5UVQxN0ZTNForbG1E + VjhhcnRlbis5aE1pSHhPYUR6dy9TZlUKmukSSa1akKeWhPWictQ78s7deSc6AIMg + nAcUpw05cGxijzJtFBRlKAmpLfMD6bbnXygwR0M1IpYBTmarY+PvsQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:35Z" + mac: ENC[AES256_GCM,data:hajCmiS6g3GSKpWjlGGSEDASWNobswzAafQiMGrrhQi9Mna+8DWjW8fKy79r/ROMw+A/NrXMwxoNOBUI+jm6Nsy4AqJB/CV6H7K/VHdCdoaMOiRz4VybMWDHg0x0cYusASVaHGmMKO5Sn/Euq9doJiJfXnJ3QrVRNaM3IbU/I30=,iv:7hP4WLNn6vMIT3mMD1OZ2HqGelZCDUNZFW7P8dQK7U0=,tag:BCWdWLt/X2KSxXG7e9ZXLg==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/jitsi.yaml b/manifests/jitsi.yaml new file mode 100644 index 0000000..e36b8c7 --- /dev/null +++ b/manifests/jitsi.yaml @@ -0,0 +1,2018 @@ +# Source: opendesk-jitsi/charts/jitsi/charts/prosody/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: jitsi-prosody + labels: + helm.sh/chart: prosody-1.3.8 + app.kubernetes.io/name: prosody + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm +--- +# Source: opendesk-jitsi/charts/jitsi/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: jitsi + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm +--- +# Source: opendesk-jitsi/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: jitsi-opendesk-jitsi + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-jitsi + helm.sh/chart: opendesk-jitsi-1.12.5 + app.kubernetes.io/instance: jitsi + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +--- +# Source: opendesk-jitsi/charts/jitsi/charts/prosody/templates/envs-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jitsi-prosody + labels: + helm.sh/chart: prosody-1.3.8 + app.kubernetes.io/name: prosody + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm +data: +--- +# Source: opendesk-jitsi/charts/jitsi/templates/common-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jitsi-prosody-common + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm +data: + ENABLE_AUTH: '1' + ENABLE_GUESTS: '1' + PUBLIC_URL: https://meet.opendesk.apps.digilab.network + XMPP_DOMAIN: meet.jitsi + XMPP_MUC_DOMAIN: muc.meet.jitsi + XMPP_AUTH_DOMAIN: auth.meet.jitsi + XMPP_GUEST_DOMAIN: guest.meet.jitsi + XMPP_RECORDER_DOMAIN: recorder.meet.jitsi + XMPP_INTERNAL_MUC_DOMAIN: internal-muc.meet.jitsi + ENABLE_COLIBRI_WEBSOCKET: 'true' + # TODO: rework into a proper regex or dynamic name list + ENABLE_COLIBRI_WEBSOCKET_UNSAFE_REGEX: '1' + ENABLE_XMPP_WEBSOCKET: 'false' + ENABLE_RECORDING: 'true' + ENABLE_FILE_RECORDING_SERVICE_SHARING: 'true' + ENABLE_LIVESTREAMING: 'true' + TZ: Europe/Berlin + ADAPTER_INTERNAL_URL: http://jitsi-keycloak-adapter:9000 + TOOLBAR_BUTTONS: + camera,chat,closedcaptions,desktop,download,feedback,filmstrip,fullscreen,hangup,help,livestreaming,microphone,mute-everyone,mute-video-everyone,participants-pane,profile,raisehand,security,select-background,settings,shareaudio,shortcuts,stats,tileview,toggle-camera,videoquality +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jibri/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jitsi-jibri + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jibri +data: + XMPP_SERVER: jitsi-prosody.tn-openbsw-opendesk.svc.cluster.local + JIBRI_BREWERY_MUC: jibribrewery + JIBRI_RECORDING_DIR: /data/recordings + JIBRI_FINALIZE_RECORDING_SCRIPT_PATH: /config/finalize.sh + JIBRI_STRIP_DOMAIN_JID: muc + DISPLAY: :0 + JIBRI_SINGLE_USE_MODE: 'false' +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jicofo/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jitsi-jicofo + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jicofo +data: + JVB_BREWERY_MUC: jvbbrewery + XMPP_SERVER: jitsi-prosody.tn-openbsw-opendesk.svc.cluster.local + JIBRI_BREWERY_MUC: jibribrewery + JIBRI_PENDING_TIMEOUT: '90' + AUTH_TYPE: xmpp + ENABLE_AUTO_LOGIN: 'false' + JICOFO_AUTH_LIFETIME: 100 milliseconds +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jvb/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jitsi-jvb + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jvb +data: + JVB_BREWERY_MUC: jvbbrewery + JVB_PORT: '10000' + JVB_STUN_SERVERS: meet-jit-si-turnrelay.jitsi.net:443 + JVB_TCP_HARVESTER_DISABLED: '1' + XMPP_SERVER: jitsi-prosody.tn-openbsw-opendesk.svc.cluster.local + COLIBRI_REST_ENABLED: 'true' +--- +# Source: opendesk-jitsi/charts/jitsi/templates/web/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jitsi-web + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: web +data: + DISABLE_HTTPS: '1' + ENABLE_HTTP_REDIRECT: '0' + JICOFO_AUTH_USER: focus + XMPP_BOSH_URL_BASE: http://jitsi-prosody.tn-openbsw-opendesk.svc.cluster.local:5280 + COLIBRI_WEBSOCKET_REGEX: '[a-z0-9._-]+' + TURN_ENABLE: '1' +--- +# Source: opendesk-jitsi/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: jitsi-meet-files +data: + favicon.svg: |2 + + + + + + + + + + url-ics: | + https://ics.opendesk.apps.digilab.network + url-portal: | + https://portal.opendesk.apps.digilab.network + watermark.svg: |2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + body.html: "\n\n\n\n\n\n" + + lang-overwritten-de.json: | + { + "_comment": [ + "Overwritten labels. See the following link for possible options:", + "https://github.com/jitsi/jitsi-meet/blob/master/lang/main.json", + "See also branding.json" + ], + "welcomepage": { + "headerSubtitle": "Bitte Namen für die Videokonferenz eingeben", + "headerTitle": "Videokonferenz" + } + } + + lang-overwritten-en.json: | + { + "_comment": [ + "Overwritten labels. See the following link for possible options:", + "https://github.com/jitsi/jitsi-meet/blob/master/lang/main.json", + "See also branding.json" + ], + "welcomepage": { + "headerSubtitle": "Please enter the conference name", + "headerTitle": "Video Conferencing" + } + } + + meet.oidc.conf: | + {{/* + SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + SPDX-License-Identifier: Apache-2.0 + */}} + {{ $ENABLE_COLIBRI_WEBSOCKET := .Env.ENABLE_COLIBRI_WEBSOCKET | default "0" | toBool }} + {{ $COLIBRI_WEBSOCKET_PORT := .Env.COLIBRI_WEBSOCKET_PORT | default "9090" }} + {{ $COLIBRI_WEBSOCKET_REGEX := .Env.COLIBRI_WEBSOCKET_REGEX | default "jvb" }} + {{ $ENABLE_JAAS_COMPONENTS := .Env.ENABLE_JAAS_COMPONENTS | default "0" | toBool }} + {{ $ENABLE_LOAD_TEST_CLIENT := .Env.ENABLE_LOAD_TEST_CLIENT | default "0" | toBool }} + {{ $ENABLE_OCTO := .Env.ENABLE_OCTO | default "0" | toBool }} + {{ $ENABLE_XMPP_WEBSOCKET := .Env.ENABLE_XMPP_WEBSOCKET | default "1" | toBool }} + {{ $ENABLE_SUBDOMAINS := .Env.ENABLE_SUBDOMAINS | default "true" | toBool }} + {{ $XMPP_DOMAIN := .Env.XMPP_DOMAIN | default "meet.jitsi" }} + {{ $XMPP_BOSH_URL_BASE := .Env.XMPP_BOSH_URL_BASE | default "http://xmpp.meet.jitsi:5280" }} + {{ $CORS_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN := .Env.CORS_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN | default "*" }} + + server_name _; + + charset utf8; + + client_max_body_size 0; + + root /usr/share/jitsi-meet; + + # ssi on with javascript for multidomain variables in config.js + ssi on; + ssi_types application/x-javascript application/javascript; + + index index.html index.htm; + error_page 404 /static/404.html; + + # Security headers + add_header X-Content-Type-Options nosniff; + add_header X-XSS-Protection "1; mode=block"; + + set $prefix ""; + + {{ if .Env.DEPLOYMENTINFO_SHARD }} + add_header X-Jitsi-Shard {{ .Env.DEPLOYMENTINFO_SHARD }}; + {{ end }} + + # Opt out of FLoC (deprecated) + add_header Permissions-Policy "interest-cohort=()"; + + {{ if .Env.ADAPTER_INTERNAL_URL }} + # /oidc/redirect + location = /oidc/redirect { + proxy_pass {{ .Env.ADAPTER_INTERNAL_URL }}; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header Host $http_host; + } + + # /oidc/tokenize + location = /oidc/tokenize { + proxy_pass {{ .Env.ADAPTER_INTERNAL_URL }}; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header Host $http_host; + } + + # /oidc/auth + location = /oidc/auth { + proxy_pass {{ .Env.ADAPTER_INTERNAL_URL }}; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header Host $http_host; + } + {{- end }} + + location = /config.js { + alias /config/config.js; + } + + location = /interface_config.js { + alias /config/interface_config.js; + } + + location = /external_api.js { + alias /usr/share/jitsi-meet/libs/external_api.min.js; + } + + {{ if $ENABLE_JAAS_COMPONENTS }} + location = /_api/room-info { + proxy_pass {{ $XMPP_BOSH_URL_BASE }}/room-info?prefix=$prefix&$args; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header Host $http_host; + } + {{ end }} + + # ensure all static content can always be found first + location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$ { + add_header 'Access-Control-Allow-Origin' '{{ $CORS_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN }}'; + alias /usr/share/jitsi-meet/$1/$2; + + # cache all versioned files + if ($arg_v) { + expires 1y; + } + } + + {{ if $ENABLE_COLIBRI_WEBSOCKET }} + # colibri (JVB) websockets + location ~ ^/colibri-ws/({{ $COLIBRI_WEBSOCKET_REGEX }})/(.*) { + tcp_nodelay on; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + + proxy_pass http://$1:{{ $COLIBRI_WEBSOCKET_PORT }}/colibri-ws/$1/$2$is_args$args; + } + + {{ if $ENABLE_OCTO }} + # colibri (JVB) Relay to Relay websockets + location ~ ^/colibri-relay-ws/([a-zA-Z0-9-\._]+)/(.*) { + tcp_nodelay on; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + + proxy_pass http://$1:{{ $COLIBRI_WEBSOCKET_PORT }}/colibri-relay-ws/$1/$2$is_args$args; + } + {{ end }} + {{ end }} + + # BOSH + location = /http-bind { + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header Host {{ $XMPP_DOMAIN }}; + + proxy_pass {{ $XMPP_BOSH_URL_BASE }}/http-bind?prefix=$prefix&$args; + } + + {{ if $ENABLE_XMPP_WEBSOCKET }} + # xmpp websockets + location = /xmpp-websocket { + tcp_nodelay on; + + proxy_http_version 1.1; + proxy_set_header Connection $connection_upgrade; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Host {{ $XMPP_DOMAIN }}; + proxy_set_header X-Forwarded-For $remote_addr; + + proxy_pass {{ $XMPP_BOSH_URL_BASE }}/xmpp-websocket?prefix=$prefix&$args; + } + {{ end }} + + {{ if .Env.ETHERPAD_URL_BASE }} + # Etherpad-lite + location ^~ /etherpad/ { + proxy_buffering off; + proxy_cache_bypass $http_upgrade; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Forwarded-For $remote_addr; + + proxy_pass {{ .Env.ETHERPAD_URL_BASE }}/; + } + {{ end }} + + {{ if .Env.WHITEBOARD_COLLAB_SERVER_URL_BASE }} + # whiteboard (excalidraw-backend) + location = /socket.io/ { + proxy_buffering off; + proxy_cache_bypass $http_upgrade; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Forwarded-For $remote_addr; + + proxy_pass {{ .Env.WHITEBOARD_COLLAB_SERVER_URL_BASE }}/socket.io/?$args; + } + {{ end }} + + location ~ ^/([^/?&:'"]+)$ { + try_files $uri @root_path; + } + + location @root_path { + {{- if .Env.ADAPTER_INTERNAL_URL }} + if ($arg_oidc) { + rewrite ^/(.*)$ / break; + } + if ($arg_jwt) { + rewrite ^/(.*)$ / break; + } + + rewrite ^/(.*)$ /static/oidc-redirect.html; + {{- else }} + rewrite ^/(.*)$ / break; + {{- end }} + } + + {{ if $ENABLE_SUBDOMAINS }} + # Matches /(TENANT)/pwa-worker.js or /(TENANT)/manifest.json to rewrite to / and look for file + location ~ ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ { + set $subdomain "$1."; + set $subdir "$1/"; + rewrite ^/([^/?&:'"]+)/(pwa-worker.js|manifest.json)$ /$2; + } + + location ~ ^/([^/?&:'"]+)/config.js$ { + set $subdomain "$1."; + set $subdir "$1/"; + + alias /config/config.js; + } + + # BOSH for subdomains + location ~ ^/([^/?&:'"]+)/http-bind { + set $subdomain "$1."; + set $subdir "$1/"; + set $prefix "$1"; + + rewrite ^/(.*)$ /http-bind; + } + + {{ if $ENABLE_XMPP_WEBSOCKET }} + # websockets for subdomains + location ~ ^/([^/?&:'"]+)/xmpp-websocket { + set $subdomain "$1."; + set $subdir "$1/"; + set $prefix "$1"; + + rewrite ^/(.*)$ /xmpp-websocket; + } + {{ end }} + + {{ if $ENABLE_JAAS_COMPONENTS }} + location ~ ^/([^/?&:'"]+)/_api/room-info { + set $subdomain "$1."; + set $subdir "$1/"; + set $prefix "$1"; + + rewrite ^/(.*)$ /_api/room-info; + } + {{ end }} + + {{- if $ENABLE_LOAD_TEST_CLIENT }} + # load test minimal client, uncomment when used + location ~ ^/_load-test/([^/?&:'"]+)$ { + rewrite ^/_load-test/(.*)$ /load-test/index.html break; + } + location ~ ^/_load-test/libs/(.*)$ { + add_header 'Access-Control-Allow-Origin' '{{ $CORS_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN }}'; + alias /usr/share/jitsi-meet/load-test/libs/$1; + } + + # load-test for subdomains + location ~ ^/([^/?&:'"]+)/_load-test/([^/?&:'"]+)$ { + set $subdomain "$1."; + set $subdir "$1/"; + set $prefix "$1"; + + rewrite ^/(.*)$ /load-test/index.html break; + } + + # load-test for subdomains + location ~ ^/([^/?&:'"]+)/_load-test/libs/(.*)$ { + set $subdomain "$1."; + set $subdir "$1/"; + set $prefix "$1"; + + alias /usr/share/jitsi-meet/load-test/libs/$2; + } + + {{- end }} + # Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to / + location ~ ^/([^/?&:'"]+)/(.*)$ { + set $subdomain "$1."; + set $subdir "$1/"; + rewrite ^/([^/?&:'"]+)/(.*)$ /$2; + } + {{ end }} + + oidc-adapter.html: | + + + + + + + + + adapting... + + + + oidc-redirect.html: | + + + + + + + + + redirecting... + + + + branding.json: | + { + "_comment": [ + "See the following link for advanced branding:", + "https://developer.8x8.com/jaas/docs/jaas-prefs-advanced-branding" + ], + "backgroundColor": "#121212", + "labels": { + "de": "/static/lang-overwritten-de.json", + "en": "/static/lang-overwritten-en.json" + }, + "logoClickUrl": "https://portal.opendesk.apps.digilab.network", + "logoImageUrl": "/images/watermark.svg", + "customTheme": { + "palette": { + "action01": "#6af56a", + "action01Hover": "#6af56a" + } + } + } + + custom-config.js: | + // SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + // SPDX-License-Identifier: Apache-2.0 + config.liveStreaming={}; + config.liveStreaming.enabled = true; + config.liveStreaming.termsLink='https://corp.kaltura.com/terms-of-use/'; + config.liveStreaming.dataPrivacyLink='https://corp.kaltura.com/terms-of-use/'; + config.liveStreaming.validatorRegExpString='^rtmp://[_a-zA-Z0-9]{10}\\.[a-z]\\.kpublish\\.kaltura\\.com'; + config.liveStreaming.helpLink = 'https://knowledge.kaltura.com/help/getting-started-with-kaltura-live'; + + config.dynamicBrandingUrl = '/static/branding.json'; + config.disabledSounds = [ + 'INCOMING_MSG_SOUND', + ]; + config.doNotStoreRoom = true; + + custom-interface_config.js: | + // SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + // SPDX-License-Identifier: Apache-2.0 + interfaceConfig.APP_NAME = 'MijnBureau Videoconference'; + interfaceConfig.DISABLE_JOIN_LEAVE_NOTIFICATIONS = true; + interfaceConfig.DISABLE_PRESENCE_STATUS = true; + interfaceConfig.DISABLE_TRANSCRIPTION_SUBTITLES = true; + interfaceConfig.DISABLE_VIDEO_BACKGROUND = true; + interfaceConfig.DISPLAY_WELCOME_FOOTER = false; + interfaceConfig.ENABLE_DIAL_OUT = false; + interfaceConfig.GENERATE_ROOMNAMES_ON_WELCOME_PAGE = true; + interfaceConfig.RECENT_LIST_ENABLED = true; + interfaceConfig.SHOW_JITSI_WATERMARK = true; + interfaceConfig.JITSI_WATERMARK_LINK = 'https://portal.opendesk.apps.digilab.network'; + + plugin.head.html: | + +--- +# Source: opendesk-jitsi/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: jitsi-meet-binaries +binaryData: + welcome-background.jpg: |- + /9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAyAAD/4QNyaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA5LjEtYzAwMiA3OS5hNmE2Mzk2OGEsIDIwMjQvMDMvMDYtMTE6NTI6MDUgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NzMxNjY3OWQtNmI3YS00MjQzLTljNjEtZmRiMGZmMmIwZjkwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYyREJBODIzODRBRjExRUZCQzNFOTJCRkYzRTJGRjA0IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYyREJBODIyODRBRjExRUZCQzNFOTJCRkYzRTJGRjA0IiB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhlMzIyOTc3LWE0NzctNGRlZC05ZjA4LTFkOGY2OTRmODhmNiIgc3RSZWY6ZG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjEyZThiMjM1LWE3N2YtNDU0MC1hZTUwLWU0M2YxNWI2ZjRiNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBkwAAAAAH/2wCEAAgGBgYGBggGBggMCAcIDA4KCAgKDhANDQ4NDRARDA4NDQ4MEQ8SExQTEg8YGBoaGBgjIiIiIycnJycnJycnJycBCQgICQoJCwkJCw4LDQsOEQ4ODg4REw0NDg0NExgRDw8PDxEYFhcUFBQXFhoaGBgaGiEhICEhJycnJycnJycnJ//AABEIAWkEIQMBIgACEQEDEQH/xABXAAEBAQEBAAAAAAAAAAAAAAAAAQIDBwEBAQEBAQAAAAAAAAAAAAAAAQACAwYQAQEBAQAAAAAAAAAAAAAAAAABMUERAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEQMRAD8A8pRUeodhFQIRUCEVAhFQIRUCEVAAECAQIACQAJAAkASQABAAkACQAJAAkACEAAQAhACEAIQAhFQIRUAEVEhFQIRUCEVAhFQIRUCAQBLlc3S5XNjSFRWQKikiopQqKUKilCopQqKUKikgKUApQCpAKUAFKASoBSgFKAUoBSgFKASoBSgFKAUKCQoFCgUKBIqKUKilCopQqKUKilACLsgOqEAIRUCEVEhFQIRUCEVABFQIRUCEVAhFQIBAhFQARUCAQIBAgBJAAkACQABAAkACQAJAAkACQABAAkACEAIQEhFQIRUAEVAkuVzdLlc2NJQGUKBQoFCgUKBQqKUKikiopQqKUKilCopQqKUKilCoqIClCopQClAKUAFKASoBSgFKAUoBSgFKASoCSgFKAUoBQoFCgUAJOoDqUACQAJAAkACQAJAEBACEAIRUCEVAhFQIRUAEVAhFQIRUCEVAhFQIRUQEVAgECAAkBAgAJAAkAAQAJAAkACQAJAAkAAEBJLjm6XHNjSUAJQClAKUBJQClAKUAlQChQKUAoUChQKFRSRQKFRShUUoVFSFRShUUoVFJFRSgFKFRSgFKAUoAJUApQClAKUBJQClAKBQl0AdEgIEABIAEgASAAIAEgASABIAkgASABIAAIAQgBCKgQioEIqBCKgAioEIqBCKiQioEIqBCKgQioAIqBAIEAgQCBAASAAIAElxzdLjDOkAoQClAKUApQClABSgIqAUoBSgFKAUoBSgEqAUoBSgFCgUKBQoFCoqIqKUKilCopQqKUKilCopIqKUKilAKUApQClAKSAJOiKjohFQIRUCEVAhFQIRUAAQIACQECAAkACQBJAAEACQAJAAkACQAJAABACEAIQAhACEVAhFQARUSEVAhFQIRUCEVAhFQIRUAEVAi4w3cYZqFRQhUUoVFKFRShUUoVFKFRSQFKAUoBUgFKAClAJUApQClAKUApQClAJUApQClAKFBIUChQKFAkVFKFRShUUoVFKFRShUUkASdEBtCKgQiokIqBCKgQioAIqBCKgQioEIqBCKgQioAAgQCBAIEAJIAEgASAAIAEgASABIAEgASAACAEIAQioEICQioEIqACKgQioEXGGqyzUKAQoFCgUKilCopQqKSKilCopQqKUKilCopQqKUKiogKUKilAKUApQAUoBKgFKAUoBSgFKAUoBKgJKAUoBQoFCgUKBQqKSAJNgNpAAkACEAJAEhAAEAIQAhACEVAhFQIRUAEVAhFQIRUCEVAhFQIRUQAQIBAgAJAAkACQAJAAEACQAJAAkACQAJAEBACQAJKy0yzUoCSgFKAkoBSgFKASoBQoFCgUKBQoFCopQqKSKilCoqQqKUKilCopQqKSApQClAKUKilAKUAEqAUoBSgJKAUoBSgFKASAFNgNJAAkACQAJAAkAAQAJAEkACQAJAAhAAEAIQAhFQIQAhACEVABFQIRUCEVAhFRIRUCEVAhFQABAgAJAQIACQAJAAEACQAJKi1BUAqQClABSgFKAUoCKgFKAUoBSgFKAUoBKgFCgUoBQqKUKilCopIqKkKilCopQqKUKilCopQqKSKilCopQClAKUApQAioBSgFNIqNIRUCEVAhFQIBAAECAAkACQAJAAkASQABAAkACQAJAAhACQAAQAhACEVAhFQIRUCEVEBFQIRUCEVAhFQIRUCEVAgEAEVAgECEVBUKipCopQqKUKilCopQCkgKUAJKAUoBSgFKASoBSgFKAUoBSgFKASoBQoFCgkKBQqKUKilCopIqKUKilCopQqKUKilCopIqKUAJNIqNIRUCEVAhFQIRUAEVAhFQIRUCEVAhFQIBAAECAQIACQBJAAkACQABAAkACQAJAAhACQAAQAhACEVEhACEVAhFQARUCEVAhFQIRUCFBIUChUUoVFKFRSRUUoVFKFRShUUoVFKFRSgFRAUoBSgFKAClBSgAlQClAKUApQClAKUAlQElAKUAoUChUUoVFKFRSRUUoASUAoQAkACEBIQABFQIQAhFQIRUCEVAhFQARUCEVAhFQIRUCAQIRUSAQABAgAJAAkACQAJAAEACQAJAAkACQAJAEEACEAIQAhACUBJQClAKUAoUCVAKFAoUChUUoUChUUoVFJFRShUVIVFKFRShUUoVFJAUoBSgFKAClAKUFJAClAKUBJQClAKUAlQClAKBQoASQAJAAkAAQAJAAkASQAJAAkACQAAQAhACEVAhFQIRUCEVABFQIRUCEVEhFQIRUCEVAgEAAQIACQECAAkACQABAAkACQBJAUIBSgApQClASUAlQClAKUApQClAKUAkUChQKFAoUChQKFRUhUUkVFKFRShUUoVFKFRShUUkVFKAUoBSgFKAClBUQApQCgUKARIBAgECAQABAgAJAAkACQAJAEEACQAJAAkACQAJAAhAAEAIQAhFQIRUCEVAhFRARUCEVAhFQIRUCEVAhFQIBAAECAAkBAhUVIVFKFRShUUoBSgFJAUoBUgApQClAKUAlQClAKUApQClAKUAlQClAKUBIUChQKFRShUUkVFKFRShUUoVFKFRShUUkBShUUoASEVEhFQIRUCEVABFQIRUCEVAhFQIBAgEAAQIBAgBJAAkACQAJAAEACQAJAAkACQAJAABACEAIQEhFQIQAhFQARUCEVAhFQIRUCFRVEKBQqKUKilCopIqKUKilCopQqKUKilCoqQqKSApQClAKUAFKClABKgFKAUoBSgFKAUoCSgEigUoBQoFCopQoFCgSKilCopQAkgASABCAkIAAioEIqBCKgQioEIqBCKgAioEIqBCKgQioEIqBCKiACBAIEABIAEgASABIAAgASABIAEgASABIAgIAQgBIAEIAQqKolAKUApQClAJFAoUChQKFRShUUoVFJFRShUUoVFSFRShUUoVFKFRSQFKAUoBSgFKAClAJUApQClASUApQClAJUApQChQKAEkACQAJAAkAAQAJAEkACEAIQAhAAEVAhACEVAhFQIRUCEVABFQIRUCEVEhFQIRUCAQIBAAECAAkACQAJAAkAAQAJAAkASQAIVltRADSUFKAElAJUApQClAKUApQChQJUAoUClAKFRShUUoVFSFRSRUUoVFKFRShUUoVFKFRSRUUoVFKAUoBSgApQEVAKUApQCgUKZBGUAgQCAAASABIAEgASABIAkgACABIAEgASABCAEIAAgBCAEIqBCKgQioEIqICKgQioEIqBCKgQioEAgQCAAIEAgQCBAASNsNmIVFaQqKUKilAKSAFKCpABSgFKAUoBKgFKAUoBSgFKAUoBKgFKAUKCQoFCgUKilCopIqKUKilCopQqKUKilCopIqKUApQCpABTKKjKEVAhFQARUCEVAhFQIBAgECAQABAgAJAEkACQAJAAkAAQAJAAkACQAJAAkAAEAIQAhFRIRUCEVAhFQARUCEVAhFQIRUCEVAjrbHWzEKitIVFKFRSRUUoVFKFRShUUoVFKFRUgFJAUoBSgApQUoAKUAlQClAKUApQClAKUBFQChQKUAoUChQKFRShUUkVFKFRShUUoASZQGEICQgACAEIqBCKgQioEIqBCKgAioEIqBCKgQioEAgQCIAASAgQAEgASABIAEgACABIAEgASABIAEgCAgBCAEIAQgBCKgQ2xNbOUoDSUAoUCRQKFAoVFKFRShUUoVFKFRSRUUoVFSFRShUUoVFKFRSQFKAUoAKUApQClAJUApQClASUApQClAKUAlQChQKFAoASYAYSAAIAEgCSABIAEgAQgBCAAIAQioEIqBCKgQioEIqACKgQioEAiQioEIqBCKgQCAAIEAgQAEgASABIAAgASABIAkgASABE2NsTWzlKA2lASUAlQClAKUApQClAKFAkUChQKFAoVFKFRUhUUoVFJFRShUUoVFKFRShUUoBSQFKAUoBSgFKAClASUAlQClAKUAoFCnMEc0AgAAEgASABIAEgASAJIAAgASABIAEgAQgBCAAIqBCAEIqBCKgQioEIqICKgQioEIqBCKgQCBCKgQCAAIEAgQAEgASAJE10c5sdDlCoraFRSgFJAVIAKUApQClAKUAlQClAKUApQClAKUAlQChQKFBIVFKFRShUUoVFJFRShUUoVFKFRShUUoVFJFRShUUoBUgFKACnNFRzQioAIqBCKgQioEAgQCBAIAAgQCJAASABIAEgASAAIAEgASABIAEIASAACAEICQioEIqBCKgQioAIqBCKgQioEIqBCKgQioEs2OjnNjo1lCoraFRSRUUoVFKFRShUUoVFSAUoVFJAUoAKUApQClAKUAlQClAKUApQClASFAlQChQKUAoUChQKFRShUUkVFKFRShUUoVFKAEnNFRzQioAIqBCKgQioEIqBCKgQioAIqBCKgQioEIoEgCSAAIAEgASABIAEgASABIAAgASABIAEgCQgBCAAIAQgBCKgQioEIqBCKgCzY6Oc2OjWSoDaFRSRUUoVFKFRShUUoVFKFRShUUkVFSFRShUUoVFKFRSgFJAUoAKUApQUoAKUAlQClASUApQClEUpQCVAKFApRFKFRShUUoASf/9k= +--- +# Source: opendesk-jitsi/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: jitsi-keycloak-adapter-files +data: + + context.ts: | + // ----------------------------------------------------------------------------- + // SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + // SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + // SPDX-License-Identifier: Apache-2.0 + // ----------------------------------------------------------------------------- + // This function creates the context inside JWT's payload. It gets userInfo + // (which comes from Keycloak) as parameter. + // + // Update the codes according to your requirements. Welcome to TypeScript :) + // ----------------------------------------------------------------------------- + + export function createContext(userInfo: Record) { + // If the user doesn't have opendesk_username in her userInfo then don't + // generate a token for her. + if (!userInfo.opendesk_username) throw new Error("no username"); + + const context = { + user: { + id: userInfo.sub, + name: userInfo.name || userInfo.opendesk_username, + email: userInfo.email || "", + lobby_bypass: true, + }, + }; + return context; + } +--- +# Source: opendesk-jitsi/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: jitsi-opendesk-jitsi +data: + init.sh: | + #!/bin/sh + set -e + counter=0 + maxRetries=30 + until [ $counter -gt ${maxRetries} ]; do + echo "Wait for LoadBalancer IP (${counter}/${maxRetries})" + ip=$(kubectl get svc jitsi-jvb -o jsonpath='{.status.loadBalancer.ingress[0].ip}' || true); + if [ ${ip} ]; then + break; + else + ((counter++)); + sleep 5; + fi + done + if [ $counter -gt 30 ]; then + echo "Reached retries limit, exiting..." + exit 1 + fi; + + echo "Patching JVB to advertise IP: ${ip}" + kubectl patch cm jitsi-jvb --type json --patch \ + "[{ \"op\": \"add\", \"path\": \"/data/JVB_ADVERTISE_IPS\", \"value\": \"${ip}\" }, + { \"op\": \"add\", \"path\": \"/data/DOCKER_HOST_ADDRESS\", \"value\": \"${ip}\" }]" + kubectl rollout restart deployment jitsi-jvb +--- +# Source: opendesk-jitsi/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: jitsi-opendesk-jitsi + labels: + app.kubernetes.io/name: opendesk-jitsi + helm.sh/chart: opendesk-jitsi-1.12.5 + app.kubernetes.io/instance: jitsi + app.kubernetes.io/managed-by: Helm +rules: + # Get IP/Port from service. + # Update target port for nodePort +- apiGroups: [''] + resources: + - services + resourceNames: + - jitsi-jvb + verbs: + - get + - update + - patch + # Update configmap for env vars. +- apiGroups: [''] + resources: + - configmaps + resourceNames: + - jitsi-jvb + verbs: + - get + - update + - patch + # Restart JVB after patch. +- apiGroups: [apps] + resources: + - deployments + resourceNames: + - jitsi-jvb + verbs: + - get + - update + - patch +--- +# Source: opendesk-jitsi/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: jitsi-opendesk-jitsi + labels: + app.kubernetes.io/name: opendesk-jitsi + helm.sh/chart: opendesk-jitsi-1.12.5 + app.kubernetes.io/instance: jitsi + app.kubernetes.io/managed-by: Helm +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: jitsi-opendesk-jitsi +subjects: +- kind: ServiceAccount + name: jitsi-opendesk-jitsi +--- +# Source: opendesk-jitsi/charts/jitsi/charts/prosody/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: jitsi-prosody + labels: + helm.sh/chart: prosody-1.3.8 + app.kubernetes.io/name: prosody + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - port: 5280 + protocol: TCP + name: tcp-bosh-insecure + - port: 5281 + protocol: TCP + name: tcp-bosh-secure + - port: 5347 + protocol: TCP + name: tcp-xmpp-component + - port: 5222 + protocol: TCP + name: tcp-xmpp-c2 + - port: 5269 + protocol: TCP + name: tcp-xmpp-s2 + selector: + app.kubernetes.io/name: prosody + app.kubernetes.io/instance: jitsi +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jibri/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: jitsi-jibri + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jibri +spec: + type: ClusterIP + ports: + - name: http-internal + port: 3333 + targetPort: 3333 + protocol: TCP + - name: http-api + port: 2222 + targetPort: 2222 + protocol: TCP + selector: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: jibri +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jvb/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: jitsi-jvb + annotations: + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jvb +spec: + type: LoadBalancer + ports: + - port: 10000 + protocol: UDP + name: rtp-udp + externalTrafficPolicy: + selector: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: jvb +--- +# Source: opendesk-jitsi/charts/jitsi/templates/web/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: jitsi-web + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: web +spec: + type: ClusterIP + ports: + - port: 80 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: web +--- +# Source: opendesk-jitsi/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: jitsi-keycloak-adapter + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-jitsi + helm.sh/chart: opendesk-jitsi-1.12.5 + app.kubernetes.io/instance: jitsi + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: adapter + port: 9000 + targetPort: 9000 + protocol: TCP + selector: + app.kubernetes.io/name: opendesk-jitsi + app.kubernetes.io/instance: jitsi +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jibri/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jitsi-jibri + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jibri +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: jibri + template: + metadata: + labels: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: jibri + annotations: + checksum/config: 2ec9a015a1a4493f8c5b49c320c674c728a72105fa0742a4f6696e6bc8017c0d + checksum/secret: 2a5e7358ebacb5162d331dc9b87cf04552da279220cbc3f17dc4fbff82db7323 + spec: + serviceAccountName: jitsi + containers: + - name: jitsi + securityContext: + capabilities: + add: [SYS_ADMIN] + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/jibri:stable-9646@sha256:30173d35449d78f8958eaf4de77e76c534806db0e49bdbb930f8c81e003e5a3b + imagePullPolicy: IfNotPresent + ports: + - name: http-internal + containerPort: 3333 + - name: http-api + containerPort: 2222 + livenessProbe: + exec: + command: + - /bin/bash + - -c + - curl -sq localhost:2222/jibri/api/v1.0/health | jq '"\(.status.health.healthStatus) + \(.status.busyStatus)"' | grep -qP 'HEALTHY (IDLE|BUSY)' + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 3 + readinessProbe: + exec: + command: + - /bin/bash + - -c + - curl -sq localhost:2222/jibri/api/v1.0/health | jq '"\(.status.health.healthStatus) + \(.status.busyStatus)"' | grep -qP 'HEALTHY (IDLE|BUSY)' + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 3 + + envFrom: + - secretRef: + name: jitsi-prosody-jibri + - configMapRef: + name: jitsi-prosody-common + - configMapRef: + name: jitsi-jibri + + resources: + limits: + cpu: 99 + memory: 3Gi + requests: + cpu: 0.1 + memory: 384Mi + + volumeMounts: + - name: jibri-data + mountPath: /data + - name: dev-shm + mountPath: /dev/shm + + volumes: + - name: jibri-data + emptyDir: {} + - name: dev-shm + emptyDir: + medium: Memory + sizeLimit: 2Gi +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jicofo/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jitsi-jicofo + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jicofo +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: jicofo + template: + metadata: + labels: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: jicofo + annotations: + checksum/config: 4771209fa79f21c5693d5b6a90eb1c8c204eed585055c521bcaabd479498a9de + checksum/secret: 75dec4ca56b7f906b800f011241ad621bf42592d649d2d1aa52cb9ba9ba1e30c + spec: + serviceAccountName: jitsi + securityContext: {} + containers: + - name: jitsi + securityContext: + allowPrivilegeEscalation: false + capabilities: {} + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/jicofo:stable-9646@sha256:c2c72b6e4b6655d8758145f5c4d4201265626b7c3c1a03f41c7dda060ca7165d + imagePullPolicy: IfNotPresent + envFrom: + - secretRef: + name: jitsi-prosody-jicofo + - configMapRef: + name: jitsi-prosody-common + - configMapRef: + name: jitsi-jicofo + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + tcpSocket: + port: 8888 + readinessProbe: + tcpSocket: + port: 8888 + resources: + limits: + cpu: 99 + memory: 3584Mi + requests: + cpu: 0.1 + memory: 256Mi +--- +# Source: opendesk-jitsi/charts/jitsi/templates/jvb/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jitsi-jvb + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: jvb +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: jvb + template: + metadata: + labels: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: jvb + annotations: + checksum/config: 515160429a7602eb9e29d22b25524f7149feaa9493a8cde81e8f8cd404305199 + checksum/secret: 4d53833bba33ce030a879a67f7053754028464686f612252c15e62feb6a2fd65 + spec: + serviceAccountName: jitsi + securityContext: {} + containers: + - name: jitsi + securityContext: + allowPrivilegeEscalation: false + capabilities: {} + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/jvb:stable-9646@sha256:22dfb237cdda8142dcf2b141c28d40ec8a675dd379dda5e851dac49e43e677b7 + imagePullPolicy: IfNotPresent + envFrom: + - secretRef: + name: jitsi-prosody-jvb + - configMapRef: + name: jitsi-prosody-common + - configMapRef: + name: jitsi-jvb + env: + - name: JVB_WS_SERVER_ID + valueFrom: + fieldRef: + fieldPath: status.podIP + ports: + - name: rtp-udp + containerPort: 10000 + protocol: UDP + - name: colibri-ws-tcp + containerPort: 9090 + protocol: TCP + livenessProbe: + httpGet: + path: /about/health + port: 8080 + readinessProbe: + httpGet: + path: /about/health + port: 8080 + resources: + limits: + cpu: 99 + memory: 3584Mi + requests: + cpu: 0.1 + memory: 384Mi +--- +# Source: opendesk-jitsi/charts/jitsi/templates/web/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jitsi-web + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: web +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: web + template: + metadata: + labels: + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/component: web + annotations: + checksum/config: a612da82fee8d59a0e7a2490a75ff02f1bacc24b25cefbd375d2f7691fdf3f0c + spec: + serviceAccountName: jitsi + securityContext: {} + containers: + - name: jitsi + securityContext: + allowPrivilegeEscalation: false + capabilities: {} + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/web:stable-9646@sha256:04157797558743fa9c478b76d7332a45c6fbfbe4e34d6550f8716dd8526a1c6c + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: jitsi-web + - configMapRef: + name: jitsi-prosody-common + ports: + - name: http + containerPort: 80 + protocol: TCP + - name: https + containerPort: 443 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: 80 + readinessProbe: + httpGet: + path: / + port: 80 + resources: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - mountPath: /config/custom-config.js + name: jitsi-meet-files + subPath: custom-config.js + - mountPath: /config/custom-interface_config.js + name: jitsi-meet-files + subPath: custom-interface_config.js + - mountPath: /defaults/meet.conf + name: jitsi-meet-files + subPath: meet.oidc.conf + - mountPath: /usr/share/jitsi-meet/body.html + name: jitsi-meet-files + subPath: body.html + - mountPath: /usr/share/jitsi-meet/plugin.head.html + name: jitsi-meet-files + subPath: plugin.head.html + - mountPath: /usr/share/jitsi-meet/images/favicon.svg + name: jitsi-meet-files + subPath: favicon.svg + - mountPath: /usr/share/jitsi-meet/images/watermark.svg + name: jitsi-meet-files + subPath: watermark.svg + - mountPath: /usr/share/jitsi-meet/images/welcome-background.jpg + name: jitsi-meet-binaries + subPath: welcome-background.jpg + - mountPath: /usr/share/jitsi-meet/static/branding.json + name: jitsi-meet-files + subPath: branding.json + - mountPath: /usr/share/jitsi-meet/static/lang-overwritten-de.json + name: jitsi-meet-files + subPath: lang-overwritten-de.json + - mountPath: /usr/share/jitsi-meet/static/lang-overwritten-en.json + name: jitsi-meet-files + subPath: lang-overwritten-en.json + - mountPath: /usr/share/jitsi-meet/static/oidc-adapter.html + name: jitsi-meet-files + subPath: oidc-adapter.html + - mountPath: /usr/share/jitsi-meet/static/oidc-redirect.html + name: jitsi-meet-files + subPath: oidc-redirect.html + - mountPath: /usr/share/jitsi-meet/static/url-ics + name: jitsi-meet-files + subPath: url-ics + - mountPath: /usr/share/jitsi-meet/static/url-portal + name: jitsi-meet-files + subPath: url-portal + volumes: + - configMap: + items: + - key: body.html + path: body.html + - key: branding.json + path: branding.json + - key: custom-config.js + path: custom-config.js + - key: custom-interface_config.js + path: custom-interface_config.js + - key: favicon.svg + path: favicon.svg + - key: lang-overwritten-de.json + path: lang-overwritten-de.json + - key: lang-overwritten-en.json + path: lang-overwritten-en.json + - key: meet.oidc.conf + path: meet.oidc.conf + - key: oidc-adapter.html + path: oidc-adapter.html + - key: oidc-redirect.html + path: oidc-redirect.html + - key: plugin.head.html + path: plugin.head.html + - key: url-ics + path: url-ics + - key: url-portal + path: url-portal + - key: watermark.svg + path: watermark.svg + name: jitsi-meet-files + name: jitsi-meet-files + - configMap: + items: + - key: welcome-background.jpg + path: welcome-background.jpg + name: jitsi-meet-binaries + name: jitsi-meet-binaries +--- +# Source: opendesk-jitsi/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: opendesk-jitsi-keycloak-adapter + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-jitsi + helm.sh/chart: opendesk-jitsi-1.12.5 + app.kubernetes.io/instance: jitsi + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: opendesk-jitsi + app.kubernetes.io/instance: jitsi + strategy: + type: RollingUpdate + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: opendesk-jitsi + helm.sh/chart: opendesk-jitsi-1.12.5 + app.kubernetes.io/instance: jitsi + app.kubernetes.io/managed-by: Helm + spec: + serviceAccountName: jitsi-opendesk-jitsi + containers: + - name: keycloak + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/jitsi-keycloak-adapter:v20240808@sha256:73db5ae9bb617d076b6a877500dbeece38fd15f8ae933ffadbd72d9aa82ad8da + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1993 + runAsNonRoot: true + runAsUser: 1993 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + imagePullPolicy: IfNotPresent + env: + - name: KEYCLOAK_ORIGIN + value: https://id.opendesk.apps.digilab.network + - name: KEYCLOAK_REALM + value: opendesk + - name: KEYCLOAK_CLIENT_ID + value: opendesk-jitsi + - name: JWT_APP_ID + value: meet.opendesk.apps.digilab.network + - name: JWT_APP_SECRET + value: 4305e3ad11d3600c7ccbdcee94ef12f16e0890b7 + - name: JWT_ALG + value: HS256 + - name: JWT_HASH + value: SHA-256 + - name: JWT_EXP_SECOND + value: '3600' + - name: HOSTNAME + value: 0.0.0.0 + - name: ALLOW_UNSECURE_CERT + value: 'false' + ports: + - name: adapter + containerPort: 9000 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 10m + memory: 48Mi + livenessProbe: + httpGet: + path: /health + port: 9000 + initialDelaySeconds: 5 + periodSeconds: 3 + timeoutSeconds: 1 + failureThreshold: 5 + successThreshold: 1 + readinessProbe: + httpGet: + path: /health + port: 9000 + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + volumeMounts: + - name: jitsi-keycloak-adapter-files + mountPath: /app/context.ts + subPath: context.ts + - name: tmp + mountPath: /tmp + volumes: + - name: jitsi-keycloak-adapter-files + configMap: + name: jitsi-keycloak-adapter-files + items: + - key: context.ts + path: context.ts + - name: tmp + emptyDir: {} + +--- +# Source: opendesk-jitsi/charts/jitsi/charts/prosody/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: jitsi-prosody + labels: + helm.sh/chart: prosody-1.3.8 + app.kubernetes.io/name: prosody + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm +spec: + serviceName: jitsi-prosody + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: prosody + app.kubernetes.io/instance: jitsi + template: + metadata: + labels: + app.kubernetes.io/name: prosody + app.kubernetes.io/instance: jitsi + annotations: + si.jit.meet/hash-secret: 44136fa355b3678a1146ad16f7e8649e + si.jit.meet/hash-configmap: 74234e98afe7498fb5daf1f36ac2d78a + spec: + serviceAccountName: jitsi-prosody + securityContext: {} + containers: + - name: prosody + securityContext: + allowPrivilegeEscalation: false + capabilities: {} + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/prosody:stable-9457-2@sha256:5364b0c9c6de654b7b31b5821e9cd7a39660a19010348e7ac56b85be2944daa0 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: jitsi-prosody + - secretRef: + name: jitsi-prosody + - secretRef: + name: jitsi-prosody-jicofo + - secretRef: + name: jitsi-prosody-jvb + - configMapRef: + name: jitsi-prosody-common + env: + - name: AUTH_TYPE + value: hybrid_matrix_token + - name: JWT_APP_ID + value: meet.opendesk.apps.digilab.network + - name: JWT_APP_SECRET + value: 4305e3ad11d3600c7ccbdcee94ef12f16e0890b7 + - name: MATRIX_UVS_SYNC_POWER_LEVELS + value: 'true' + - name: MATRIX_UVS_URL + value: http://opendesk-matrix-user-verification-service.tn-openbsw-opendesk.svc.cluster.local + - name: TURNS_HOST + value: '' + - name: TURNS_PORT + value: '5349' + - name: TURN_HOST + value: '' + - name: TURN_PORT + value: '3478' + - name: TURN_TRANSPORT + value: udp + - name: TURN_CREDENTIALS + value: '' + ports: + - name: xmpp-c2s + containerPort: 5222 + protocol: TCP + - name: xmpp-s2s + containerPort: 5269 + protocol: TCP + - name: xmpp-component + containerPort: 5347 + protocol: TCP + - name: bosh-insecure + containerPort: 5280 + protocol: TCP + - name: bosh-secure + containerPort: 5281 + protocol: TCP + livenessProbe: + httpGet: + path: /http-bind + port: bosh-insecure + readinessProbe: + httpGet: + path: /http-bind + port: bosh-insecure + resources: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: prosody-data + mountPath: /config/data + volumes: + - name: prosody-data + persistentVolumeClaim: + claimName: prosody-data + volumeClaimTemplates: + - metadata: + name: prosody-data + spec: + accessModes: + - ReadWriteOnce + volumeMode: Filesystem + resources: + requests: + storage: 1Gi + storageClassName: managed +--- +# Source: opendesk-jitsi/charts/jitsi/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: jitsi-web + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: web + annotations: + ingress.cilium.io/tcp-keep-alive: enabled + ingress.cilium.io/websocket: enabled + nginx.ingress.kubernetes.io/proxy-read-timeout: '3600' + nginx.ingress.kubernetes.io/proxy-sent-timeout: '3600' + nginx.org/websocket-services: jitsi-web +spec: + tls: + - hosts: + - meet.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: meet.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: jitsi-web + port: + number: 80 +--- +# Source: opendesk-jitsi/charts/jitsi/charts/prosody/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: jitsi-prosody-test-connection + labels: + helm.sh/chart: prosody-1.3.8 + app.kubernetes.io/name: prosody + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: test-success +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: [jitsi-prosody:5280/http-bind] + restartPolicy: Never +--- +# Source: opendesk-jitsi/charts/jitsi/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: jitsi-web-test-connection + labels: + helm.sh/chart: jitsi-1.3.8 + app.kubernetes.io/name: jitsi + app.kubernetes.io/instance: jitsi + app.kubernetes.io/version: stable-9111 + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: web + annotations: + helm.sh/hook: test-success +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: [jitsi-web:80] + restartPolicy: Never +--- +# Source: opendesk-jitsi/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: jitsi-opendesk-jitsi + labels: + app.kubernetes.io/name: opendesk-jitsi + helm.sh/chart: opendesk-jitsi-1.12.5 + app.kubernetes.io/instance: jitsi + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: post-install,post-upgrade + helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded +spec: + template: + spec: + restartPolicy: OnFailure + serviceAccountName: jitsi-opendesk-jitsi + containers: + - name: advertise-ip + image: + registry-1.docker.io/bitnami/kubectl:1.30.2@sha256:3ec696e5ce1b79f78eb0eac1fed4ef20fa6584662cdf3c7ad933b0b03b9ce3f6 + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + command: + - /bin/bash + - /init/init.sh + volumeMounts: + - name: init + mountPath: /init + resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 10m + memory: 16Mi + volumes: + - name: init + configMap: + name: jitsi-opendesk-jitsi diff --git a/manifests/migrations-post-secrets.yaml b/manifests/migrations-post-secrets.yaml new file mode 100644 index 0000000..7b01d4d --- /dev/null +++ b/manifests/migrations-post-secrets.yaml @@ -0,0 +1,36 @@ +# Source: opendesk-migrations/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-migrations-post-environmentdetails + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-post + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation +stringData: + environmentDetails.yaml: ENC[AES256_GCM,data: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,iv:SYTr7lDCl7NzIGGao9Tr8E1u38OVXv1uxAUMfOtUyZs=,tag:yDUkGPYQ2wLQCKLg/aVf1A==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtQUhqZWUvdDRHMWtHa2Js + aUw3S0lNa25paVNvaGp2MzJadVloQllOWWtVCjhqY3c4MFZHVDFxSDlWbTRScUdr + NG1UZVV1czVJZC95N2lSa0RTWmFoRzAKLS0tIExjaHFJUXJ4Nk0zbzB5bXhPNndu + MFVSZlZsOTB6ejVhVWFuQnZaNDZOdU0K7cDjttcF34flhUc6mF7rbD7vX3mg8Aqj + bq7X/7W6cuMEPpfen0GGNnuc0TcYFRsboIwqEIs5qmQtSX0XFPby9w== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:43Z" + mac: ENC[AES256_GCM,data:IC7xV0FK+4IMLPk4sQRruA98sc5K9MP0WBYl6vxy5a6Iyj635PFdNEPZLQtGOI/U/7JGvrOyjMmGqUVB6GhV55SVW58+1tTXdLKx9hBygiuzMWiv6SoAHdwuUR+faVT3zZDPaoVZOrF7FeVzfBooR8Whj8xT/VFeaildQwfyQys=,iv:cUchFTQ8NEDI86z7FmQiTqy0V+5kGwk5GxaaAxUoLuc=,tag:x//lwUJcE0xVVR41vu+y8g==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/migrations-post.yaml b/manifests/migrations-post.yaml new file mode 100644 index 0000000..2bf0686 --- /dev/null +++ b/manifests/migrations-post.yaml @@ -0,0 +1,187 @@ +# Source: opendesk-migrations/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-migrations-post + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-post + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +--- +# Source: opendesk-migrations/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: opendesk-migrations-post + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-post + app.kubernetes.io/managed-by: Helm +rules: + # + # All Migrations: Allow self management of configmap + # +- apiGroups: [''] + resources: [configmaps] + verbs: [create] +- apiGroups: [''] + resources: [configmaps] + resourceNames: [migrations-status] + verbs: ['*'] + # + # run_2.py + # + # Delete of StatefulSet ox-connector. +- apiGroups: [apps] + resources: [statefulsets] + resourceNames: [ox-connector] + verbs: [delete] + # Delete services ums-keycloak, ums-udm-rest-api +- apiGroups: [''] + resources: [services] + resourceNames: [ums-keycloak, ums-udm-rest-api] + verbs: [delete] + # Delete old "hooked" OX bootstrap job +- apiGroups: [batch] + resources: [jobs] + resourceNames: [opendesk-open-xchange-bootstrap] + verbs: [delete] + # Delete deployment ums-umc-server +- apiGroups: [apps] + resources: [deployments] + resourceNames: [ums-umc-server] + verbs: [delete] + # Execute slacpcat in LDAP Pod +- apiGroups: [''] + resources: [pods/exec] + resourceNames: [ums-ldap-server-0] + verbs: [get, create] + # PVC get (current size of) +- apiGroups: [''] + resources: [persistentvolumeclaims] + resourceNames: [shared-data-ums-ldap-server-0, ox-connector-ox-contexts-ox-connector-0] + verbs: [get] + # Rescaling of LDAP stateful sets before copying the PVC. +- apiGroups: [apps] + resources: [statefulsets/scale] + resourceNames: [ums-ldap-notifier, ums-ldap-server] + verbs: [get, update, patch] + # PVC create [with copy]. +- apiGroups: [''] + resources: [persistentvolumeclaims] + verbs: [create] + # PVC delete that are no longer in use. +- apiGroups: [''] + resources: [persistentvolumeclaims] + resourceNames: [shared-data-ums-ldap-server-0, shared-run-ums-ldap-server-0, ox-connector-appcenter-ox-connector-0, + ox-connector-data-ox-connector-0, ox-connector-ox-contexts-ox-connector-0] + verbs: [delete] + # Restart of Deployments. +- apiGroups: [apps] + resources: [deployments] + resourceNames: [ums-keycloak, opendesk-nextcloud-php, ums-umc-server] + verbs: [update, patch] + # Restart of StatefulSets. +- apiGroups: [apps] + resources: [statefulsets] + resourceNames: [ums-selfservice-listener, opendesk-synapse] + verbs: [update, patch] +--- +# Source: opendesk-migrations/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: opendesk-migrations-post + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-post + app.kubernetes.io/managed-by: Helm +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: opendesk-migrations-post +subjects: +- kind: ServiceAccount + name: opendesk-migrations-post +--- +# Source: opendesk-migrations/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: opendesk-migrations-post-1 + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-post + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation +spec: + ttlSecondsAfterFinished: + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-post + app.kubernetes.io/managed-by: Helm + spec: + restartPolicy: Never + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + serviceAccountName: opendesk-migrations-post + containers: + - name: opendesk-migrations + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations:1.3.18@sha256:d7f13322cc9cc7ab157f926280070850b0dfc6169c93a306ec4c3cf7c21eff69 + imagePullPolicy: IfNotPresent + command: + - /app/odmigs.py + volumeMounts: + - name: environmentdetails-volume + mountPath: /app/etc/ + readOnly: true + resources: + limits: + memory: 256Mi + requests: + cpu: 100m + memory: 128Mi + env: + - name: MIGRATIONS_LOGLEVEL + value: INFO + - name: MIGRATIONS_CLEANUP + value: 'false' + - name: MIGRATIONS_STAGE + value: POST + - name: MIGRATIONS_RUN_ID + value: '2' + - name: MIGRATIONS_NAMESPACE + value: '' + - name: MIGRATIONS_FAIL_ON_UNEXPECTED_STATE + value: 'true' + volumes: + - name: environmentdetails-volume + secret: + secretName: opendesk-migrations-post-environmentdetails diff --git a/manifests/migrations-pre-secrets.yaml b/manifests/migrations-pre-secrets.yaml new file mode 100644 index 0000000..2e610a2 --- /dev/null +++ b/manifests/migrations-pre-secrets.yaml @@ -0,0 +1,36 @@ +# Source: opendesk-migrations/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-migrations-pre-environmentdetails + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-pre + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation +stringData: + environmentDetails.yaml: ENC[AES256_GCM,data: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,iv:ZrC25BKj9QRboyhMmvwFJL+tFcIT23U5ty7T63VuQHM=,tag:F0oWIpT1BVC6e7zW6H3dEQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhZFZOWHkwWVY1aWkzS2tW + NEpMKzlUcms1K2JDb1RhOVdncE8zeUdxdFVNClQvWW9wMHNEYlNUNFNOK3FHVWJQ + WHQ1cTgySEJjejVLci9yR2c4dkV4SWsKLS0tIEdmcy9HTzRhejJ1dWxQUHNNMXJP + dG0rY3kyMHc2ellWRHE2NnpwTndSMGMKHM9CHu/19AhiSBDCky4WgFsb96oEBCzI + RB/yqdNBOhXSq/gYnaBNN88PMgJ3LTZqWZq+auEuaU/TXMxrJWCWxw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:48Z" + mac: ENC[AES256_GCM,data:TeQruTooGkZ49Ythb1ATlK0XhBLnu5ntrbhibD+zn1jl0Xfa+yRS8pvKG2oYSrFsDfJY4s28lZug12WD7tZ+VBEwduZSsKm0+0CV+6WivK1c+u1F1yrXeIV9RueAXSqCPpJ8Vj7ce7pRiUqZSxHFtpMUV6kEbvSue1JeCcUG/yE=,iv:VdbHJfQ+K/uMltQqZ3wX/TuS34FRY/UpozvBypyIdi8=,tag:rY49/brm6KyukIJCZL0Rtg==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/migrations-pre.yaml b/manifests/migrations-pre.yaml new file mode 100644 index 0000000..d5a3d6c --- /dev/null +++ b/manifests/migrations-pre.yaml @@ -0,0 +1,187 @@ +# Source: opendesk-migrations/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-migrations-pre + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-pre + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +--- +# Source: opendesk-migrations/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: opendesk-migrations-pre + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-pre + app.kubernetes.io/managed-by: Helm +rules: + # + # All Migrations: Allow self management of configmap + # +- apiGroups: [''] + resources: [configmaps] + verbs: [create] +- apiGroups: [''] + resources: [configmaps] + resourceNames: [migrations-status] + verbs: ['*'] + # + # run_2.py + # + # Delete of StatefulSet ox-connector. +- apiGroups: [apps] + resources: [statefulsets] + resourceNames: [ox-connector] + verbs: [delete] + # Delete services ums-keycloak, ums-udm-rest-api +- apiGroups: [''] + resources: [services] + resourceNames: [ums-keycloak, ums-udm-rest-api] + verbs: [delete] + # Delete old "hooked" OX bootstrap job +- apiGroups: [batch] + resources: [jobs] + resourceNames: [opendesk-open-xchange-bootstrap] + verbs: [delete] + # Delete deployment ums-umc-server +- apiGroups: [apps] + resources: [deployments] + resourceNames: [ums-umc-server] + verbs: [delete] + # Execute slacpcat in LDAP Pod +- apiGroups: [''] + resources: [pods/exec] + resourceNames: [ums-ldap-server-0] + verbs: [get, create] + # PVC get (current size of) +- apiGroups: [''] + resources: [persistentvolumeclaims] + resourceNames: [shared-data-ums-ldap-server-0, ox-connector-ox-contexts-ox-connector-0] + verbs: [get] + # Rescaling of LDAP stateful sets before copying the PVC. +- apiGroups: [apps] + resources: [statefulsets/scale] + resourceNames: [ums-ldap-notifier, ums-ldap-server] + verbs: [get, update, patch] + # PVC create [with copy]. +- apiGroups: [''] + resources: [persistentvolumeclaims] + verbs: [create] + # PVC delete that are no longer in use. +- apiGroups: [''] + resources: [persistentvolumeclaims] + resourceNames: [shared-data-ums-ldap-server-0, shared-run-ums-ldap-server-0, ox-connector-appcenter-ox-connector-0, + ox-connector-data-ox-connector-0, ox-connector-ox-contexts-ox-connector-0] + verbs: [delete] + # Restart of Deployments. +- apiGroups: [apps] + resources: [deployments] + resourceNames: [ums-keycloak, opendesk-nextcloud-php, ums-umc-server] + verbs: [update, patch] + # Restart of StatefulSets. +- apiGroups: [apps] + resources: [statefulsets] + resourceNames: [ums-selfservice-listener, opendesk-synapse] + verbs: [update, patch] +--- +# Source: opendesk-migrations/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: opendesk-migrations-pre + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-pre + app.kubernetes.io/managed-by: Helm +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: opendesk-migrations-pre +subjects: +- kind: ServiceAccount + name: opendesk-migrations-pre +--- +# Source: opendesk-migrations/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: opendesk-migrations-pre-1 + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-pre + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation +spec: + ttlSecondsAfterFinished: + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.3.5 + app.kubernetes.io/instance: opendesk-migrations-pre + app.kubernetes.io/managed-by: Helm + spec: + restartPolicy: Never + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + serviceAccountName: opendesk-migrations-pre + containers: + - name: opendesk-migrations + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations:1.3.18@sha256:d7f13322cc9cc7ab157f926280070850b0dfc6169c93a306ec4c3cf7c21eff69 + imagePullPolicy: IfNotPresent + command: + - /app/odmigs.py + volumeMounts: + - name: environmentdetails-volume + mountPath: /app/etc/ + readOnly: true + resources: + limits: + memory: 256Mi + requests: + cpu: 100m + memory: 128Mi + env: + - name: MIGRATIONS_LOGLEVEL + value: INFO + - name: MIGRATIONS_CLEANUP + value: 'false' + - name: MIGRATIONS_STAGE + value: PRE + - name: MIGRATIONS_RUN_ID + value: '2' + - name: MIGRATIONS_NAMESPACE + value: '' + - name: MIGRATIONS_FAIL_ON_UNEXPECTED_STATE + value: 'true' + volumes: + - name: environmentdetails-volume + secret: + secretName: opendesk-migrations-pre-environmentdetails diff --git a/manifests/nextcloud-secrets.yaml b/manifests/nextcloud-secrets.yaml new file mode 100644 index 0000000..65d2bd4 --- /dev/null +++ b/manifests/nextcloud-secrets.yaml @@ -0,0 +1,402 @@ +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-management-administrator + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: ENC[AES256_GCM,data:J1KS1VwFGP6l,iv:1dcBTbsIasZvTkqY4Iua6zNtU9+2GViSF4QjIgB/R9E=,tag:sLku/5Qgy7TweUqnSDgLDw==,type:str] + password: ENC[AES256_GCM,data:wu1vcsKopOmc72fa8kV6os2jxb0KkEAL0/e4240KT9hNubSGr+hQ8Q==,iv:J+KGxs+G9DZ46lU4ANo84vt8ERJ7cWyl3kETVIKA9HI=,tag:w8FZUqk84z6oXaZmviSIPQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-management-database + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: ENC[AES256_GCM,data:J6Df5UwqQ+f21m7nlbE=,iv:1nd3UAqV45z4fok0f3y//K+1YTjg26Ph+lPjMxAmPS4=,tag:4EhpHMMHJ8zBF7M9j/5sVA==,type:str] + password: ENC[AES256_GCM,data:f7JRkMSVWlF5OlmCEWHVCY/d5U2JiP+7JQilfeO/Vd6PeLTTG5Tdcw==,iv:6L3elRHFVx+yZeaZ5d+JtwtcDvEJeYBGdmdG7MKmc90=,tag:EOWRZL5cAHYAt9CCZbSwjg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-management-cache + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: ENC[AES256_GCM,data:KMlUYq9nkA==,iv:WaVPWRjI6/9lWEyTpC2xo1oJbfYi6ylmzGKC8fYLZ54=,tag:IzEWxLGxKmYU713Bad6JCA==,type:str] + password: ENC[AES256_GCM,data:mUcOYJqb9BCtOAPjUbX0wTLz0Ef7Swpb08pwhPWXo/zc+IbXGlSAEA==,iv:pr6ZQqbHWrQ0IBTIZ2CW+NRP7NZl1uPFr+6SSML2o50=,tag:7S1Yb9wYBLDJ6FH8n/BVhw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-management-ldap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + password: ENC[AES256_GCM,data:EupqqDin9gS2wn9YnzfLt+JwoYQ+Um1eK3rDW3EKRRSjHzqA58ZO9Q==,iv:ZM5JAASda7QvtboHtFrIu+tDh4rZVoFBQoNIgC4p2Qk=,tag:UvkTXyID5Wo2P0zuxAz/iQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-management-smtp + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: "" + password: "" +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-management-integration + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: ENC[AES256_GCM,data:PB/Iy1EUzyMbcoNj3gdJvAY=,iv:e13lkfnwJ8oKpKxEaJCBUbx9K/2bjtkAtAVvonH+T4c=,tag:Mc60YKrYjIVSavr1ttxEIw==,type:str] + password: ENC[AES256_GCM,data:RHS/JhJihBWHxa/wWUl/a/QrpRlFcrzJTWijKbZcwtLuCCqwB3DtYg==,iv:hteqK11cIHPJTNdzKexKqtFFHzHLz7H3OlolcThY7l8=,tag:uXLSq9OAUkhIl0/m7wDK2Q==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-management-oidc + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: ENC[AES256_GCM,data:GCg3ro0kioOB97eyaWh7/w+f,iv:7hgnRT8GnxfErH7NF71ATWD3fwzSC1bK3L+Ym19G9TY=,tag:azC0iEylu751eY/Y67npxA==,type:str] + password: ENC[AES256_GCM,data:ZvdM813EuMbrBReGvRXMn9oXvX9jvOBtTE2MmEo8iLk8F6wLz/skBg==,iv:REIbhhf62+Xwzp0Uv2m57UfNGP6Q9iIB0T+TNCLHliE=,tag:zqaZJDkE1phzviBT07JSrA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-management-objectstore + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: ENC[AES256_GCM,data:D+YK8ctIR1q/CPLatCs=,iv:lApQmNoV4/kbsGnxC+v1fVIAZx2nCTTL9j8lMH9vjJ8=,tag:n8zUcZVIHUCM1XTTCLIDPQ==,type:str] + password: ENC[AES256_GCM,data:czWWq5h+phZlySrXKlZJ+11qMxDq4xBMSapoZn2rk9apOBwDPJm/fA==,iv:geqi1EqEbtrdlFTaazP4SBD2JeTCJrYtHWr5G0wJe8c=,tag:b0pKUelPjp63w/dXxCMFfA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud/charts/aio/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-aio-database + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud +stringData: + username: ENC[AES256_GCM,data:6ilN29Hzi0wUTRcN30g=,iv:rkxxatE6DHOY487qnRZmWFvrLKSVXyKMWneAOrva1CY=,tag:XhWMGMg05sgvqkX66brSkA==,type:str] + password: ENC[AES256_GCM,data:BfMTvG8ALQJNKX7FqNAZJPpvBgd6zAPmggdFKN/raodheHbYK7DoeA==,iv:qXlMNIz0m8INtl7v6FyX1/2OKw88Y1hA25aY80oLn/M=,tag:KGVNnsCxGdd7EAz1j7yM+Q==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud/charts/aio/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-aio-cache + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud +stringData: + username: ENC[AES256_GCM,data:rJ39jbXHoQ==,iv:S7ZA/Cq+dw6zXkoWt+1LtAe56nYY7+1jZ7tDVzqQyzY=,tag:KlIHzFBs/dNFQYLJuuAEUw==,type:str] + password: ENC[AES256_GCM,data:O5ApoxlpuT5acbI4KsToyc4IKk7TTBfnOrzVqa1iu/NGFNmes3GlMg==,iv:BGapRq9PMHzkSQzh9mzeQBqG2+pGd8eA2rBdaYKr2BA=,tag:0JdnTGflh/MOtmSqqy3pyg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-nextcloud/charts/exporter/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: opendesk-nextcloud-exporter + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm +stringData: + token: ENC[AES256_GCM,data:uZeuGG7KYJeRGj2AwYPTELVjsudpB9yPC5iZstq3iswm08sgMr5s4g==,iv:rhQI58vYD0PVd2OrioQS4KWyDqt0e95kCgp0UQP8lgk=,tag:K0LUSWRP+hSR60+aKU6unw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzMm1xWjZKT2FGaHVwcTh6 + L3psVHIvb256cDlxU3FIRFZZUXNjUU5pQUdBCmZCalE2WFkxZ3NGcEhVZ3Nva3pi + UStTTlYyeSt2OHZnTmtOeHAvejl4SEEKLS0tIHRsVzRGRldLSUtkVTNRZ1hLVnRl + MHorZ2JEdWcxRFZaaTlUMjRQM3hxdjAK0HA5vX+5vXFUtZs2TuehaBA1R36S7dfn + qoiQN+U12rAi5a8GT5D2zJUmHdk+VxGSiBidRmEhnS0g3Tbi4mcSpw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:13:56Z" + mac: ENC[AES256_GCM,data:E5EjaXgl3MhtZ2uPo19IjXOoCTkjFACYrDLQrBmyMArMDX/Lk2DdnKEcswtcLln0pD6/LzPQzEqtKhwEYd92FaEZsshVNft2Bd0vP5Juc2okhEZLcLYeEUGvq+qDhtW56m8XLoC5WF2NG8JrfLh9U9Ul4iW6HHmCORYiy2FJsi0=,iv:z/O5ndthBGSFTmcfxD92T10k3mHJBfomuqmer1ZyPPM=,tag:5Cr+TAFzfOaJbDArWI+Pww==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/nextcloud.yaml b/manifests/nextcloud.yaml new file mode 100644 index 0000000..705dcc7 --- /dev/null +++ b/manifests/nextcloud.yaml @@ -0,0 +1,810 @@ +# Source: opendesk-nextcloud-management/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-nextcloud-management + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +automountServiceAccountToken: false +--- +# Source: opendesk-nextcloud-management/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: opendesk-nextcloud-management-1 + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation +spec: + backoffLimit: 1 + ttlSecondsAfterFinished: 180 + template: + metadata: + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-3.4.1 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + checksum/configmap: acde1e61e095f29a11e2beccf5f9fddf452025a1ba4608d42f0e7733a028b5fd + intents.otterize.com/service-name: opendesk-nextcloud-php + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: opendesk-nextcloud-management + restartPolicy: Never + containers: + - name: init + command: + - /usr/bin/php + - /usr/local/bin/entrypoint/entrypoint.php + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.2.2@sha256:90f8e64ef9156c87dbd9befef99c6e3222f87daa393231d393d728c5b64506ee + imagePullPolicy: IfNotPresent + env: + - name: FS_ENV_SUBSCRIPTION_KEY + value: + - name: FS_ENV_SUBSCRIPTION_DATA + value: + - name: FS_ENV_DEFAULT_QUOTA + value: 1 GB + - name: FS_ENV_RETENTION_OBLIGATION_VERSIONS + value: auto + - name: FS_ENV_RETENTION_OBLIGATION_TRASHBIN + value: auto + - name: FS_ENV_DEV_MODE + value: 'false' + - name: FS_ENV_RUN_MODE + value: init + - name: FS_ENV_LOGLEVEL + value: '2' + - name: FS_ENV_DBTYPE + value: mysql + - name: FS_ENV_DBHOST + value: mariadb + - name: FS_ENV_DBNAME + value: nextcloud + - name: FS_ENV_DBPORT + value: '3306' + - name: FS_ENV_DBUSER + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-database + key: username + - name: FS_ENV_DBPASSWORD + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-database + key: password + - name: FS_ENV_NCADMINNAME + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-administrator + key: username + - name: FS_ENV_NCADMINPASS + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-administrator + key: password + - name: FS_ENV_REDIS_HOST + value: redis-headless + - name: FS_ENV_REDIS_PORT + value: '6379' + - name: FS_ENV_REDIS_TIMEOUT + value: '30' + - name: FS_ENV_REDIS_DBINDEX + value: '4' + - name: FS_ENV_PHP_REDIS_DBINDEX + value: '5' + - name: FS_ENV_REDIS_USER + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-cache + key: username + - name: FS_ENV_REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-cache + key: password + - name: FS_ENV_MAIL_SMTPAUTH + value: 'false' + - name: FS_ENV_MAIL_SMTPMODE + value: smtp + - name: FS_ENV_MAIL_SMTPSECURE + value: '' + - name: FS_ENV_MAIL_SMTPHOST + value: postfix.tn-openbsw-opendesk.svc.cluster.local + - name: FS_ENV_MAIL_SMTPPORT + value: '25' + - name: FS_ENV_MAIL_DOMAIN + value: opendesk.apps.digilab.network + - name: FS_ENV_MAIL_FROM_ADDRESS + value: no-reply + - name: FS_ENV_MAIL_SMTPVERIFYPEER + value: 'true' + - name: FS_ENV_PORTAL_URL + value: https://portal.opendesk.apps.digilab.network + - name: FS_ENV_LOGO_URL + value: + https://portal.opendesk.apps.digilab.network/univention/portal/icons/logos/domain.svg + - name: FS_ENV_WEBMAIL_URL + value: https://webmail.opendesk.apps.digilab.network + - name: FS_ENV_PORTAL_JSON_USERNAME_ATTRIBUTE + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-integration + key: username + - name: FS_ENV_PORTAL_SECRET + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-integration + key: password + - name: FS_ENV_PORTAL_NAVIGATION_JSON_URL + value: https://portal.opendesk.apps.digilab.network/univention/portal/navigation.json + - name: FS_ENV_PORTAL_AUTH_METHOD + value: basic + - name: FS_ENV_PORTAL_MENU_TABNAME + value: target + - name: FS_ENV_OIDC_CLIENT_ID + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-oidc + key: username + - name: FS_ENV_OIDC_CLIENT_SECRET + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-oidc + key: password + - name: FS_ENV_OIDC_DISCOVERY_URI + value: + https://id.opendesk.apps.digilab.network/realms/opendesk/.well-known/openid-configuration + - name: FS_ENV_OIDC_MAPPING_UID + value: opendesk_useruuid + - name: FS_ENV_LDAP + value: + ewogICJsZGFwQWdlbnROYW1lIjogICJ1aWQ9bGRhcHNlYXJjaF9uZXh0Y2xvdWQsY249dXNlcnMsZGM9c3dwLWxkYXAsZGM9aW50ZXJuYWwiLAogICJsZGFwQmFzZSI6ICJkYz1zd3AtbGRhcCxkYz1pbnRlcm5hbCIsCiAgImxkYXBCYXNlR3JvdXBzIjogImRjPXN3cC1sZGFwLGRjPWludGVybmFsIiwKICAibGRhcEJhc2VVc2VycyI6ICJkYz1zd3AtbGRhcCxkYz1pbnRlcm5hbCIsCiAgImxkYXBIb3N0IjogImxkYXA6Ly91bXMtbGRhcC1zZXJ2ZXIiLAogICJsZGFwUG9ydCI6ICIzODkiLAogICJsZGFwQWRtaW5Hcm91cCI6ICJtYW5hZ2VkLWJ5LWF0dHJpYnV0ZS1GaWxlc2hhcmVBZG1pbiIKfQo= + - name: FS_ENV_LDAP_AGENT_PASSWORD + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-ldap + key: password + - name: FS_ENV_ANTIVIRUS_ICAP_HOST + value: clamav-simple + - name: FS_ENV_ANTIVIRUS_ICAP_PORT + value: '1344' + - name: FS_ENV_ANTIVIRUS_ICAP_SERVICE + value: avscan + - name: FS_ENV_ANTIVIRUS_ICAP_HEADER + value: X-Infection-Found + - name: FS_ENV_ANTIVIRUS_ICAP_MODE + value: reqmod + - name: FS_ENV_ANTIVIRUS_ICAP_CHUNK_SIZE + value: '1048576' + - name: FS_ENV_ANTIVIRUS_ACTION + value: delete + - name: FS_ENV_CRYPTPAD_HOST + value: https://pad.opendesk.apps.digilab.network + - name: FS_ENV_MONITORING_TOKEN + value: 98ae85b1fe57df8049c4d082f835c6425ed0ad53 + - name: FS_ENV_OBJECTSTORE_BUCKET + value: nextcloud + - name: FS_ENV_OBJECTSTORE_HOST + value: objectstore.opendesk.apps.digilab.network + - name: FS_ENV_OBJECTSTORE_ACCESS_KEY + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-objectstore + key: username + - name: FS_ENV_OBJECTSTORE_SECRET_KEY + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-management-objectstore + key: password + - name: FS_ENV_OBJECTSTORE_PORT + value: '443' + - name: FS_ENV_OBJECTSTORE_PATH_STYLE + value: 'true' + - name: FS_ENV_OBJECTSTORE_USE_SSL + value: 'true' + - name: FS_ENV_OBJECTSTORE_REGION + value: eu-west-1 + - name: FS_ENV_OBJECTSTORE_STORAGE_CLASS + value: STANDARD + - name: FS_ENV_WOPI_ALLOWLIST + value: 10.0.0.0/8 + - name: FS_ENV_INTERNAL_WOPI_URL + value: https://office.opendesk.apps.digilab.network + - name: FS_ENV_PUBLIC_WOPI_URL + value: https://office.opendesk.apps.digilab.network + - name: FS_ENV_TRUSTED_DOMAINS + value: files.opendesk.apps.digilab.network + - name: FS_ENV_TRUSTED_PROXIES + value: 127.0.0.1 + - name: FS_ENV_THEMING_COLOR + value: '#6af56a' + - name: FS_ENV_NCADMINENABLED + value: 'false' + - name: FS_ENV_SHAREAPI_ALLOW_LINKS + value: 'false' + - name: FS_ENV_SHAREAPI_ALLOW_MAIL_NOTIFICATION + value: 'false' + - name: FS_ENV_SHAREAPI_ALLOW_PUBLIC_UPLOAD + value: 'false' + - name: FS_ENV_SHAREAPI_DEFAULT_INTERNAL_EXPIRE_DATE + value: 'false' + - name: FS_ENV_SHAREAPI_ENFORCE_INTERNAL_EXPIRE_DATE + value: 'false' + - name: FS_ENV_SHAREAPI_INTERNAL_EXPIRE_AFTER_N_DAYS + value: '90' + - name: FS_ENV_SHAREAPI_DEFAULT_EXPIRE_DATE + value: 'true' + - name: FS_ENV_SHAREAPI_ENFORCE_EXPIRE_DATE + value: 'false' + - name: FS_ENV_SHAREAPI_EXPIRE_AFTER_N_DAYS + value: '30' + - name: FS_ENV_SHAREAPI_ENFORCE_LINKS_PASSWORD + value: 'false' + - name: FS_ENV_ENFORCE_PASSWORD_PROTECTION + value: 'false' + - name: FS_ENV_CREATE_OCDATA + value: 'true' + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 512Mi + volumeMounts: + - name: nextcloud-data + mountPath: /var/nextcloud/data + - name: nextcloud-config + mountPath: /var/www/html/config + - name: nextcloud-tmp + mountPath: /tmp + volumes: + - name: nextcloud-data + emptyDir: {} + - name: nextcloud-tmp + emptyDir: {} + - name: nextcloud-config + emptyDir: {} +--- +# Source: opendesk-nextcloud/charts/aio/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-nextcloud-aio + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud +automountServiceAccountToken: false +--- +# Source: opendesk-nextcloud/charts/exporter/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-nextcloud-exporter + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: opendesk-nextcloud/charts/aio/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: opendesk-nextcloud-aio + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + - name: php + port: 9000 + targetPort: php + protocol: TCP + - name: status + port: 8081 + targetPort: status + protocol: TCP + selector: + app.kubernetes.io/name: aio + app.kubernetes.io/instance: opendesk-nextcloud +--- +# Source: opendesk-nextcloud/charts/exporter/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: opendesk-nextcloud-exporter + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: +spec: + type: ClusterIP + ports: + - name: metrics + port: 9205 + targetPort: metrics + protocol: TCP + selector: + app.kubernetes.io/name: exporter + app.kubernetes.io/instance: opendesk-nextcloud +--- +# Source: opendesk-nextcloud/charts/aio/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: opendesk-nextcloud-aio + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: aio + app.kubernetes.io/instance: opendesk-nextcloud + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 20ce1bee6f4077107f59a3803c440d9b3f2172b951ddc4fced90b0819758415a + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: opendesk-nextcloud-aio + containers: + - name: aio + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.2.2@sha256:90f8e64ef9156c87dbd9befef99c6e3222f87daa393231d393d728c5b64506ee + imagePullPolicy: IfNotPresent + env: + - name: FS_ENV_OVERWRITE_PROTOCOL + value: https + - name: FS_ENV_TRUSTED_PROXIES + value: 127.0.0.1 + - name: FS_ENV_RUN_MODE + value: runtime + - name: FS_ENV_DBTYPE + value: mysql + - name: FS_ENV_DBHOST + value: mariadb + - name: FS_ENV_DBNAME + value: nextcloud + - name: FS_ENV_DBPORT + value: '3306' + - name: FS_ENV_DBUSER + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-aio-database + key: username + - name: FS_ENV_DBPASSWORD + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-aio-database + key: password + - name: FS_ENV_REDIS_HOST + value: redis-headless + - name: FS_ENV_REDIS_PORT + value: '6379' + - name: FS_ENV_REDIS_TIMEOUT + value: '30' + - name: FS_ENV_REDIS_DBINDEX + value: '4' + - name: FS_ENV_PHP_REDIS_DBINDEX + value: '5' + - name: FS_ENV_REDIS_USER + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-aio-cache + key: username + - name: FS_ENV_REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-aio-cache + key: password + - name: FS_ENV_CREATE_OCDATA + value: 'true' + - name: FS_ENV_TRUSTED_DOMAINS + value: files.opendesk.apps.digilab.network + livenessProbe: + httpGet: + path: /health + port: 8081 + httpHeaders: + - name: Host + value: localhost + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 2 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: /health + port: 8081 + httpHeaders: + - name: Host + value: localhost + initialDelaySeconds: 1 + periodSeconds: 1 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + startupProbe: + httpGet: + path: /health + port: 8081 + httpHeaders: + - name: Host + value: localhost + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ports: + - name: http + containerPort: 8080 + protocol: TCP + - name: php + containerPort: 9000 + protocol: TCP + - name: status + containerPort: 8081 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 512Mi + volumeMounts: + - name: nextcloud-config + mountPath: /var/www/html/config + - name: nextcloud-data + mountPath: /var/nextcloud/data + - name: nextcloud-tmp + mountPath: /tmp + - name: nginx-config + mountPath: /etc/nginx/conf.d + - name: nginx-tmp + mountPath: /var/cache/nginx/ + - name: run + mountPath: /var/run/ + volumes: + - name: nextcloud-data + emptyDir: {} + - name: nextcloud-tmp + emptyDir: {} + - name: nginx-tmp + emptyDir: {} + - name: run + emptyDir: {} + - name: nextcloud-config + emptyDir: + medium: Memory + sizeLimit: 5Mi + - name: nginx-config + emptyDir: + medium: Memory + sizeLimit: 5Mi +--- +# Source: opendesk-nextcloud/charts/exporter/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: opendesk-nextcloud-exporter + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: exporter + app.kubernetes.io/instance: opendesk-nextcloud + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 614cec74e25da6ae59051a15248ffb9cce958acedb91240f2817fd703e66909a + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 65532 + fsGroupChangePolicy: Always + serviceAccountName: opendesk-nextcloud-exporter + containers: + - name: exporter + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 65532 + runAsNonRoot: true + runAsUser: 65532 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud-exporter:1.0.1@sha256:63e63c7420e37d3989fa0ffdbcf18a07b2a603ab9b2a849c2e7e44342dd82af0 + imagePullPolicy: IfNotPresent + env: + - name: NEXTCLOUD_TIMEOUT + value: 5s + - name: NEXTCLOUD_TLS_SKIP_VERIFY + value: 'false' + - name: NEXTCLOUD_AUTH_TOKEN + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-exporter + key: token + - name: NEXTCLOUD_SERVER + value: http://opendesk-nextcloud-apache2 + livenessProbe: + tcpSocket: + port: 9205 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 2 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + tcpSocket: + port: 9205 + initialDelaySeconds: 1 + periodSeconds: 1 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + startupProbe: + tcpSocket: + port: 9205 + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ports: + - name: metrics + containerPort: 9205 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + volumes: +--- +# Source: opendesk-nextcloud/charts/aio/templates/cron-job.yaml +apiVersion: batch/v1 +kind: CronJob +metadata: + name: opendesk-nextcloud-aio-cron + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud +spec: + schedule: '*/5 * * * *' + concurrencyPolicy: Forbid + successfulJobsHistoryLimit: 0 + failedJobsHistoryLimit: 1 + jobTemplate: + spec: + ttlSecondsAfterFinished: 180 + activeDeadlineSeconds: 600 + template: + metadata: + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + checksum/configmap: 20ce1bee6f4077107f59a3803c440d9b3f2172b951ddc4fced90b0819758415a + intents.otterize.com/service-name: opendesk-nextcloud + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: opendesk-nextcloud-aio + restartPolicy: Never + containers: + - name: cron + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.2.2@sha256:90f8e64ef9156c87dbd9befef99c6e3222f87daa393231d393d728c5b64506ee + command: + - /usr/bin/php + - /usr/local/bin/entrypoint/entrypoint.php + imagePullPolicy: IfNotPresent + env: + - name: FS_ENV_RUN_MODE + value: cron + - name: FS_ENV_DBTYPE + value: mysql + - name: FS_ENV_DBHOST + value: mariadb + - name: FS_ENV_DBNAME + value: nextcloud + - name: FS_ENV_DBPORT + value: '3306' + - name: FS_ENV_DBUSER + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-aio-database + key: username + - name: FS_ENV_DBPASSWORD + valueFrom: + secretKeyRef: + name: opendesk-nextcloud-aio-database + key: password + - name: FS_ENV_CREATE_OCDATA + value: 'true' + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 512Mi + volumeMounts: + - name: nextcloud-config + mountPath: /var/www/html/config + - name: nextcloud-data + mountPath: /var/nextcloud/data + - name: nextcloud-tmp + mountPath: /tmp + volumes: + - name: nextcloud-data + emptyDir: {} + - name: nextcloud-tmp + emptyDir: {} + - name: nextcloud-config + emptyDir: + medium: Memory + sizeLimit: 5Mi +--- +# Source: opendesk-nextcloud/charts/aio/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: opendesk-nextcloud-aio + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-3.4.0 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud + nginx.ingress.kubernetes.io/proxy-body-size: 100M + nginx.ingress.kubernetes.io/proxy-read-timeout: '600' + nginx.ingress.kubernetes.io/proxy-send-timeout: '600' + nginx.org/client-max-body-size: 100M + nginx.org/proxy-read-timeout: 600s + nginx.org/proxy-send-timeout: 600s +spec: + tls: + - hosts: + - files.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: files.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: opendesk-nextcloud-aio + port: + name: http diff --git a/manifests/nubus-secrets.yaml b/manifests/nubus-secrets.yaml new file mode 100644 index 0000000..93cf299 --- /dev/null +++ b/manifests/nubus-secrets.yaml @@ -0,0 +1,2968 @@ +# Source: nubus/charts/nubusLdapServer/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-ldap-server-migration + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +stringData: + 30-purge.sh: ENC[AES256_GCM,data:k5FEcHKLyQsXooAGh4cHpD3Qpb3YYcBsslEEizjUUwAKQFdQjiqooksZybKIhIRx3VvR3/TDqxvClPZ3G3xuS13M2jqreEowtI7Nj3CdMR7Pffn9zlGMsw25gyvXSZgRmcCGOZWwruI7QKuBS7lZEAbg/apSjjNnGHyn0L+pSX3K45IMC1UEsZqZLMZk4wrnVO2XKM68CLoJKic2RXYFa+JTtrMCfVQO2KKOpxMyQuFTmZWq5YBcNK86CeHudBLTJTMm5cKtH2pokwXNGTp3J7Vi+3eizFXRg9A7Yo0oHApc2nK7P6mHO+I8DbpGHrqVPrJXzoHsLbS1ez2sAggiVFpigdj9NEkQN5n7CfkKkcEe7bWeq52Qiem5dl6zPoU1oVlVFbvATPlZEOLQfaHNCiK1FxAERHSNXRNeMKfOTCmgphM=,iv:Tsk/7JX5UqGJ4a/wyL5QoUSqZTI7bRVGBVPRfeKpRZ8=,tag:gm8xZixgkrO8+mPDYYNB1w==,type:str] + 95-slapadd-24-ldif.sh: ENC[AES256_GCM,data:+oQ3c1AvLXTR5k3odOzNmCttJ3IzbpcZY2hvu/ezpqhFZ437FeDVlnyhJ7JW/beKPs5GPni3ltBXPra8QfO6GqPPplAwK6WpHHZru+5BKndJ7/QQbdyBfkM136HkY+k+KrCb6Qk6xSjfvuuYiQ9F1Ga/fxmzqYDWVQOjCMDA+yb4pIFynVlVl1XbewxZCnKOTRmBTmRA/GRTNq0kSwVm5OcOP8F1eBqIyZd6CiBZ1Np0AoxzysG+kL/ZHezm5nvzPd36pVLhHamCXSa0fD+TyAEEaXz+jB+0HedQlWuzQWhJseNbc8awvuKLyxztMnYSuUxfQbsYFfBcB8/+36iTO4kPgbSSHg4WYC+WDUHh1Y/MzkBVsthmRkm3h9vY4UNhq7rrcw2opadChX07w1rA3ba+IBJRGR9V5OcUQMJ9/uPvrjKBb9JUsxqr4dr4Vxio6+jWHvzVdLgRcahQlDZP82hivbCqTC9tBkRMz5uBapbU3Ouml4J2o6IbkLSAm4EB2JtM+9FPU8pDdpKJSvibRAkjHIXxr9yZexYNNmuLzfkIRoiSwGk7vZ6TXJOpfQcGwwt32zdRajtcKx7EHp6DUffqFqUtGNOMi1+dE2VaVMLkzt7uyGZ9XPimbkkX+hYwtSdTXwIocydFc/Ymwl35Fv4YrvlUiBJWV3Ow7fpMxeHsx3GNIt5roAD4pcQu6HXsODBtQpNPSdTVHA2cPv1gOC7dSIiFANsjLB+T1VO97vdVYZ1C9FPF75ADaQePYbtQofxBGcOsCBSfqZCH6BXqDc+5L6LGndIAtEad+LQvsVYXYcwGZEyXs5PP+6nIIyFZHTcgmyknIFuKxoxAXm+sswbSWtdXlhOmP5V9sodWnf+GXX+xQR88azBvnA/ywqc+HG5lLFETapB+TtZvM9pn7sbe5AkkWS0rlvh693ebLDBdej5r7Cyf0hSc5DNGE9YbFs8TATwX4nfuwLViZKq83DQgpFxdO8vUTnkZNUv5FT8Jf+3D+UMcSYMhQNLKzBoCodzhh4kojrkfl9i6PYTULcyNLskfetnYRHn/Bypl3Rx/pBlFDc60TK2A4DixzvDgCHtBeTfyi1Z0PMzHu5r72A6JFIiVk6tAsqww/R5GmGOTh1YmLTzh/zky82kMCX6qGVTouG5SWn3oAhU9l8K/cNwMm/7UDJUzsMwleJFbm+BYE/iVKT3wxG5wyNxWH8IYkqFFLRsgksQdvmzlJ9nuS1zwKi0ANdiY8IX62uVZABIQazlBl6yL4zhBQlsUEOtcJAxwJaLGkBrogLzmNGzJR+S+GnortoNQv8X+80Xz2qtKlPZaDoi0sRV2YGUt4uBEyfbpF+cig+4yxebv21wpMFoQ0Kp7TwAJ1K4FDAx4w0CU88Y=,iv:F0Hh5JbDWJrUX8kGhwikXVx4OYh4ZjRUcr2amOiVydI=,tag:E/rc4WzZlap+AU51hqGWHQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/charts/nubusPortalConsumer/templates/secret.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-portal-consumer-common + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-consumer + helm.sh/chart: nubusPortalConsumer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 +data: + machine_secret: "" + ca_cert: "" + cert_pem: "" +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-stack-data-ums-context + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.73.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded + intents.otterize.com/service-name: ums-stack-data-ums +type: Opaque +stringData: + context.yaml: ENC[AES256_GCM,data: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,iv:zGAvX9xfkJT3RAfLEG1TMzOY2BVt/q48sKjbhhiKZGU=,tag:juNLynWLDksc0yh5IGqNPA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/charts/nubusStackDataUms/templates/secret.yaml +apiVersion: v1 +data: {} +kind: Secret +metadata: + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.73.0 + name: ums-stack-data-ums +stringData: + udm_secret: "" +type: Opaque +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/charts/nubusUdmListener/templates/secret.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-provisioning-listener + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning-listener + helm.sh/chart: nubusUdmListener-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 +data: + ldap_secret: "" + ca_cert: "" +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/charts/nubusUmcServer/templates/secret.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-umc-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + annotations: + intents.otterize.com/service-name: ums-umc-server +stringData: + ldap_secret: null + machine_secret: null + ca_cert: "" + cert_pem: null + private_key: null + db_password: "" + memcached_password: "" + smtp_password: "" +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-opendesk-portal-server-central-navigation + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + authenticator.secret: ENC[AES256_GCM,data:lWdYKOTifzmuA8tiQbRl1yTr9BptyrFTCpsU5KG558fHe7f7V7SNmg==,iv:0bGkIx/V/928Y9A5wpn46sxviZwf8XJYiWvz8jVNIJo=,tag:08Hok1TAsysrAo1Y/fbVsg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-opendesk-guardian-client-secret + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + managementApiClientSecret: ENC[AES256_GCM,data:DZDkqv/68L1+ZdrmpF9+xVNXZ2UhM2cA+siHlVfGcjVsNBxbwjxTIg==,iv:GQrFxRF/E2NccKlfQqH8uDMRBKymJIwz533/U1l3Ar8=,tag:+dD2bnJ8lkUj3Ko7HUSagA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-opendesk-keycloak-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + admin_password: ENC[AES256_GCM,data:8c+lFBAEADu5t44MMlRmNKyS/trVAC2RYu0DH4FBF2ucQnCPc3L0Pg==,iv:4Zwby/eeT52vzN/4dFx06CMueqn8hO1Iy7ILqrfwTZ4=,tag:0NevWXbzImePsHjPpBdtFA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-keycloak-postgresql-opendesk-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + keycloakDatabasePassword: ENC[AES256_GCM,data:pmEMX9dB1U583t5+qEuf/TOHOiMWp3t3xV02UVQVFkIFwKQPC/kZSw==,iv:cyKjculs2Ug5kczfd1s9xNlWolGCiLV6awAawWn7rQM=,tag:cUIiUx60+9nUT4aHISfD2Q==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-guardian-postgresql-opendesk-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + guardianDatabasePassword: ENC[AES256_GCM,data:J3rmdUnNqYf1j2BWjEoPalpFxy5jt7PVBtpT3/i6+aipysxSuS6Y0A==,iv:C0T8USlx30ViM8Qep2bMpQXjVV7EZfPJyrSO/+eHsTE=,tag:beKg78lanON6SrvyA306Gg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-notifications-api-postgresql-opendesk-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:J7HMuitMq47Oe15McixFbwQb2fgnIT27SHUNbKlDSJa7PyLIJkUgbA==,iv:q1Z4i2tPPEzPLzpHMebAOuaSbWDXUlt9UCI6Q8ie84Y=,tag:y1LWiw2Mh8EjjG0Ph1quyQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-umc-server-postgresql-opendesk-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + umcServerDatabasePassword: ENC[AES256_GCM,data:P2WSKY5ryn1rkdPKe7dyWwMnZ1pdyeAd2z2AjZL19p2e7pP5Q7/pCA==,iv:nrVXKxzuQbOTq4HK8kshHAkHyfXLGHApGxvEObSAp50=,tag:3tXEZfhikXtaif5S2i9Uig==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-umc-server-memcached-opendesk-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + umcServerMemcachedPassword: "" +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-keycloak-extensions-postgresql-opendesk-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + umcKeycloakExtensionsDatabasePassword: ENC[AES256_GCM,data:KZF0aJIpxs5Lohc6yz5wKU9yt26gwXSvieyWHvqlD95oJNHQdR1Frg==,iv:QzqmnEkgH/bI+shpH6NEL/voS+tHdsoJ+ObFL5Xuni4=,tag:2ijNtFE857Gt5T+mBuMgpA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-keycloak-extensions-smtp-opendesk-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + umcKeycloakExtensionsSmtpPassword: "" +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-keycloak-bootstrap-ldap-opendesk-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:rQX378+abn5BtjcE3tBTBI4GtH4SXrYEni6tyBsBtgM7aP2YprqVgA==,iv:+sXybHG9NYcmzpsfm0sn5la7Gp8M6dsZMmzBGAm1yzM=,tag:ws1I6zakfdE3weNxxumeQQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-portal-server-minio-opendesk-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + access-key-id: ENC[AES256_GCM,data:k6GobTb1HVk=,iv:r36EAFAppstR6g1IAnhw4dJzb7GuDJ9IL+3q6oujsgU=,tag:/DjcyzGknKfNh+bNpGc3Gw==,type:str] + secret-key-id: ENC[AES256_GCM,data:RbqjcSZUObKFPlbUAZ8PBv7d26c2HI+VQWTPcYXv9ZH50MJPn5O4ww==,iv:lKs+1NV0tMUXaaQFrZKSFEFzt5iJAMo5LVlaUKeCMC4=,tag:y9reRtz4OpfVgaoJzL9ALQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/extraSecrets.yaml +kind: Secret +apiVersion: v1 +metadata: + name: ums-umc-server-smtp-credentials-custom + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "" +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusMinioProvisioningSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: nubus-minio-provisioning + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + 198d210a784f3581c57b60afaf9b6ba9f755dff7: ENC[AES256_GCM,data:V46BDBCdV3BooeQuVv9PSULBWb4QLVi2GE3OQFFtRXUNtumbxSOkTipEQ09jjvJwEYy0eVJNf9F/n2YqscPyS90qkb7Q/gdJMs+Cnho3y0C1/sAAM6nV/nRO3vENvEaq8odDCwHNOxqXoflhNY9cAht3QDhorYCM4O1R7ByjmoF/JBb6MKUwRw1B+f05FRG9QVSupEgX1xfxVO68UGwVOJs=,iv:3q9gEBLcWw5HR4czSs+/cnlAxnUsEVPIscv8hhBxP+0=,tag:8yIGFJc7vvQZIHweSeOklw==,type:str] + 1cc9392939394bfcf858cec5852afa7d528d507b: ENC[AES256_GCM,data:xM+RAnXW1b6oJVnnkF0wYWZReSZphOopToo0sVH6oqmPzk+lwsHiF0Xul+0Er6172rT2PBjoTZ9wbJZxVtkWmFUkiWjRb9RViGbEPTI5r1qEJO0lZc9rUnJorp39B+wQGf/FmIFKCY7B2pOqSYOH3SoGdvGd/5oMZ9h06BdymyiAVAlu3RJ9NxnbyUn4OKEFiPkvW/FcihiJCyMbBzY8uPQ=,iv:eXYWTqf2zm1H08kqabBuEVBOenHtW0OVM7iIXozWVAM=,tag:lO0DE6YlE//zSHysotcoKw==,type:str] + e916843bcfa2f9928c6fc0a57684441beb3cd6b0: ENC[AES256_GCM,data:3BzUJFZoBAnngBs5OAo3n8EYx9VFQzAfE4rCU2CbMr+mvmmnG/wDBcAYGyCTI9DW65uPphRkmRwzN63eUw0I+1w6raCuaaiYyoJcOSGBVFBvjW27Jmw+6q82geXHOkE1nETp51jodAlFs2v3DPakzldwYEgyImogeA5/3QBfuDolozCrJzArOg+GqUBLTGubVYJsJr239zw/WhHJaDqJ7YE=,iv:YPW582HZDQ0dtwpxFClvfXzMX+E5K+7orHyP28LjXJI=,tag:J/dWyhJgK4vnlo0XEVeWQA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-nubus-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + admin_password: ENC[AES256_GCM,data:lf6t6fH85ZoOYtAtQiw9F2PgC2/Jh/LzZytXXdP4xtRfg6V0wpU6Bw==,iv:JTCSzYEqDxkONwGCMPCcKDPFVumlpjGrwKwf4/wAYPw=,tag:TuUKBc8JLxAP7qFHscmmzA==,type:str] + administrator_password: ENC[AES256_GCM,data:sj3UwC6IcIbpM6exmhqDpOMMurywhuNQz8VOZSFceVvxed3MP18dAQ==,iv:ayOFvs5WWJKIEh9GxKKtYV9hLMK5POjS+TgGaYW2cLg=,tag:l4Qe0ccxd8r+SgurVcLSFg==,type:str] + user_password: ENC[AES256_GCM,data:zkGRLx2xE20T8c25LKUPL1gtSTZWwSEXMgTca3+qZbK4/ONG31kMcQ==,iv:60sq03J0kQiXw3e1zdeYhqgqVgOChs+J14HBdF3tScw=,tag:QbN0CfdRZVJQSWhWVRs+/w==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-postgresql-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + admin_password: ENC[AES256_GCM,data:dg5Lg3NT/neh+g6aIfrFKhgVn2qbDIqgkHUHIzfDxwmH3JUqTP21Rg==,iv:Jc4zclCnFF3tebZu2dgwJIHQGiJpxqt+9u/3bmv2OLo=,tag:Kbt+5qk95TckY7uxihEQ5Q==,type:str] + replication_password: ENC[AES256_GCM,data:Mm3tSWShdON4m5kO2bg0DzZj/RLh+WRKU4XiLnBtTO2oi4Uwz/77xQ==,iv:eK+TeiYvkJDl+t8hLvolM0iYHTU+dslljdwEuBq3k90=,tag:UHwkTKRjxqzJRiKfrzjLkw==,type:str] + user_password: ENC[AES256_GCM,data:iRV4Golp5T6RLkp4eEtNFRglFaFCBFDcCUTySGduoRr0Spz8vmcdBQ==,iv:dvizXZu+aYNOY/JmHgZjYKWjbaxkBFo1u04Mu87ydSw=,tag:uRqs0x8bmX1bZbF0PTulWg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-ldap-server-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + adminPassword: ENC[AES256_GCM,data:Ccb7YmsY89glQvMTnUYZBKxOSpqMA2jbgkYGMZl5fT6gx0yTxP666A==,iv:IKi2Flghwz9iLQ7gucO3CCTBY2lm+sjpsHIwT4m2DS0=,tag:jyUDUxkUV9/djO+Li7ZKFA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-keycloak-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + admin_password: ENC[AES256_GCM,data:LeMPMsXB7SISLi+Q2kC8tPIpLKhtzmqLHsmrEraFzwAzGbi6pD1tDA==,iv:rj5G3T9lBr9+9miPjdfNkGd9+33ZGJj4v5Tm4U1owRs=,tag:SnRcjsVX7CNhwOWcGE9b3g==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-minio-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + root-password: ENC[AES256_GCM,data:9CysNPJ/r1r0nPpPzdWTk+SnXMw1Jdr0TVPqJP7LGGShQ0/+webO5Q==,iv:8nrTHUal4DzqutBKA/eN6n3AUsn3Jj3TF7QmzKdbI1Q=,tag:7fCPBdRIiEicFbrLxD7InA==,type:str] + root-user: ENC[AES256_GCM,data:5kodgJE=,iv:XbZtER0bGyrE6Dmw+j7lVoxXsJcLdotaoy3SF8gxRBI=,tag:a+o5ADhbOc4AzbKmdlhnEA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-consumer-minio-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + accessKey: ENC[AES256_GCM,data:9q7NHTL6JaQ=,iv:x89W+DEie/ZXTEkJng3QuhywD30VvCFoJDWJfjv3NBY=,tag:UbkhP5UuxkqmcKWER6L9TQ==,type:str] + secretKey: ENC[AES256_GCM,data:lnQtFJvRW+94RO/pY4KTxQhPWto0V4ik39pq/zku6Kmlz6j6n3/qMw==,iv:8OEcdhu6tn/wh7YGkUdGJMMKf9cGP42YgRvIZFJdkLc=,tag:8/PJ7XkWQ4rK6vSar0+8JA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-listener-minio-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + accessKey: ENC[AES256_GCM,data:tEZtSzBfFWU=,iv:6hx7RIY4oBN5d1H34tKc+99IwxQNIibvzA1hF5XnbrA=,tag:xO7/ucHrK3VBmI1oKul6FA==,type:str] + secretKey: ENC[AES256_GCM,data:f4YzBwsyHagGU96n++6ZnDv8H//76BA5UprywUQDUC05OPXnD1an/g==,iv:rTm6CHR053qrsHbeA/u2EcYvnWomBUiifqmoiENSlfM=,tag:4W9vf17czcRAHl1nVlHq8g==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-server-minio-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + accessKey: ENC[AES256_GCM,data:HFOhcGBDFjUb07iSLajwjB1xmKUiWYASG6lplnJVBYPcIQJOtOrJjA==,iv:SOHol07SVKxoTyuZpzWTkDITfnXRt8qATpa9OLI/Me8=,tag:ItV+ddA82F604U1VKUXj5A==,type:str] + secretKey: ENC[AES256_GCM,data:CjA4xC493x3rwIkqG2iM2Ok4eXr3ruIhKc92uDwK2d/E7uTz7ZHXXg==,iv:F2mZzgMlsQ3U8COC4u6Ts+SQVuVJXniEhWSdo2O1Kbw=,tag:1gvi+FYVlriK/zrSbZRphw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-server-central-navigation-shared-secret + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + authenticator.secret: ENC[AES256_GCM,data:a9+2zB9y4M6qOqJI7OXfYzKjC9P6rXj9m6ZdEiZMd0MXEiaH4YrN8Q==,iv:nBVY8gGbh6/xFpY1Br6NZMO4tP4sdzajTc3L266xL3E=,tag:sxEntT8KcSVpdgJt4tqRKw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-umc-server-postgresql-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:eP4k08ejiIMXnwU5Yo0ap91Y3dF7W4Pnfr/zmX6aLQmYdSdEIPb1oQ==,iv:rREBNQ7rPl35RUjk+5V3S1AM+AWZ9vzl1u/ZXUV8BXM=,tag:IvEYEqSx504KTc86tVWlTA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-notifications-api-postgresql-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:1YE+GBDcbj/wjN1KFVNG5icEkbXsf9vKkRyVFbHLa90EwqEYgegVKA==,iv:UpbcF13WdCnAVaKyh0UXnaZVzWp2uv3UEwNJWCrxKes=,tag:0LfchFlJ+fLlhCIerOduOg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-keycloak-postgresql-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:lZw3fqUX7TZ+A0t7a64In5ju3y248qiBawVO+gl9u122RfLTW0AxhA==,iv:PSK2ylw2TKACvKQuLErdN4Y+FMgGq8qmJ45hBmF51Z8=,tag:wk9gCSTqm/qNemIlNy9gNQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-keycloak-extensions-postgresql-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:Zlgezi9Z0P8wPCGnxC2uEnz6BOTNkE7PkhziPgZYR9CjKWTj/RsMiQ==,iv:ZZWKw0iZZPL630vsho3D8HiYNU7VZGHyQqdOsSRVY1U=,tag:m9C69TcLgkkYiGOVB6WAUg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-keycloak-extensions-keycloak-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:UoqGOQAx9qTJNvbuftrP7ku0A0Mj6OiheJ5ZlatcfgcLG+5CLMMAWQ==,iv:v1PD0TIprpQck5rHwiUOnXb4qTldrA/7DSdic7JSRxU=,tag:Go3qaAukJWfMhs2UMithmw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-keycloak-extensions-smtp-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:LLldg6fzfuY67CwpAkUI7rde+5s12XZ2UrcaTTlF+fuLYIY2cdd4Yw==,iv:5XSHRACrbzSaXkNrt50Uk0OMCQITY+nP6lTahbZqbpA=,tag:XT+zr2ZGBddtqwuEsuU0nA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-keycloak-bootstrap-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:ZrCX5eEAThxdkWX9IJ8YO78i0o175kRtSrsfp3YhYEy6m8XHDifJ4g==,iv:ke4euG/Hl5Tbmim1zJfBA0N1yIcP3E6wsLyotc3hScg=,tag:9hqLxCgIY8YaGJrAAZ4sMg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-keycloak-bootstrap-keycloak-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:2pOWcGFhJXhpMTnT/yCqUUj4HRzBhfywcHJDIufXng7K9O0Et7Y+uA==,iv:EyzaGdyTDsUYAsV+d0rtoQJ3k1hTw+RM+TbkfODSFXE=,tag:xSC7yeG+HOPwiToQWJghPw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-udm-listener-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:LxxA1mUiuR1PYCKzQZ6dYMCM+juMqPI79a2NsLk5v+e3UlMDkFvxmg==,iv:v0rqkQU0uZ0YPOmpT3q1htAEI2IjLSEL18Oj32SDrrU=,tag:M6RULCs8wDmeBDAXHkxIUw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-stack-data-swp-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:UX+6tiTrTUsOxjLfLn26jDHpXl1N/aTBI0G7EH0oEqTO4fgEwrBawQ==,iv:u7sM8uKGtdWc5qBCDWN/9uKjmpXgRh0F9tNELFqHmZI=,tag:kEqBMSsuNQPliWQeOYXbTA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-selfservice-listener-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: ENC[AES256_GCM,data:3g2kV+YjGVv7TTPNubx5aSIg1T1mUd7pXxGamhszoSio2Mn+j/L1nQ==,iv:NZs6UHqABESMlmtKmeaR7d1aquMGVKNJNd6cMSOhqlw=,tag:rs3IMShloNszwgInQtNeBA==,type:str] + machine.secret: ENC[AES256_GCM,data:cTYRL16lGbn9qtcQTUcW93q2jqdt07geR3JHRDc96vQzOE4oltZd1g==,iv:afy7TBRI8sTzpIQoI/ruqST05sjed7DvNd5ECZ1Bh0g=,tag:2r4e+Ac7wQjnNZsiEfK/vw==,type:str] + password: ENC[AES256_GCM,data:bdCKTntM6LRBDaF1KUv76ohBJp8CrY/kovE99mEXNv/dZi2fApbaBg==,iv:l0PABuOgQte6u+89j2A+7i4SEgs8IE38JS0GZn/b+fI=,tag:e229aAYcZoJw5oe3jPfw7g==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-udm-rest-api-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:RQhRkIfEoJDEtztdbzOzAujPiuz2JTshFiXHO1W9sfqARXmCJfcX/A==,iv:uBqabUJg0s8enD7vSNMSaHiByQLXYZzeGXwQR1TM3IY=,tag:81d24I+sShUGN+qSGOWZvA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-self-service-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:OZjQQugMvjmtcLAcNJ+mYvntNhv+5LR63STxg/EzZz7CFke2dhT/4w==,iv:NQ1km8mxojwjtwouIprnSALl43ModVDwiK6IJF+KlnY=,tag:yJ/GVnPaQYQxj9peQIWw0w==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-umc-server-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: ENC[AES256_GCM,data:W6hMXvw0nS9oQcdS8iXfCEg0fJ7Jj0loLuIyDDTDSgk9UnvRnJWZ9w==,iv:gYpKLRT86oVvkGnyk9X5dC4dy1v2rFsU0njLoGenV1Q=,tag:vp5nn38LrzwYRUBSLx5XCA==,type:str] + machine.secret: ENC[AES256_GCM,data:qJqDe5NWJvS5hTS20mjC6eC+OqpujTvencRH76/AfOeRsUlh/jnOBA==,iv:1NVtysiV9LkFzon9VXPVKqMnEJDYM6SZPfEJSE+61IM=,tag:1BuShvZZc1JTsIl7+kiwPw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-stack-data-udm-rest-api-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:Qh+tluTUUw6XCiUma4FXqqZAAh4QvAgMSf1t8smHAUV3ZF9/q48b7A==,iv:DqIKw8UwZ4atFgoFl2euYAaZ7xdPIHKYP+s50J0advM=,tag:3fxdG3zOkDMWoVPrms3ArA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-umc-server-udm-rest-api-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:H8mIinXOoFsd3Ln8b/OmvqniKDz6LiJZnDR4W7bn8SaZcbJIY0Y5vA==,iv:ghIpfGEY7WVW+YjUxIft8lYcWn8JHT74ORJPjoGwdic=,tag:Xxz4ttZTjKPBu29FMHXD7w==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-listener-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: ENC[AES256_GCM,data:Mf3uVWxpe2kVWgC+QYoG/tTyRStcO+FTv9A8AE5QMiScbPijALs1og==,iv:85j6IlbXOJ8cPl63Z+snX1/eKxJ2xSCwT4RxY+reaK8=,tag:lMRaR2hjCLRmVDPjZCP1pw==,type:str] + machine.secret: ENC[AES256_GCM,data:bLl3LAkPSgHIiOn7LdGKXhJS4w0RMlTjDnrodMm0y4kCa+VL4NAIWA==,iv:oiXaiRMzQaY5BVWn0noPCRjkbZ2Sh+RZj7HHYiTtSgM=,tag:dmzb5pFBBPEum36Vo8pE7Q==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-consumer-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: ENC[AES256_GCM,data:UHLEILNfj+oWFILDhbAXRQC5K9trkHMvZPAsyzegZEBbt5Q8mbmkKA==,iv:ini2/r9doHqEG5ywAR47pIoo3ADckYYjWaXOC+baG0M=,tag:e3uqlLQciR08VtKtqcGqZQ==,type:str] + machine.secret: ENC[AES256_GCM,data:wU6jmf97y6erhv3t2UAsbKefut67SHXW/ynobw2ng62H1KFYE7r8RA==,iv:C1myDBupYK7+2oM3UpzORpSJQtv38/3dddsc0581Hxo=,tag:VvR+w78HqLmexUf/lI0rNQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-udm-listener-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: ENC[AES256_GCM,data:TPKUt8jaiaWIsAG7YDlHYxULmW4KkmhfRewtlf6eGp/Yy1a3VNCItw==,iv:N5biUMpiobl3D9lLE8l23buELWOnpwMpzaOP0pjpX/c=,tag:6kBLk/afhR0WgzoiT2VVeQ==,type:str] + machine.secret: ENC[AES256_GCM,data:JOM2YtsngZXGSy6k2dI++ivyHpm/FNxlF09BrpWt+YUHwBgKL2g7GA==,iv:4+Nmatop3ALvheFvrWFU8HxpPSMqKxD3U8LFdoNHoZ0=,tag:VLglloeHJUE8k7QkYnjnKw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-listener-udm-rest-api-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:5lCY41j7dQhyruHJKwHPK1T/5LZ/+gr8+4koufpMUJ7p7P/UhJm3Gw==,iv:n32IQS5+mXJug9FRp/mQ5lYES7YUR8nCk0iijJing5U=,tag:UR18RL6j0zOamNMBRLdDGA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-consumer-udm-rest-api-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:9gY4vYBXFFJUYyNZ4m95fzBM4hULRTHqVumv8btm8y/R3vgIBJIlcA==,iv:dL24nrba/uijSl1I5//bAGFAWttwbAvdIYWi7AfmVl4=,tag:aItVA3lPCMChG98mh3ggZA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-readonly-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:Az4X49WlmKR5S825A5SIsHfSMHLBxbP2LsXejItVkXiQQXfiWP+2gw==,iv:iPZw6GGhsGMqnDEuN3G+axHwlzsVwz7ucFbT23FO7nk=,tag:l/6nSSaTGmXeO0PwVDkkkQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-events-and-consumer-api-nats-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:f7d/FI6+4uogcu0/BJ/R3h34LReGgm97ChgJhoE9AWBzlB/5KJUmuA==,iv:y/iNW1D0r+xUilgItX/4D+LowTzS/6DRm2HNgIPjWhI=,tag:mMJxc9yE4jGwR9GEpD4t1g==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-dispatcher-nats-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:IH1zVYNaXHcLZiWXQuyBnhah01AoA2kaToFa9cLdqWBPcfMBe91hWA==,iv:CUU+gCk9tWwo53qOI4qEruMzIKafVSXqoKiwP92ltYw=,tag:AmAu1+VuFFf6QECQaZ7l5A==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-prefill-nats-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:tO583uUB+EYapJg/KyN0+bDjMr7rcQxeTzh2tGkZB3680bNfgH39Mg==,iv:GSmxhNPr3S6rAd2uRmMimDI8a7RotqjLGpTlk79m+bc=,tag:w8VLAcV1Hpk79lIWmk+7SQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-udm-transformer-nats-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + NATS_PASSWORD: ENC[AES256_GCM,data:cwgFGZS2loYnuDivPQefcLyp7QfhvuoiCggTz8SpF60496a1skNgBg==,iv:WlmELxpbQ2Njj5tMT11JprKIPcwjFo7nnjgK63shpkE=,tag:4aXOInd+xBHOw1DK9iAxXQ==,type:str] + NATS_USER: ENC[AES256_GCM,data:ldtIKcxP4L+4KlJHV2c=,iv:n6snAlNpDyhGdwE79gPE/bnKkDZ1UE6mQcgUz2s+6yE=,tag:d98XG6qH9AySsQwBslcv2A==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-udm-transformer-api-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + EVENTS_PASSWORD_UDM: ENC[AES256_GCM,data:6djIhvYjtmAmYNshgheBNAx6i/q8QrH4+Lg8P+veyG4yheTHYakHjA==,iv:m353AEG28Dmaaw/p5R0Tm0fiX7sGjcr+rHTcSQEDDuQ=,tag:UjxD6ZeCC3wzaBaQqOLocQ==,type:str] + EVENTS_USERNAME_UDM: ENC[AES256_GCM,data:Z8HQ,iv:mHZrvHE9jANW7pusBQP+vttngp875hAHg6paJV3b1hI=,tag:DKNUdFKLzR7FeCDdMmDUQg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-udm-transformer-ldap-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + LDAP_BIND_PW: ENC[AES256_GCM,data:nor82JuOtjZTTmobPIwVTM5EeWOWNSxp6PslGgPnd47zbO9hjKMQWA==,iv:APpPQJQJcKk9Xl9UZtspm6LGhP5/xFtq0+21tyo/gNI=,tag:uJB6yL0Y1NeMn8otHgALrg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-selfservice-listener-nats-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:CSibEDNQ+0eJGpgnjEW/sYWkM5AkmTmvS8AQgpWbgZDgliTK5vg2SA==,iv:zHFrmZSwQFZqT43S7DJx3UK6ulq1ft7JwdtjEBTz1fM=,tag:EWqXHz+n/tMbQevUtQ/qDQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-udm-rest-api-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: ENC[AES256_GCM,data:ljntHdM+H78FdIOh+lIxc8gC7dOa9DYswAvWA9/fopt7ddvR5P7Vcg==,iv:dGq8Rgrb2sM5p9Ul3bjSfp8S/uFFRzsl+uvpkC4ajxo=,tag:niQ2N4i7l93OFqCBNhGetQ==,type:str] + machine.secret: ENC[AES256_GCM,data:/qeaIg/mIhG6uifIH+g/BGKPWFMzzeFH104QZsh4EM852haOjbnAxw==,iv:H2Q1bJD2VYMDEnuAAy6vDLvw0mopmqUsW6tUZiJTr+M=,tag:GOKmkELTmFcWfDKZ6WdM6A==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-umc-server-memcached-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + memcached-password: ENC[AES256_GCM,data:xZxyjAX3j2XyaiAqABp+A1l1l9Lz4VwtPtAeCJNwH67nRuFVP4UQ/Q==,iv:LGZ01YRYdaCbX/SJnUzlUQm0DGe/0qWUp8VnHLSc5P8=,tag:URFJVcDp8T/qA/oE0Xc4IA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-umc-server-smtp-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:PwDknZtxHz6WvRZF89KBe/cdiWRCEDD9yGbgNFtG+jYuSQuDQ7HsQw==,iv:1r0i8lGRqLWvnpy6nPziQtLoAsKTYefOOmL3XsncA9Q=,tag:iJNQc7U/KlFIMHKaZzsAmw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-umc-server-ldap-tls + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ca.crt: null + tls.crt: null + tls.key: null +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-listener-ldap-tls + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ca.crt: null + tls.crt: null + tls.key: null +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-consumer-ldap-tls + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ca.crt: null + tls.crt: null + tls.key: null +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-udm-listener-ldap-tls + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ca.crt: null + tls.crt: null + tls.key: null +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-selfservice-listener-ldap-tls + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ca.crt: null + tls.crt: null + tls.key: null +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-nats-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + admin_password: ENC[AES256_GCM,data:96al5+NeNFDCOya0U0CsjJGJ1WkvkJUcPapI0fcQPlQNVSqbNiJCYQ==,iv:v6quqtJycI42pB1OFLYur/sBBTtsDGGIzz+Oai27Rac=,tag:K/q2rJVcunnzKFkP893zvQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-api-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ADMIN_NATS_PASSWORD: ENC[AES256_GCM,data:6gNbIgQgtfuz1PVZQmp5+gfzLzOF6YIju7icHbUEiBRAWSBRv85ZhQ==,iv:FRsiX7McfomSQttySeDam62v5lNJAXIUFeZTpl8vdOA=,tag:lwbiZiypvQK5sYkBKdAyrg==,type:str] + ADMIN_NATS_USER: ENC[AES256_GCM,data:8/eU/gU=,iv:yOO+BMqnzQkRPTeh1UWdRpPJqm2EK4fRpDEnQ/mg+04=,tag:tDu5N8fEkWej5K7Af8MWEg==,type:str] + ADMIN_PASSWORD: ENC[AES256_GCM,data:ZsRx0P3tBuemXjsMLkIHHi3ckO3ZTIlrNsKD1qSYnqDxALkxlPRc0Q==,iv:Ml3mA9hZ+K6T6w0HS4eqbn9fS1r4aOSIz8uKLlD0XhE=,tag:k60gW6/gEQoc2G+Umpjyaw==,type:str] + ADMIN_USERNAME: ENC[AES256_GCM,data:0EnK7fg=,iv:a5RHqKvijMotFljboxnbfYmRngQl13RLR+UyIo+ZrMQ=,tag:Zl1vQPTw5qZaOY/Ve/gS9A==,type:str] + EVENTS_PASSWORD_UDM: ENC[AES256_GCM,data:NRa9ydUQugQxhMxEjLbDBgFWNsR7DpQqFXDQIXLtVGLmDWgPILpF4Q==,iv:MSBqCYGjt/91347H7PHRPr8nOTVGkMPccfDvKAKJftQ=,tag:bV2kh7vAxx3VLexkOcE+lw==,type:str] + EVENTS_USERNAME_UDM: ENC[AES256_GCM,data:UMZQ,iv:E8YAmAJjifqccWIM68Do0BfIupMb8lTqE62hvuIf6v4=,tag:WWbm4JsNDnolH89XduoIPg==,type:str] + NATS_PASSWORD: ENC[AES256_GCM,data:eBVOurOuTDz7aeTYXK9ChQD3wN7z4GGARMPZkgBYt7GSIv3yNwgMbA==,iv:B3Ud4VkwD99tqPVg5WJK/J3WCt2AFMO/SkmHAcA2O7k=,tag:Lqnje6c5eH6XMr98tbBoDg==,type:str] + NATS_USER: ENC[AES256_GCM,data://je,iv:r4EFd/vYo8cVQxSxsVfgetFBdMC7kSeIDegAZZv4qRs=,tag:qPPHOnPTIJ0X71VG+6mp6Q==,type:str] + PREFILL_PASSWORD: ENC[AES256_GCM,data:1DImecy4qnZskbt+lltRvrRq7pBZybwHWNWzCb7gNDJqV6/Kl0nxfw==,iv:mkDkHjiS98+3VHi04SZYN2R0rtcB9vmytWq1vS46ihg=,tag:9Hts4LxzyNaQHwgJEUJqAQ==,type:str] + PREFILL_USERNAME: ENC[AES256_GCM,data:aFIjx048rQ==,iv:bO5l7NXnZaxEdtfxCzfN5D8sKjtNqTh1zaNs3HUiHrk=,tag:cRyvyUXndNwcOhwJwFoTbg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-dispatcher-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + NATS_PASSWORD: ENC[AES256_GCM,data:j8bM9U60Q4+qIXnw5ihsqNl/yM5qKl3QuqJQTAoViaWqJ/m4fC7JNg==,iv:sP5TvLx3ymO/NVnbxNPp//XdSS73gadRvO6zn5HYWkI=,tag:95ruWSVHd+cdyMOy/ym9+Q==,type:str] + NATS_USER: ENC[AES256_GCM,data:bniRG7TRX2q37g==,iv:MfdrmThmOneBuQWwXH9stBkohfjh2bb1NlTcnGhgr4Q=,tag:rrQziV+aHeUTKNcD8nGZbA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-prefill-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + NATS_PASSWORD: ENC[AES256_GCM,data:3tZYB3cKfvlwogWjwhe3IhlrWrfBtYtgR7yLgdZuJ5H+SX7o5l+HKw==,iv:CVG0RyhJ+4Wrsge8TTbPMgf9bTnZL7HOHnPhJkkdDQI=,tag:yP7X6FaVcx35T7WlI73ynw==,type:str] + NATS_USER: ENC[AES256_GCM,data:QmtNqdInsA==,iv:W74EhKoqeUYTXOqkcQ9Y3TAKQLmjPSyBbVTQJSdOvxI=,tag:/D5iqng5z5wWAmPDi8GyvQ==,type:str] + PREFILL_PASSWORD: ENC[AES256_GCM,data:+XXf+E14mT+Qz6i2Lf44GSlZqGZDWq68QOoGD/YRrMyqfiyqy+AfOQ==,iv:Ndb1QWDB2gboxDs2h0f9KEkaMw9snl7kOZmV0ou33A8=,tag:7lZ+PdEoH8W2jm2ZD6MjXg==,type:str] + PREFILL_USERNAME: ENC[AES256_GCM,data:l/mepDAZKg==,iv:/g+wb/mg68zZTtbbRoalJJBI7+EiNxJKhcjGutWTPU8=,tag:fWnRwmFtyVj/gB417up36A==,type:str] + UDM_PASSWORD: ENC[AES256_GCM,data:BIenxy0wbQ0WVHQXJEsCHVN5Jf8FGthiNQU49WSeBqneHE4aY3jW/g==,iv:pm6DLLIi1G6pyjgA8gFeD4rEbpiiWGSa2Kwh+HBUNG4=,tag:hbwGJTscvGoI5SirKvFpAQ==,type:str] + UDM_USERNAME: ENC[AES256_GCM,data:2GuNkG3M3uk=,iv:r4W7ujnjcWfytcdMnOQWtiILPYPMWgvwCm7FTEn6uMI=,tag:X/tvpzmtEf3e5IxXd1b7Ow==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-udm-listener-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + EVENTS_PASSWORD_UDM: ENC[AES256_GCM,data:SlaR87nX2KZt/quA0k4u7bpoufPolPuv9g0p+e8XF2ClILFss1U4YA==,iv:yvbB10jYofoI+BUqrVwLVQeaah1wM76qhu8PLHABMuA=,tag:P/HTO7MxyF0AmyLCryrBOQ==,type:str] + EVENTS_USERNAME_UDM: ENC[AES256_GCM,data:Ks4x,iv:cyf7OGvyP43tuRCwPOWj898akNQg15lyEPSYIKeL6nk=,tag:6cM8rxiYTYyERvtEugNanQ==,type:str] + NATS_PASSWORD: ENC[AES256_GCM,data:/QVVJxynp/u7br4J0279IrqfVOj6rQFcHjUrWnj2nmgPwzeFmiRVE3os8MM=,iv:zp3L9GK3Xh0tRV5xldh+9ofpt28iC/hYDZjXQZl/9kM=,tag:ePZ0uIO5AAx1Y3M8bOEalg==,type:str] + NATS_USER: ENC[AES256_GCM,data:WHMkyZOPdLj/qn0=,iv:bMmGVCCEnr7F3hcoaYGvqTnKGji5X2vlO+LIVb8Aq2Y=,tag:XQoR87eAb4lHsH08HixHuA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-udm-transformer-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + EVENTS_PASSWORD_UDM: ENC[AES256_GCM,data:fEmnCmsrJrVQ+LAY3+Dx+HhjMLpfLKS4h6fd2iK39/UHF1DPjDGRUw==,iv:H/KzVqfjpENPcPrQjs8ODHfyx1Gvz7+7B5pUSJquYUM=,tag:VklNnIafvtmpLuBbPdBIBw==,type:str] + EVENTS_USERNAME_UDM: ENC[AES256_GCM,data:LP2C,iv:eidYD8XcTC4lvkKIsMVkUKE26mAKOHlF+iJKG8ZDNTw=,tag:JsiGP11QaYMlbqnWJL2FuQ==,type:str] + NATS_PASSWORD: ENC[AES256_GCM,data:rW8qwFl4rBHQc6oTRHtpawMZbM+DtM3MG+f7KtF3vyqwHKHW/npztg==,iv:g6UCWQnOM703xWtpvdN+dm598+zihZN9E6+XqhIRbsU=,tag:jY3j0WqguDHagbm3z7zjsQ==,type:str] + NATS_USER: ENC[AES256_GCM,data:hcyiL8S8Ddcq5ip+/X4=,iv:O2XlE+izzqkwj68wO8ztyLw3ds47T8O4nE80SAhKEtY=,tag:gI65hdr4TnBIWH/1uTf4Ww==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-register-consumers-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ADMIN_PASSWORD: ENC[AES256_GCM,data:474TTKgj8pdwFIr3z+aKTwpGbI+5Bsq+dRHR2VRd6rQ6JxnzW3qrSA==,iv:746Qt7Bpwf0eDLabE6WRqFB4QS63NZQDQNrqODYjpDw=,tag:BqODHD5uIJNapc6Tq9WQQA==,type:str] + ADMIN_USERNAME: ENC[AES256_GCM,data:a5LuwkM=,iv:y0ZNbxLFz0Us7ZTAxXOBGe4P5fmTDhqmmDTIxt9ssgw=,tag:ctACdxBjcqS40cjGIZTn5w==,type:str] + UDM_PASSWORD: ENC[AES256_GCM,data:3oXoyNCrH3aZkbfE0koAD6XYltKw+RFNzkkUaLQg6ZVPjjWMscpupA==,iv:HBVtwNpsdPAoz5GsuzOccZT3UJoSvmVVw4+exby5Bro=,tag:WBha6muPGX2qkLFJZzTWVw==,type:str] + UDM_USERNAME: ENC[AES256_GCM,data:Hf736XfaGPU=,iv:6clELM19vB14aPoyEKH6x70mv77mzPv38KnVCfvehUE=,tag:4UAtcOA2hAz34OJNCKC3Kw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-selfservice-listener-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + NATS_PASSWORD: ENC[AES256_GCM,data:PzIQfU6ZUSWp5YeWFdB9xrTCD6V2kkxZCfA2MD3SgFjBLyqnLliLQQ==,iv:CCw46Naaa+d+VnY9UIfgY5B7LtEZfCDFiXZexls8OPc=,tag:nS0ptw8g1D/IqJC9DadJ1Q==,type:str] + NATS_USER: ENC[AES256_GCM,data:OHlvDRpvxvZpJg8=,iv:/cDCQWo+oqs9cXrdADs46o/24YrtzC8j9r+qGMLqUTs=,tag:vd5asTTtqZrvrCTqeE0Log==,type:str] + PROVISIONING_API_PASSWORD: ENC[AES256_GCM,data:OTr1OziA2sROv8aGsxQ8697XQ+gEgwY6X2EFvM5R0EX+qj4XFOEUMQ==,iv:PFpmLKyLxvxA48Lx5x+19zmHtB+mqPnYCw8APPeJV/0=,tag:Cp2CiaHRiasBax3jh/Cvtw==,type:str] + UMC_ADMIN_PASSWORD: ENC[AES256_GCM,data:Sfvxl9SYDq0pZMB8ItL6dSWjgKG+jtrVQ9/Sl6XWAlwLXVC7icUlXg==,iv:24l4BCC3D+mnTjYegVQdsgaLsKW+A7jJxWO8hgk8F0c=,tag:5NKJ/amId54eoRmghTCGEQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-portal-consumer-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + PROVISIONING_API_PASSWORD: ENC[AES256_GCM,data:86EqtyKtfPeAExydMLlnzMH5owKWBT960IpJ1dP2b4YASSwMLTd5UQ==,iv:tiueI19gwJy0KLL+0aEsLNvxqJtdlJME4J9crXI0Zho=,tag:v659q7sPC92buH8vxE3Egw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-provisioning-register-consumers-json-secrets + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ox-connector.json: ENC[AES256_GCM,data:sGHAbF9TGzAQuH6x9Ae5awL4UEizBZYgSkKoubhp/pG/bjhWF6p2Fd8qz2YSTW8cng2K4IvwFvbSC11dMZ5DYdc4EcWkEJXzr6kpuh/0Y5rhC4fWEcW1UiOg+ttJCqdu7Pljwr41yBIn+JgbZBstkp9gnr0D8AtqM86pDR5gp+DJwTKTQA87HbEjVwpN/+XbQhFLxzhWsQXSMDlRop80GvBkDrW1Gkb/2tqBOFsEG2uh68hbfgcuLeTm1M4HA/f13sT9qHQlajH+V4SB5XWRBiN+44MefSfvgbM/WbM8eh38ItbFtT3P16cdK5jtDp9xQJ5kfaeSstiWoOQk9uA7mQcGQ4dP2EzluewMy/PzqB3zbBP9SKhVDxT8CxEQZ5/TSx+ZpD6kH+lX0b53O4ipyvvENA5hQx5W0ld6GCT/Lu9GkF3/aEKpz7FmbfV9Zuw44/SZ/tReUYdf8jpuQbpWxMJg8BoP+KjKW8YF1gTucwrJltckdx/VvtwYeeM3I71zhiyBJx06HVyT3h9/NE4JEFB633TnAT20DctMvhGuLADp4w==,iv:1dbsR2S5n7wr+h9nLFaKSRtXApFyCFZR28T/Ij0x9WI=,tag:cCcVUdR/CfkHX2feMhkzRw==,type:str] + portal-consumer.json: ENC[AES256_GCM,data:5sqs+sz4veK6sq13P1otDZ6ehw/s2EDUNc1QbdC2mVegUwNUU24lN5xVjUaKQ9tq+CCxJVpX2D4XhcdaYsTqHpoG3TNbbaUKPdZgg63aS7xwzal0eOObOOboEjOfGvoPost3f6wjroCS/sxXbVSoykTzhyw4mwGkqYipeiRuZn+kic/DKBMcL1yvmo2YVaSU/0iqubb057ajPUmO6ARzwQsYuKgdPqStEmvvFvpbmgO6hmWN3jVqi6++3w8O/wp7wlKuEwJ6MLq06MqQiP9MPEiS3YtHGd8Xk7WU3SkjOfhguqRGkI20Nd3PipoUcDRFePEoqQdcjdQPsILlsMpblo5LgPV57fCYaRxgNbxkUJyzMQVaeN9++cKupEh3Axk2Tjt8jbPNnJPFnMjNyg8vffi3k1j94OkuEm+dDs2W/8TihRAudES1jT/f/6CCDnPqHOvCFEQ03vbpzxiIG4iPgj453NZ8M9W1xXoDWuMum6tgGd0FjW15hFNKlXOVTzVpoi1nAL2BNiuK051SXD6xMbeWRdSI,iv:8gZ4aaOh9XVYTJLaPRfSeQoT3UuItJDL4DZLrxOaPAI=,tag:SsYNNZtG7uGbbzr76LmzBA==,type:str] + selfservice.json: ENC[AES256_GCM,data:DriTEqMuFNb/glUImsV4931cqbLUbwbwUWyFr5JsZ0P+AJm5HBCYjZlJ5X+iJiPjoUrAX5l3wZs8CXQAaU79f8/kjKb/yckFPs7MDFkflUGzpo20IjL2JOF4I8WOruJirxF5LeVRfPsYJ2r3G2odtVvK49h6ZEynS8jhdi3Z0E4sWJad+EuwD0AUDK1KEi7DAjKEPvmGyNn7zAHz/hmdMwQrxAyx9g==,iv:EV4iIGyEwZiW+UT4wH9bQskcQo1vv+0k3A7jJITMp7M=,tag:wCOJhKPHqdZN7gr/NuF4bg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-guardian-keycloak-client-secret + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + oauthAdapterM2mSecret: ENC[AES256_GCM,data:ny/CdpzRhBw/37y26zVHnmzseSiVP6VAFF+6xnOWkgtgzC4125bSuQ==,iv:MRlvGi+9ROZ34nFW77l9H30gXl7QdpCD07cYLd/pB44=,tag:85J4iMCP28XKFjiegba3Ig==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-guardian-udm-secret + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + udmDataAdapterPassword: ENC[AES256_GCM,data:H/mizc9TFDPfAwxc6ErdY6pqIXf8cIaHLxJFbGWSsW0TmMjLdRXaUg==,iv:W3s4yENg+0YfXcI1P47lJ2g39kGAFkdZdOfZomiMD2Y=,tag:zwlClY6XimAawdvXJypHQw==,type:str] + udmDataAdapterUsername: ENC[AES256_GCM,data:1cbSotDEulg=,iv:Dla/3Mk/sM+5oenRC0iCpzNe38aOesrCe/VCz4WU9k0=,tag:YCVL1N05phPCeTBzwx7LeA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-guardian-provisioning-secret + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + adminPassword: ENC[AES256_GCM,data:8RTmh+FPuTiF3hhm59+4yqgZUI1ypum8g2shfLkAqkuNyoWoe9wNog==,iv:CAAPu/7nMxG5HGXQsSbFicIXCUB7gvKPfpFJNrg3K28=,tag:w7Q3lmzzDyif3MCai0mcEg==,type:str] + managementApiClientSecret: ENC[AES256_GCM,data:kSUvnzrkBXFfuwee9g1/QuqXN0lci2J5Nj41YHfJHKi6/NoaFO9duQ==,iv:Bq6asG6rS0yLku7tLdifSsxQmzllVmclVQunrRJtNHw=,tag:85tNzskteGWj5EgF+Se/vg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: ums-guardian-management-api-postgresql-credentials + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: ENC[AES256_GCM,data:6KMlqM4pU3X7QZ+w9WBpMXjJ52RFSx3o05SeZMh3m+5dTFvrnPAiRw==,iv:zIDnDRbBQvkesUunZ1BfPkCysXYFjEikOyqHrmLIzxE=,tag:0LTL7ybkAc10l88AAyVYJA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: intercom-service/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: intercom-service + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.4.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "1.4" +type: Opaque +stringData: + SECRET: ENC[AES256_GCM,data:ZDaEoHLNJDRD5eOivxr2KIPwhyZvAuI4Prx41a2co1RzVEcfyZHYxA==,iv:YmMhixKI058EskrngnQugjGKKBEEbBWRU/Mmj/yREiA=,tag:IgDBa0DEzHpGpcTmO2zoRQ==,type:str] + INTERCOM_URL: ENC[AES256_GCM,data:HXqCpU+GVOw2voWYESeYb+A6rbc8QaaQT7bfroYaN8DVZOiDtr2Xk10=,iv:CulEsdwYYXzlOWJ4GjyAy3b4vLbbYZTruA+twKufit8=,tag:9DtK9K/9IkyrahgjaJpqPQ==,type:str] + BASE_URL: ENC[AES256_GCM,data:5PkOvXz0WjBvL+cCfbmwOmdWcWVTcLza06bNIZ/C3qQSM0beyH7Zp3Y=,iv:VAr80SCtkhvXfkUQK3gENQVP+VvLqcM3E2cxmYKeCzE=,tag:GIyYWvf8vqpEZHHbDc30UA==,type:str] + PORT: ENC[AES256_GCM,data:vCNqaA==,iv:1vZZ8T6u9e5XdQ6Ka/vrTIIcFg1OViblykRDMHJaQUc=,tag:Ig3n4/6vtxfqGBNRGPkpUw==,type:str] + PROXY: ENC[AES256_GCM,data:0cqLxvU=,iv:mQJkdzssYayjXNubHUWJuXUTJIr9GT3DdCo4Kjj9hZA=,tag:QWvsjZqTLTZzA+Jws0Rx8g==,type:str] + LOG_LEVEL: ENC[AES256_GCM,data:JwrbHto=,iv:kPw2eb840aoLAR1O0sqysZ2jpIPOk8fAq2m9BY1PVes=,tag:RlTAHCoCvMwTHgN2tWLzcA==,type:str] + ORIGIN_REGEX: ENC[AES256_GCM,data:bv1IJQNRkoV3be9W8UeFFu3X2HmL3KITI7zGK6I=,iv:LVPQa/joT+FiZD9bOgAjQvUV0bxT5+jxUIKeNXmQaqs=,tag:WewdjjsMFZVlG06tln4L6Q==,type:str] + USER_UNIQUE_MAPPER: ENC[AES256_GCM,data:sajBYNoYp4rXNXNzURSh,iv:6MNx8G+MCLawZpx+LY3hJZPTPOH4QfN2YnzZgBp2MBI=,tag:WAPBc3Depkn+v5DTTbr6sQ==,type:str] + #ENC[AES256_GCM,data:AFBAi6pX61Ky,iv:F/lQLcIMLnYEMV0Fm+MSZeGgL4tzGnnWKLoq+OtHemo=,tag:YsQqXHMMU+E5L9yHWYxy+g==,type:comment] + ISSUER_BASE_URL: ENC[AES256_GCM,data:rqGITcVZL3jgCkVUQ0PYS/ZAp97Ek8K5aW8OanYpdHmGZHlTNoxlBugRIgzXXLnUQjHoIsF3vWY=,iv:mKSZiyxQ0i7RFr1wf69aqKZBP+z+6IgmRhDInBtMoBk=,tag:SwQkHjTf0eZyhf3g/ssYxQ==,type:str] + KEYCLOAK_URL: ENC[AES256_GCM,data:G5lbI/s5oigJRsafkHpa/7CdxZyPTvA7ARiwsH1kFQJW56rjrolxGA==,iv:IgLDjjvEw4lW4ZTTAvra+2L1tOm30DZJHXC1y0X69pg=,tag:LLeVyyoyD/4/Mp1NvVSjWA==,type:str] + REALM_NAME: ENC[AES256_GCM,data:k6xUE3ryd2c=,iv:8kKOFbf9gOUlGsHYm3Jdet5AQYpVIPSgDDnOXok7Bj8=,tag:d3FYJPYamfDNH9vPOKAqVQ==,type:str] + #ENC[AES256_GCM,data:wQZ+90Vpl/g=,iv:iBXZfSi2YsdBnguWR0oX0dYo9BCTuxqmPb3ocNN2iUk=,tag:qldte/WimUp6QQidjyoh8A==,type:comment] + NORDECK_MODE: ENC[AES256_GCM,data:RglAyA==,iv:XWXL6UJ7HWItp7CP4GqVYaZeiu2F0zQnOzfkUvApQtU=,tag:k7tvK3LpgDG1chPQEIs8kg==,type:str] + NORDECK_URL: ENC[AES256_GCM,data:tnUFlAlAmWqS0UR+1FVpgoaOenL3730PMgP0eqEVelV6k5TEfAgkS2gt/t90RLCCcngqdHNufv69zlA=,iv:sewwtmDApTf+e6i0Rh9itx8EF5y0Iz7H1ONlRqeoi20=,tag:fWSdGM1O2NbreiVBl2lNFw==,type:str] + #ENC[AES256_GCM,data:0L6aBTTbFA==,iv:zVmKefrZBuAY8EiZ6y+EQMcFgpd2WEzZadB01zqjqbc=,tag:bbwNxlEi2iXX0RGstViL8g==,type:comment] + MATRIX_URL: ENC[AES256_GCM,data:fqCA0lekU+a4gPfElV+9+emU2kD7QRxSYNNYJxKpIlDlC32HggdgfbxFjQA=,iv:i5VcCZNXJ6eLP5bGaqxKo4+mP18+u6xVADIkEsNad0A=,tag:w4kiKkSpPIDZg7DyedNRew==,type:str] + MATRIX_SERVER_NAME: ENC[AES256_GCM,data:9h6GWt//QLX5vMwgUAFS8c8NnORL6mXdCWuIJYjG82qIw9OI,iv:9z9VFpA2vKUmbwicrGonU1w2F47qPf8wBwk998d1zjQ=,tag:wGiMOkHxeYhHyzCcKCN35g==,type:str] + MATRIX_AS_SECRET: ENC[AES256_GCM,data:+UNl/5qf4Ii18LkLJ+teHFQvdfUvUHfdaS4B2Pyi//9jvtsY/r59Mg==,iv:SAfSUzIQYF3Sg0esBDuf7ewibMqhd4KPbmsSZaRXPE4=,tag:DSK0jFEEdTaXijeP6GIsIQ==,type:str] + #ENC[AES256_GCM,data:fRUl/kauoQL2zg==,iv:OL8092TKYqWCu41uW8fu6Nm6LgQIqZeONekDkvChfco=,tag:Tm9ASYI2phuEQxvHtR+HLw==,type:comment] + NC_ORIGIN: ENC[AES256_GCM,data:84+8kKaE4eYsKpAeTjRghtKHpa42srCuqmetwMeMz5xRzeTN50WZg47B+g==,iv:Gs8gOHZftHrHEDJVFvb67xCTbCNL1vDhJ5OWYq2OHRE=,tag:iceI1KxW0dklpKhMrYIEOQ==,type:str] + NC_URL: ENC[AES256_GCM,data:4tdDrDM+A+9EhIBgKNuCFdjxjeb4o+d0WZmYYzvmcy3KqZMgWSHFTIEt8Q==,iv:6rZknwDgKGa+wyMU3F7VPWBor8APlgG0YcCf1UZi9Og=,tag:0Z66i376U14AIEKNuIdAIg==,type:str] + NC_AUDIENCE: ENC[AES256_GCM,data:8SwSL4WDII4sPb+aZef5gTVL,iv:NMi7HnVA1NnMr+WFpzD1huO+c3Gq1BgR9aKybljehuo=,tag:YiCeBsAEMSyi9/CtxcI8lQ==,type:str] + #ENC[AES256_GCM,data:fcFNqhTsz1tiKn3l,iv:+yphvZfVzHCf5pUS9TDQsMcz9zcTeESr0umyTKqmK8U=,tag:rGYkVk7eQE6GNRpOiW2MZg==,type:comment] + OX_ORIGIN: ENC[AES256_GCM,data:KR+umc6G2H5Gl94fISdg95dIBbnofBDJG+Xk+3a2Y8lfa0fEECKuW4qwfdX8,iv:SIWo+A4zBwu0fIwoWcLJymFotpjWtC93uuIohKtOLOQ=,tag:CAEiZv+n5Kw+rsRtptvGkg==,type:str] + OX_AUDIENCE: ENC[AES256_GCM,data:Ba3rehqO0CMT/DBr96/3Q5VTAg==,iv:g1tNQU/vyRKGJS77XgEtLOMujvkdDQPRxK3Xk2VkZgk=,tag:sIxbovuROIzfQ6GbqbFf9w==,type:str] + #ENC[AES256_GCM,data:9niayw==,iv:9fOKDCNwWmVQcUG/FJlaJ/BBwjbLYubUjzv0PhibJhg=,tag:4QMKNpvJOo0a1dFTMtvZ9A==,type:comment] + PORTAL_URL: ENC[AES256_GCM,data:a827QsC4MlHmvUelVptEii8sAYEiEFrwOD2HKnIDa8ZXt7PAKQEMkRAD/74=,iv:0R5iTpY47ScYeiLMuzj7YuBiCGwwSoM9zgdNyKx4Jh0=,tag:9QhSTtElZJGYrLPOLPNnNw==,type:str] + PORTAL_API_KEY: ENC[AES256_GCM,data:O2lUZSUAZ86QQCWY8/L3PtClWxHtxkvWGKvzUyapSJrvv0xKK4ntRA==,iv:Mq4iWSAIm8KZ1GzOCl0tisQ5LdwoSPM2qmymDhz4lJM=,tag:IJJOr+czmFzmmabfwykUZA==,type:str] + #ENC[AES256_GCM,data:tg0CO2Qi,iv:KGPOUA4ilaHu4zZVy6oC7WEAuVUTFyQusjdvmqLjVlE=,tag:YmFeTXgKVeaVWXCocE9bcg==,type:comment] + REDIS_HOST: ENC[AES256_GCM,data:IWSze9qKXJjFPFnX2b0=,iv:WhBUNJxTey15bLdsG1gV36H5fz25Ro+wvNUAPDKjt88=,tag:lCHxzaJs5/13qidTUqGGug==,type:str] + REDIS_PORT: ENC[AES256_GCM,data:Z3gw4A==,iv:bb60mXPQ68M9Jfl4ccRKQgNnPSzuwsz3biXR5M4eVGQ=,tag:SzUf7+T7u6mYjTnXyuhBDw==,type:str] + REDIS_PASSWORD: ENC[AES256_GCM,data:2GxJw35dqQYSHYbv+WveUUPqc1O7Z/PI5ALNKoZdyi8+ts8S7Pw6Mw==,iv:nT46SzPf27MgnU4VG/LOdy2SrMGVffd4iIrJGYibJho=,tag:n4U2mfEwghIPE2VBI9FAWQ==,type:str] + #ENC[AES256_GCM,data:dC3HF/I=,iv:8+t5o173xDk+jV+vUGYww8MfBL6HSojGQeh/r2vVG4k=,tag:jlvBPT+pnG6cXS69r8W85g==,type:comment] + CLIENT_ID: ENC[AES256_GCM,data:bCHvxVKPQfRY6yPk6WY9n7s=,iv:dWxK/De9EkTCXQwijIX73hyRFfPuXL2cUOrC8a6yAwY=,tag:upWRmM2vE4jpofG5dpR30Q==,type:str] + CLIENT_SECRET: ENC[AES256_GCM,data:2N4bucpD7ojomaz0Yhfyyb3pMMpgmWkRhVEfLFIgQkGsocg0zKMu0Q==,iv:9QB8zjYH3Q/ZxmX2s9Bvh+QD96dR2NqzHls8ueLiBGI=,tag:rY5i/xRRICycT9HBbt1wjw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: opendesk-keycloak-bootstrap/templates/secrect.yaml +kind: Secret +apiVersion: v1 +metadata: + name: opendesk-keycloak-bootstrap + labels: + app.kubernetes.io/name: opendesk-keycloak-bootstrap + helm.sh/chart: opendesk-keycloak-bootstrap-2.1.3 + app.kubernetes.io/instance: opendesk-keycloak-bootstrap + app.kubernetes.io/managed-by: Helm +stringData: + values.yaml: ENC[AES256_GCM,data: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,iv:F6sxr45FhTjCGTx5Pszj++FjzfwrLKljLWTab6GpDh8=,tag:0OomSo1pscEEqXIM7oXorw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsMlhnSngrOEFyMTl5clhH + UTZqKzFpM0x0Nmhmb1g5VUZ2UFdTbEdwendrCnA3QlhmMENySHgzbW1Pc2FLUnhk + dFVQRGdrR2NxNHJvNkVxKzZoZjl3bVUKLS0tIEdqbi84Rm1oMEVacVhUUkFsQ0V0 + enFvdVBLZ1IvUEdlSE45VHB6S3BUeHcKzrfx+X/Qw+hU8TbV9P4cJKkQcShcQI7v + fFfq5P6GopcHe+L8Hrnc2+2LhAgKjVhw9KQp7uEgTufhjTgN7QpcyQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:06Z" + mac: ENC[AES256_GCM,data:p8/KAgc1VTJ16inZV1h+bFpGcjnqTUZyPiqbiNfIFMf+AbVvdXVocY/j2YGsEug9EjLMnXbcZcqWxew24eUS3kuS9a3OrnU5Vnr2F6RNBbBFnXxdafd29fb2X9Qb+iFAUUvfgcJBq+eHiDZ49aOBpnrVfr+F+cwalnnWuDU3NgE=,iv:W2kS3pp/u27Lbf4lbc6llYw5ejnzi5ZeuJgY+iWdDPU=,tag:VSuQHkXsPTdIzOqfGPjaXA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/nubus.yaml b/manifests/nubus.yaml new file mode 100644 index 0000000..d0bcb40 --- /dev/null +++ b/manifests/nubus.yaml @@ -0,0 +1,11293 @@ +# Source: nubus/charts/keycloak/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-keycloak + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: keycloak + helm.sh/chart: keycloak-0.5.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusKeycloakBootstrap/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-keycloak-bootstrap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.3.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 0.0.1 + annotations: + intended.usage: compliance +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/serviceaccount-handler.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-keycloak-extensions-handler + labels: + app.kubernetes.io/name: keycloak-extensions + helm.sh/chart: nubusKeycloakExtensions-0.11.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 21.0.1 + annotations: +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/serviceaccount-proxy.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-keycloak-extensions-proxy + labels: + app.kubernetes.io/name: keycloak-extensions + helm.sh/chart: nubusKeycloakExtensions-0.11.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 21.0.1 + annotations: +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusLdapServer/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-ldap-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusNotificationsApi/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-notifications-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: notifications-api + helm.sh/chart: nubusNotificationsApi-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-notifications-api +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusPortalFrontend/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-portal-frontend + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-frontend +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusPortalServer/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-portal-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-server +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusProvisioning/charts/nats/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-provisioning-nats + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.1.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-provisioning-nats +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusProvisioning/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-provisioning + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusSelfServiceConsumer/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-selfservice-listener + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: selfservice-listener + helm.sh/chart: nubusSelfServiceConsumer-0.11.3 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 0.0.1 + annotations: +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusUdmListener/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-provisioning-listener + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning-listener + helm.sh/chart: nubusUdmListener-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusUdmRestApi/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-udm-rest-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.25.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.7 + annotations: + intended.usage: compliance + intents.otterize.com/service-name: ums-udm-rest-api +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusUmcGateway/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-umc-gateway + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-gateway + helm.sh/chart: nubusUmcGateway-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + annotations: +automountServiceAccountToken: false +--- +# Source: nubus/charts/nubusUmcServer/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-umc-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + annotations: + intents.otterize.com/service-name: ums-umc-server +automountServiceAccountToken: false +--- +# Source: nubus/charts/keycloak/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ums-keycloak + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak + helm.sh/chart: keycloak-0.5.2 +data: + KEYCLOAK_PASSWORD_CHANGE_ENDPOINT: portal.opendesk.apps.digilab.network + KC_LOG_LEVEL: INFO + KC_HOSTNAME: https://id.opendesk.apps.digilab.network + KC_PROXY: edge + KC_DB: postgres + # https://www.keycloak.org/server/caching + KC_CACHE: ispn + # https://www.keycloak.org/server/caching#_available_transport_stacks + KC_CACHE_STACK: kubernetes + KC_METRICS_ENABLED: 'true' + KC_HOSTNAME_BACKCHANNEL_DYNAMIC: 'true' + + KC_DB_URL_HOST: postgresql + KC_DB_URL_PORT: '5432' + KC_DB_USERNAME: keycloak_user + KC_DB_URL_DATABASE: keycloak + + UNIVENTION_THEME: https://portal.opendesk.apps.digilab.network/univention/theme.css + UNIVENTION_CUSTOM_THEME: https://portal.opendesk.apps.digilab.network/univention/portal/css/custom.css + UNIVENTION_FAVICON: https://portal.opendesk.apps.digilab.network/favicon.ico + + CACHE_OWNERS_COUNT: '1' + CACHE_OWNERS_AUTH_SESSIONS_COUNT: '1' + # Needed for the headless service + PROXY_ADDRESS_FORWARDING: 'true' + JAVA_OPTS_APPEND: -Djgroups.dns.query=ums-keycloak.tn-openbsw-opendesk.svc.cluster.local +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-authorization-api.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ums-guardian-authorization-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.14.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 2.0.0 + +data: + HOME: /guardian_service_dir + GUARDIAN__AUTHZ__CORS__ALLOWED_ORIGINS: '*' + GUARDIAN__AUTHZ__ADAPTER__SETTINGS_PORT: env + GUARDIAN__AUTHZ__ADAPTER__PERSISTENCE_PORT: udm_data + GUARDIAN__AUTHZ__ADAPTER__POLICY_PORT: opa + GUARDIAN__AUTHZ__ADAPTER__AUTHENTICATION_PORT: fast_api_oauth + IS_UNIVENTION_APPCENTER: '0' + UDM_DATA_ADAPTER__URL: http://ums-udm-rest-api/udm/ + UDM_DATA_ADAPTER__USERNAME_FILE: /var/secrets/udmDataAdapterUsername + UDM_DATA_ADAPTER__PASSWORD_FILE: /var/secrets/udmDataAdapterPassword + OPA_ADAPTER__URL: http://ums-guardian-open-policy-agent/ + GUARDIAN__AUTHZ__LOGGING__LEVEL: INFO + GUARDIAN__AUTHZ__LOGGING__STRUCTURED: 'true' + GUARDIAN__AUTHZ__LOGGING__FORMAT: {time:YYYY-MM-DD HH:mm:ss.SSS ZZ} + | {level} | {message} | {extra} + OAUTH_ADAPTER__WELL_KNOWN_URL: http://ums-keycloak:8080/realms/opendesk/.well-known/openid-configuration + +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-init-management-ui.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ums-guardian-init-config-management-ui + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.14.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 2.0.0 + +data: + 10-generate_config.sh: | + #!/bin/bash + + set -eo pipefail + + env_variable_names=$(compgen -e) + config='{}' + + for variable_name in $env_variable_names; do + if [[ "$variable_name" == VITE__* ]]; then + config=$(echo "$config" | jq --arg value "${!variable_name}" ".$variable_name = \$value") + fi + done + echo "$config" > /app/config.json +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-init-management-ui.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ums-guardian-nginx-conf + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.14.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 2.0.0 + +data: + nginx.conf: | + server { + listen 8383; + server_name management-ui; + root /app; + location /univention/guardian/management-ui { + alias /app/; + try_files $uri /index.html; + } + + location /univention/guardian/management-ui/favicon.ico { + alias /app/favicon.ico; + try_files $uri =404; + } + location /univention/guardian/management-ui/config.json { + alias /app/config.json; + try_files $uri =404; + } + + location /univention/guardian/management-ui/assets/ { + alias /app/assets/; + try_files $uri =404; + } + } +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-management-api.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ums-guardian-management-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.14.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 2.0.0 + +data: + HOME: /guardian_service_dir + GUARDIAN__MANAGEMENT__CORS__ALLOWED_ORIGINS: '*' + GUARDIAN__MANAGEMENT__ADAPTER__SETTINGS_PORT: env + GUARDIAN__MANAGEMENT__ADAPTER__APP_PERSISTENCE_PORT: sql + GUARDIAN__MANAGEMENT__ADAPTER__CONDITION_PERSISTENCE_PORT: sql + GUARDIAN__MANAGEMENT__ADAPTER__CONTEXT_PERSISTENCE_PORT: sql + GUARDIAN__MANAGEMENT__ADAPTER__NAMESPACE_PERSISTENCE_PORT: sql + GUARDIAN__MANAGEMENT__ADAPTER__PERMISSION_PERSISTENCE_PORT: sql + GUARDIAN__MANAGEMENT__ADAPTER__ROLE_PERSISTENCE_PORT: sql + GUARDIAN__MANAGEMENT__ADAPTER__CAPABILITY_PERSISTENCE_PORT: sql + GUARDIAN__MANAGEMENT__ADAPTER__AUTHENTICATION_PORT: fast_api_oauth + GUARDIAN__MANAGEMENT__ADAPTER__AUTHORIZATION_API_URL: http://ums-guardian-authorization-api/guardian/authorization + GUARDIAN__MANAGEMENT__ADAPTER__RESOURCE_AUTHORIZATION_PORT: guardian + # NOTE: Seems to be only used during stopping the containers for univention-app command + # We can probably drop it, since it is used on some bash termiation script + IS_UNIVENTION_APPCENTER: '0' + OAUTH_ADAPTER__WELL_KNOWN_URL: http://ums-keycloak:8080/realms/opendesk/.well-known/openid-configuration + OAUTH_ADAPTER__M2M_SECRET_FILE: /var/secrets/oauthAdapterM2mSecret + GUARDIAN__MANAGEMENT__LOGGING__LEVEL: DEBUG + GUARDIAN__MANAGEMENT__LOGGING__STRUCTURED: 'true' + GUARDIAN__MANAGEMENT__LOGGING__FORMAT: {time:YYYY-MM-DD HH:mm:ss.SSS ZZ} + | {level} | {message} | {extra} + GUARDIAN__MANAGEMENT__BASE_URL: https://portal.opendesk.apps.digilab.network + SQL_PERSISTENCE_ADAPTER__DIALECT: postgresql + SQL_PERSISTENCE_ADAPTER__HOST: postgresql + SQL_PERSISTENCE_ADAPTER__PORT: '5432' + SQL_PERSISTENCE_ADAPTER__USERNAME: guardianmanagementapi_user + SQL_PERSISTENCE_ADAPTER__DB_NAME: guardianmanagementapi + +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-management-ui.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ums-guardian-management-ui + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.14.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 2.0.0 + +data: + VITE__MANAGEMENT_UI__ADAPTER__AUTHENTICATION_PORT: keycloak + VITE__MANAGEMENT_UI__ADAPTER__DATA_PORT: api + VITE__API_DATA_ADAPTER__URI: https://portal.opendesk.apps.digilab.network/guardian/management + VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__SSO_URI: https://id.opendesk.apps.digilab.network + VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__REALM: opendesk + VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__CLIENT_ID: guardian-ui + +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-open-policy-agent.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ums-guardian-open-policy-agent + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.14.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 2.0.0 + +data: + IS_UNIVENTION_APPCENTER: '0' + OPA_DATA_BUNDLE: bundles/GuardianDataBundle.tar.gz + OPA_POLICY_BUNDLE: bundles/GuardianPolicyBundle.tar.gz + OPA_POLLING_MIN_DELAY: '10' + OPA_POLLING_MAX_DELAY: '15' + OPA_GUARDIAN_MANAGEMENT_URL: http://ums-guardian-management-api/guardian/management +--- +# Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-keycloak-bootstrap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.3.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 0.0.1 + annotations: + argocd.argoproj.io/hook: Sync +data: + DEBUG: 'false' + DOMAIN: opendesk.apps.digilab.network + SUBDOMAIN_PORTAL: portal + KEYCLOAK_USERNAME: kcadmin + KEYCLOAK_HOST: ums-keycloak + KEYCLOAK_REALM: opendesk + KEYCLOAK_URL: http://ums-keycloak:8080 + UNIVENTION_KEYCLOAK_BOOTSTRAP_TEMP_DIR: /tmp + UNIVENTION_KEYCLOAK_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START: '0' + LDAP_BASE_DN: dc=swp-ldap,dc=internal + LDAP_BIND_DN: uid=ldapsearch_keycloak,cn=users,dc=swp-ldap,dc=internal + LDAP_URI: ldap://ums-ldap-server:389 + SAML_SERVICE_PROVIDER_HOSTNAME: portal.opendesk.apps.digilab.network +--- +# Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-keycloak-bootstrap-bootstrap-data + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.3.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 0.0.1 + annotations: + argocd.argoproj.io/hook: Sync +data: + ldap.mappers.yaml: |2 + + - ldapAndUserModelAttributeName: opendeskProjectmanagementAdmin + - ldapAndUserModelAttributeName: oxContextIDNum + loginlinks.yaml: |2 + + - link_number: 1 + language: "de" + description: "Passwort vergessen?" + href: "https://portal.opendesk.apps.digilab.network/univention/portal/#/selfservice/passwordforgotten" + - link_number: 1 + language: "en" + description: "Forgot password?" + href: "https://portal.opendesk.apps.digilab.network/univention/portal/#/selfservice/passwordforgotten" + + 2fa.yaml: |2 + + enabled: true + group: 2fa-users +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-handler.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ums-keycloak-extensions-handler + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak-extensions-handler + app.kubernetes.io/version: 21.0.1 + helm.sh/chart: nubusKeycloakExtensions-0.11.0 +data: + KC_AUTH_URL: http://ums-keycloak:8080/admin + KC_USER: kcadmin + KC_REALM: opendesk + KC_USER_REALM: master + POSTGRES_HOST: postgresql + POSTGRES_PORT: '5432' + POSTGRES_USER: keycloak_extensions_user + POSTGRES_DATABASE_NAME: keycloak_extensions + LOG_LEVEL: WARN + FAILED_ATTEMPTS_FOR_IP_BLOCK: '7' + FAILED_ATTEMPTS_FOR_DEVICE_BLOCK: '5' + FAILED_ATTEMPTS_FOR_CAPTCHA_TRIGGER: '3' + EVENTS_RETENTION_PERIOD: '1' + AUTO_EXPIRE_RULE_IN_MINS: '1' + DEVICE_PROTECTION_ENABLE: 'True' + IP_PROTECTION_ENABLE: 'True' + CAPTCHA_PROTECTION_ENABLE: 'False' + NEW_DEVICE_LOGIN_NOTIFICATION_ENABLE: 'True' + NEW_DEVICE_LOGIN_SUBJECT: New device login on your MijnBureau account + SMTP_HOST: postfix.tn-openbsw-opendesk.svc.cluster.local + SMTP_PORT: '25' + SMTP_USERNAME: '' + SMTP_AUTH_ENABLED: 'false' + SMTP_SSL_ENABLED: 'false' + SMTP_STARTTLS_ENABLED: 'false' + MAIL_FROM: no-reply@opendesk.apps.digilab.network + +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-proxy.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ums-keycloak-extensions-proxy + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak-extensions-proxy + app.kubernetes.io/version: 21.0.1 + helm.sh/chart: nubusKeycloakExtensions-0.11.0 +data: + KEYCLOAK_URL: http://ums-keycloak:8080 + KC_AUTH_URL: http://ums-keycloak:8080/admin + KC_USER: kcadmin + KC_REALM: opendesk + KC_USER_REALM: master + POSTGRES_HOST: postgresql + POSTGRES_PORT: '5432' + POSTGRES_USER: keycloak_extensions_user + POSTGRES_DATABASE_NAME: keycloak_extensions + CAPTCHA_SITE_KEY: '' + CAPTCHA_SECRET_KEY: '' + LOG_LEVEL: info +--- +# Source: nubus/charts/nubusLdapNotifier/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-notifier + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-notifier + helm.sh/chart: nubusLdapNotifier-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 14.0.4 +data: + ENVIRONMENT: production + LDAP_SERVER_UID: '101' + LDAP_SERVER_GID: '102' +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-primary + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + PRIMARY_LDAP_URI: ldap://ums-ldap-server-primary + PRIMARY_SERVICE: ums-ldap-server-primary + LDAP_BASEDN: dc=swp-ldap,dc=internal + SYNC_USER_DN: cn=admin,dc=swp-ldap,dc=internal + ADMIN_DN: cn=admin,dc=swp-ldap,dc=internal + LDAP_PORT: '389' + LDAP_PROTOCOL: ldap + REPLICACOUNT: '1' + ENABLE_SOCKET_OVERLAY: 'false' +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-primary-scripts + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + append-slapd.conf.sh: | + #!/usr/bin/env bash + set -euxo pipefail + env | sort + # Export the SERVERID + export SERVERID=$(echo "${HOSTNAME}" | awk -F '-' '{print $(NF)+1}') + + # Determine the PRIMARY_LDAP_URI based on the trailing digit of the HOSTNAME + trailing_digit=$(echo "${HOSTNAME}" | awk -F '-' '{print $(NF)}') + replicacount="${REPLICACOUNT}" + + if [[ "${replicacount}" -eq 2 ]]; then + if [[ "${trailing_digit}" -eq 0 ]]; then + export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-1.${PRIMARY_SERVICE}:${LDAP_PORT}" + else + export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-0.${PRIMARY_SERVICE}:${LDAP_PORT}" + fi + else + if [[ "${trailing_digit}" -eq 0 ]]; then + export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-$((replicacount - 1)).${PRIMARY_SERVICE}:${LDAP_PORT}" + elif [[ "${trailing_digit}" -eq $((replicacount - 1)) ]]; then + export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-0.${PRIMARY_SERVICE}:${LDAP_PORT}" + else + export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-$((trailing_digit - 1)).${PRIMARY_SERVICE}:${LDAP_PORT}" + fi + fi + + # Read the slapd.conf.tpl file + template=$(cat /config/templates/slapd.conf.tpl) + + # Replace placeholders with environment variable values using sed and eval + while IFS=$'\n' read -r line; do + # Skip empty lines + if [[ -z "${line}" ]]; then + continue + fi + + # Get the leading spaces from the line + leading_spaces=$(echo "${line}" | sed -n 's/^\(\s*\).*/\1/p') + + # Evaluate the line to expand any environment variables + evaluated_line=$(eval echo "${line}") + + # Prepend the leading spaces to the evaluated line + evaluated_line="${leading_spaces}${evaluated_line}" + + # Escape special characters in the line + escaped_line=$(echo "${line}" | sed 's|[\/&]|\\&|g; s|\.|\\.|g; s|\+|\\+|g; s|\=|\\=|g') + + # Replace the line in the template with the evaluated line, preserving indentation + template=$(echo "${template}" | sed "s|^${escaped_line}|${evaluated_line}|") + done < <(echo "${template}") + + # Read the existing slapd.conf file + slapd_conf=$(cat /etc/ldap/slapd.conf) + + # Initialize an empty modified slapd.conf file + modified_slapd_conf="serverID 2${SERVERID}\n" + + # Initialize the replication ID counter + replication_id=1 + + # Initialize the suffix variable + suffix="" + + # Process the slapd.conf file line by line + while IFS=$'\n' read -r line; do + # Append the current line to the modified slapd.conf + modified_slapd_conf+="${line}\n" + + # Check if the current line starts with "modulepath" and append the moduleload for back_sock.so + if [[ "${line}" =~ ^modulepath ]] && [[ "${ENABLE_SOCKET_OVERLAY}" == "true" ]]; then + modified_slapd_conf+="moduleload back_sock.so\n" + line="moduleload back_ldap.so\n" + fi + + # Check if the current line starts with "suffix" + if [[ "${line}" =~ ^suffix ]]; then + # Extract the suffix value + suffix=$(echo "${line}" | awk '{print $2}' | tr -d '"') + fi + + # The ucs based slapd.conf does not allow for networked admin access to cn=internal, this adds it. + # Check if the current line contains 'by sockname="PATH=/var/run/slapd/ldapi" write', if true, append the acl. + if ([[ "${suffix}" == "cn=internal" ]] || [[ "${suffix}" == "cn=translog" ]]) && echo "${line}" | grep -q '^[[:space:]]*by sockname="PATH=/var/run/slapd/ldapi" write'; then + echo "The suffix is ${suffix} and this line contains the socket acl." + echo "Line: ${line}" + # Append the syncrepl configuration to the modified slapd.conf + modified_slapd_conf+=" by dn=\"cn=admin,${LDAP_BASEDN}\" write\n" + fi + + # The ucs based slapd.conf does not allow for networked admin access to cn=internal and does not specify a rootdn, this adds both. + # Check if the current line contains 'cn=translog', if true, append a roodn entry and the syncrepl configuration. + if echo "${line}" | grep -q '^.*suffix.*cn=translog.*'; then + echo "The suffix is ${suffix} and this line contains the cn=translog suffix." + echo "Line: ${line}" + # Append the syncrepl configuration to the modified slapd.conf + modified_slapd_conf+="rootdn \"cn=admin,${LDAP_BASEDN}\"\n" + + # Set the line to the rootdn line so the following syncrepl configuration is added after it. + line="rootdn \"cn=admin,${LDAP_BASEDN}\"\n" + fi + + # Check if the current line starts with "rootdn" + if [[ "${line}" =~ ^rootdn ]]; then + # Generate the syncrepl configuration with the current replication ID and suffix + syncrepl_config=$(echo "${template}" | sed "s/PLACEHOLDER_REPLICATION_ID/${replication_id}/" | sed "s|PLACEHOLDER_LDAP_BASEDN|${suffix}|") + + # Append the syncrepl configuration to the modified slapd.conf, preserving indentation + modified_slapd_conf+="${syncrepl_config}\n" + + # Increment the replication ID + replication_id=$((replication_id + 1)) + fi + + if [[ "${line}" =~ ^suffix ]] && [[ "${suffix}" == "${LDAP_BASEDN}" ]] && [[ "${ENABLE_SOCKET_OVERLAY}" == "true" ]]; then + modified_slapd_conf+=$(cat /config/templates/slapd.conf.socket_overlay.tpl) + fi + + done < <(echo "${slapd_conf}") + + # Write the modified slapd.conf + echo -e "${modified_slapd_conf}" > /etc/ldap/slapd.conf + # TODO: Comment this back out + cat /etc/ldap/slapd.conf + # slaptest -f /etc/ldap/slapd.conf +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-primary-config-templates + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + slapd.conf.tpl: | + overlay syncprov + syncprov-checkpoint 100 10 + syncprov-sessionlog 100 + + slapd.conf.socket_overlay.tpl: | + overlay sock + extensions binddn connid peername + socketpath /var/lib/univention-ldap/slapd-sock/sock + sockops add delete modify modrdn + sockresps extendedresult + +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-proxy + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + PRIMARY_LDAP_URI: ldap://ums-ldap-server-primary + SECONDARY_LDAP_URI: ldap://ums-ldap-server-secondary + LDAP_BASEDN: dc=swp-ldap,dc=internal + ADMIN_DN: cn=admin,dc=swp-ldap,dc=internal +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-proxy-config-templates + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + slapd.conf-proxy.tpl: | + PLACEHOLDER_SCHEMAS + attributeoptions "entry-" "lang-" + moduleload constraint.so + + + pidfile /var/run/slapd/slapd.pid + argsfile /var/run/slapd/slapd.args + + modulepath /usr/lib/ldap + moduleload back_ldap.so + + database ldap + suffix "dc=swp-ldap,dc=internal" + overlay constraint + constraint_attribute uidNumber regex ^[^0]+[0-9]*$ + constraint_attribute gidNumber regex ^[^0]+[0-9]*$ + moduleload memberof.so + overlay memberof + memberof-group-oc posixGroup + memberof-member-ad uniqueMember + memberof-memberof-ad memberOf + memberof-dangling ignore + memberof-refint false + uri ldap://ums-ldap-server-secondary + lastmod on + chase-referrals yes + rebind-as-user yes + # idassert-bind mode=self bindmethod=simple + # binddn="cn=admin,dc=swp-ldap,dc=internal" + # credentials="PLACEHOLDER_LDAP_CN_ADMIN_PW" + # tls_reqcert=never + # idassert-passthru "dn.regex:.*" + authz-regexp + uid=([^,]*),cn=(gssapi|saml|oauthbearer),cn=auth + ldap:///PLACEHOLDER_LDAP_BASEDN??sub?uid=$1 + access to * by * read + + # database ldap + # suffix "cn=translog" + # overlay constraint + # uri ldap://ums-ldap-server-secondary + # lastmod on + # chase-referrals yes + # rebind-as-user yes + # idassert-passthru "dn.regex:.*" + # access to * by * read + + + sasl-secprops none,minssf=0 + +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-proxy-scripts + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + wait-for-secondary.sh: | + #!/bin/bash + set -uxo pipefail + echo "Waiting for secondary LDAP to be available ..." + retry_interval=5 + error=1 + while [ $error -ne 0 ]; do + (set +x; ldapsearch -H "${SECONDARY_LDAP_URI}" -x -D "${ADMIN_DN}" -w "${LDAP_CN_ADMIN_PW}" -b "${LDAP_BASEDN}" -s base >/dev/null 2>&1) + error=$? + if [ $error -eq 49 ]; then + echo "Failed to authenticate with secondary LDAP at '${SECONDARY_LDAP_URI}' using binddn '${ADMIN_DN}' , retrying in ${retry_interval} seconds ..." + else + echo "Secondary LDAP not available at '${SECONDARY_LDAP_URI}' yet, errorcode was '$error', retrying in ${retry_interval} seconds ..." + fi + sleep ${retry_interval} + done + + generate-slapd.conf.sh: | + #!/usr/bin/env bash + set -euo pipefail + + # Read the existing slapd.conf file + slapd_conf=$(cat /etc/ldap/slapd.conf) + + # Initialize the schema_definition_lines variable + schema_definition_lines="" + + # Process the slapd.conf file line by line + while IFS=$'\n' read -r line; do + # Check if the current line starts with "include" and append the moduleload for back_ldap.so + if [[ "${line}" =~ ^include ]]; then + echo "Appending schema definition from slapd.conf" + schema_definition_lines+="${line}\n" + fi + done < <(echo "${slapd_conf}") + + echo "Schema definitions: ${schema_definition_lines}\n" + + # Read the slapd.conf-proxy.tpl file + template=$(cat /config/templates/slapd.conf-proxy.tpl) + + # Initialize the generated slapd.conf variable + generated_slapd_conf="" + + # Replace placeholders with environment variable values using sed and eval + while IFS=$'\n' read -r line; do + # Skip empty lines + if [[ -z "${line}" ]]; then + continue + fi + + # Check if the current line contains the placeholder for the schema definitions and append the schema definitions + if [[ "${line}" =~ ^PLACEHOLDER_SCHEMAS ]]; then + echo "Found placeholder line. Appending schema definitions." + generated_slapd_conf+="${schema_definition_lines}\n" + continue + fi + + PLACEHOLDER_LDAP_CN_ADMIN_PW=$(echo "${LDAP_CN_ADMIN_PW}" | sed 's/[&/\]/\\&/g') + + modified_line=$(echo "${line}" | sed "s|PLACEHOLDER_LDAP_CN_ADMIN_PW|${PLACEHOLDER_LDAP_CN_ADMIN_PW}|g" | sed "s|PLACEHOLDER_LDAP_BASEDN|${LDAP_BASEDN}|g") + + generated_slapd_conf+="${modified_line}\n" + + done < <(echo "${template}") + + + # Write the modified slapd.conf + echo -e "${generated_slapd_conf}" > /etc/ldap/slapd.conf + slaptest -f /etc/ldap/slapd.conf +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-secondary.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-secondary + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + PRIMARY_LDAP_URI: ldap://ums-ldap-server-primary + LDAP_BASEDN: dc=swp-ldap,dc=internal + SYNC_USER_DN: cn=admin,dc=swp-ldap,dc=internal +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-secondary.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-secondary-scripts + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + wait-for-primary.sh: | + #!/bin/bash + set -uxo pipefail + echo "Waiting for primary LDAP to be available ..." + retry_interval=5 + error=1 + while [ $error -ne 0 ]; do + (set +x; ldapsearch -H "${PRIMARY_LDAP_URI}" -x -D "${SYNC_USER_DN}" -w "${LDAP_CN_ADMIN_PW}" -b "${LDAP_BASEDN}" -s base >/dev/null 2>&1) + error=$? + if [ $error -eq 49 ]; then + echo "Failed to authenticate with primary LDAP at '${PRIMARY_LDAP_URI}' using binddn '${ADMIN_DN}' , retrying in ${retry_interval} seconds ..." + else + echo "Primary LDAP not available at '${PRIMARY_LDAP_URI}' yet, errorcode was '$error', retrying in ${retry_interval} seconds ..." + fi + sleep ${retry_interval} + done + append-slapd.conf.sh: | + #!/usr/bin/env bash + set -euxo pipefail + + # Export the SERVERID + export SERVERID=$(echo ${HOSTNAME} | awk -F '-' '{print $(NF)+1}') + + # Read the slapd.conf.tpl file + template=$(cat /config/templates/slapd.conf.tpl) + + # Replace placeholders with environment variable values using sed and eval + while IFS=$'\n' read -r line; do + # Skip empty lines + if [[ -z "${line}" ]]; then + continue + fi + + # Get the leading spaces from the line + leading_spaces=$(echo "${line}" | sed -n 's/^\(\s*\).*/\1/p') + + # Evaluate the line to expand any environment variables + evaluated_line=$(eval echo "${line}") + + # Prepend the leading spaces to the evaluated line + evaluated_line="${leading_spaces}${evaluated_line}" + + # Escape special characters in the line + escaped_line=$(echo "${line}" | sed 's|[\/&]|\\&|g; s|\.|\\.|g; s|\+|\\+|g; s|\=|\\=|g') + + # Replace the line in the template with the evaluated line, preserving indentation + template=$(echo "${template}" | sed "s|^${escaped_line}|${evaluated_line}|") + done < <(echo "${template}") + + # Read the slapd.conf-chaining.tpl file + templateChaining=$(cat /config/templates/slapd.conf-chaining.tpl) + + # Replace placeholders with environment variable values using sed and eval + while IFS=$'\n' read -r line; do + # Skip empty lines + if [[ -z "${line}" ]]; then + continue + fi + + # Get the leading spaces from the line + leading_spaces=$(echo "${line}" | sed -n 's/^\(\s*\).*/\1/p') + + # Evaluate the line to expand any environment variables + evaluated_line=$(eval echo "${line}") + + # Prepend the leading spaces to the evaluated line + evaluated_line="${leading_spaces}${evaluated_line}" + + # Escape special characters in the line + escaped_line=$(echo "${line}" | sed 's|[\/&]|\\&|g; s|\.|\\.|g; s|\+|\\+|g; s|\=|\\=|g') + + # Replace the line in the templateChaining with the evaluated line, preserving indentation + templateChaining=$(echo "${templateChaining}" | sed "s|^${escaped_line}|${evaluated_line}|") + done < <(echo "${templateChaining}") + + # Read the existing slapd.conf file + slapd_conf=$(cat /etc/ldap/slapd.conf) + + # Initialize an empty modified slapd.conf file + modified_slapd_conf="serverID 2${SERVERID}\n" + + # Initialize the replication ID counter + replication_id=1 + + # Initialize the suffix variable + suffix="" + + # Process the slapd.conf file line by line + while IFS=$'\n' read -r line; do + # Append the current line to the modified slapd.conf + modified_slapd_conf+="${line}\n" + + # Check if the current line starts with "modulepath" and append the moduleload for back_ldap.so + if [[ "${line}" =~ ^modulepath ]]; then + modified_slapd_conf+="moduleload back_ldap.so\n" + + # Add the chaining configuration to the modified slapd.conf + modified_slapd_conf+="${templateChaining}\n" + line="moduleload back_ldap.so\n" + fi + + # Check if the current line starts with "suffix" + if [[ "${line}" =~ ^suffix ]]; then + # Extract the suffix value + suffix=$(echo "${line}" | awk '{print $2}' | tr -d '"') + fi + + # The ucs based slapd.conf does not allow for networked admin access to cn=internal, this adds it. + # Check if the current line contains 'by sockname="PATH=/var/run/slapd/ldapi" write', if true, append the acl. + if ([[ "${suffix}" == "cn=internal" ]] || [[ "${suffix}" == "cn=translog" ]]) && echo "${line}" | grep -q '^[[:space:]]*by sockname="PATH=/var/run/slapd/ldapi" write'; then + # if echo "${line}" | grep -q '^[[:space:]]*by sockname="PATH=/var/run/slapd/ldapi" write'; then + echo "The suffix is ${suffix} and this line contains the socket acl." + echo "Line: ${line}" + # Append the syncrepl configuration to the modified slapd.conf + modified_slapd_conf+=" by dn=\"cn=admin,${LDAP_BASEDN}\" write\n" + fi + + # The ucs based slapd.conf does not allow for networked admin access to cn=internal and does not specify a rootdn, this adds both. + # Check if the current line contains 'cn=translog', if true, append a roodn entry and the syncrepl configuration. + if echo "${line}" | grep -q '^.*suffix.*cn=translog.*'; then + echo "The suffix is ${suffix} and this line contains the cn=translog suffix." + echo "Line: ${line}" + # Append the syncrepl configuration to the modified slapd.conf + modified_slapd_conf+="rootdn \"cn=admin,${LDAP_BASEDN}\"\n" + + # Set the line to the rootdn line so the following syncrepl configuration is added after it. + line="rootdn \"cn=admin,${LDAP_BASEDN}\"\n" + fi + + # Check if the current line starts with "rootdn" + if [[ "${line}" =~ ^rootdn ]]; then + # Generate the syncrepl configuration with the current replication ID and suffix + syncrepl_config=$(echo "${template}" | sed "s/PLACEHOLDER_REPLICATION_ID/${replication_id}/"| sed "s/PLACEHOLDER_SERVER_ID/${SERVERID}/" | sed "s|PLACEHOLDER_LDAP_BASEDN|${suffix}|") + + # Append the syncrepl configuration to the modified slapd.conf, preserving indentation + modified_slapd_conf+="${syncrepl_config}\n" + + # Increment the replication ID + replication_id=$((replication_id + 1)) + fi + done < <(echo "${slapd_conf}") + + # Write the modified slapd.conf + echo -e "${modified_slapd_conf}" > /etc/ldap/slapd.conf + # slaptest -f /etc/ldap/slapd.conf +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-secondary.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-secondary-config-templates + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + slapd.conf.tpl: | + syncrepl rid=1PLACEHOLDER_SERVER_IDPLACEHOLDER_REPLICATION_ID + provider=$PRIMARY_LDAP_URI + type=refreshAndPersist + interval=00:00:00:10 + network-timeout=0 + timeout=1 + searchbase="PLACEHOLDER_LDAP_BASEDN" + bindmethod=simple + binddn="$SYNC_USER_DN" + credentials=$SYNC_PASSWORD + schemachecking=off + scope=sub + retry="60 +" + updateref $PRIMARY_LDAP_URI + # overlay chain + # chain-uri $PRIMARY_LDAP_URI + # chain-idassert-bind bindmethod=simple + # binddn="$SYNC_USER_DN" + # credentials=$SYNC_PASSWORD + # mode=self + # flags=prescriptive + # chain-rebind-as-user TRUE + # chain-return-error TRUE + + + slapd.conf-chaining.tpl: | + # placeholder + +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + DOMAIN_NAME: opendesk.apps.digilab.network + LDAP_BASE_DN: dc=swp-ldap,dc=internal + LOG_LEVEL: stats + SAML_METADATA_URL: http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor + SAML_METADATA_URL_INTERNAL: http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor + SERVICE_PROVIDERS: https://portal.opendesk.apps.digilab.network/univention/saml/metadata + TLS_MODE: off +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-ldap-server-scripts + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + wait-for-saml-metadata.sh: | + #!/bin/bash + + set -euxo pipefail + + # we have no UCR in this container, so just grep the SAML URL from the config file + UCR_FILES="/etc/univention/base-defaults.conf /etc/univention/base.conf /etc/univention/base-forced.conf" + SAML_METADATA_URL=$(grep --no-filename '^umc/saml/idp-server:' $UCR_FILES 2>/dev/null | cut --delimiter=':' --fields='2-' | tail --lines=1 | xargs || true) + SAML_METADATA_URL_INTERNAL=$(grep --no-filename '^umc/saml/idp-server-internal:' $UCR_FILES 2>/dev/null | cut --delimiter=':' --fields='2-' | tail --lines=1 | xargs || true) + + DOWNLOAD_URL=${SAML_METADATA_URL_INTERNAL:-${SAML_METADATA_URL}} + echo "Checking endpoint ${DOWNLOAD_URL}." + + SECONDS=0 + TIMEOUT=120 + + while ! curl -k -o /dev/null -sf "${DOWNLOAD_URL}"; do + echo "Checking if the SAML Metadata can be downloaded from keycloak ..." + sleep 2 + + if (($SECONDS > $TIMEOUT)); then + echo "Giving up after $TIMEOUT seconds" + exit 1 + fi + done + + echo "Success, the SAML Metadata is available." + init-internal-database.sh: | + #!/bin/bash + + set -uxo pipefail + mkdir -p /var/lib/univention-ldap/internal + echo "dn: cn=internal + objectClass: organizationalRole + " | slapadd -b cn=internal -f /etc/ldap/slapd.conf + exit 0 + + is_active_master.sh: | + #!/bin/bash + set -uo pipefail + + # Set variables + POD_NAME="${HOSTNAME}" + HEADLESS_SERVICE_NAME="${PRIMARY_SERVICE}" + LDAP_URI="${LDAP_PROTOCOL}://127.0.0.1:${LDAP_PORT}" + LDAP_BIND_DN="${ADMIN_DN}" + LDAP_BIND_PASSWORD="${LDAP_CN_ADMIN_PW}" + LOCK_DN="cn=replicationlock,${LDAP_BASEDN}" + + set -x + + # Function to check if the current pod is the active master + is_active_master() { + # Check if the lock entry exists + (set +x; ldapsearch -H "$LDAP_URI" -x -D "$LDAP_BIND_DN" -w "$LDAP_BIND_PASSWORD" -b "$LOCK_DN" -s base "(objectClass=*)" >/dev/null 2>&1) + if [ $? -ne 0 ]; then + # Lock entry doesn't exist, try to create it + echo "dn: $LOCK_DN + changetype: add + objectClass: top + objectClass: extensibleObject + objectClass: organizationalRole + description: $POD_NAME" | (set +x; ldapmodify -H "$LDAP_URI" -x -D "$LDAP_BIND_DN" -w "$LDAP_BIND_PASSWORD") + if [ $? -eq 0 ]; then + echo "Acquired lock, becoming the active master" + echo "is_active_master.sh: Acquired lock, becoming the active master" > /proc/1/fd/1 + exit 0 + else + echo "Failed to acquire lock, another master is active" + echo "is_active_master.sh: Failed to acquire lock, another master is active" > /proc/1/fd/1 + exit 1 + fi + else + # Lock entry exists, check if it matches the current pod name + active_master=$(set +x; ldapsearch -H "$LDAP_URI" -x -D "$LDAP_BIND_DN" -w "$LDAP_BIND_PASSWORD" -b "$LOCK_DN" -s base "(objectClass=*)" description | grep ^description: | awk '{print $2}') + if [ "$active_master" == "$POD_NAME" ]; then + echo "Current pod is the active master" + echo "is_active_master.sh: Current pod is the active master" > /proc/1/fd/1 + exit 0 + else + echo "Another pod is the active master: $active_master" + echo "is_active_master.sh: Another pod is the active master: $active_master" > /proc/1/fd/1 + + # Check if the other master is alive + other_master_uri="${LDAP_PROTOCOL}://$active_master.${HEADLESS_SERVICE_NAME}:${LDAP_PORT}" + (set +x; ldapsearch -H "$other_master_uri" -x -D "$LDAP_BIND_DN" -w "$LDAP_BIND_PASSWORD" -b "$LOCK_DN" -s base "(objectClass=*)" >/dev/null 2>&1) + if [ $? -ne 0 ]; then + echo "Other master is not responding, attempting to acquire lock" + echo "is_active_master.sh: Other master is not responding, attempting to acquire lock" > /proc/1/fd/1 + echo "dn: $LOCK_DN + changetype: modify + replace: description + description: $POD_NAME" | ( set +x; ldapmodify -H "$LDAP_URI" -x -D "$LDAP_BIND_DN" -w "$LDAP_BIND_PASSWORD") + if [ $? -eq 0 ]; then + echo "Acquired lock, becoming the active master" + echo "is_active_master.sh: Acquired lock, becoming the active master" > /proc/1/fd/1 + exit 0 + else + echo "Failed to acquire lock, another master is active" + echo "is_active_master.sh: Failed to acquire lock, another master is active" > /proc/1/fd/1 + exit 1 + fi + else + echo "Other master is alive, remaining as a standby" + echo "is_active_master.sh: Other master is alive, remaining as a standby" > /proc/1/fd/1 + exit 1 + fi + fi + fi + } + + # Call the is_active_master function + is_active_master +--- +# Source: nubus/charts/nubusNotificationsApi/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-notifications-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: notifications-api + helm.sh/chart: nubusNotificationsApi-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-notifications-api +data: + APPLY_DATABASE_MIGRATIONS: 'True' + DEV_MODE: 'False' + ENVIRONMENT: production + LOG_LEVEL: INFO + SQL_ECHO: 'False' + ROOT_PATH: /univention/portal/notifications-api/ +--- +# Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-portal-consumer-common + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-consumer + helm.sh/chart: nubusPortalConsumer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 +data: + DOMAIN_NAME: univention.intranet + ENVIRONMENT: production + LDAP_BASE_DN: dc=swp-ldap,dc=internal + LDAP_HOST: ums-ldap-server-primary + LDAP_HOST_DN: cn=admin,dc=swp-ldap,dc=internal + LDAP_PORT: '389' + LOG_LEVEL: INFO + MAX_ACKNOWLEDGEMENT_RETRIES: '3' + MACHINE_SECRET_FILE: /var/secrets/machine_secret + PORTAL_DEFAULT_DN: cn=domain,cn=portal,cn=portals,cn=univention,dc=swp-ldap,dc=internal + PORTAL_CONSUMER_LOG_STREAM: 'true' + PORTAL_SERVER_ADMIN_GROUP: cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal + PORTAL_SERVER_ASSETS_ROOT_PATH: portal-assets + PORTAL_SERVER_AUTH_MODE: saml + PORTAL_SERVER_EDITABLE: 'true' + PORTAL_SERVER_PORT: '80' + PORTAL_SERVER_UCS_INTERNAL_PATH: portal-data + PORTAL_SERVER_UMC_GET_URL: http://ums-umc-server/get + PORTAL_SERVER_UMC_SESSION_URL: http://ums-umc-server/get/session-info + PORTAL_UDM_API_URL: http://ums-udm-rest-api:9979/udm/ + PORTAL_UDM_API_USERNAME: cn=admin + PORTAL_UDM_API_PASSWORD_FILE: /var/secrets/machine_secret + OBJECT_STORAGE_ENDPOINT: https://objectstore.opendesk.apps.digilab.network + OBJECT_STORAGE_BUCKET: ums + OBJECT_STORAGE_ACCESS_KEY_ID: "valueFrom:\n secretKeyRef:\n name: \"ums-portal-consumer-minio-credentials\"\ + \n key: \"accessKey\"" + OBJECT_STORAGE_SECRET_ACCESS_KEY: "valueFrom:\n secretKeyRef:\n name: \"ums-portal-consumer-minio-credentials\"\ + \n key: \"secretKey\"" + CA_CERT: '' + CA_CERT_FILE: /var/secrets/ca_cert + TLS_MODE: off + PROVISIONING_API_BASE_URL: http://ums-provisioning-api + PROVISIONING_API_USERNAME: portal-consumer +--- +# Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-portal-consumer-scripts + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-consumer + helm.sh/chart: nubusPortalConsumer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 +data: + wait-for-provisioning-api.sh: | + set -uo pipefail + + retry_interval=2 + response_code=404 + timeout_duration=120 + end_time=$((SECONDS + timeout_duration)) + + while [ "$response_code" -ne 200 ]; do + if [ $SECONDS -ge $end_time ]; then + echo "Timeout reached. Exiting." + exit 1 + fi + + echo "Waiting for the Provisioning API to be available ..." + response_code=$(set +x; curl -s -o response.txt -w "%{http_code}" "${PROVISIONING_API_BASE_URL}/v1/subscriptions/${PROVISIONING_API_USERNAME}" -u "${PROVISIONING_API_USERNAME}":"${PROVISIONING_API_PASSWORD}") + if [ "${response_code}" -ne 200 ]; then + echo "Provisioning API is not reachable, status code: $response_code" + cat response.txt + sleep ${retry_interval} + else + echo "The Provisioning API is reachable" + exit 0 + fi + done + + echo "Permanent error ocurred. Exiting." + exit 1 + wait-for-ldap.sh: | + #!/bin/bash + set -euxo pipefail + + while ! ldapsearch -H ldap://$LDAP_HOST -D $LDAP_HOST_DN -y $MACHINE_SECRET_FILE -b "" -s base -LLL; do + echo "Checking if LDAP Server can be reached..." + sleep 2 + done + + echo "Success, the LDAP Server is available" + wait-for-udm.sh: | + #!/bin/bash + # TODO: find a way to not leak the udm passwort into the log + set -euo pipefail + + while ! (set +x; curl -o- --fail --header "Accept: application/json" --user "${PORTAL_UDM_API_USERNAME}:$(cat $PORTAL_UDM_API_PASSWORD_FILE)" "${PORTAL_UDM_API_URL}ldap/base/"); do + echo "Checking if the UDM REST API can be reached..." + sleep 2 + done + + echo "Success, the UDM REST API is available" + wait-for-object-store.py: | + #!/bin/python3 + import boto3 + import os + + s3 = boto3.resource( + 's3', + endpoint_url=os.environ["OBJECT_STORAGE_ENDPOINT"], + aws_access_key_id=os.environ["OBJECT_STORAGE_ACCESS_KEY_ID"], + aws_secret_access_key=os.environ["OBJECT_STORAGE_SECRET_ACCESS_KEY"] + ) + + provisioned = False + while not provisioned: + bucket = s3.Bucket(os.environ["OBJECT_STORAGE_BUCKET"]) + provisioned = bool(bucket.creation_date) + if not provisioned: + print("Waiting for the object storage service to be provisioned") + break + else: + print("Object storage already provisioned") +--- +# Source: nubus/charts/nubusPortalFrontend/templates/branding-configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-portal-frontend-branding + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-frontend +binaryData: + custom.css: + LyoqCiAqIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjMgQnVuZGVzbWluaXN0ZXJpdW0gZGVzIElubmVybiB1bmQgZsO8ciBIZWltYXQsIFBHIFplbkRpUyAiUHJvamVrdGdydXBwZSBmw7xyIEF1ZmJhdSBaZW5EaVMiCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAqLwo6cm9vdCB7CiAgLyogdXNlZCB0byBhY2NlbnQgc29tZSBlbGVtZW50czogY2hlY2tib3gvcmFkaW9ib3gsIGNoZWNrZWQgdG9nZ2xlIGJ1dHRvbnMvY2hlY2tlZCBpbnB1dCBmaWVsZHMgKi8KICAtLWNvbG9yLWFjY2VudDogIzU3MUVGQTsKICAtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeTogI2Y1ZjVmNTsKICAtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeS1kYXJrOiAjYzdiM2YzOwogIC0tY29sb3Itb3BlbmRlc2std2hpdGU6ICNmZmZmZmY7CiAgLS1jb2xvci1vcGVuZGVzay1ibGFjazogIzAwMDAwMDsKICAtLWJnYy1hbm5vdW5jZW1lbnRzLWluZm86ICNhZGIzYmM7CiAgLS1iZ2MtYW5ub3VuY2VtZW50cy13YXJuOiAjZmZjNzAwOwogIC0tYmdjLWFubm91bmNlbWVudHMtc3VjY2VzczogIzAwZmZjZDsKICAtLWJnYy1hbm5vdW5jZW1lbnRzLWRhbmdlcjogI2ZmNTI5ZTsKICAtLWJnYy1jb250ZW50LWJvZHk6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgLS1iZ2MtY29udGVudC1jb250YWluZXI6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICAtLWJnYy1jb250ZW50LWhlYWRlcjogdmFyKC0tYmdjLWNvbnRlbnQtY29udGFpbmVyKTsKICAtLWJnYy1pbnB1dGZpZWxkLW9uLWNvbnRhaW5lcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwogIC0tYmdjLWlucHV0Ym9yZGVyLW9uLWNvbnRhaW5lcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKICAtLWJnYy1pbnB1dGZpZWxkLW9uLWJvZHk6IHZhcigtLWJnYy1jb250ZW50LWNvbnRhaW5lcik7CiAgLS1iZ2MtY2hlY2tib3gtaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7CiAgLS1iZ2MtY2hlY2tib3gtZm9jdXM6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7CiAgLS1iZ2MtbG9hZGluZy1jaXJjbGU6IHZhcigtLWZvbnQtY29sb3ItY29udHJhc3QtbWlkZGxlKTsKICAtLWJnYy11c2VyLW1lbnUtaXRlbS1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogIC0tYmdjLXVzZXItbWVudS1pdGVtLWFjdGl2ZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogIC0tYmdjLWhlYWRlci1udW1iZXItY2lyY2xlOiB2YXIoLS1jb2xvci1hY2NlbnQpOwogIC0tYmdjLXRhYi1zZXBhcmF0b3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgLS1iZ2MtcG9wdXA6ICNkMGQwZDA7CiAgLS1iZ2MtcG9wdXAtaXRlbS1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAtLWJnYy1wb3B1cC1pdGVtLWFjdGl2ZTogcmdiYSgwLCAwLCAwLCAwLjMpOwogIC0tYmdjLXBvcHVwLWl0ZW0tc2VsZWN0ZWQ6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAtLWJnYy1ncmlkLXJvdy1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTsKICAtLWJnYy1ncmlkLXJvdy1zZWxlY3RlZDogdmFyKC0tYmdjLWdyaWQtcm93LWhvdmVyKTsKICAtLWJnYy10cmVlLXJvdy1ob3ZlcjogdmFyKC0tYmdjLWdyaWQtcm93LWhvdmVyKTsKICAtLWJnYy10cmVlLXJvdy1zZWxlY3RlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAtLWJnYy1hcHB0aWxlLWRlZmF1bHQ6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICAtLWJnYy1hcHBjZW50ZXItYXBwLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogIC0tYmdjLWFwcGNlbnRlci1hcHAtYWN0aXZlOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOwogIC0tYmdjLXByb2dyZXNzYmFyLWVtcHR5OiAjYmRiZGJiOwogIC0tYmdjLXByb2dyZXNzYmFyLXByb2dyZXNzOiB2YXIoLS1iZ2Mtc3VjY2Vzcyk7CiAgLS1iZ2MtdGl0bGVwYW5lLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpOwogIC0tYmdjLXVuZGVybGF5OiByZ2IoMjIxIDIyMSAyMjEgLyA4MCUpOwogIC0tYmdjLWNoZWNrZXJib2FyZDogcmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KHZhcigtLWJnYy1pbnB1dGZpZWxkLW9uLWNvbnRhaW5lcikgMCUgMjUlLCB0cmFuc3BhcmVudCAwJSA1MCUpIDUwJS8yMHB4IDIwcHg7CiAgLS1iZ2MtZXJyb3I6ICNmZjUyOWU7CiAgLS1iZ2Mtd2FybmluZzogI2ZmYzcwMDsKICAtLWJnYy1zdWNjZXNzOiAjMDBmZmNkOwogIC0tZm9udC1zaXplLTE6IDEuNXJlbTsKICAtLWZvbnQtc2l6ZS0yOiAxLjI1cmVtOwogIC0tZm9udC1zaXplLTM6IDFyZW07CiAgLS1mb250LXNpemUtNDogMC44NzVyZW07CiAgLS1mb250LXNpemUtNTogMC43NXJlbTsKICAtLWZvbnQtc2l6ZS1odG1sOiAxcmVtOwogIC0tZm9udC1zaXplLWJvZHk6IHZhcigtLWZvbnQtc2l6ZS00KTsKICAtLWZvbnQtbGluZWhlaWdodC1ub3JtYWw6IDEuNTsKICAtLWZvbnQtbGluZWhlaWdodC1jb21wYWN0OiAxLjI1OwogIC0tZm9udC1saW5laGVpZ2h0LWhlYWRlcjogMS4zOwogIC0tZm9udC13ZWlnaHQtYm9sZDogNjAwOwogIC0tZm9udC1jb2xvci1jb250cmFzdC1oaWdoOiAjMjAzMjU3OwogIC0tZm9udC1jb2xvci1jb250cmFzdC1taWRkbGU6ICM2MDYwNjA7CiAgLS1mb250LWNvbG9yLWNvbnRyYXN0LWxvdzogIzg2ODY4MTsKICAtLWZvbnQtY29sb3ItZXJyb3I6ICNiODIzMjM7CiAgLS1mb250LWNvbG9yLWVycm9yLWxpZ2h0OiAjRUFCRkJGOwogIC0tZm9udC1jb2xvci13YXJuaW5nOiAjZmY4YzAwOwogIC0tZm9udC1jb2xvci13YXJuaW5nLWxpZ2h0OiAjZmZlZWNhOwogIC0tZm9udC1jb2xvci1zdWNjZXNzOiAjOTJkNjI1OwogIC0tZm9udC1jb2xvci1zdWNjZXNzLWxpZ2h0OiAjZWJmZmNhOwogIC0tYnV0dG9uLXByaW1hcnktYmdjOiAjNTcxRUZBOwogIC0tYnV0dG9uLXByaW1hcnktYmdjLWhvdmVyOiAjMWIxZDE4OwogIC0tYnV0dG9uLXByaW1hcnktYmdjLWFjdGl2ZTogcmdiYSg3OSwgMTE0LCAyNCwgMSk7CiAgLS1idXR0b24tcHJpbWFyeS1iZ2MtZGlzYWJsZWQ6ICM1ZjVmNWM7CiAgLS1idXR0b24tYmdjOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIC0tYnV0dG9uLWJnYy1ob3ZlcjogIzU3NTc1NTsKICAtLWJ1dHRvbi1iZ2MtYWN0aXZlOiByZ2JhKDgwLCA4MCwgNzcsIDEpOwogIC0tYnV0dG9uLWJnYy1kaXNhYmxlZDogIzVmNWY1YzsKICAtLWJ1dHRvbi10ZXh0LWJnYzogdHJhbnNwYXJlbnQ7CiAgLS1idXR0b24tdGV4dC1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLXRleHQtYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLXRleHQtYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWJ1dHRvbi1pY29uLWJnYzogdHJhbnNwYXJlbnQ7CiAgLS1idXR0b24taWNvbi1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLWljb24tYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLWljb24tYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWJ1dHRvbi1pY29uLWhpZ2hsaWdodGVkLWJnYzogdmFyKC0tYmdjLWlucHV0ZmllbGQtb24tYm9keSk7CiAgLS1idXR0b24taWNvbi1oaWdobGlnaHRlZC1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLWljb24taGlnaGxpZ2h0ZWQtYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLWljb24taGlnaGxpZ2h0ZWQtYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWNvbG9yLWZvY3VzOiAjQUE5OEZCOwogIC0tcG9wdXAtYm9yZGVyOiAxcHggc29saWQgI2JkYmRiYjsKICAtLWJveC1zaGFkb3c6IDAgMXB4IDZweCByZ2IoMSAwIDAgLyAxMiUpLCAwIDFweCA0cHggcmdiKDAgMSAwIC8gMTIlKTsKICAtLXNlcnZlcm92ZXJ2aWV3LXRpbGUtaG92ZXItYmdjOiAjMDBhY2I2OwogIC0tc2VydmVyb3ZlcnZpZXctdGlsZS1ob3Zlci1jb2xvcjogIzFlMWUxZDsKICAtLXBvcnRhbC10YWItYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYWNjZW50KTsKICAtLXNlbGVjdC1hcnJvdzogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJjQUFBQVhDQVlBQUFEZ0t0U2dBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQmtTVVJCVkhnQjdZM0JDUUFoREFTM0JFdElDVmVDSmRpNUpWd3BHc0dIaUdMRUNENHlzTDlsQmpDTXB3azhFbjZwL2tWNFh1TDlXQWVvL3NyL2d3REhpNEpBSzQ3WVlCWG94UTZiekFMSDRsbkFhNGxIZ2FRcEhnVlV4VzBnNElMWU1DNlRBWjBCSkEzYnhOM1JBQUFBQUVsRlRrU3VRbUNDJyk7CiAgLS1sYXlvdXQtaGVpZ2h0LWhlYWRlcjogNjNweDsKICAvKiBLZXljbG9hayB1c2VyIHNjcmVlbnMgbG9nbyAqLwogIC0tbG9naW4tbG9nbzogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaVB6NDhjM1puSUdsa1BTSkZZbVZ1WlY4eElpQjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdNQ0EyT1RNdU1qVWdNakUwTGpBeUlqNGdQR1JsWm5NK0lEeHpkSGxzWlQ0Z0xtTnNjeTB4SUhzZ1ptbHNiRG9nSXpVM01XVm1ZVHNnZlNBdVkyeHpMVElnZXlCbWFXeHNPaUFqT1RJM1lXWmhPeUI5SUR3dmMzUjViR1UrSUR3dlpHVm1jejRnUEdjK0lEeHdZWFJvSUdOc1lYTnpQU0pqYkhNdE1pSWdaRDBpVFRFeU5pNHhOQ3d4TkRBdU16SjJNaTR4TTJNd0xEZ3VPVGt0Tnk0ek1Td3hOaTR6TFRFMkxqTXNNVFl1TTJndE16Z3VNalpqTFRndU9Ua3NNQzB4Tmk0ekxUY3VNekV0TVRZdU15MHhOaTR6ZGkwek9DNHlObU13TFRndU9Ua3NOeTR6TVMweE5pNHpMREUyTGpNdE1UWXVNMmd5TGpFemRqVXlMalEwYURVeUxqUTBXaUl2UGlBOGNHRjBhQ0JqYkdGemN6MGlZMnh6TFRFaUlHUTlJazB4TWpZdU9EVXNNVEkzTGpVMmFDMDBNQzR6T1hZdE5EUXVOalZqTUMweE5TNHlOQ3d4TWk0MExUSTNMalkwTERJM0xqWTBMVEkzTGpZMGFERXlMamMyWXpFM0xqVTRMREFzTXpFdU9Ea3NNVFF1TXpFc016RXVPRGtzTXpFdU9EbDJPQzQxWXpBc01UY3VOVGd0TVRRdU16RXNNekV1T0RrdE16RXVPRGtzTXpFdU9EbGFUVEV3TkM0NE9Dd3hNRGt1TVROb01qRXVPVGRqTnk0ME1pd3dMREV6TGpRMkxUWXVNRFFzTVRNdU5EWXRNVE11TkRaMkxUZ3VOV013TFRjdU5ESXROaTR3TkMweE15NDBOaTB4TXk0ME5pMHhNeTQwTm1ndE1USXVOelpqTFRVdU1EZ3NNQzA1TGpJeExEUXVNVE10T1M0eU1TdzVMakl4ZGpJMkxqSXlXaUl2UGlBOEwyYytJRHhuUGlBOGNHRjBhQ0JrUFNKTk1qRXdMamd5TERrd0xqYzJZekUwTGpnMUxEQXNNalF1TXpRc01UQXVPU3d5TkM0ek5Dd3lOQzR5TlhNdE9TNDBPU3d5TkM0eU5TMHlOQzR6TkN3eU5DNHlOUzB5TkM0ME5DMHhNQzQ1TFRJMExqUTBMVEkwTGpJMUxEa3VORGt0TWpRdU1qVXNNalF1TkRRdE1qUXVNalZhVFRJeE1DNDRNaXd4TXpNdU16UmpNVEV1TXpjc01Dd3hOeTR6T1MwNExqUTJMREUzTGpNNUxURTRMak16Y3kwMkxqQXlMVEU0TGpNekxURTNMak01TFRFNExqTXpMVEUzTGpRNExEZ3VORFl0TVRjdU5EZ3NNVGd1TXpNc05pNHdNU3d4T0M0ek15d3hOeTQwT0N3eE9DNHpNMW9pTHo0Z1BIQmhkR2dnWkQwaVRUSTBOQzR4T1N3NU1TNDNhRFl1T1RaMk1URXVPRFJqTXk0eU9TMDNMamdzTVRBdU1qVXRNVEl1Tnpnc01qQXVOQzB4TWk0M09Dd3hNeTR3Tnl3d0xESXhMamtzT1M0NE55d3lNUzQ1TERJMExqTTBjeTA0TGpnekxESTBMakUyTFRJeExqa3NNalF1TVRaakxURXdMak0wTERBdE1UY3VNaTAxTGpFM0xUSXdMalF0TVRJdU56aDJNamd1T1RWb0xUWXVPVFoyTFRZekxqY3pXazB5TmprdU16Z3NNVE16TGpNMFl6a3VOQ3d3TERFM0xqRXhMVFV1T0RNc01UY3VNVEV0TVRndU1qUnpMVGN1TnpFdE1UZ3VOREl0TVRjdU1URXRNVGd1TkRJdE1UY3VPVFVzTmk0eE1TMHhOeTQ1TlN3eE9DNDBNaXc0TGpZMUxERTRMakkwTERFM0xqazFMREU0TGpJMFdpSXZQaUE4Y0dGMGFDQmtQU0pOTXpJeUxqazJMRGt3TGpjMll6RXpMak0xTERBc01qSXVNamdzT0M0ek55d3lNaTR5T0N3eU1pNDJOWFl5TGpneWFDMHpOeTQxWXk0eU9DdzVMamM0TERVdU1qWXNNVGN1TWprc01UVXVOaXd4Tnk0eU9TdzRMalUxTERBc01UTXVOVFF0TkM0MU1Td3hOUzR5TXkweE1TNDBOMmcyTGpnMll5MHhMamszTERndU1qY3ROeTQyTVN3eE55NHlMVEl4TGprc01UY3VNaTB4TlM0eE15d3dMVEl5TGpRMkxURXhMakk0TFRJeUxqUTJMVEkwTGpreExEQXRNVFV1TURRc09DNDNOQzB5TXk0MU9Td3lNUzQ1TFRJekxqVTVXazB6TXpndU16Y3NNVEV3TGpjNFl5MHVOall0T1M0eE1pMDJMamMzTFRFMExqSTVMVEUxTGpVeExURTBMakk1TFRndU1UZ3NNQzB4TkM0eU9TdzFMakkyTFRFMUxqQTBMREUwTGpJNWFETXdMalUxV2lJdlBpQThjR0YwYUNCa1BTSk5NelUxTGpBeExEa3hMamRvTmk0NU5uWXhNaTQ1TjJNeUxqVTBMVGd1TmpVc09TNHhNaTB4TXk0NU1Td3hPUzR6TmkweE15NDVNWE14Tmk0M015dzJMamMzTERFMkxqY3pMREU0TGprNWRqSTRMalUzYUMwM0xqQTFkaTB5T0M0d01XTXdMVGt1TmpndE15NDNOaTB4TXk0Mk15MHhNaTR3TXkweE15NDJNeTB4TUM0MU15d3dMVEUzTGpBeExEZ3VPRFF0TVRjdU1ERXNNakV1TXpSMk1qQXVNMmd0Tmk0NU5uWXRORFl1TmpKYUlpOCtJRHh3WVhSb0lHUTlJazAwTURrdU9ERXNOekl1TURWb01qUXVNelZqTmk0NE9Td3dMREV5TGprM0xqZzFMREU0TGpJMExESXVOVFFzTlM0eU5pd3hMalk1TERrdU5UY3NOQzQ1T0N3eE1pNDVNaXc1TGpnM0xETXVNelVzTkM0NE9TdzFMakF6TERFeExqYzRMRFV1TURNc01qQXVOamh6TFRFdU5qZ3NNVFV1T0RrdE5TNHdNeXd5TUM0M04yTXRNeTR6TlN3MExqZzVMVGN1TmpZc09DNHhPQzB4TWk0NU1pdzVMamczTFRVdU1qY3NNUzQyT1MweE1TNHpOQ3d5TGpVMExURTRMakkwTERJdU5UUm9MVEkwTGpNMWRpMDJOaTR5TjFwTk5ETTBMakUyTERFeU5TNHdOMk0wTGpjMkxEQXNPQzQxTnkwdU16Z3NNVEV1TkRJdE1TNHhNM00xTGpFM0xUSXVOVFVzTmk0NU5pMDFMalF4WXpFdU56a3RNaTQ0TlN3eUxqWTRMVGN1TXpJc01pNDJPQzB4TXk0ek9YTXRMamt4TFRFd0xqUTJMVEl1TnpJdE1UTXVNelZqTFRFdU9ESXRNaTQ0T0MwMExqRTBMVFF1TnkwMkxqazJMVFV1TkRWekxUWXVOakV0TVM0eE15MHhNUzR6TnkweExqRXphQzA1TGpNeGRqTTVMamcyYURrdU16RmFJaTgrSUR4d1lYUm9JR1E5SWswME9EQXVNVGNzTVRBeExqTXpZekl1TVMwekxqWTNMRFV1TURFdE5pNDBOeXc0TGpjMExUZ3VOREZ6T0M0d01TMHlMamt4TERFeUxqZ3pMVEl1T1RGak55NDVMREFzTVRRdU1EY3NNaTR4TERFNExqVXlMRFl1TXl3MExqUTFMRFF1TWl3MkxqWTNMREV3TERZdU5qY3NNVGN1TXpsMk15NDVOV2d0TXpVdU5UTmpMakkxTERNdU16Z3NNUzR6TWl3MkxqQXpMRE11TWl3M0xqazBMREV1T0Rnc01TNDVNU3cwTGpRMUxESXVPRGNzTnk0M01Td3lMamczTERJdU9ESXNNQ3cxTGpFMUxTNDFPU3czTFRFdU56a3NNUzQ0TlMweExqRTVMRE11TURJdE1pNDRPQ3d6TGpVekxUVXVNRGhvTVRRdU1UbGpMUzQzTlN3MUxqSTJMVE11TWpnc09TNDFNeTAzTGpVM0xERXlMamM0TFRRdU1qa3NNeTR5TmkwNUxqazRMRFF1T0RrdE1UY3VNRFlzTkM0NE9TMDFMaklzTUMwNUxqY3hMVEV1TURVdE1UTXVOVFF0TXk0eE5TMHpMamd5TFRJdU1TMDJMamMxTFRVdU1ETXRPQzQzT1MwNExqYzVMVEl1TURRdE15NDNOaTB6TGpBMUxUZ3VNRGd0TXk0d05TMHhNaTQ1TjNNeExqQTFMVGt1TXpVc015NHhOUzB4TXk0d01scE5OVEV6TGpBeUxERXdPUzQ1TTJNdExqSTFMVE11TURFdE1TNHpOaTAxTGpNekxUTXVNelF0Tmk0NU5pMHhMamszTFRFdU5qTXROQzQxTXkweUxqUTBMVGN1TmpZdE1pNDBOSE10TlM0MU5pNDRNaTAzTGpRM0xESXVORFJqTFRFdU9URXNNUzQyTXkweUxqazVMRE11T1RVdE15NHlOQ3cyTGprMmFESXhMamN4V2lJdlBpQThjR0YwYUNCa1BTSk5OVE01TGpZeUxERXpOQzQyTldNdE5DNHhOQzB6TGpBM0xUWXVNakV0Tnk0MU9DMDJMakl4TFRFekxqVTBhREUwTGpJNVl6QXNNaTQzTGpnMUxEUXVOamtzTWk0MU5DdzFMamszTERFdU5qa3NNUzR5T1N3MExqSTVMREV1T1RNc055NDRMREV1T1RNc01pNDFOeXd3TERRdU5ETXRMak16TERVdU5Ua3RMams1TERFdU1UWXRMalkyTERFdU56UXRNUzQzTVN3eExqYzBMVE11TVRVc01DMHhMUzR6TkMweExqZ3lMVEV1TURNdE1pNDBOQzB1TmprdExqWXpMVEV1TnprdE1TNHhOaTB6TGpJNUxURXVObXd0TVRRdU5EZ3RNeTQ1TldNdE15NHlMUzQ0TVMwMUxqazFMVEl1TWpjdE9DNHlOeTAwTGpNM0xUSXVNekl0TWk0eExUTXVORGd0TlMwekxqUTRMVGd1Tnl3d0xUUXVORFVzTVM0NE15MDNMamcyTERVdU5TMHhNQzR5TlN3ekxqWTNMVEl1TXpnc09DNDNPUzB6TGpVM0xERTFMak0zTFRNdU5UY3NOeTR5Tnl3d0xERXlMamswTERFdU5EWXNNVGN1TURFc05DNHpOM00yTGpFeExEY3VNVE1zTmk0eE1Td3hNaTQyTkdndE1UUXVNamxqTUMwMExqVTNMVEl1T1RFdE5pNDROaTA0TGpjMExUWXVPRFl0TWk0d055d3dMVE11Tnk0ek5TMDBMamc1TERFdU1ETXRNUzR4T1M0Mk9TMHhMamM1TERFdU5pMHhMamM1TERJdU56TXNNQ3d4TGprMExERXVOeklzTXk0ek5TdzFMakUzTERRdU1qTnNNVEV1TURrc01pNDNNMk0wTGpNeUxERXVNRGNzTnk0M09Td3lMamN4TERFd0xqTTVMRFF1T1RRc01pNDJMREl1TWpJc015NDVMRFV1TXpRc015NDVMRGt1TXpVc01DdzBMalU0TFRFdU9ETXNPQzR3TnkwMUxqVXNNVEF1TkRndE15NDJOeXd5TGpReExUa3VNU3d6TGpZeUxURTJMak14TERNdU5qSXRPQzR3TWl3d0xURTBMakV0TVM0MU5DMHhPQzR5TkMwMExqWXhXaUl2UGlBOGNHRjBhQ0JrUFNKTk5UZzNMalUyTERZNUxqSXphREUwTGpJNWRqUXdMakEwYkRFNExqZzVMVEU0TGpNemFERTNMalE0YkMweU15NDFPU3d5TXk0d015d3lNeTQxTERJMExqTTFhQzB4Tnk0ek9Xd3RNVGd1T0RrdE1Ua3VPVE4yTVRrdU9UTm9MVEUwTGpJNWRpMDJPUzR3T1ZvaUx6NGdQQzluUGp3dmMzWm5QZz09Iikgbm8tcmVwZWF0IGNlbnRlcjsKfQoKLyogS2V5Y2xvYWsgdXNlciBzY3JlZW5zIGJlZ2luICovCiNrYy1sb2dpbiwKI2tjLWxvZ291dCwKI3NhdmVUT1RQQnRuLAoucGYtYy1idXR0b24uYnRuLWxnIHsKICBjb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwogIGJvcmRlcjogMnB4IHNvbGlkOwp9Cgoja2MtbG9naW46aG92ZXIsCiNrYy1sb2dvdXQ6aG92ZXIsCiNzYXZlVE9UUEJ0bjpob3ZlciwKLnBmLWMtYnV0dG9uLmJ0bi1sZzpob3ZlciB7CiAgY29sb3I6ICMwMDAwMDA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U3ZGZmYTsKICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1hY2NlbnQpOwp9CgoucGYtYy1mb3JtLWNvbnRyb2wgewogIGJhY2tncm91bmQtY29sb3I6ICNlN2RmZmE7Cn0KCi5wZi1jLWRyb3Bkb3duX19tZW51LWl0ZW06aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKSAhaW1wb3J0YW50Owp9Cgoja2MtZm9ybS1vcHRpb25zIC5jaGVja2JveCB7CiAgY29sb3I6IHZhcigtLWZvbnQtY29sb3ItY29udHJhc3QtaGlnaCkgIWltcG9ydGFudDsKfQoKI2tjLWhlYWRlci13cmFwcGVyIHsKICBjb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKLmxvZ2luLXBmLXBhZ2UgewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwogIGhlaWdodDogMTAwJTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmxvZ2luLXBmLXBhZ2UgI2tjLWhlYWRlciB7CiAgZGlzcGxheTogbm9uZTsKfQoKLmxvZ2luLXBmLXBhZ2UgLmNhcmQtcGYgewogIGJvcmRlci1yYWRpdXM6IDEzcHg7CiAgbWFyZ2luLXRvcDogNDBweDsKfQoKLmxvZ2luLXBmLXBhZ2UgI3VtY0xvZ2luTGlua3MgYSB7CiAgY29sb3I6ICNmZmY7Cn0KCi5sb2dpbi1wZi1wYWdlICN1bWNMb2dpbkxpbmtzIGE6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IHVuc2V0Owp9CgoubG9naW4tcGYgYm9keSB7CiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZm9jdXMpIHVybCgnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFBQUFBQUQvMndCREFBWUVCUVVGQkFZRkJRVUhCZ1lIQ1E4S0NRZ0lDUk1ORGdzUEZoTVhGeFlURlJVWUd5TWVHQm9oR2hVVkhpa2ZJU1FsSnlnbkdCMHJMaXNtTGlNbUp5Yi8yd0JEQVFZSEJ3a0lDUklLQ2hJbUdSVVpKaVltSmlZbUppWW1KaVltSmlZbUppWW1KaVltSmlZbUppWW1KaVltSmlZbUppWW1KaVltSmlZbUppWW1KaVltSmliL3dBQVJDQVE0QjRBREFTSUFBaEVCQXhFQi84UUFIQUFCQUFJREFRRUJBQUFBQUFBQUFBQUFBQUVDQlFZSEJBTUkvOFFBVUJBQUFnRURBUUlIREFjRkJ3UUJCQUlEQUFFQ0F3UVJCUVlTRXlFeFFWR1JrZ2NWVWxOVVZXRnhrNkd4MFJRV0Z5S0J3ZUVqTWtKaWNpUXpORFZ6bEtKamdxT3laQ1ZEOFBFbXd0SkVnLy9FQUJzQkFRQURBUUVCQVFBQUFBQUFBQUFBQUFBQkFnUURCUVlILzhRQU9CRUJBQUVEQVFVRkJ3TURCUUVCQVFBQUFBRUNBeEVFRWhNaE1WRUZGREpTWVJVaVFYR1JvZEd4d2VFelU0RTBRbUx3OFNNa1EvL2FBQXdEQVFBQ0VRTVJBRDhBMmtBSDA3b0FBQXlPWWxsWHlBVFJod2xlbkR3cEpHeG1FMHFHOWVKODBFMlpzejNaNDRVa0FCeFFBRGw0Z09WZDFuVWFsWFZhR21SazFTdDZhcVNpdWVjdmt2aWFJWm5iTzYrbWJVYWxXVHpIaG5DTDlFZnUva1lZL1E5RmEzV25vcDlIU09RQURZQUFBQUFEb1BjZWhVK202blVUZkJxbENMWHAzbmozSm5UelNlNU5iY0ZzL2NYTFhIY1hENC9SRkpmSEp1VnhXcFc5Q3BjVjVxblNwUmM1emx5UlM1V2ZCOXAxN2Vycng4dm9wUE5GMWNVTFczbmNYTmFGR2pUV1oxS2tzS0s5WnpmYUh1b1U2YzUwTkN0Rld4eGZTYmpLaS82WTh2V2FmdHZ0WGM3UjMwb3dsS25wMUtYN0NqeVovbWwwdCs0MWt2WTBjUkdibk1pR2Z2dHNkcHIyVGRYV0xpRVgvQlJmQnhYVWRrMkJWeDlVZE9xWGRhcFdyVnFicXluVWs1U2U4MjF4djBZUHo3R0RuSlU0L3ZTYWl2V3o5TmFmYnh0TEMydFlyRWFOS05OZmdzRk5aRk5OTVV4QkwwQUJIbUlBU1FCNHRXbHUyYlhoU1NNTkV5ZXR5KzdTaDZXekdSTlZxTVVyUXVpVVFTZEZnREpBQUVaTDBxVldyL2QwNVM5S1hFTTRGUWV1T25YTFhIdVI5Y2llOWx4NFZQcks3ZFBWR1hqQjdPOXR4NGRQckk3MjNIaDArc2JkUFV5OGdQWjN0dVBEcDlZNzJYSGhRNnh0MDlUTHhnOW5leTQ4S0hXTzlseDRVT3NiZFBVekR4ZzluZXk0OEtuMWp2WmNlRlQ2eHQwOVRNUEdEMmQ3TGp3cWZXTzlseDRWUHJHM1QxTXc4WVBaM3N1UENwOVk3MlhIaFUrc2JkUFV6RHhnOW5leTQ4S24xanZaY2VGVDZ4dDA5VE1QR0QyZDdMandxZldIcHR5dVNVSCtJMjZlcG1IakI5cXRyY1VsbWRONDZWeG53VExST2VTVmtDQ1V3QUFZRWN4VEdaSmRMU0xQa0xXeTNybWxIcG12aU04QnNhV0VsMEFBd09ZQUFBQUFHRzJ5aEtleXVxeGdzeStqeWZGNk9NekpTdlNoWG8xS05SWmhVaTRTWFNtc002V3E5aXVtcnBNU1B6bVFlL1c5TXJhUnFseHA5ZGZlcFN4R1hoUjVtdldqd0g2VFRWRmRNVlU4cGRRQUZnQUpBZzllbFdzNzNVN1cwcHJNcTFhTU90OGZ1UElkSDdsdWdUVTNydDFERWNPRnNueXZtYy95WDRtVFY2aW5UMmFxNS94ODBUTHBPRXVKY2k0a0FEODdjd0FBQUFBUExxYnhZMWZUaGU4OVI0OVdlTEdYcGt2aVdvOFVFTUpFdWlrUzV1ZEVvQUVBUUFBQk1JenFQZGhGeWZvUjZZYWZkUzVZeGo2NUVUVkVjMFplVUhzNzJYSGgwK3RqdlpjZUhUNnlOdW5xWmg0d2V6dlpjZUhUNngzc3VQRHA5WTI2ZXBsNHdlenZaY2VIVDZ4M3N1UERwOVkyNmVwbDR3ZXp2WmNlSFQ2eDNzdVBEcDlZMjZlcGw0d2V6dlpjZUhUNngzc3VQRHA5WTI2ZXBsNHdlenZaY2VIVDZ4M3N1UENwOVkyNmVwbDR3ZXp2WmNlSFQ2eDNzdVBEaDFqYnA2bVllTUhzNzJYSGh3Nngzc3VQRGgxamJwNm1ZZU1IczcyWEhoVStzK2M3RzZnbStEM2wvSzhpSzQ2bVhuSlJIR25ockRYTXdXU2tFSWtCekVFOHhBSHpseU0yV2gvYzAvNlY4RFdwY2hzdHYvY1Uvd0NoZkE0M3VVS3l1QURNcUFBRFErNjdWcVIwbXdveGsxQ3BYazVMcHhIaStKeXc2ajNYMS84QVRkT2YvWGwvNm5Majdqc2ovU1UvNS9WZU9RQUQxMG1BQUFHQUFOcjdtVmVwUjJyb1U0U2FoWHB6aE5kS3hsZTlIWkRpWGM5bHU3WDZkNlpTWC9GbmJVZkc5dHhqVXhQcCs4cXlHaDdWOTBXeDB5cE8wMHFuQy91WThVcWpsK3lnK2pLL2VmcTR2U2ZMdXI3U1ZkUHRhZWpXTlYwN2k2anZWcHhmSEdueVlYcGZIK0NPUEdQVGFXSzQyNitTSWhzZW9iYmJUWDA1T2VxMWFFSC9BQVcrS2NWMWNmdk9qOXlPOHViM1FMdWQzYzFiaXBHNmEzcXMzSjQzVnhaWnhVNjkzRkpaMFhVb2RGekY5Y1AwTytxb3BwdFRpQ1hSQUFlT2dBQUh4dkZtMHJMK1JtdlJOa3JyTkNvdW1MK0JyVU9RMDJlVXJVdm9pVVFpVnlIWllBSUFBQlpid2syK2hBQWVpblkzVTFuZzkxZnpQQjlPOWx4NFZQcks3Y2RVWmVNSHM3MlhIaDArc2Q3TGp3NmZXTnVucVplTUhzNzJYSGgwK3NkN0xqdzZmV051bnFaZU1IczcyWEhoMCtzZDdManc2ZldOdW5xWmVNSHM3MlhIaDArc2Q3TGp3NmZXTnVucVplTUhzNzJYSGhVK3NkN0xqdzRkWTI2ZXBtSGpCN085bHg0ZFBySGV5NDhPbjFqYnA2bVllTUhzNzJYSGgwK3NkN0xqdzZmV051bnFaZU1IczcyWEhoMCtzZDdMandxZldOdW5xWmVNSHFucDkxSGtqR1hxa2VhY1owM3V6aTR2b2F3VEZVVHlNb1JKQUpTa2N3UUFqbVBuSStoU1JJMkd5bHZXbEYveUkreDVOS2xteGg2RzE3ejFtR3JuTG1BQXFBQUFIeHZLRWJxMHIyMHVTdFRsQi9pbWo3QW1KeE9ZSDV6dUtGUzJyMWJldEZ4cVVwT0VrK1pwNFBtZEQ3cCt6czRWNWE5YVF6VG5oWE1VdjNaY2luNm55TTU0Zm91bDFGT290UmNwL3dBL04xaWNnQU5JQUFrQ0pmdXYxRW1RMmYweXJxK3IyMWhTWDk1TDc3OEdDNDVQcUsxVlJSVE5WWEtCM1RSdDd2UFk3K2Q3NlBUem4rbEhyRUl4aEJRZ3NSaWtrdlFpVDh6cW5OVXk1SUpSQktJQUFFQVVxeDM2VTRlRkZvdUFOWWlYUXF4M0s5V0hSSnIzaGNodnk2SlhJQWdBQUlBQWpKOTZWcmNWVm1OTnBkTXVJVE9COFFlenZiY2VGVDZ4M3R1UERwOVpYYnA2b3k4WVBaM3R1UERwOVk3MjNIaDArc2JkUFV5OFlQWjN0dVBEcDlZNzIzSGh3Nnh0MDlUTHhnOW5lMjQ4T24xanZiY2VIRHJHM1QxTXZHRDJkN2JqdzZmV085dHg0ZFByRzNUMU12R0QyZDdianc2ZldPOXR4NGRQckczVDFNdkdEMmQ3Ymp3NmZXTzl0eDRkUHJHM1QxTXZHRDJkN2JqdzRkWTcyM0hoMCtzYmRQVXk4WVBaM3R1UERwOVpXV25YS1hGdVM5VWh0MDlUTHloRnFsS3JTL3ZLY28rbHJpS0psc3BXQkJLWUFBQUFBQUFBQUFBQU1qSUFESXlCQlZsaWpZR1QwV0gzYXRUcGFpakpuazB1RzVaUTZaWmtlc3lWem1xVkFBRkVCOGJ5dkcxczY5ekxpVkduS2IvQk5uMk5kN29GMTlGMlN2Mm5pVldNYUsvN25qNFpPMW0zdkx0TkhXWWdjVHFUbFZxVHF5L2VuSnlmcmJ5VkFQMGlIVUFCS0FBQUFENlc5SjE2OU9qSGpkU2FndnhlUHpJbWNjUjNEWWkyK2k3S2FiU2F3NVV1RWZyazIvek5lN3NPcHp0Tm42TmhUZUpYMVRFOGVCSGphL0Y0TjdvVW8wS05PakJZalRpb0plaExCelB1M1VKdWhwTnlrM1RqS3BUYjZHMG12Z3o4OXQxYjNVN1UvR1psUnlvQUh0cFpiWkcxK203VDZYYll5cDNNRy9VbmwvQS9SdksyK2s0ajNJclQ2UnRkR3MxbFd0Q2RUOFg5MWZGbmJ6eHRiVm01RWRFU2hFZ0dCQUFBTUpyRXQ2N1VmQmlrZVNKOUw2ZS9lVm4vQURZNmo1eE4xTVlwaGVGaVNBU2tFVktjbENDYmsrUklxMlpuVGJaVWFhcVRYN1NhNmwwRmFxdG1Nb21WYlRUNFF4S3RpYy9CNWw4ejNwSkxDV0VBWkpxbXJtb0FBcUFBQWdrQUFBQUFBQUFBQUFBQUFBQUFBZVM3c3FkZE9VVW9WT2xjL3JQV0NZbVluTURXNVJsVG00VFdKTGlhQmtkWW9yZGpYWEtudXkvSXhxWnNwbmFqSzhMSU1oQXNsRDVEN2FjdDYrcGVoNTl4OEd6MWFRdDY5ejRNV3l0WENtVVN6Z0FNU2dBQUFBQUFBREM3UTdONlpyM0JPOWpPTlNseFJxMG5pV09oOFhHakMvWnhvUGo3MzJrZmtib2E1dHB0VFQyWW9XdFdkbks2ZHpPVVZHTlJSeGhaenllazIyZFZxYVlpM2JxbjVKNHNkOW5HaGVQdmZhTDVEN09OQzhmZSswajhqRGZheFI4eDFQOEFjTDVEN1dLUG1PcC91RjhqWHZ1MFBOUDFPTE0vWnhvWGo3MzJrZmtQczQwTHg5NzdTUHlNTjlyRkh6SFUvd0J3dmtaclpIYnFudEhxcjArR21UdG1xVXFqcU9xcGNtT0xHUFNWcTFHdnBqTTFUOVRpdFE3bm1nMDYwS2twM2RWUmFiaE9vdDJYb2VGeUczd2hDbkNNSVJVSVJXSXhpc0pMb1JZR0M3cUx0N0c4cW1jSUFBY0FBQUFBQUR3YXk4V2lYVE5mbWU4eDJ0djloVFhUUDhpOXZ4UW1HSmlYS1JMbXhkSkFJeUFiUGRZMkRxcFZLMll3NW84N1BscDFCVjYrWkxNSWNiOVBvTTRjYmxlT0VLekt0T0VLY2QyRVZGZENMQUdaVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhxOXZTcnh4VWpsODBseW93dDFiVHRwNGZIRi91eTZUUG56dUtVYTFLVk9YUHlQb1owb3JtbjVKaVd2b0locHduS0VseHhlR1NqV3VubUlCREFwTGtOa3QvN2luL1F2Z2EzTGtOa3Qvd0REMC82RjhEamU1UXJMNkFBektnQUEwUHV2TC82UllQOEErUS8vQUZaeXc2cjNYVi85RnNuL0FQSi8vcXpsUjl4MlAvcEkrYy9xdlR5QUFldXNBQUdBQUFaN1lSN3UxMmx2L3E0LzRzN2p6SENkakpidTFXbFAvd0NSRmZFN3NmSWR1Ui85Nlo5UDNsU3JtNEgzU3EwNnUybXA3Ny91NXhweDlDVVVheWJ6M1hkTHFXbTBmZkJSZkEzMEU5NytlS3cxMVlab3hOaVltM1Rqb1FnNngzRXAvd0JrMWFuMFZhY3ZjemxHRHAvY1JsOS9WNFovaHBTOTdPZXIvb3lTNm1BRHdsUUFBUk5aaEpkS1pyRWVRMmptWnJISkpyMG1pejhWb1hYSVN1UXFtU2Qxa2tBcTJCOTdXM25jMU4yUEZGZnZTNkRNMjl2U29SeFRqeDg4bnlzV2xGVUtFWUxsNVpQcFo5akpYWE5VNCtDa3lBQTVvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXJPRUtrZDJjVkpkRExBREUzbGc2YWRTaGx4WExIblI0RXpaVERhbmJxalVWV0N4Q2I1T2htbTNYbmhLMFM4aFBNVlRKT3l3VWtYS01rWmZSWlp0cHg4R1prREZhSEwrK2o2bVpVeDNJOTZWSkFBYzBBQUFBQUNKeGpPTW9UaXBSa3NPTFdVMGFmWDduZWdWYTA2a1pYVkpUazN1UXFMZGo2RmxjaHVJTzlyVVhiT2QzVk1aR2wvWnhvWGo3MzJrZmtQczQwTHg5NzdTUHlQVHRudGhIWmk1dHFOVFRwM1ViaW01cWNhcWpqRHhqa05kKzFpaDVqcWY3aGZJM1U2algxeHRVMVRqNXA0c3o5bkdoZVB2ZmFSK1ErempRdkgzdnRJL0l3MzJzVVBNZFQvY0w1RDdXS0htT3AvdUY4aTIrN1E4MC9VNHN6OW5HZytQdmZhUitSbWRuZG1kTTBGMXAyVWFrcWxWSlNxVlpiMHNkQzR1SkhnMkwyeHBiVDE3cWpDeGxheXQ0Um45Nm9wYnlieDBHMUdXOXF0VE1UYnVWVDhqaUFBeElBQUFBQUFBQVlIVW83bDlVL213ejRSNUQyNjFIRmVuUHBqanFaNFlzMjBjYVlYaGRBaEFza0VWS2NsQ0t6SnZDUkRaNzlHcEtVNTFtczd2RXZXUlZPekdVUzlWblpRb3hVcHBUcTlMNUY2ajFra0dPWm1aektnQVNRSUJKQUFBQUFBQUFBQUFBQUFBQUFBQUFROE5ZZkdqeFhPbjA1cHlvL2NuMGN6K1I3Z1dpWmprTmNsR1ZPYmhPTGpKY3FZTTFmV3l1S2VVc1ZJL3V2cDlCZzAydUptbWlyYWhlSlhRSVJPUzZRREl5QUF5TWdBTWpJRUFBa0FBQkRLUGo0bHpsbWZTeWh3bDNTanpiMlgrQkdjUmtaK25IY3B4Z3Y0VWtXQU1UbUFBZ0RuL2RldTl6VDdDeVQvdmFzcWtsNklyQzk3T2dITnU2OVpYRXFsanFFWVNsYndoS2xPU1hGQ1djclByL0k5UHN1S1oxZEcxLzNnbU9ibkFBUHUzUUFCS0FBQURON0UyMzB2YXJUYVRXWXFzcWo5VVUzK1JoRHBuY3YyZHViZXJQV3IybEtsdlEzTGVFMWh0UGxsam02RVlkZmZwczZlcVpuak1ZajVvbDBVeE8wK2owZGUwVzQwMnE5eDFGdlU2bmdUWEkvL3dBNWpMRUg1L1RNMHptRkg1bzFmVGIzU2IrcFkzOUYwcTlOOG5OSmRLZk9tZU0vU2VzNk5wbXMyMzBmVXJTRnhGZnV5ZkZLSHBpK1ZHaTMvY3B0SnljdFAxYXJSWE5DdlRVOGZpc0hyMjlaUk1lL3dsT1h4N2lOcnhhdGV0ZUxvcDljbitSMUUxL1lqWjU3TjZUVXNwM0ViaXBVck9wS3BDTGlueEpKWWZxTmdQTnYxeFhjbXFFQUFPQUVON3FjbnpMSko4TDZlNVoxcGZ5dEV4R1p3TmV6dlNjbnl0NUxSS1JQcEUzdWlTR1NWWUgxczZhcTNWT0Q1TTVac0NNTm84ZDY2bEx3WXN6S00xMmVLa3BBQndRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEeWFwajZEVS9ENG1EUm1OWmxpMFM4S2FNUEUxMmZDdlN1dVFFSWs2cFZaNzlEV2F0V1hSRkwzbVBabE5Eait6clM2WkpITzU0WlJQSmt3QVkxQUFBQUFBQUFBNTMzYUxLdFcwbXh2cWNYS25iVlpScVkvaFVrc1ByV0RvaDhieTJvWGxyVnRicWxHdFFxeGNad2t1S1NPbHF2ZDF4VVB6R0RvdTBQY3l2Nk5XZFhSSzBMcWczbFVhc3QycEgwWmZGTDNHdXgySTJyYzkzdkxXWHBjb3BkZVQzS2I5dXFNeFVzMXc2aDNHTkpyS3BlYTFVanUwcFE0Q2kzL0FCUE9aUDFjU1I4dG5lNWhjU3FRcjY3Y1FwVTAwM2IwSHZTbDZITGtYNFpPcFd0dlF0TGVuYlcxS05HalNqdXdwd1dGRkdQVTZtbWFkaWppakw2Z0E4dEFBQUFBQUFBQVl2WEg5MmpIMHRtVU1ScmovYVVZK2hzNld2RW1PYkh4NUM2NUNrUzZOaTRWWkpWZ1puUm9wV3JsenlrejNIazBsWXNZZWx2NG5yTVZmaWxTUUFGRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdPcEpSdnFtT2ZEOXg4SW4zMVQvSFQ5UytCNTRtNm53d3ZDeERKSVpaS2t1UTJTMi93OUwraGZBMXFYSWJMYS80YWwvUXZnY0wzS0ZaZlFBR1pVQUFHajkxdGY4QTBHMGZSZEwvQU5aSEtEdG0zdWtWdFkwQ2RLMWp2WEZDYXJRaDRlRTAwdlRobkZKUmxHVGpLTGpLTHcwMWhwbjJuWXRkTldtMlluakVyMDhrQUE5dFlBQUFBQVpUWmFXN3RKcGt1aTVoOFR2WnhUWUhTYmpVdG9MYXJDRWxiMnMxVnExTWNTeHhwWjZXenRaOGgyNVZUTjZtSW5qRUtWTVh0Sm9scHIybFZOUHU4eFQrOVRxTGxwelhJMGNGMmcwTFVkQnZYYTM5SGR6L0FIZFdQSENvdWxQOHVVL1J4OEw2enRMKzNsYlh0dFR1YU11V0ZTT1VlVFkxRTJ1SE9GWDVsT2tkeEtXTlMxV0hUUWcvK1QrWm10VDdsK2ozRTVWTEM3dUxGdmozR2xVZ3ZWbmo5NTdOaDlqSyt6T29YVnpQVUtkMUN2U1ZOUmpUY1d2dlp6eW15OXFiZHkxTVJQRkxjd0FlU2dBQUJHc3pXS3MxMFNmeE5tUnJWZml1YXE2SnY0bmV6OFZxU0pKV0pZMHJJWmEzU2R6U1Q1TjlmRW94U2VLOU45RWw4U0o1RFpnQVlITUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTgyb1UxVXM2cTU0cmVYNEhwS1ZsdlVha2VtTFh1SnBuRWpXMFhSODQ4aGRHOTBTVVpjcXdQWm9qeGN6ajB3L016UmdkS2x1MzBQU21qUEdTN0h2S1NBQTVJQUFBQUFBQUFhSDNYZEdyYWhvbEcvdDRPZFN3azVUaXVYZzVjci9CcFByT01INmphVFRUV1UrWm5PTnFPNXBRdTYxUzcwT3RDMW5ONWxiVkYremIvbGEvZDlYSWVqcGRUVFJHeFdtSEkwT0kyYXZzSnRWUm00ZDZLbFgrYWxPTWsvZVpIUmU1dHIxNVZUdjFEVHFIUEtjbE9mNFJYNXM5Q2IxdUl6dFFsa3U0bmJWWHFPcDNtR3FVYU1hV2VtVGxuSFVqclJqOUMwaXkwVFRxZGhZMDkybkhqbEo4Y3B5NTVOOUprRHhMOXplVnpWQ29BRGlBQUFBQUFBQU1icmNjMGFjK2lXREZJem1xUjNyR3AvTGgrOHdVVFhhbjNWNGZSQWhFblZLck1yb2pYMGVvdWZmL0l4TE1ob2MvMmxhSFNrem5jajNaUlBKbHlDVURHb2dJQWtTUUVTUUlCSUpFQW5CR0FBQUFBQUFBQUFBQUFJWUFBQUFZVFZLYXAzYmFXRk5iMzQ4NW16RzYxRDluVHFkRHdkYmM0cVRER3hKS1JMbzFMZ0FBQUFBQUFBQUFBRU1DR2V6Um9adVp6OEdQeFBFMlpiUllZdDUxUENsOENseWNVeWlXUUFCalVBQUFLMWFkT3RTbFNyVTQxS2MxaVVKcktrdlNpd0ExNnJzWHN6VW01dlM0UmI1b1RsRmRXU24xSDJZODIvK1dmek5rQnBqVjZpUC82VDlaTXRiK28rekhtMy93QXMvbVBxUHN4NXQvOEFMUDVteUFudmVvL3VUOVpNdGIrcEd6SG0zL3l6K1krcEd6SG16L3l6K1pzZ0hmTlIvY242eVpZYlQ5bHRBc0txclcybDBWVVR5cHp6TnIxWk0wUVNjSzdsZHljMXpNL01BQWN3d0FBQUFBQUFBZURXWjd0bnUrSEpJOTVpZGRseDBZZXRuUzNHYW9UREdSUG9pa1M2Tmk0eXJMTW93TW5vY2VLdFAwcEdWWEllSFNJN3RtbjRVbXozSXgzSnpWS2tnQU9hQUFBQXVQazR6ejZqZTIrbldOZSt1NTdsQ2hCem5MMEhETnB0dGRaMXF2TlJ1S2xsWjUrNWIwWk9QRi9NMXh0KzQwV2JGVjJlSElkN0g0bjVnNGV2NDZyMjM4eHc5ZngxVHR2NW12dUUrYjdKdy9UL0FPSVB6QncxYngxWHR2NW5kTzVyclQxZlpxa3EwOTY1czN3RlhMNDJsKzdMOFY4RGhlMHMycWRyT1REYXdBWTBBQUFBQUFBQUFBQUFBREY2N0w3bEdQUzJ6RnhQZnJrczE2Y2VpR2ZlZUdKdHQ4S0lYamtzZ3dneTZWSkdaMFdPTFJ5OEtiTU16UGFYSGRzYWZweS9lY3J2aFZsNmdBWkZRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQzYyLzdUVFhSRDh6TkdEMWw1dk1kRUYrWjF0ZUpNYzNraVdSV0paR3RjS1NMdm5QbklEWU5NV0xHbDZWbjNucFBoWUxGbFIvcFI5ekRWemx6QUFWQUFBQmg5Qmpkb3RXbzZKbzl6cVZlTytxTWZ1d1R4dnlmRWwxbkNkYzJtMXJXYThxbDNlMUl3Yis3UnBTY0lSWFFrdnpOTm5UMVhlTWNJVGgraVB4SDRuNWk0ZXQ0NnAyMzh5T0dyZU9xZHRtcnVIL0FDK3hoK25nZm1XaGVYVkN0VHJVcmlyR3BUa3BSbHZ2aWE1RDlDYkxhelIxM1JiZlVLYlNuSmJ0YUMvZ3FMbFg1K3BtYS9wcHRSRTV5WVpZQUdWQUFBQUFBQUFBQUFBQUF3R3Evd0NQbjZsOEQ0UlB2cW4rUHFlcGZBODhUZFQ0WVhoZGNoREM1Q0dXU3BMa05rdGY4TlMvb1h3TmJseUd5V3YrR3BmMEw0SEM5eWhXWDFBQm1WQUFBTVZxZXoyaTZuVWRXOTA2bFZxdmxxTE1aUDF0Y3BsUVhvcnJ0em1pY1Q2RFcvcVJzeDV0L3dETFA1ajZrYk1lYmY4QXl6K1pzZ08vZk5SL2NuNnlaYTM5U05tZk52OEE1Wi9NZlVqWm56Yi9BT1dmek5rQTc1cVA3ay9XVExXL3FSc3o1dC84cy9tVERZclptTWsrOWllT2FWU1RYeE5qQTczcVA3ay9XVEw0MmxyYldkQ052YVVLZENqSGtoVGp1cEgyQU0wek16bVFBQkFBQUFBQUFBQUd1WGl4ZVYxL096WXpYdFE0cit0L1VkN1BPVXcrUzVDeFdKWTBycXZrS0xpa24wTkYyZk9RRzFBclRlWVJmU2tXUFBjd0FBQUFBSE5ubU1GdHByeTJlME9wZlJoR3BYbEpVNk1KY2prK2QraEpaT0Y2bnJXcTZuWGxYdnRRcjFwTjhtKzFGZXBMaVJxc2FhcTdHYzRoTDlJL2lNcnBSK1llR3JlT3FkdGpocTNqcW5iWnA3aFBtK3hoK25nZm0vUk5ZdmRJMVMzMUMzcXpsT2pMTGhLYmFtdWVMOWFQMEpwR28yMnJhYlExQ3pudlVhMGNycFQ1MC9TbnhHVy9wNXM0K01JZXdBR1lBQUFBQUFBQUFBQUdNOFFBR3J0YnM1UjZHMFdSYTZXN2Qxby96c3F1UTlDT01PaXhWbGlyNUFMV2N0MjhveS9uUnNocThYdXpqTG9hWnRITHhtYTl6aFdRQUhCVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSHp1WTc5dlZoMHhaclVlUTJrMWlwSGNxemg0TW1qUlpubkMxS3lKWlZFOHhvV1ZaNk5KbnUzMFY0U2NUenNtMm53ZHpTbjBUUkZVWmlZUTJaQUF3S0JHQ1FBUUFBRGs1ZUkxRHVrN1NWOW45SnBSc21vM2wzSndoTnJQQnhTNDVldmpXRGlkemYzMTFWbFd1TDJ2V3FTNDNLZFdUZnhObG5TMVhhZHJPSVRoK204cnBReXVsSDVmNGF2NDZwMjJPR3IrT3FkdG5mdUgvTDdHSDZnQitmdGk5cDduWi9WWTE1em5XdEt1SVhGSnliekhwWHBYNkhmTFc0bzNWdFR1cmFwR3JScXhVNFRqeVNUNXpKZXNUYW5qeVErb0JCbkFBa2tRQ1NFQktCQ0pJQWdram1KZ0R6YWxEZnNxcTU0cmVYNEhwSWxGU2pLTDVKTEJNVGljaldZbDBVeHV5Y1h5cDRMSm01MFdBQUFBQUFBQkFBQUVNa3ErY0NyTmdzSWNIWjBvOCs3bC9pWUNFZCtwR0hoU1NObVNTV0Z5TGlPRjJlRVFyS1FBWjFRQkU0QWdBQUFBQUFBQUlZSkFBQWdBQUFBQUFBQUFBQU1GckU5NjkzZkFpbCtablRXcnlmQ1hsYWZNNU03V1k0NVRTcEVzaXNTeTVEVXVNcElzeXVONlNpdWQ0QTJLeWh1V2RHUDhxUHVSRmJzVkhvV0NUQk01bHpBQVFBQUEwenV0M0hBN0gxS1NlSGNWNmNQV2szSi9BNGNmbzdhTFFMRGFDMnBXMm9jTndkS2ZDUlZLZTd4NHh4bUErelBaandiei9jZm9lanB0UmJ0VWJNcGlYRWNFbmJmc3oyWjZMei9BSEg2RDdNOW1laTgvd0J4K2hwNzdhOVRMaVJ0dmN4MXJ2VHRKVHBWcDd0dGVyZ2FtWHhLWDhMNitMOFRvSDJaN01lRGVmN2o5QXU1cHN5bW1sZXBya2YwajlDbGVxczEwelRPZUpsdW9LMDQ3bE9NTjV5M1VsbVhLOGRKWThoQUFBQUFBQUFBQUFBQUF3T3J2ZXZwTHdZcEhsaWZXL2x2WDFaL3pZUGxFM1V4aW1GNFdRWVhJR1dTb3pZZE9hZGpSeHpSd2E4ekthSmNMZGxiU2VHbnZSOVBTY3JzWnBSTEtnQXlLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3ZhbE5WTDZxMXhwWWoxR1gxQzZWdFJlSCswbHhSWDVtdng2V2FMTlB4V2hhSlpjaENMR2haVmxKY2pMdm5LUzVHQnN0b3NXdEpmeUkrcFdrc1VvTG9pdmdXTUU4M01BQkFBQURSdTdGUGQyV3BReisvZHdYVXBNNHVmbzNhSFFyRFg3U25hYWh3cnBVNm5DTGdwN3J6aHI4elh2czAyWjZMei9BSEg2SG82ZlUwVzZObVV4TGlZTzJmWnBzejBYbnQvMEgyYWJNOUY1N2Y4QVEwOTl0ZXFjdUptNmR5N2FEdlRyWDBHNG5penZtb1BMNG9WUDRaZmsvd0FEZVBzMDJaNkx6Mi82QmR6WFpsYzE1L3VQME9kZXFzMTB6VE9VWmJxQ2xHbndWR0ZMZmxQY2lvNzAzbVR4enQ5SmM4bEFBQUFBQUFBQUFBQUFBd0dxZjQrcDZsOER6STlHcWY0K3IrSHdQT2pkVDRZWGprc3VRaGtya0laWktrdVJteTJuK0ZvLzBMNEd0UzVHYkxhZjRXai9BRUw0SEM5eWhXWDFBQm1WQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUJxaXhmMVBTay9jWjh3V3JyRjgvVEZIYXo0a3c4aUxJcWl5NURVdWg4NVNYSXk3NXlrdWNEWnJaNXQ2VDZZTDRIMFBoWXZOblJmOEFJajdtQ2VibUFBZ0FBQm9YZGxodmJOVzAvQXU0KytNampaK2o5ZjBheTEydytnMzZxT2p2cWY3T1c2OHJrNC94TmMrelRabm92UGIvQUtIbzZmVTBXNk5tcE1TNG1EdG4yYWJNOUY1N2Y5QjltbXpQUmVlMy9RMDk5dGVwbHhNM2Z1WWJUZDZkUjcyM2xURmpkeVNUaytLbFU1bjZueVA4RGRmczAyWjZMei9jZm9QczAyWjhHOC8zSDZITzVxYk55bWFaeU4xQjhyU2dyYTFwVzBhbFNwR2xCUVVxa3Q2VFM1TXZuUHFlU2dBQUFBQUFBQUFBQUFBYS9xY2QyL3ErbkQ5eDhFZXZXVmk4VDhLQ1BIRTNVZUdGNDVMSWhrcmtETEpmT1JzbG5WVmEycDFGenJqOVpyalI3ZEp1MVFtNk5SNHB6ZkUraG5LNVR0UndSTU00QURJb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWE1ZTQrbTE4ZUd6UDNGV05Dak9yTGtpdXRtdGJ6bktVcGNzbmxtaXpIT1ZxVmtXS29zYUZsV2ZOOFhIMEgwZk9Va0JzOUdXL1NoUHdvcGx6eTZYTGZzYVQ2RnU5VFBVWUpqRTRjd0FFQUFBT2Q5Mm0wNFRSckM4Uy91TGh3ZnFrdm1qajUrbE5kMG16MXZUcDZmZnFib1RsR1QzSmJyVFR5c00xbjdNOW1PaTgvM0g2SHBhZlUwVzZObXBNUzRpRHQzMlo3TTlGNS91UDBIMlo3TTlGNS91UDBOSGZiWHFaY1JOLzdsKzFuZXk1am8xL1Uvc1Z4TDlsT1Q0cU0zLzhBMWZ1WnQvMlo3TTlGNS91UDBIMlo3TWVEZWY3ajlEbmMxTm01VHN6a3kzWUhuc0xXRmxaVWJTblVxVklVWXFFWlZaYjBzTGt5K2M5QjVTQUFFQUFBSUJKQklBQUFBQU5ldjRjSGUxbHpONVg0bnlSN3RhaGl0VHFlRkhIVWVDSnRvbk5NTHh5WEJDSkxKQUFBQUFBQUJJVjVpeFZoQ2FFbEc0cFNmSXByNG15bXJTTS9wMXlyaWdzdjlwQllrdnpPRjJQaXJMMUFBenFoSkNKQUVZSkJBakJJQUFBQUFBQUFBQUFBQUFBQUFBQStkZXRUb1UzVXFTM1lyM2ptUG5mVjFiMjBwNSs4K0tLOUpyc2VjK3Q1Y3p1cXUrK0tLNG94NkQ1eFJ0dDBiTUx4R0ZrV0lRNWk2VU0rbGpIZnZhTWY1a3o1TTllangzcjNQZ3hiSzFjS1pSTE9nQXdxQUFBQUFEVXRxZHM2V2c2a3JGMkVybVhCeHFPU3FLT001NHVUMEdIKzA2bDVtbjdkZkkxZnVoVitIMnUxRGp5cVRqU1g0UlJyaDlscHV5OU5WWm9xcnA0ekVmR1Y0aUhTL3RPcGVacCszWHlIMm5Vdk0wL2JyNUhOQWFQWk9qOG4zbjhwMllkTCswNmw1bW43ZGZJbjdUYVhtYWZ0MThqbWlBOWs2UHlmZWZ5akVPbC9hYlM4elQ5dXZrUHROcGVacCszWHlPYUFleWRINVB2UDVNUTZYOXB0THpOVTl1dmtQdE5wZVpxbnQxOGptZ0hzblIrVDd6K1RFT3E2ZjNTTk5yMWxUdkxLdGFSYnh3aWtweFhyeHhtNzBhdE90U2hXb3pqVXB6U2xHY1hsU1Q1MGZuTTY5M0s2dGFwc3pLRlNUbENsY1NoVHp6UnduanJiUEk3VDdPdFdMZTl0Y1BSRXczRUFIemlvQUFBUUt6ZTdUbkxvaTJCck5TVzlXcVM2Wk4rOGxIemp4bjBSNkRvc1F5UUJSbFU1UWtwUmJqSlBLYTVpNVZvRE1XV3AwNmlVSzdWT3AwdmtmeU1pdU5aWEdqVTJpOUt2WG8vM1ZXVUYwSjhSeHFzeFBKWERhUWE2dFN2Vi93RGRUOWNVTytkNzR5UFpSejNOU01OaUJydmZPOThZdXloM3p2ZkdSN0tHNXFNTmlCcjNmTzk4Wkhzb2Q4NzN4a2V5aHVhakRZUWE3M3p2ZkdSN0tIZk85OFl1eWh1YWpEWWdhNzN6dmZHTHNvZDg3M3hpN0tHNXFNTmlCcnZmTzk4WXV5aDN6dmZHTHNvYm1vdzJJR3U5ODczeGk3S0hmTzk4WXV5aHVhakRZZ2E3M3p2ZkdMc29udm5lK01qMlVOelVZYkNEWHUrZDc0eVBaUkQxSzlhL3ZVdlZGRGMxR0d4UGlXWHhJOEYzcVZHaW5HazFWcWVqa1g0bUZxMXE5Yis5cXluNkcrSW9rZEtiTVJ6VGhlclVxVnFqcVZKYjBtVEZFUlJaSFpaS0pJSkFxVWZIeEYyVlN6VWl1bHI0Z2JSSGlpbDZDUUR6M01BQUFBQVlIYTNhT0d6dEMycXl0SlhQRHpjVWxQZHhoWnp5R3MvYWJTOHpUOXV2a1QzWUgvWjlMai9QVWZ1UnpVK3E3TzdQMDk3VDAxM0tjek9malBWYUlkSiswMmw1bW43ZGZJZmFiUzh6VDl1dmtjMkI2SHNuUitUN3orVTRoMG43VGFYbWFmdDE4aDlwdEx6TlU5dXZrYzJCSHNuUitUN3orVEVPay9hYlM4elZQYnI1RDdUYVhtYXA3ZGZJNXNCN0owZmsrOC9reERwUDJtMHZNMVQyNitRKzAybDVtcWUzWHlPYkFleXRINVB2UDVNUTZkYjkwdXpsVVN1TkxyMDRjOG9WRkpyOE9JM1RTOVJzOVV0STNkalhqV3BTNHNyaWFmUTF6TS9QcHVuY3B1cTFQYUNyYVJrK0JyMEpTbEgweDVIOFRCcnV5ck5GbWJscmhNSW1IV1FBZktxZ0FBQUFEWDlVL3dBZlYvRDRId1I5OVUvekNyK0h3UGdqZFQ0WVhqa2xjZ1lYSUdXU3BJenVrMVZVczR4ejk2bjkxL2tZTm8rdGpkTzFyYjNHNFM0cElwWFR0VW9tR3hnclRuQ3BCVGhKU2krUm9zWWxBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEWGRRcXFyZTFKSjVTZTZ2d01ycVY0cmVtNmNIKzJrdUwwTHBNRkZHbXpUOFZxVjBTaUVXTzZ5SHpuemtmUjg1ODVjZ0d3Nlk4MkZIK244ejBuajBoNXNJZWh0ZTg5aGhxOFV1WUFDb0FBRHdhN3FLMHJTYm5VWFJkWlVJcVRncGJ1ZU5MbC9FMHI3VGFYbWFwN2RmSTI3YTJud3V6R3FRNWY3Tko5WEdjSFBvdXl0SFkxRnFxYmxPWmllc3JSRHBYMm0wdk0wL2JyNUQ3VGFYbWVmdDE4am14R0QyUFpPajhuM244cHhEcFgybTB2TTAvYnI1RDdUYVhtYWZ0MThqbXVBUFpPajh2M244bUlkSyswMmw1bW43ZGZJZmFiUzh6VlBicjVITmdSN0swZmsrOC9reERwUDJtMHZNMC9icjVEN1RhWG1hZnQxOGpteEJQc25SK1Q3eitURU9tUTdwdHU1TGYwaXFvODdqV1Rmd05xMmYyaTB2WEtjblpWbXFzVm1kR29zVGo2Y2M2OUtPRUhyMHErcmFicUZ2Zlc4M0dwUm1wWlhPdWRlcG96Myt4ckZWRTdxTVNiTDlDQXJUbXFsT05TUEpLS2t2VXl4OGFvQUFBQUFNUHJpeFZveTZZdGU4eDhUSzY3SDlqU24wU2FNVkUyVy9EQzhjbGtBaVRvbFZuemtqNmxXZ1BYWTZsT2dsVHJKenBya2ZQRXpOQ3ZScngzcVZSUzlDNWVvMWh4SVdZdk1XMCtsSE9xMUZYR0VZYllEVzRYMTVCWVZlVFg4M0dYNzUzdmpJOWxITGMxSXcyRUd1OTg3M3hpN0tIZks5OFl1eWlOelVqRFlnYTczenZmR0xzb2Q4NzN4aTdLRzVxTU5pQnJ2Zk85OFl1eWgzenZmR1I3S0c1cU1OaUJydmZPOThZdXloM3p2ZkdMc29ibW93MklHdTk4NzN4aTdLSGZPOThZdXlodWFqRFlnYTkzenZmR1I3S0k3NTN2akk5bERjMUdHeEExM3ZuZStNWFpRNzUzdmpGMlVOelVZYkVEWGUrZDc0eGRsRHZsZStOajJVTnpVWWJFZks0dUtOdkhlcXpVZWhjNy9Bd0U3Kzhtc092SkwrWGlQUHh5YmNtMjN6c3RGbnJLY1BWZlhrN3FmSnUwMXlSL05ud2lpSW91alJFUkVZaFpLSklSSUVNcEl1eWpBeStoVHpiVkllRFA0bVNNTm9Vc1Zxc09tT2VwbVpNZHlNVlNwUE1BQnpRQUFDSk5xTW1sbHBOcGRKenlYZE5weGxLTDBhb25GdFA5dXZrZEVYRThuQXRwN2I2SnREcVZ2akNoY1R4Nm04cjRudDlrNmF4cUtxcWJzWnh5V3BqTGVQdE9wZVpxbnQxOGg5cDFMek5VOXV2a2MwQjcvc25SK1Q3eitWdG1IUy90T3BlWnArM1h5SDJuVXZNMC9icjVITkFUN0owZmwrOC9rMllkTCswNmw1bW43ZGZJZmFkUzh6VlBicjVITkFQWk9qOG4zbjhtekRwZjJuVXZNMVQyNitRKzA2bDVtcWUzWHlPYUFleWRINVB2UDVObUhTMTNUcU9lUFJxbVA4QVhYeU0vcy90cG8rc1ZWYnFVclM1bHhScFY4TGVmb2x5UDFIRlJscDVUdzF6bzUzT3h0TFZUaW1NVDgveWpaaCtrQ0RYdGdkVnE2dHM3U3JYTTkrNG95ZEtwSjhzc2NqZnB3MGJFZkczYmRWbTVOdXJuQ2lBTUE1Z0FBTWZyTU42MVUvQWw4VER4Tmp2S2ZDV3RXSFRGNE5iaHlHcXpPYVZxWDBSSkNKT3F3QUFrQUFFREpBQWtNZ0JDckZLcE9qVVZTbkp4a3VjbG9xMEJscmJWcVVsaXZGd2w0UzQwZTJGMWJUWDNhOEgvd0J4clRSWGRPVTJxWjVLNGJWd3RMeHNPMGh3dEh4c08walZkMGpkSTNNZFRaYlh3dEh4c08waHcxSHhzTzBqVk4wYm8zTWRUWmJadzFIeHNPMGh3MUh4c08walU5MGJwRzRqcWJMYk9HbytOaDJrUncxSHhzTzBqVk4wYm8zRWRUWmJadzFIeHNPMGh3MUx4c08walU5MGJvM0VkVFpiWnd0THhzTzBod3RMeHNPMGpVOTBibzNFZFRaYlp3MUx4c08waHcxSHhzTzBqVTkwYm8zRWRUWmJYdzFIeHNPMGh3MUx4c08walZOMGJwTzVqcWJMYStHcGVOaDJrVW5lV3NQM3E4UFVuazFqZEpVUnVZNm15ekZ4cThFbXJlRG0vQ2x4THFNWFdyVmE4M09yTnlmdVJSUkxKSFNtaW1ua21Jd1JSZEVKRWwwcFFaQTVpQkRaa3RCangxcW5xaVl1Um10RWppemN2Q216bmRuM1VUeVpBQUdOUUFBQUxsNCtRSG0xS3NyYlRydTRieHdWR2M4K3FMSnBqYW5FRGdtczNEdTlYdnJsOGZDMTV5LzVNOFlUYjQzeXNrL1RLYVlwaUlqNE9xQ2NBRmtBQUFBQUFBQWtPMDl6aWh3R3lObytlcktkVHJsK2h4YmtXVHZteTlENlBzNXBsSGtjYmFHZnhXZnpQbiszS3NXS2Flcy9sV3Brd0FmSUtBQUFId3ZwYmxuV2wvSXo3bmoxZVc3WVZQUzB2ZVdwak5VRU1CRStpUG5FK2lON29rWklCQWtnQUNDTUZoZ2tVd01GOEVZQXJnWUxZR0FLNEdDMkJnQ3VCZ3RnWUFyZ1lMWUdBSzRHQzJCZ0N1Qmd0Z1lBcmdZTFlHQUs0R0MyQ2NBVlNKU0p3QUJLd1FDQkl5UUFESW84ZGVtdjUxOFErY3Rack4zUlg4NitJbmtObWZLQUR6M01BQUFBQWMzN3NFdnY2VkgwVkg3NG5Pam9IZGZsL2J0TWowVVp2L2tqbjU5MzJYR05IUi9uOVpYamtBQTlOSUFDQUFBQUFFZ2JkM0xGbmFyUFJiVlB5TlJOeDdsUy93RDVOTjlGdFA0b3hhLy9BRXR6NUluazY0QUQ4K1VBQUFBQUd2YW4vbUZYOFBnZkNKOTlVL3pDcitId1BoRTMwK0dGNDVMSUVBbEl5alJjaG9rV3RicXRheXpUbDkxOHNYeU15MXZxMXZOSlZjMHBlbmpSaEdpTjBwVlJUVnpSaHM4TG0zbXN4cjAzL3dCeUxjTFM4YkR0STFUZEc2Yzl4SFZHeTJ2aHFYallkcERocVhqWWRwR3A3bzNTTnhIVTJXMmNOUzhiRHRJY05TOGJEdEkxUGRHNk54SFUyVzJjTlM4YkR0SWNOUzhiRHRJMVBkRzZOeEhVMlcyY05TOGJEdEljTlI4YkR0STFQZEc2TnhIVTJXMmNOUjhiRHRJY05TOGJEdEkxUGRHNk54SFUyVzJjTFM4YkR0SWNMUzhiRHRJMVBkRzZOeEhVMlcyY0xTOGJEdEljTFM4YkR0STFQZEc2TnhIVTJXMmNOUzhiRHRJY05SOGJEdEkxUGRKM1J1STZteTJhcGUybFA5NnZIMUxqTWZjNnUybkcyamorZVh5TVVva3FKZW0xVENjSmJsT1RsS1RsSjhyWmFKQ1JkSTZwU2hrZ0VDVDV5THNwSURONkk4MlRYUk5udk1ib1QvczFSZEUveU1rWXJuaWxTUUFGRUFBQThtcnc0VFNiNm5qTzliMUYvd0FXZm55UDdxOVIraTYwZCtqVWh5NzBHdmNmblZyZGJqMFBCOVQyRFB1M0krWDdyVWdBUHBGZ0FBQUFBQUFFWUlhNG42aXdKSDZBME9wdzJpMkZYT2QrM3B2L0FJbzlwaGRpcXZEYkthWFBPY1VGRi9nMnZ5TTBmbTk2blp1MVU5Smx6QUFjUUFBSGcxcU9iSnZ3WnBtRmlaL1ZJNzFoVzlDVDk1cjhUWFo4SzlMNklaSVFPcVU1QkFBRmNGaGdDbUJndmdqQklyZ1lMWUdBSzRHQzJCZ0N1Qmd0Z1lBcmdZTFlHQUs0R0MyQmdDdUJndGdZQXJnWUxZR0FLNEdDMkJnQ3FSS1JiQUFJbEVBZ1RrRUFDU3JKS3NEMGFUUGN2NGZ6WmliQ2F0Umx3ZHhUbjRNay9lYlNacjBjY3F5QUE0S2dBQUhITzZoYmNCdFRVcXBZamNVWVZQVzBzUDRIWXptL2RndHVMVEx4THc2VGZVMStaNi9ZOXpZMVVSMWlZL2Y5azA4M053QWZjT2dBQUFBQUFBQUFDUjBudVAzZjNkU3NXK1J3clJYL0FCZjVIUnpqWGN4dWZvKzFkR20zaU54VG5TZnJ4bGZBN0tmRDlzVzlqVlRQV0luOXYyYzU1aEdDUWVPZ0FBRDBHc1ZZOEhXcVUvQmswYk9ZRFZvYmw5SjgwMHBIZXpQR1lXcGVkRTVLb2swckpHU0FCT1JrZ0JJQUFnQUFBZ2tnQmdqQklBakJHQ3dBcmdZTEFrVndNRmdCWEF3V0FGY0RCWUFWd01GZ0JYQXdXQUZjREJZRUN1Q2NFZ0JnSUU0QUFBQUJ6RWN3RkpHeDZkRGNzcUs2WTU2elhHc3ZDNXphb1IzWVJqMEpJNFhwNFJDc3BBQm1WQUFBTUR0M1grajdKYWxMT0hPbHdhLzdta1o0MVh1bVVLMWJaU3U2TVhKVXFzS2swdkJUZVg3MGF0SEVUcUtJbnJINmtPTTg1SUIraXVnQUFBQUNRQUFBQUJhRVhPY1lMbGsxRmZpZm9xM3BxbFFwMGx4S25DTVYrQ3djTzJOMHFycXV2MnRHRUc2VkthcTFwWTRveFR6NytRN3B5dko4cDI3Y2lhNktJK0dmdXBVQUErYlZBQUFNYnJzc1dzSTlNL3lNa1lqWHBmM01QV3pwYmozb1RER1JMb3BFc2JWMGdBZ0FRUmtDMlJrKzFDeXVhNnpHRzdId3BjUjdJYVQ0eXYyWWxacnBqbWpMR1pHVEw5NmFQanFudUhlbWo0MnA3aXU5cE1zUmtaTXYzcG8rTnFlNGQ2YVBqYW51RzlwTXd4R1JreS9lbWo0MnA3aU85Tkh4dFQzRGUwbVlZbkl5WmZ2VFI4YlU5dzcwMGZHMVBjTjdTWmhpTWpKbCs5Tkh4dFQzRHZUUjhiVTl3M3RKbUdJeU1tWDcwMGZHMVBjTzlOSHh0VDNEZTBtWVlqSXlaZnZUUjhiVTl3NzAwZkcxUGNON1NaaGlNakpsKzlOSHh0VDNEdlRSOGJVOXczdEptR0l5TW1YNzAwZkhWUGNWbHBNTWZkcnlUOUtHOXBNc1hrSHFyNmRjMGszRktwSCtYbDZqeDU1bnlvdkV4UEpLd0lKUklBQmdRejZhZXMzMUJmekh5ZklmZlMxblVLWG9iK0JGWEtVTmlBQmdVQUFBQUFITGU2N0xPcjJFZWkyYi93Q1RORU4vN3JscFdWOVkzMjYzUmxTZEp5NWxKTnZINHBtZ0gzdlpreE9rb3gvM2l2SElBQjZTUUFFQUFBQUFKQTNQdVRyL0FQa2RkOUZyTC8yaWFZYi9BTnlTeHJPOXZOU2NHcUVhWEF4azF4U2sybThlcEwzbm45bzFSVHBhODlFVHlkT0FCOEFvQUFBQUFOZDFUL01LM3JYd1BoRSsrcWY1aFc5YStCOEk4aHZwNVF2SEpZQkFsSUFBSUl3U0FJd01FZ0N1QmdzQ1JYQXdXQUZjREJZQVZ3TUZnQlhBd1dBRmNEQllBVndNRmdCWEJPQ1FRSXdUZ0FDUUVBQUFBRkpGaXJBeXVnUDluWFg4eU1xWWpRSHgxMTZFL2laY3gzUEhLazh3QUhOQUFBSmp5cjFuNTR2NGNIZjNWUHdLMDEveVoraGx4SER0dE5OcmFidEZlUXFSYXAxcWtxMUtXT0tVWlBQdTVENkxzS3VJdVYwOVlqN0xVc0dBRDZ4WUFCQUFBQUFBQUFBN04zTnFuQ2JJMmk4WE9wRC9BSlA1bXptcTl6SzJyVyt5MUtWV0xqdzFXZFdDZmd2Q1QvSEJ0UitlNjNIZWJtT3N1WUFESUFBQStWM0hldGEwZW1ETlppYlUxbUxYU3NHcXBZYlhRYWJQS1ZxVjBTUXVRbGNoM1dBQ0FKQkJNSXluTGRoRnlrK1pJQmtqSjdxT2wxNXJOU2NhYTZPVm5vV2swc2NkYWJmb1NLVGNwaEdXSnlNbVg3MDBmSFZQY085Tkh4dFQzRWIya3pERVpHVEw5NmFQamFudUhlbWo0MnA3aHZhVE1NUmtaTXYzcG8rTnFlNGQ2YVBqYW51RzlwTXd4R1JreS9lbWo0MnA3aDNwbytOcWU0YjJrekRFWkdUTDk2YVBqYW51SGVtajQycDdodmFUTU1Sa1pNdjNwbytOcWU0ZDZhUGphbnVHOXBNd3hHUmt5L2VtajQycDdoM3BvK05xZTRiMmt6REVaR1RMOTZhUGphbnVIZW1qNDJwN2h2YVRNTVJrbkpsZTlOSHgwK3BIeXFhVE5MTk9zcGVpU3dJdVVtV1BCZXRRcjBIKzFwdExwNVVmTk02UmllU1VnZ2xBQ0dUekVBZk9SdE52TGZvVTUrRkZNMWFSc0drejM3Q24vTG1Qdk9ONk9HVlpld0FHVlVBQUExSHVvMjNEN0xTcXBaZHZXaFA4SGxQNG0zSGgxdXhXcGFSZVdEYVRyMG5GTjh6NXZmZzBhVzV1cjFGYy9DWUlmbjBIMnU3YXZhWE5TMnVhVXFWYW05MmNKTERUUGlmbzBURXhtSFVBQklBQUFBQUFBQTkyaFhYMEhXYkc4emhVYThKTitqUEg3ajlCY1Q0MXljeCtjRkdVbnV3VGNueEpMbGI1ajlFMlVha2JLM2pXL3ZJMG9LZnJ3c255L2IxTVpvcStQRlNwOWdBZk1LZ0FBR0oxMkg5MVY5Y1daWThXcnczN0diNTR0U0wyNXhWQ1lZT0pZK2NTNXRYU0FBQUFBQVpHUUF5UVJrQ1FYdDZGYTRsdTBvNXh5dm1SbEtHbFVvck5hYm0raGNTS1ZWMDA4MFpZZkkza2JIQzF0NEw3dEdINHJKZmdxWGk0ZGxIUGZSMFJsckc4TjVHejhGUzhYRHNvY0ZTOFhEc29iNk9obHJHOGh2STJmZ3FYaW9kbERncVhpb2RsRGZlaGxyRzhodkkyZmdxWGlvZGxEZ3FYaW9kbERmZWhsckc4aHZJMmZncVhpb2RsRGdxWGlvZGxEZmVobHJHOGh2STJmZ3FYaW9kbERncVhpb2RsRGZSME10WTNrTjVHejhGUzhWRHNvY0ZTOFZEc29iNzBNdFkza041R3o4RlM4VkRzb2NGUzhWRHNvYjcwTXRZM2tUbEd6Y0ZTOFZEc29jRlM4VkRzb2I3ME10WnlpVFk1MjF2TllsUmcvd0FEeDE5THBTVGRHVHB5Nkh4b3RGNm1lWmxpQ1V5YTFLcFFtNFZZN3IrSlJQSjE1ckxBZ25JQmxYeUVsV3dQcGFSMzd1akRwa2paakFhUEhldmsvQmkyWjh6WHA0NFZrQUJ3VkFBQUluR000U2hPS2xHU3cwMWxORWdEUzlTN25lajNOWjFiV3ZXc2M4dE9HSlIvQlBrUEY5bVZwNTN1UFpSK1owRUhvVTlwYXVtTVJYUDJUbVhQdnN5dFBPOXg3S1B6SDJaV25uZTQ5bEg1blFRVzlxYXZ6L2FQd1psejc3TXJUenZjZXhqOHg5bVZwNTN1UFl4K1owRUQycHEvUDlvL0JtWFB2c3l0UE85eDdHUHpIMlpXbm5lNDlqSDVuUVFQYW1yOC93Qm8vQm1YUHZzeXRQTzl4N0tQelByYjl6VFRvVkU2K3BYTldIUEZRakhQNG0rQWllMDlYTVkyL3dCUHdabDR0SjBxdzBtMitqYWZiUm93YnpMSEc1UHBiNVdlMEF3VlZWVlR0VlRtVUFBS2dBQUJnOWNsbTdqSHdZTDRtY05lMWFXOXFGVCtWSmU0N1dZOTVNUE5Fc2lzV1dOUzZTQVEyQVdaTlJpbTIrSkpHYXNkUGhTU3FWa3AxT2ptaWZIUmJkWWR6TmNmSkQ4MlpVejNLNXppRlprQUJuVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR4MzFsQzRpNVFTalY1bjArczlnSmlaaWN3TlhhY1pPTWxocDRhWU1ocmRGUXFRcnhYNy9GTDFtT1ROMU5XMUdWNFdRWkNCS1VNOU9qck4vSDBKczhyWjdORTQ3MXZvZ3l0ZmhsRThtZUFCaFVBQUFBQUh3dmJTMnZyV3BhM2RHTmFqVVdKUWt1Sm1tM2ZjMzB1cFZjcmErdWJlRC9BSUdsUEg0dmpONUJwczZxOVkvcDFZSFAvc3p0UE8xZjJVZm1Qc3p0UE8xZjJVZm1kQUJwOXFhdnovYVB3bk11Zi9abmFlZHEvc28vTWZabmFlZHEvc28vTTZBQjdVMWZuKzBmZ3pMbi93Qm1kcDUycit5ajh4OW1kcDUycit5ajh6b0FIdFRWK2Y3UitETXVmL1puYWVkcS9zby9NZlpuYWVkcS9zby9NNkFCN1UxZm4rMGZnekxSN0x1Y2FWU3FxZDFlWE56RmZ3WVVFL1cxeG01V2x0YjJkdkMydGFNS05HbXNSaEJZU1BzRE5lMVY2LzhBMUtzb0FBWmdBQUFBQWE3cWYrWVZ2V3ZnZkNQSWZiVS84d3JldGZBK01XYjZlVUx4eVdRSVJPU1VneVFSa0NRWHQ2RmE0bHUwbzV4eXQ4aU1yUTB1akZacXlkU1hSeUlwVlhUVHpSbGhzb2J5TmtoYjBJTEVhTUYvMmx1Q3BlS2gyVWM5OUhSR1dzYncza2JQd1ZMeFVPeWh3Vkx4VU95aHZ2UXkxamVRM2tiUHdWTHhVT3lod1ZMeFVPeWh2dlF5MWplUTNrYlB3Vkx4VU95aHdWTHhVT3lodnZReTFqZVEza2JQd1ZMeFVPeWh3Vkx4VU95aHZ2UXkxamVRM2tiUHdWTHhVT3lod1ZMeFVPeWh2dlF5MWplUTNrYlB3Vkx4VU95aHdWTHhVT3lodnZReTFqZVEza2JQd1ZMeFVPeWh3Vkx4VU95aHZ2UXkxamVSTzhqWnVDcGVLaDJVT0NwZUtoMlVOOTZHV3M1Sk5pbmEyODFpVkdEOVN3ZU92cFZOcHVoTndmUkxqUmFMdE04ekxFazVKclVxdENlNVZqdXY0bEV6cnpXV0JDSnlCQldSWXEyQmtOQmY3ZXF2NUY4VE5HQzBKNHZKTHBnL2laMHlYZkVwUE1BQnlRQUFBZUhWOUowL1Y3YjZQcUZ2R3RCY2NYeVNnK2xQbVBjQzFOVlZFN1ZNNGthRlc3bXVueXFOMGRUdWFjSHlSY0l5eCtKVDdNN1R6dFg5bEg1blFBYjQ3VDFjZjcvMC9DY3k1LzhBWm5hZWRxL3NvL01mWm5hZWRxL3NvL002QUNmYW1yOC8yajhHWmMvK3pPMDg3Vi9aUitZK3pPMDg3Vi9aUitaMEFEMnBxL1A5by9CbVhQOEE3TTdUenRYOWxINWo3TTdUenZjZXlqOHpvQUh0VFYrZjdSK0RNdWYvQUdaMm5uZTQ5bEg1bnUwdnVlNlBhVmxWdXF0YStjWGxRcVlqRDhVdVUzSUZhdTB0WFZHSnIvUXpLSXhqQ0tqR0tqR0t3a2xoSkVnSG5vQUFBQUFCR3IxNDd0eFZqMFNmeE5vTmIxRmJ0L1hYODJUdlo1eXRTK1M1Q3lLeFpLTkt5V1FDcllIMG9VcDE2cXBRWEcvY1orMXRxZHREZGdzeTU1YzdQSm9sTEZHZFpyam04TDFJeVJsdTF6TTRVbVFBSEZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDR2xKT01rbW55cG1LdjlPM1U2dHV1SmNzUGtaWUZxYXBwbmdSd2FzbVNlM1Y3WlVhaXJRV0lUNVYwTThLWnRwbUtveTZRc1FBU0tTTXhvTTgwS3NQQmxuck1QTG5NaG9NOFhOU240VWM5UlM1R2FKUlBKbXdBWWxBQUFBQUJoOWUyYjBuVzBwWHR2aXNsaU5lbTkyYVhSbm5Yck5YbDNNckp5YmpxMXdsekowb3M2QURaYTEyb3MwN05GY3hDY3VmZlpsYWVkNi9zWS9NZlpsYWVkNi9zWS9NNkNEdDdVMWZuKzBmZ3pMbjMyWldubmV2N0dQekgyWldubmV2N0dQek9nZ2UxTlg1L3RINE15NTk5bVZwNTNyK3hqOHg5bVZuNTN1UFl4K1owRUQycHJQUDlvL0JtWFB2c3l0UE8xeDdHUHpIMlpXbm5lNDlqSDVuUVFQYW1yOC8yajhHWmF2cy9zVHBHa1Y0WFg3Uzh1WVBNS2xiR0l2cFVWeFo5SnRBQmp1M3JsNnJhdVRtVUFBT0lBQUFVclFWU2pPRC9BSW90RndCcWtlTEtmTVhSYThod1Y1V2gvTThGRXowSW5NWmRGbHlBaEU1QUFaR1FJQUlaSU5ucTAremxjeTNwWmpTaStOOVBvUjVxRk9WZXRDbEhsazhlbzJhbFRqU3B4cHdXSXhXRWNibGV6R0lSTWxPRUtjRkNFVkdLNUVpd0JrVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhMeTNqYzBYQ1dONytHWFF6WEduR1VveVdIRjRhTnFOZjFXS2hmMU1meEpTTkZtZmd0Uzg2QkVTVFNzRldXS01ESmFESE5TdFBvaWtaa3hHZ1NYN2VQUHhNeTVqdStLVko1Z0FPU0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURXTDJXOWUxNWZ6czJPNHF4b1VKMVpja1ZuOFRWazIyNVBsYnl6UllqbksxSzhTeEVTVFNzaGxHWFpXSzNweGowdElnYlBiUVZPM3AwMS9ERkgwSEp4QTg5ekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR1AxdjhBd2Evclg1bUVpWnJYWGkwZ3VtYStETUpFMTJ2Q3ZISjlFQWdka3FzOTJncisxVkgwUS9NOExQWm9zMUM5M1cvMzR0TDE4cFN2d3lpZVRQQUF3cUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEMThnR3Q2bi9tRmIrcGZBK01TYmlwd3R6VnFMa2xKdGVvaUp2aU9FT2tMQUFzSVo5Yk8zbGMxMVRqeExsaytoSHdiTTVvdEpRdGVFeDk2bzgvZ2M2NnRtTW9sN0tOS0ZHbXFkT083RkZ3REVvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFENTNGR25YcHVuVVdVK1I4Nk5kdWFNN2V0S25QbTVIMG8yWXgrczBWTzI0VmZ2VTNuOER0YXF4T0V4TERJa3JGbGpXdUZXV0tzRDFhTThYOFYweGFOZ05ZdEt2QTNWS28rUlM0L1ViT1piMGNjcXlBQTRLZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3Y2eEhkdjVQd29wbXdHdjZ4TlN2NUpmd3hVVHRaOFNZNXZMRXNWaVdOUzV6RkdYWjgyU05oMGxwMkZMSHArSjZ6SDZITE5rMTRNMlpBdzErS1ZBQUZFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOCtvVStFc3FzZWRSeXZXalhJczJxUzNvdUw1R3NHcTQzWlNpK1o0Tk5tZUV3dFN1Z1JFazBMS005R2x6M0wrbDZYdTlaOEdWakp3bkdjZVdMeWlKak1ZRzJBK2R2VmpXb3dxeDVKTEo5RHozTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWVBYSWJ0MUdmaHgrQjRZbVMxOXJlb3Jud3pHUk50dmpUQzhjbHdBWFNBQUFWWk9TalpJeVdoUXpYcVZIL0FBeHd2eE0wWS9RNmU3YVNuNGN2Z1pBeFhKelZLa2dBT2FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEWHRXbHZYOVQrWEVmY2JDYXRjVDRTNXF6Nlp2NG5lekhHWldwUkVzVWlYUnFXQ2pMbFdCOXRPdUZiWFNuTDl5WDNaZXJwTmtUVFdVOHA4NXFUUGJwK3BTdGx3VlZPZExtNlluRzViMnVNS3pEWUFmS2hjVWE4ZDZsVWpMMFo0K28rcGxtTUtnQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGFTYmJ3a2VhNHZyYTNUMzZpY3ZCanhzd3Q3cU5hNnpDUDdPbDRLNVg2enBUYnFxVEVaZlRWYjFYRTFTcFA5bEI4dmhNOFVVVmlYaWJLYVlwakVMd3NpU0VTU0tzdlp4M3J5akgrZEh6YlBScFMzdFFwZWpMOXhGWENKR3hnQTg5ekFBQUFBQUFBQUFBQkVtb3hjcE5KSlpiYndrYzUyeDI2endsaG9kUnIrR3BkcjRRK2ZVYXROcGJtcHIyYmNmd05pMmoyeDB2UmFrcmY3MTNkcmxvMG12dWYxUG05WEthOVI3cGk0WDl0cERWUHBoV3pKZGFPY3libEp5azIyM2x0dkxaQjlaYTdIMDFGR0tvelBWZkR2dWk2dllhemFmU2JDc3B4WEZPTDRwUWZRMFpBNEZvZXIzdWpYMGJ1eXFic3VTY0grN1VqME5IYU5tOWN0TmQwOVhWdG1FNHZkcTBwUGpoTDgxME04RHREczZyU3p0VThhUDArYXN3eW9BUElRQUFBQUFBQUF4ZXZ2OWpSWFRKL0F3OFRLN1FQKzRYclppb20yMTRGNDVQb2dRbVNkRXFzckdVcWM0MUlQRW92S1pkbEdCczFwY1F1YUtxUTVmNGwwTSt4cTF0Y1ZiYXB2MG42MCtSbWJ0TlR0cTZTbExncDlFdVRyTWxkcVk0eHlVbUh1QVhHc3JqWFNnY1VBQUFBQUFBQUFBQUFBQUFDY0FBQmdBQVFBQldwVXAwMXZWSnhndjVuZ0N4amRYdkZTcE8zZy93QnBOY2VQNFVmSzgxZUtUaGFyTDhOcmlYcVJpTXlsSnlrMjVONWJmT2FMZHFlY3JSQ1lvK2tTa1M2Tkt5UXdWYkFxelpOTy93QURRL29SclRac3VuZjRDaC9RamplOEtzdlFBRElxQUFBQUNRQUJBQUFBQUNRQUFBQUVBQUNRQUJBQUFBZkc4V2JTc3VtRFBzZk91czBLcTZZUDRFeHpHcnhMbytjT1F2Rm5vT2l4REpJQStiUm10SHZGVXBxM3FTeFVpdnV0L3dBU01NeXZHbmxQRFhJMFZxcGlxTUltRzNBdzFscStFb1hTYi9uaXZpakswYTFLdEhlcFZJelhvWmpxb21ubXJoOUFBVlFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQVBIZGFoYlc2YTMrRW40TU9NbUltZVErOXpYaGIwWlZaODNJdWw5QnJFcHlxVkpWSlBNcFBMUHBkWFZXNnFiOVRpUy9kaXVSSHlpYkxkR3pDOFJoZUpZaEVvNkpENXN2MGxHQmx0bjVmY3J3NkdtWll3bWdTL2IxbzlNRS9lWnN4M1k5NlZKNWdBT1NBQUFBQUFBQUFBcFZxVTZOS2RXck9OT25CWmxPVHdrdWxqbUpxVklVcWM2dFdjWVU0SnlsS1R3a3VsbWk2cDNSN0toWGxTMCt5bmVSaThjTE9lNUYrcFl5YTV0dnRkVTFpY3JHeGxLbnAwWHg4enJQcGZvNkVhaWZVNkhzaW5aMjlSSEdmaCtWb2gxVFNlNk5wOXhXVkxVTFdkbHZjWENxVy9CZXZuUnUxR3BUclVvMWFOU05Tbk5aak9MeW11bE0vT3BzR3kyMU4vb05SVTAzY1dVbjkrM2srVDB4Zk0vY1cxZlkxRTA3V240VDBKaDIwSGkwYlZMUFY3R0Y3WTFOK25MaWFmRktMNkd1Wm50UGxxcVpvbWFhb3hNS2dBS2dBQUFBQUdzM3NkeTlyeC9uYjZ6WmpBYTFIZHZuTHc0cC9rZDdNKzh0UzhrU3hTTExKbXBZWlJvdVZZSHIwdTkralRkT3AvZFNmWmZTWjlOU1NjV21ueU5HcE05TmxmMXJYN3Y3OUx3SCtSeHJ0YlhHRlpoc29QSmJhaGExMXhWRkNYZ3o0bWV0Y2ZKeG1XWW1PYW9BQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZk90V3BVWTcxV3BHQzlMTU5xR3B1dEYwcmRPTk44c255c3ZSUk5YSk1SbDhOUnVGY1hjcFJmM0kvZGo2ZlNmR0pTSmVKdGlNUmhkWUJBa0FBQlZsSmNoWmswSWNMWHAwL0Nra0JzbGxUNE8wb3c2SXJKOWg2Z2VmTTVuTG1BQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJTdlBnNkZTZmd4Yk5VaWJIcTA5elQ2dkgrOGxIclpya1RWWWpoTXJVcnhMSWlKWmNoM1dDcFlBZk5vcTBmUWpBSHl3MDhwNFo5WTNOekZZalhxTC9BTG1SZ2pBRi9wZDM1UlU3UStsM2ZsRlR0Rk1EQXhIUkdGL3BkMzVSVTdRK2wzZmxGVHRGTURBeEhRd3Y5THUvS0tuYUgwdTc4b3Fkb3BnWUdJNkdGL3BkMzVSVTdRK2wzZmxGVHRGTURBeEhRd3Y5THUvS0tuYUgwdTc4b3Fkb3BnWUdJNkdGL3BkMzVSVTdRK2wzZmxGVHRGTURBeEhRd3Y4QVRMdnltcDJoOUx1L0thbmFLWUdCaU9oaGY2WGQrVVZPMFBwZDM1VFU3UlRBd01SME1ML1M3dnlpcDJpazZ0ZWY3OVdjdlhKakF3TVFsUlJMSkZraVVpUkNSWkJGa2lBUkRKSUFvejNhSEhON0tYZ3daNFdaUForUDdTdkxvaWw3eWx6aFRLSjVNeUFEQ29BQUFBQUFBQUhudjcyMTArMHFYZDVXalJvMDF4eWw4RjB2MEhoMmkxNncwSzE0YTdudlZKTDluUWkvdnpmNUwwbkh0b3RldjlkdXVHdTU3dE9MZkJVSXY3dE5mbS9TZXJvZXpybXFuYW5oVDEvQ1lqTEs3WDdZWFd0T2RwYTcxdnA2Zjd2OFZYMHk5SG9OVUFQdExObTNZbzJMY1loY0FCMkEzenVSS3IzMXYzSFBCZlIwcGRHZDdpL00xYlovUTcvWEx2NlBaMC91eHh3bFdYN2xOZWwva2RtMmMwUzAwTFQxYVcyWlNiM3FsV1MrOVVsMHY4a2VIMnRxN2RGbWJQT3Fmc3JNc29BRDR4VUFCSUFBZ0FBQmhkZmY3YWl1aUwrSmpZbnYxNS8ydUM2SWZtZUNKdXQrQ0Y0NUxva2hFbDBvS3RGeUFQbTBWY1Q2NEs0SkZZVkt0UDhBdTZrbytxVFI5UHBkMzVSVTdSVEF3UmlCZjZYZCtVVk8wUHBkMzVSVTdSVEF3TVIwUmhmNlhkK1VWTzBQcGQzNVJVN1JUQXdNUjBNTC9TN3Z5aXAyaDlMdS9LS25hS1lHQmlPaGhmNlhkK1VWTzBQcGQzNVJVN1JUQXdNUjBNTC9BRXU3OG9xZG9mUzd2eWlwMmltQmdZam9ZWCtsM2ZsRlR0RDZYZCtVVk8wVXdNREVkREMvMHU3OG9xZG9mUzd2eWlwMmltQmdZam9ZWCtsM2ZsRlR0RDZYZCtVVk8wVXdNREVkREM3dXJwckR1S25hWjhudlNlWk50OUxlUzJDVWhHSVNva1hTSlNKU0FKRW9Ja0J6RldXS3NDak5rMDMvQUFGRCtnMXRteWFiL2dLSDlCeHZlRldYcEFCbFZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFCRWxtRWwwcGtna2FqRStrU2pXSnlYUXkwVDBIUmRFRW9BVmFLdEY4RVlBK2JSVkpwNVRhZlNqNjRJd1NKamMzVVZpTmVvbC9VeWZwZDM1UlU3UlRBd1JpT2lNTC9TN3Z5aXAyaDlMdS9LS25hS1lHQmlPaGhmNlhkK1VWTzBQcGQzNVJVN1JUQXdNUjBNTC9BRXU3OG9xZG9mUzd2eWlwMmltQmdZam9ZWCtsM2ZsTlR0RDZYZCtVVk8wVXdNREVkREMvMHU3OG9xZG9mUzd2eWlwMmltQmdZam9ZWCtsM2ZsRlR0RDZYZCtVVk8wVXdNREVkREMvMHU3OG9xZG9mUzd2eWlwMmltQmdZam9ZWCtsM2ZsRlR0RDZYZCtVVk8wVXdNREVkREJPcldxZjNsV2N2WEpsVkVza1NrRW9TTEpFcEVvQWlRQUlmT1VaZGxHQjY5Rmx1MzZYaFJhTmhOWjA2VzVmMEgvTmpyTm1NdDZQZVVrQUJ3UUFBQUFBQUI4N2l2UnRxRlM0dUtzYVZLbkhlbk9Ud29vbUltWnhBbXZXcFVLTTY5ZXBHblNweGNwems4S0s2V2NnMjIyc3FhM1ZkbmFPVlBUb1N5aytKMVd1ZCtqb1JYYlRhdXRybFoydHM1VXRQcHkrN0hrZFYrRkw4a2FzZlhkbTltYm5GMjdIdmZDT244clJBQUQzbGdBdlJwVks5V0ZHalRsVXFUYWpHRVZseWZRZ055N2xGMVdwNjlYdEl0dWpXb1NsS1BObUxXSDc4SFdEVnRoZG1Gb1Z0SzR1V3AzOWVLVThjbE9QTHVyODJiU2ZDZHBYcmQ3VVRWYjVmcXBJQUR6VUFBQUFBQVlmWDQ4ZEdmcmlaZ3gydVJ6WnFYZ3pSMHRUaXFFd3drUzZQbkV1amF1c1ZMQUQ1dEZXajZsY0FmSnhMd3FWYWY3bFNjZlZKazRJd0JmNlhkK1VWTzBQcGQzNVJVN1JUQXdNUjBSaGY2WGQrVVZPMFBwZDM1UlU3UlRBd01SME1ML1M3dnlpcDJoOUx1L0tLbmFLWUdCaU9oaGY2WGQrVVZPMFBwZDM1UlU3UlRBd01SME1ML0FFdTc4cHFkb2ZTN3Z5aXAyaW1CZ1lqb1lYK2wzZmxGVHRENlhkK1VWTzBVd01ERWREQy8wdTc4b3Fkb2ZTN3Z5aXAyaW1CZ1lqb1lYK2wzZmxGVHRENlhkK1VWTzBVd01ERWREQy8wdTc4b3Fkb2gzTjFKWWRlby93RHVaWEF3TVIwTUt2TGVaTnQ5TEpTTEpFcEVwUWtXUVJLSUVvQUFBQUI4MmV2Um9iOS9GODBFNUhqWmx0bjRjVmFyNlZGZkVwY25GTW9ua3k0QU1LZ0FBQUFBOHVwNmZhYW5aenM3eW53bEtmUkp4YWZTbXVOTTQzdG5zaHErZ3VkM2JYRnhkNmJuKzhVNWIxTDBUWDU4bnFPczZmcittM3VwWFdtVXE2amQyMVJ3ZE9YRTU0NTQ5SmxKSlNpNHlTYWF3MDFsTkdxaXU1cDZzVlIvaVV2ekg5SnVmS0szdEpmTWZTYm55aXQ3U1h6T3A3YWR6cUZmaE5RMmZncWRWOGM3UGtqTDB3Nkg2T1E1VFdwVmFGV2RHdFRsVHFRZTdLRTFoeGZRMGV0YXUwWFl6U2xmNlRjK1VWdmFTK1krazNQbEZiMmt2bWZFSGJFSmZiNlRjK1VWdmFTK1krazNQbEZiMmt2bWZFREVEN2ZTYm55aXQ3U1h6SDBtNThvcmUwbDh6NzZUcGVvYXRkSzEwNjFxWEZWOHFpdUtQcGI1RXZXZFQyVzdtMW5aN2wxcmM0M2xkY2YwZVA4QWRSZnA4TDRIQzdldDJvNG9hRnMxczl0QnRCUE5uS3JDM1R4SzVxMUpSZ3ZWMHYwSTY1c3hzaHAraHFOYVZTcmUzaVhIWHJUYlNmOEFMSE9GOFRZb1FoU3BxRk9NYWRPQ3dveFdGRmZrWTJ6MTNUYjNWYW1tMlZiNlRWcFFjNms2ZkhDR0dsalBPK1BtUE5ydTNiMFRzeHdqL3ZGREtBQXhJQUFBQUFHTDErZUxlblQ4S2Vlb3dzVEphL1BOeFNoNE1jOWIvUXgwVGJhakZLOGNsa1dLb3NkRWdCQUVrREpHUUF3TWtaQW5Bd1JrWkFuQXdSa1pBbkF3UmtaQW5Bd1JrWkFuQXdSa1pBbkF3UmtaQW5Bd1JrWkFuQXdSa1pBbkF3TWpJQWtnbklFZ0FBVmZPV0tnVlptTm40L3NhMHVtU1h1TU16UGFISEZqbndwdG5LNzRVVHlaQUFHTlFBQUFBQURWTnI5c0xYUll6dExYZHVkUXhqZC9ocGVtWHA5QmtOdEx5dFliTVg5emJWWFNyS0tqQ2NlVk55UzRqaDBwT1VuS1RjbTNsdHZMYlBkN0w3UG8xR2J0emxFOGt4RDczOTVkWDkxVXU3eXRLdFdxUDcwNWZEMEwwSG5BUHNZaUtZeEM0QUVtM2hjYkpBMmZaSFpLNzF5Y2JpdHZXK25wL2VxODgvUkZmbnlHWjJPMkdsWDNML1c2YmhTL2VwMnI0blAweTZGNkRwY0lScHdqQ0VWQ0VWaFJpc0pMMEh6dXY3V2kzbTNZNHoxNmZKV1plZlRiQzAwMjBoYVdWR05HakRrUzUzMHQ4NzlKNmdENVNabXFjelBGVUFCQUFBQUFDQUFBR3Y2MjgzN1hSQkhpaWVyVjNuVWF2b1NYdVBLamZSNFlYaGRFa0lrc2tBSUFFRTVJQURBeVJrQ2NEQkdSa0NjREJHUmtDY0RCR1JrQ2NEQkdSa0NjREJHUmtDY0RCR1JrQ2NEQkdSa0NjREJHUmtDY0FaR1FKUUlST1FKQUFBcXl4VmdVWnN1bWY1ZlEvb05hWnN1bWY1ZlEvcE9ON2tyTDBnQXlxZ0FBQUZLOVJVYUZTcTA1S25CeWFYUGhaSmlNalROck5oYU9wYjkxcE54T3h2SGx1Ry9MZ3FqOVg4TDlLNHZRY24xVzExZlNydVZwcUN1S0ZhUE5LbzhTWFNubkRSMzNSTmEwN1diYmg3QzRVOEpPZE44VTRldEgwMWJTN0RWN1NWcHFGdEN2U2ZKbmxpK21MNVV6YmJ2MTJaMkxrY3ZxbCtjdnBGejVSVjlwTDVqNlJjZVVWdmFQNW01N1dkeisvd0JLVTdyVE4rL3MxeHVLWDdXbXZTbCs4dlN1bzBjOU9pdWl1TTBqNi9TTGp5aXQ3Ui9NZlNManlpdDdTWHpQa0MrSUgxK2tYSGxGYjJqK1kra1hIbEZiMmt2bWZJREVENi9TTGp5aXQ3U1h6SmhWdTZrNDA2ZGF2T2NuaU1ZemsyMzBKWk1wczNzM3FtdjNHNVpVY1VZdkZTNG54UWgrUE8vUWpzV3l1eU9sN1BVMU9sSDZUZU5mZXVha1Z2ZXFLL2hSbXUzNkxmRG5JMUhaSFlDOXJibDV0QmNWNlZQaWNiU0ZWNzB2NjNuaTlTNHpwdENqU3Q2TUtOQ21xZE9DeEdNZVJJbXRWcFVLVTYxYXBHbFRnc3luTjRTWHBaNGRGMWl5MW1uY1ZiR1VwMHFGVGc5OXJDazhaeXZSeG5tVjFYTHNUWE1jSStpR1JBQm5BQUFBdVVBRFZLeXhYcXJvbS9pUkV2ZHJGNVhYL1VmeEtJOUNPVG9zaVNFU0FJSklBRUVrQU1EQXlSa0NjREJHUmtDY0RCR1JrQ2NEQkdSa0NjREJHUmtDY0RCR1JrQ2NEQkdSa0NjREJHUmtDY0RCR1JrQ1FNaklFcEVsVVRrQ1FBQkRLc3N5ckFVWmJsZW5Mb21uN3piRFVIeGNmUWJiVGx2VTR5NlVtWjcwY2xaV0FCbVZBQUFBQUh5dXJpaGFXOVM1dWFzYVZHbkhlbk9UNGtqanUyZTFWZlhhN29VTjZqcDlONWhUZkU2ajhLWDVMbU5rN3IwNjhhR213alVrcUU1VDNvSjhUa3NZYjk1elUrczdJMFZ1S0kxRlhHWjVlbjhyUkFBRDZGWUFMMjlHdGNWNFVLRk9WV3JVZTdHRVZsdGpsR1pDaFJxM0ZhRkNoVGxVcTFKS01JUldYSjlCMS9ZblpPbG9sRlhkMm8xTlJxUjQzeXFrdkJYcDZXVHNWc3BSME9pcnE2VWF1bzFJOGN1VlVsNE1melp0UjhqMmwybHZjMnJVKzc4WjYvd3BNZ0FQQVFBQUFBQUFBQUhtMUdHL1kxMS9MbnFQU1ZuSGZweWcvd0NKTkV4T0p5TlRpWFJSTEdWMGNSWkhvT2k0SVhJU0FJd1NRQkFKSUFZR0JraklFNEdDTWpJRTRHQ01qSUU0R0NNaklFNEdDTWpJRTRHQ01qSUU0R0NNaklFNEdDTWpJRTRHQ01qSUVra1pHUUpKS29uSUVnQUFBQVBrellkR3A3bGhCdmxtM0kxMThmRXVWbTJVWUtuU2hUWDhNVWpoZW5oaFdWd0FaVlFBQUN0U3BHbFRuVmwrN1RpNVAxSlpMR0YyenUvb1d5K28xazhTZEowNCt1WEYrWjB0VVRjcmlpUGpPQnhDcmRWWjN0UzhqVWxDck9vNmluRjRhYmVjcG5SZGtkdlkxTnl4MTJhalBpakM3eGhQK3ZvOVp6UkxBUHY5VHBMV29vMks0K1UvR0hTWWZvNkxVb3FVV25GckthNDAwYTN0ZHNocDIwVkoxSnBXOS9GWWhjeFhINnBMK0plODU5c2x0aGU2STQyMWZldXJEUDhBZHQvZXArbUwvTGtPdDZYcVZscWxwRzdzSzhhMUo4VGE1WXZvYTVtZkhhclIzdEZYbjRmQ1ZNWWZudmFEUXRSMEs4ZHJxRkZ3Yi9jcVI0NFZGMHhaaXo5TDZycHRqcXRuT3oxQzNqWG96NXBjcWZTbnpQMG5Ncmp1VzNmZmZnN2UvcHJUWmNmQ3pXYWtmNWQzbmZwNUR0YTFsTlVlL3dBSlRsemlsVHFWcWthVktFcWxTYnhHRUZsdCtoSFE5bHU1cGRYTzVkYTdOMnRGOGF0b1A5cEwxdmtqOFRvV3plek9rN1Awc1dORE5ackU3aXA5NnBMOGVaZWhHUTFQVXJIUzdaM04vY3dvVStaeTVaUG9TNVd6amMxZGR5ZGkxSDVSazB6VHJIUzdWV3VuMnRPMm9yK0dDNVgwdDhyZnJNZnREdE5wZWh3YXVhM0NYSDhOdlN3NXYxOUM5Wm91MGZkQXU3dFR0OUlnN1NnK0oxcGYza2w2UEIrSm84NVNuT1U1eWNwU2VYS1R5Mi9TejB0TDJOWFg3K29uSHA4ZjhwaWxzVzBlMStxNjA1VXQvd0NpMmIvK3hTZkwvVStWL0EyVHVQMjNGcWQ0MTRGSlByYi9BQ09ibll1NWhhL1I5bG9WV3VPNXF6cWZoKzZ2Z2IrMDZiZW4wVTBXNHhFekVmdit5WjRRMjBBSHhpZ0FBQUFBMXJWcDcrb1ZlaU9JOVI1NGl0UGhMaXBQd3BOKzhSUFFwakVZZElTaVFnU0dTQVRUaE9yVVZPbkZ5aytSSUN1VDAyOWxjMTFtRlBFZkNseEl5dGpwMUtnbE9waXBWOVBJdlVlOHoxWHVpdVdIaG8wc2ZmcnBmMHhMOTVvZVVTN0psUWN0N1gxUm1XSzd6UThvbDJSM21oNVJMc21WQTN0ZlV6TEZkNW9lVVM3STd6UThvbDJUS2diMnZxWmxpdTgwUEtKZGtqdk5EeWlYWk1zQnZhK3BtV0o3elE4b2wyU2U4MFBLSmRreW9HOXI2bVpZcnZORHlpWFpIZWFIbEV1eVpVRGUxOVRNc1YzbWg1UkxzanZORHlpWFpNcUJ2YStwbVdLN3pROG9sMlNPODBQS0pka3l3RzlyNm1aWXJ2TkR5aVhaSGVhSGxFdXlaVURlMTlUTXNTOUdqaml1SG4weFBQVzBxNWdtNE9OVmVqaVpuZ1RGMnFETXRUa3BSazR6aTR5WEttc0EyVzd0YVYxRGRxTEV1YVM1VWE3WG96dDYwcVZSY2E5Nk5GRmNWTFJPVkVTUVNqb2tJSklBb3paTktqdTZmUjlLejd6VzVjak5wczQ3dHBSajBRWHdPTjdrckw3QUF5cWdBSUFBQWFuM1Q2bTVzcFVoejFLOU9QdmIvSTQ4ZFo3cU5HNnVOSnM2RnJiVmE3ZGR5a3FVSExDVVh5NDlaelR2UHEzbXU4OWhMNUgyZlk5VkZHbDR6em1Wb2VFSHU3ejZ2NXJ1L1lTK1I2dE4yYjFxK3VvVzFQVDY5TGU1YWxhRGhHSzZXMmV0TjYzVEdacWo2cHl4bHJiMTdxdkMzdDZVNnRXbzhSaEJaYloxYlkvWXFocGU1ZTZrb1hGOHNPRWVXRkg1djA5Umx0bU5tckhRS0g3RmNOZFRXS2x4SmNiOUM2RVp3K1UxL2F0VjdOdXp3cDYvR2Y0Vm1RQUhnb0FBU0FBQUFBQUFBQUFBMW5Vbm5VSy85V0Q0UjVENlhyemUxMy9PejV4TjlQS0hTRmtBZ1NHU0FFcFNrb3hUYmJ3a3VjQ01ucHQ3RzVyck1hZTdId3BjU01wWWFiQ2lsVXJKVHE5SE5FeUJ3cXU5RmNzUERScFkrL2NKUCtXSmZ2TkR5aVhaTXFEbHZLdXFNeXhYZWFIbEV1eU84MFBLSmRreW9HOHE2bVpZcnZORHlpWFpIZWFIbEV1eVpVRGVWZFRNc1YzbWg1Ukxza2Q1b2VVUzdKbGdONVYxTXl4UGVhSGxFdXlUM21oNVJMc21WQTNsWFV6TEU5NW9lVVM3SlBlYUhsRXV5WlVEZVZkVE1zVjNtaDVSTHNqdk5EeWlYWk1xQnZLdXBtV0s3elE4b2wyUjNtaDVSTHNtVkEzbFhVekxGZDVvZVVTN0k3elE4b2wyVEtnYnlycVpsaVhveXh4WER6NllubnJhVmN3VGNIR3F2UnhNendKaTdWQm1XcHlVb3ljWnhjWkxtYXdEWmJxMXBYTU4ycEhqNXBMbFJyOTFiMUxXcTZjK1QrR1hNMGQ2TGtWTFJPWHlUSklKUjBTRUVrQVVac3VsL3dDWDBQNmZ6TmFac3VsLzVmUS9wL000M3ZDckwxQUF5cWdBQUh4dlZteXVGMDBwL3dEcXo3SHp1Vm0yckxwaEw0TXRUemdmbjJ4dTdteHJ3dWJTdk9oV2h5VGc4TTZWc3h0OVF1ZHkxMXBSdDZ6NGxjUldJUzlhL2grQnk4SDMrcDBkclUwNHJqajErSytINkxoS01vcWNKS1VXc3FTZVUxMG8xSGF2WVhUTmJVN20yVWJHL2ZId3NJL2NxUDhBbWorYTR6UWRtdHF0UzBPU3AwNWZTTFJ2NzF2VWZGLzJ2K0U2dHMvdERwdXVVZDYwcTRySlpuUW54VGo4MTZVZko2blEzOUhPM0hHT3NmdXJqRGhXdTZIcVdoM1gwZlViZDAyLzNLaTQ0VFhURjg1akQ5TDM5bGFhaGF6dEwyaEM0b1RYM29UV1YrajlKelRYTzVoVyttUWxvdDFENk5VbDkrRncrT2t1bFA4QWlYdkp0YXVtcmhYd2tjMXB3blVuR25UaEtjNVBFWXhXVzMwSkhTTmtlNXhVcTdsNXRCbW5UNVkyY1g5Nlg5YjV2VXVNM1RaYlpMUzlub0tkR0gwaThheEs1cUw3M3FpdjRVWjZ0VnBVS002MWFwR2xTZ3N5bk40U1hwWnh1NnVhdmR0aXRyYjBMUzNoYld0R0ZDalRXSTA2YXdvcjFHSjJqMmwwM1FxZUxpZkMzTFdZVzlOL2VmcGZRdlN6VTlxTnYyOSswMExpWEpLN2t2OEEwVCtMT2VWYWxTclVsVnF6bFVxVGVaU2s4dHYwczlIUjlrVlhQZnY4STZmSCtQMUlobDlvdG85UzF5cS9wVlRjdDA4d3Q0Y1VJK3ZwZnBadkhjamxuU2RRajBYRVgveC9RNWNkTDdrRXY3SnFrT2lwVGZ1WjZmYWRxaTNvcHBvakVSajlVenlkQkFCOFdxQUFBQUFOWTFCWXY3aGZ6bnhSNk5WV05ScmVscCs0ODhlUTMwK0dIU0ZrQWdTR1NBUTJBeWVtM3NybTRXWVEzWStGTGlSa2ROMDZNSXF0Y1IzcHZqVVh5TDlUSm5DcTdqaENzeXc4Tkdsajc5d2svd0NXSmZ2TkR5aVhaTXFEbHZLdXFNeXhYZWFIbEV1eU84MFBLSmRreW9HOHI2bVpZbnZORHlpWFpKN3pROG9sMlRLZ2J5cnFabGllODBQS0pka252TkR5aVhaTXFCdkt1cG1XSzd6UThvbDJTTzgwUEtKZGt5d0c4cjZtWllydk5EeWlYWkhlYUhsRXV5WlVEZVZkVE1zVDNtaDVSTHNrOTVvZVVTN0psUU41VjFNeXhQZWFIbEV1eU84MFBLSmRreXdHOHE2bVpZbnZORHlpWFpKN3pROG9sMlRLZ2J5dnFabGlYb3l4eFhEejZZbm5xNlZjd1RjSEdxdlE4TXp3RVhhb015MU9TbENUak9MakpjeldBYk5jMjlHNGh1MVk1Nkh6b3dGN2FWTFNwaC9lcHY4QWRsMG1paTVGWEJhSnkrQkpDQ09pVTh4QkpBSHpseUcwYWZMZnNxRXY1RWF3K2MyTFJwYjJuMC81VzE3emplOEtzdmFBRElxQUFBQUFOSTdyTkhmMEcxclkvdXJsTDhIRnI4amxKMnZ1Z1dsVzkyV3VxZENsS3JWaktFNHdnc3Q0bHpMMU01RjNuMWZ6WGVld2w4ajdIc2U3VDNiWm1lVXl0RHdnOTNlZlYvTmQ1N0NYeUxVOUUxaXBPTUk2WGQ3MG5oWm95WDVIczcyM0grNlBxczhkdFFyWE5lbmIyOU9WV3JVa293aEZaYloySFl2Wldqb2RCWE55bzFkUnFMNzAxeHFtdkJqK2I1eWRqTmxxT2hXL0QxOTJycUZTUDM1OHFwcndZL20rYzJjK1Q3UzdUbTltMWFuM2YxL2hTWkFBZUNnQUFBQUFBQUFBQUFBQWF0ZVE0TzdyUTZKcythNUQxNnpEZHY1UHdvcG5raWVoVE9ZaVhTRmtBZ1NCQUliQVpQVGJXVnpjTGVoRGRqNFV1Skh1MHJUNDdxdUs4Y3Q4Y0l2NHN5eHdydTQ0UXJNc1BEUm5qNzl3disySmZ2TkR5aVhaTXFEanZhK3FNeXhQZWFIbEV1eU84MFBLSmRreXdHOXI2bVpZcnZORHlpWFpIZWFIbEV1eVpVRGUxOVRNc1YzbWg1UkxzanZORHlpWFpNcUJ2YStwbVdLN3pROG9sMlIzbWg1UkxzbVZBM3RmVXpMRmQ1b2VVUzdJN3pROG9sMlRLZ2IydnFabGl1ODBQS0pka2p2TkR5aVhaTXNCdmErcG1XSjd6UThvbDJSM21oNVJMc21XQTN0ZlV6TEU5NW9lVVM3STd6UThvbDJUTEFiMnZxWmxpSG95eDkyNGY0eFBoVjB1NnBwdUc3VVg4cnd6UEFtTHRVR1phbkpTaEp4bkZ4a3VackFObnVMZWxjUTNhc0ZMb2ZPakJYMWpVdFpieWUvU2I0cGRIck85RnlLdUMwVGw1U1NxZVNUcWxJQUF2WVUrRnZhTU9iZXkvVXVNMmd3T2d3M3J1ZFR3SWZFenhrdlQ3MkZKQUFjVUFBQUdqOTFxNjRMUTdhMVQ0N2k0eTE2SXB2NHRHOEhLdTYzZHFwckZwWnA4VkNodk5lbVQrU1BUN0t0N2VycDlPS1k1dEZBQjk0dUdRMFhWNy9ScnRYTmpXY0pmeFFmSEdhNkpMbk1lQ3RWRk5kTTAxUm1KUzdic3J0VllhOVRWTk5XOTdGZmV0NVBsOU1YenIzbXdWYWxPbFRsVnF6alRwd1daVGs4Skwwcy9PbE9jNlZTTlNuT1VKd2VZeWk4TlBwUmtkVzE3VnRXaENucUY3T3RUZ2tsRGtpL1MwdVYraytidmRoeFZjemJxeFQrbnlWMlcvYlI5MEszdDkrMjBXQ3Vhdko5SW12dVI5Uy9pK0J6alVMKzgxRzRsYzMxelV1S3IvaW0rVDBKYzM0SGxCN09tMFZuVFI3a2NldnhURVlBQWJVbkltenZ1ek50OUUyZjA2Mnhod3Q0WjliV1g4VGhlbTI3dTlRdHJXUExXcXhoMXMvUXNZcUtVWThpV0VmTTl1M09GRkh6bFdwSUFQbGxBQUFENTNNK0R0NnMvQmcyZlE4V3N6M05QcWZ6TlI5NWFtTXpFRFhJbDF5RllsMGIzUks1eUFBSWJNL3BWb3JlanZ6WDdXYXkvUXVndytuVWxXdmFjSmNjVTk1L2diTVo3MVh3VmtBQm1WQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTWJyZEJUdDFXUys5VGZINm1aSTgrbzQrZ1Y4K0FYb25GVUVOYWlTaXNTeHVkRTh4SE1TVllGWHh2SFNiZEZZaWwwSkkxVzNqdjNOS0hUTkwzbTFtZTk4RlpBQVoxUUFFQUFBR2NjNHkrbDlaelR1cTY5cXVsNnBZMittNmhXdFl5dDNPYXB2Rzg5N0N6MUdrZlcvYWp6NWQ5cGZJMjI5SlZYVEZVU25EOUJaZlMrc1o5SitmZnJmdFI1OHUrMHZrUHJmdFI1OHUrMHZrWDdsWDFndy9RUVB6NzliOXFQUGwzMmw4aDliOXFQUGwzMmw4aDNHdnJCaCtnZ2ZuMzYzN1QrZkx2dEw1RDYzN1QrZkx2dEw1RHVWZldERDlCQS9QdjF2Mm44K1hmYVh5SDF2Mm44K1hmYVh5SGNxK3NHSDZDQnp6dVQ2dHEycTFOVGxxVi9XdW8wbzAxQlZIbmRiYno4RG9aa3VVVGJxbW1VQUFPWUFBQUZ5Z0FhblhlYmlxK21iK0pDNUNyZVp5ZlMyV1hJZWc2UXNpQXVjQVF6TDZIYkxkZHpOY2I0b2ZtekRTWnRkckJVN2VsVFg4TVVjcnM0akNKZlFBR1JRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBODJvVzZ1TGFVY2ZmaXN4ZnBQU0NZbkU1R294TEY3dUtoZDFvTGtVMlVSdmpqRG9ubUlKWElRQlJteTZWL2w5RCtuOHpXbWJKcFgrWDBQNmZ6Wnh2ZUZXWHJBQmxWQUFBSzFGbWxOZE1YOEN4RXYzWmVwa3dQenJMOTUrc2d0VS92SnIrWi9FcWZwY09nZlNoV3EyOVdOYWhWblNxd2VZemc4TmZpZk1DWXp3SFJ0bU82QnhRdGRkWG9WM0ZmK3kvTkhRNk5XbFhwUnJVYWthdE9hekdjSGxOZWhuNTJNbnBPdTZycE5PclQwKzhuUmhVWDNvNFRXZWxKOGo5SjRPcjdIb3VUdFdmZG5wOFA0Vm1IWHRvOXBkTjBLazFjVDRXNWErNWIwMzk1K2w5QzlMT1Q3UmJSNmxybFZ1NXFjSGJwNWhiMDNpRWZYMHYwc3hOV3BVcTFKVmFzNVZLazNtVTVQTGI5TEtHdlI5bld0TjczT3JyK0V4R0FBSHBwRG92Y2dsOTdWSWVpbS9pYzZOLzdrTXY3ZHFjZW1qQi84bWViMnBHZEpYL2o5WVJQSjAwQUh3cWdBQUFBQTF6V0ZqVWFucFVYN2p5eDVEMjY0c1grZW1DUEZFM1VlR0Y0V1FaQ0JaSXoyYU5RVmE1YzVMTWFheitQTWVGbWIwQkw2TlVsenVmNUZMazRwUlBKa3dBWWxBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBZk92U2hYcFNwVkZtTWwxZWsrZ0o1RFZLMU9WQ3RPbFBsaThFR1IxNm1vMXFkVmZ4ckQvQXhxWnVwbmFweTZRc3VRZ0lGaFJtYzBDV2JTY2ZCbitSaEdaWFo2WDkvRDFNNTNZOTJVVHlaa0FHSlFBQUFBQUJsOUw2eGpQRm5HZUk0RGRiVmJVMExxdlFldVhhZE9wS0RXOHVadGRCM3MySnZaeFBJZCt5K2w5WXkrbjNuNTgrdCsxSG55NzdTK1ErdCsxSG55NzdTK1JvN2pYMWhPSDZEQitmUHJmdFI1OHUrMHZrUHJmdFI1OHUrMHZrTzQxOVlNUDBHRDgrZlcvYWp6NWQ5cGZJZlhEYWZ6NWQ5cGZJZHhyNndZZm9NSDU4K3VHMUhueTc3UytRK3VHMUhueTc3UytSUGNhK3NHSDZEQitmUHJmdFJoLy9BRjI3N1MrUjNMWjI3bGY2RHAxNU9XOU90YndsS1Q1NVk0L2ZrNFh0UFZhaUptVU1pQURNQUFBQUFEQzdRUXhWbzFPbUxSakltYjE2T2JTRS9CbXZlWU9KdHRUbWxlT1N5SlpDSlowU2crdGpTVmU3cDAzKzYzbCtwSHhaN05GYTc0Ui9wWldxY1V6SkxZUUFZSE1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFpY1l6aTRUU2xGckRUSkFHdFg5czdXdTQ4YmhMamkvUWZCR2UxaWlxdGxLV1B2VS92TDh6WDRzMjI2dHFsZUpYUUlKT2lXWDJmcDd0dFVxYzg1WTZqS0htMDJud2RqUmp6N3VYK1BHZWt3MXptcVZKQUFVUUFBQWNWN295cXJhNjlkVk5KcURobm5qdXJINW5hakI3VGJOYWZyOUtQMGplcFhGTllwMTZmN3lYUStsSHBkbTZxalRYdHF2bE1ZVEU0Y01CME9YY3l1TjU3dXNVdDNtelJlZmlSOW1WejUzbyt4bDh6NnIycG8vUDhBYWZ3dnRRNTZEb1gyWlhQbmVqN0dYekgyWlhQbmVqN0dYeko5cWFQei9hZndiVU9lZzZGOW1WejUzbyt4bDh4OW1WejUzbyt4bDh4N1UwZm4rMC9nMm9jOUIwTDdNcm56dlI5akw1ajdNcm56dlI5akw1ajJwby9QOXAvQnRRNTZEb1gyWlhQbmVqN0dYelBUWTl6U2xHcXBYMnFTcTAxL0JScDdyZjR0c3JQYXVraU03ZjJrMm9hLzNOOUxyWDIwVkc3M0g5SHNud2s1NDR0N0gzVjYrZjhBQTdJZVhUZFBzOU10STJsalFqUW94NDkyUE8rbHZuWjZqNVBYNnZ2VjNieGlJNFFwTTVBQVlFQUFBR0oyaG5palNwK0ZKdnFNc1lIWDU1dTRROEdIeFoxdFJtdE1NZEhrTElxaTY1RFl1RldXS1BuQXlXZ1J6ZFZKK0RENHN6cGl0bm9ZbzFxblRKTHEvd0QyWlV4M1p6VXBQTUFCeVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFlUFY1YnVuMXZUaGU4OWhqdGVsaXlVZkNtdnpPbEVlOUJEQVI1QzZLUjVENkkzT2dWWllxeUI5OU1qdmFoUlhSTEpzNXJ1aVIzdFFUOEdMWnNSbHZlSlNRQUhGQUFDQUFCSTR0M1g2bS90WkduNHUxcHJyY21hU2RQMjIyTDEvV2RwTHJVTFNGdTZFMUNNSE9zb3ZDamprTUY5bSswL2lyVC9jTDVIdFdidHVtM0VUVWxwb055K3pmYWZ4VnAvdUY4aDltKzAvaXJUL0FIQytSMDM5cnpRTk5CdVgyYjdUK0t0UDl3dmtQczMybjhWYWY3aGZJYisxNW9HbWczTDdOOXAvRlduKzRYeUgyYjdUK0t0UDl3dmtOL2E4MERUUWJsOW0rMC9pclQvY0w1RDdOOXAvRlduKzRYeUcvdGVhQnN2Y1VwNDAvVmF2aFZxY2VxTGY1blNEVmU1MW9ON29Ha1hGdHFFYWNhMVc0NFQ5blBlV04xSmNmV2JVZVJmcWlxNU13Z0FCd0FBQUNzM2luTjlDYkxIeXVuaTFyUG9nL2dUQTFTSmVKODRuMGllZzZKSVpKRElGT1ZwRzRMaVNYb05ScHJOV0M2Wkw0bTNHZTk4RlpBQVoxUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCcTkvOEE0KzQvclo4WW4xdi9BUEgxL3dDdG55UnZwNVE2UXNReVNHU0tzMlRTdjh2b2YwL216VzJiSnBQK1hVZlYrYk9ON3dxeTlZQU1xb0FBQTlZQUg1KzFhMHJXR3AzVnBYaTQxS1ZXU2ZwNCtKL2lqeUhjTm85bWROMTJLbGNSbFN1WXJFYTlQOTdIUStsR295N21kZmVlNXE5TGQ1dDZpOC9FK3owL2EybnJvamVUaVZvbHowSFFmczB1Zk85SDJNdm1QczB1Zk85SDJNdm1hUGFlazgvMm44SnpEbndPZy9abmMrZDZQc1pmTWZabmMrZDZQc1pmTWUwOUo1L3RQNE13NThEb1AyWjNQbmVqN0dYekgyWjNQbmVqN0dYekh0UFNlZjdUK0RNT2ZBNkQ5bWR6NTNvK3hsOHg5bWx6NTNvK3hsOHg3VDBubiswL2d6RG54MFB1Uld0WlZ0UXZYRnFpNFJwS1hUTE9YMUw0bjJzZTVyVGpWVXI3VkhVcHA4Y0tOUGRiL0Z2aU43MCt5dGRQdEtkcFowWTBhRk5mZGpINCtsbmw5bzlwV2JsbWJWcWM1Uk12UUFENWhVQUFBQUFZRFgxaThnK21DK0xQQWpKYlFMOXZSZjhBSy9pWTFHMjM0WVhoWWN3UTVpNlZIem1iMmZlYmFxdWlmNUdFZk9aZloxL2R1RjZZdjRuTzU0SlJQSm1BQVkxQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCaTlvSTV0NlV1aWVQY1lSR3dhNUhlc0cvQmttYS9Ia05kcndyd3VnRURxbFI4NWtOQWxpN25Id29mQm5nWjZ0R2x1NmpUL21UWHVLMStHVVR5YklBRENvQUFnQUFBWEZ4bjU0Mnl0M2E3VmFyUnhqRnpLUzlUZWZ6UDBPY3YyMzJIMXJWdHBMblVOUGhRZEN0R0QrL1dVWHZLT0h4ZmdiZEhjaWl1ZHFjSmh5OEc1L1p0dFA0cTAvM0MrUkgyYmJUK0t0UDl3dmtlbnY3WG1nYWFEYy9zMjJuOFZhZjdoZklmWnR0UDR1MC8zQytRMzlyelFOTUdEYy9zMjJuOFhhZjdoZklmWnR0UDR1MC8zQytRMzl2elFOTEJ1bjJiYlQrS3RQOXd2a1I5bTIwL2lyVC9jTDVEZjJ2TkNjdE15ZDI3bDF5N2pZeXpUZVhRbk9sMVN5dmN6bm4yYmJUK0t0UDl3dmtkRDduT2k2bm9Pa1hObHFVYWFsS3Z3bFBnNm04c09LVDk2TW1ydVc2N2ZDVU5yQUI1U0FBQUFBQjVOVmh2NmZXWFF0N3FacmNlUTJ5ckJUcFRnLzRvdEdwUjRzbzFXSjRUQzBMb2tpSkozV1ZaOXRPbndkL1JsbitMSFh4SHhaVlNjWnFTNVl0TVRHWXdOd0JFWHZSVWx6ckpKNXptQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLemlwMDVRZkpKTkdwWWNXNHZsVHdiZWF4cU1PRHY2MGVaeXl2eE5GaWVNd3RTK01TU3NTeHBXYllra2tseUlBSG5PWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3NhclBmMUNzK2FMVWVwR3o4bkcrWTFDcFBoS3RTYi9BSXBOKzgwV0k0ekswQ0xaS29zYVZqSlJzc3lraVJzZWl3M2RQZy9DYmw3ejNIeHM0Y0hhVVllREJIMlBQcW5NekxtQUFxQUFBQWh0Sk50cEpMTGI1alQ5YjIvMHF3cVNvV2RPV29WWXZEbENXN1RYL2R6L0FJSGV6cDd0K3JadDA1RzRnNWMrNlhxTzlsYVphcVBSdnl6MW1lMEhiL1RyK3RHM3ZxTHNLc25pTTNMZXB0K3ZtL0UxM095OVZicDJwcCtuRk9HNWdBODFBQUFBQmlOb05vZEswR2dxbW9YRzdPWDdsR0gzcWsvVXVqMHNtbW1hcHhBeTRPVjN2ZFZyT2JWam85T01PYVZ4VmJiL0FBaVRZOTFXcndpVi9wRUhUNTVXOVZwcjhKR251bDNHY0RxWU1mb2VzNmZyZG1ydlRxNnF3emlVV3NTZytpUzVtWkF6VEV4T0pBQUFBQUFNUnRETDdsQ0hTMnpMbUIyZ2xtNXBSNklaOTUxdFI3eVk1c2JFdW1VaVhSc1hNbFd5ejV5cjVDQmt0bjQ1dWFzdWlINW1kTVBzNmx1M0V1Zk1WOFRNR1M3NHBVbm1BQTVJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUFBxRHhZWEQvQUpHZWc4bXJQZDA2djZVbDd5MVBPQnJNUzZLUkxvM3VpeFZrOHhWa0M5cXMzZEZkTTQvRTJ3MVd3V2I2Z3Y4QXFJMm96M3VjS3lBQXpxZ0J6THUwVnFrSmFSQ0ZTVU1xcTN1eWF6KzZkYlZHOHJpa2ROQitadUhyK1BxKzBmekhEMS9IMWZhUDVtM3VNK2I3SncvVElQek53OWZ4OVgyaitabDlrS2xhcHRScE1KVnFqVHVvWlRtK2tyVm9waUpuYU1QMEVBY2o3cDFhcEhhaWNZVlp4VWFGUGlqSnJtWlRSNlh2VjNkNXh3eVJ4ZGNCK2QrSHIrT3FkdC9NY1BYOGZWN2JQWTloVC9jKzM4cDJYNklCK2QrSHIrT3FkdG0yOXpDZFNlMUNVNms1Slc5UjRjbStnNDMreDVzMnFybTNuRWRQNVJoMXNBNFp0VlhyZldUVk4ydFVTK2t6d2xOOUpnME9qNzNWTk8xakJFWmR6QitkK0hyK1BxOXRqaDYvajZ2Ylo2dnNLZjduMi9sT3kvUkFQenZ3OWJ4MVR0czZMM0lwem10VWM1eWxqZ3NiMG0vQ00ycTdKblQyWnU3ZWNlbjhvdzZHQUR3MEFBQTFXKy94MWY4QTFHZk5IMHZ2OGRjZjZqUGtqZkhKZUZ5R3d1Y2hrcFZac3VrZjVkUjlUK0xOYVpzbWovNWRSOVQrTE9ON3dxeTlnQU1xb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBdzIwWExRZjlTTVRGbVkyaFgzS0QvbWE5eGhvOGh0dGVCZU9TNll5RUh6bDBxc3ltenIvYTE0L3dBcWZ2TVV6SmJQdisxVlYwMC96S1hQQktKWjRBR0pRQUFBQUFBZURXTldzTkh0WGMzOWRVNGNrWXJqbE45Q1hPYU5lOTBxcHZ0V09sd1VPYVZlbzh2OEViTEdpdjZpTTI2ZUhVdzZRRG10bjNTcXltbGVhWFRsRG5kR28wMStETjIwTFhkTjF1ZzZsalh6T0srL1NueFRoNjErWk4vUTZpeEdhNmVIVk9HVUFCaVFBQUFCNlRSdG9lNlBwZW5WcDIybjBYcU5hSEU1eG51MDAralBLL3dPbEZ1cXVjVXdONUJ5UmQxVFU5L0wwbTAzT2pmbm5yTmswRHVqYVJxTldOdmZVcGFiV2s4S1U1YjFOdjhBcTV2eE9sV211MHhtWUc3Z2hOTkpwcHA4YWE1eVRPQUFBQUFEeWFySGUwK3V1aU9mZWExRTJ5NWp2MjFXUFRCL0ExS0JxczhwV3BmUk1aSVJKMldWWjliQ2U1ZTBKZnpvK1RJaTkyY1plREpQM2pHWXdOd0FUVDQxeVBqQjU3bUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQVJxZHhIZzdxdERvbTE3emJEV3RYanU2aFYvbXhMM0hleFBHWVdwZVpNbkpWRmpVc2hsSkYyVWtUQTJuVDU4SlkwSjlNRXZ5UFFZN1FaNzFqdStCTnI4eklubjF4aXFZY3dBRlFCODdpa3E5dlZvUzVLc0pRZjRyQithYXRTNW8xWjBwVjZxbFRrNHY5bytWUEhTYWJGamZaNDR3bUg2YUIrWXZwRng1UlY5by9tUHBGeDQrcjIzOHpWM0NmTjlqRDlPZy9NWDBpNDhmVjdiK1oybnVTWGtyblpUZ3B6Y3AyMXhPR1c4dkR4SmZFNFh0TE5xbmF6a3czUUdGMnpvU3VObDlTaEJ0VGpTMzR0UER6RjUvSTRmdzlmeDlYdHMxNkhzN3ZkRTFSWGpFOVA1SWpMOUZBL092RFYvSDFlMnh3MWZ4OVh0czMrd1ovdWZiK1U3TDlGQS9PdkRWc1k0ZXIyMmQxMlV1bmViTjZkY043MHBVSXFUOUs0bjhEejlkMmJPa29pcmF6bmh5Uk1ZWlVHbTkxU2pPV3oxSzVweWxGMjl4SExpMnVLU2ErUnlmaHEzajZ2YlowMGZaZmVyVzhpdkgrUDVJakw5RkEvT3ZEVnZIMWUyeHcxYng5WHRzMmV3Wi91ZmIrVTdMOUZBL1BOcGVWN2U2bzExV3FQZ3FrWi92dm1lVDlDVTZrYXRPTldEekdjVkplcDhaNW11MEU2UFo5N09mUkV4aFlBSG1JREJhL1QzYmluVVg4Y2NmaWpPbU4xNm52V2tacGZ1VDl6T2xxY1ZKaGdreXlaU0paRzFkdHdBUE9jd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCOGJ5ZkIybGFmUkJtcHg1RFl0Y3FxbllTaHoxR29yNG11eE5kaVBkeXRTdWlja0E3TERGT0xuVmhEd3BKZThQa1B2cGNOL1VLSzZKWmY0Q1p4R1J0SEp4QUE4NXpBQUFBSmp5cjFnY3k3cG0wVldWeExRN09wdTBvSmZTWlI1WlM1ZHoxTG5PZkh1MTJWU2V0NmhLcm5mZHpVM3MvMU04SitpYU94VFlzMDBVLzlsZUFBR3RMci9jeTFTcmY2Rk8zcnpjNmxsTlUxSjhyZzFtUFZ4bzI0MGZ1VDJkU2pvdDFkelRTdWEzM1BTb3JHZXZKdkIrZjlvVTB4cXE0bzVaLzkrNmtnQU1DR0sybzFpbG9XaVhPbzFFcFNndDJsQi94emZJdi93QTZEOCs2amZYV3BYdFc5dmF6clhGVjVsTi9CZEM5QjFUdTBTcUxSdE9qSFBCdTVsdmV2ZDR2ek9SSHNhS2lJbzJ2aktZQWdTamNsc093V3IxZEkya3RLa1p0VUs4MVJyeDVwUms4Wi9CNFozN2s0ajg2YksyVlRVTm85T3RLU2JjNjhHMnVhS2VXK3BINkxmRzJ6eWRiRWJjZFVBQU1DQUFBRFhOYmx2YWpKZURHS05qTlcxS1c5cU53L3dDYkhVZDdNZThtbDhJbGtWaVdScFhNbFdXS3NES2JQVmNWcTFGL3hKU1g0R2NOUW9WWlc5ZUZhSExGOG5UNkRhN2V0VHVLTWF0TjVpL2Q2RE5kcHhPVlpmUUFIQlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF4RzBGZEtuQzJUNDVQZWw2dVl5RjVkVXJTaTZsUjhmOE1lZVROV3ExWjE2MHF0UjVsSm5lMVJtY3BpRVJMbFlsa2FseHNoa3NxK1FnZWpTK1BVYUMvbXo3amFEV2RIV2RTcGVqTDl4c3htdmVKU1FBSEJBY3A3dFV2N2RwVU9palVmL0pIVmprZmRubm5XOVBoNE5xMzF6ZnlOV2svcXdtSFBnQWUwc0dkMkRqdjdZYVN2K3VuMUpzd1JzbmM1anZiYWFaNkp5ZjhBeFp6dStDcjVJZDVPT2QwdDUydHVWMFVxYS80blkrWTR2M1JaYjIxOTk2RlRYL0JIUHNTUC93Qk0vTDk0UkRXd0NjSDJDNkRjZTVVczdUVGZSYlQrS05Pd2JyM0oxbmFHNGZSYXkvOEFaR0xYL3dDbHVmSkU4blYxeW80THRJOTdhRFVuMDNNL2l6dmE1VjZ6Z091UGUxclVIMDNOVC8yWjRYWVg5U3Y1UWlsNEFTRDZwWkIwanVRTDlscXIvbXAvQ1J6ZzZUM0lWL1o5VWY4QVBUK0RQTDdWL3dCSlgvajlZUlBKMElBSHc2Z0FBTlV2djhkY2Y2alBtaTk3L2pyai9VWlJIb1J5ZElTbnlnTG5JQXF6WmRIL0FNdW8rcC9GbXRNMlRSV25wdExITmxQck9WN3dxeTlvQU1pb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBeFcwSy9zMUo5RS95TUpFem0wSCtEZ3Yrb3ZnekJSTmxyd3J4eVhReUVHZEVxczkrZ3ZGKzEwd1o0R2V6UkhqVVllbU1sN2l0WGhsRThteUFBd3FBQUFEMXZDQkVvNzBaUnpqZVRXUU9HYlY2dlYxaldiaTVuSnVsR1RoUmh6UmdueGRmS1ljKzE3UXFXMTVYdHFxYW5TcVNoSlBwVFo4VDlJdFVVMFVSVFJ5aDBnUFRwdDlkYWJlVTd5enF1bldwdkthNS9RK2xNOHdMekVWUmllUTc5b21vMHRWMHEyMUNrc1JyUXk0K0RMa2EvQm51TlI3bHltdGxrNTUzWGNWSEgxY1g1NU51UHp6VTI0dFhxNktlVVRMbUFBempSTzYxck5hdzBlanA5dE53cVgwbXB5WEtxYTVWK0xhUnh3NmozYWJTbzQ2WmZKTjA0dWRHVDZHK05mQm5MejJ0SkVSYWpDWVFRV0lOU1hVTzVOdEpXcVZIb0Y3VmMwb2IxcktYS2t1V0hxeHhyOFRweHdIWUJUZTJXazhIblBEOGVPakR6N2p2eVBIMWRFVTNPSHhSSUFER2dBQUJyS2E2ZUkwNzkyVWwwUEJ1S05TdW83bDFYajBUZnhORm40clVxb25QRVF1UWxHaFpCUjg1Y3EwU05rMGU0VmV6aW0vdjAvdXkvSTlwcWRsZFRzNjZxUjQ0dmlsSHBSdEZ2V3AzRkpWYVV0Nkw5eGp1VWJNNVVtSDBBQnlRQUFBQUFBQUFBQUFBQmdBQVFBQUFBQUFBQUFBQUdzNnROVDFDcmpramlQVVo2K3VvV2x2S3BKcmU1SXg2V2F0bHlibEo1YmVXelRZcCtLMUswU1V5RnlFbzBMQlJseXJKR1cyY24vZjAvVkw4ak5HdWFEUGN2OEFkOE9MWDVteG1PN0dLbEpBQWNVQzR1TS9QRzJscjlEMnIxVzNTd2xjU2xIMVMrOHZpZm9jNHQzWDdSVU5xWTNDV0ZjMjhKUDFwdUwrQ04yaXF4Y21PcVlhT0FEMlZnNmQzRTd2RlRWYkZ2OEFlakN0RmVyTVg4VWN4Tnc3bEYxOUgyeG9VMjhSdWFVNlg0NHl2Z1o5UlR0V3FvUTdkWHBScjBLdENYSEdwQndmNHJCK2Q2MUtWR3RVb3lXSlU1T0QvQjRQMFdjTTIxdHZvbTFXcFVrc1JsVjRTUHFrcy9tZE93cm1LNjZPc1orbi9wU3dvQVBxMWc2MzNLcnJodG5LbHUzbDIxZVVmd2x4cjh6a2h2OEEzSWJuZHZ0UnMyLzd5bEdvbDZVOFAzTThydGEzdDZTcWVtSlJQSnUyMTlwOU4yWjFLZ2xtWEF1Y2ZYSDczNUhDVnhySitqWlFqVWhLbkxqak5PTDlUNGo4OFhsQ1Z0ZVhGdEpZZEdwS0QvQnRHRHNLNW1pdTM4cC83OUVVdmtBRDZOWkIzUFlxNmQ1c3RwMWFVc3lWTGc1UDB4ZVB5T0dNNnQzSmJyaE5EdXJSdmp0NitVdlJKWitLWjR2YlZ2YTAwVmRKL2hFOG04QUErTVVENFg5UGhiS3REbmNHMStIR2ZjY3ZFK1JreE9KeU5PaXk2SXJRZEt0VXB2OEFnazBGeUhvT2pid1JGcVVWS0xUVFdVMXprbm5PWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ0azIrSkl3ZXJhbXB4bGIyMHN4ZkZLYTUvUWk5RkUxVGlFeEdYbDFlN1Z6YzdzSG1uVDRvK2w4N1BJaXNVWFJ1aUlwakVMcFFBQXEyWkhaK0c5ZVRuNEVQaVk1bVoyY2grenIxT2xxSlc1T0tKUlBKbUFBWUZBQUFBQUJ5N3VqN00xNlY3VjFteXBPcGIxdnZWNHdXWFRsenl4MFAzR2huNk5NTmY3TDZCZlZIVXVOTW91YjVaVTh3YjllTUgwV2o3WjNWRVc3c1p4OFlXaVhDelpObE5rNzdXNjBhdFdFN2V3VHpPdEpZY2wwUjZYNmVSSFQ3SFpiWit5bndsRFM2Tyt1U1ZUTThkWm1rc0pKY1NYSWROUjIzdFU3Tm1uSHJQNE12bGFXOUcwdHFWcmJVMVRvMG9xTUlMbVNQcUFmTnpNek9aVkFBUU1QdFhvdFBYdEVyNmZPU2hVZjM2TlIvd0FFMXlQMWMzNG5BdFUwNjkwdTluWjM5Q1ZDdEI4ajVINlUrZGVrL1NwNXIvVDdIVUtQQTMxcFJ1cWZOR3JCU3g2dWcxMk5STnJoUEdCK2FENzJWcGMzMXhHMnM2RlN2V204S0ZPT1dkeitvdXluQ2IvZW1HYzV4d2s4ZFdUT2FmcDFocDFOMHJDem8yc0h5cWxCUno2M3ptcXJYVTQ5MkU1YXgzUHRrRnMvUmxlWHU1UFVxMGNQZDQxU2o0S2ZPM3pzM0VBODJ1dWE2dHFwQUFDZ0FBQWpUNnN0K3ZWbDB5Yjk1dDFXVzdTbkxvaTM3alRZOGZHYWJFYzFxWDBpV0t4Sk5Dd0dBUUtNK3RuZDFyU281VTNtTC9laStSbEdpclJPSW1NU05qdGRVdEs2U2xQZ3ArRFA1bnVpMUpaaTAxNkhrMHRvbUxsSDkyVGo2bmc0VFpqNFNyaHV1SDBERDZEUytGcmVPbjJtT0ZyZU9uMm1SdVBVMlc2WWZRTVBvTkw0V3Q0NmZhWTRXdDQ2ZmFZM0hxYkxkTVBvR0gwR2w4TFc4ZFB0TWNMVzhkUHRNYmoxTU4wdytnWWZRYVh3dGJ4MCsweHd0WHhzKzB4dVBVdzNURDZCaDlCcGZDMWZHejdUSEMxZkd6N1RHNDlURGRNUG9HSDBHbDhMVjhiUHRNY0xXOGRQdE1iajFNTjB3K2dZZlFhWHd0WHhzKzB4d3RYeHMrMHh1UFUyVzZZZlFNUG9OTDRXcjQyZmFZNFdyNDJmYVkzSHFiTGRNUG9JdytnMHpoYXZqWjlwamhLdmpaOXBqY2Vwc3R3cVZhVk5acVZJd1g4endZMjcxbWpCT051blZuNFQ0b3I1bXY0YmVYbHYwa3FKYW16RWN6QzlldFZ1S2pxVlp1VW43aUlvSkZranR5V1NnQVFCVmxpckpnZTNRdVBVWStpTWpaRFh0bjEvYnBQb3BzMkV5WHZFcElBRGlnT1ZkMWJTOVV2OWZ0NmxscDF6YzA0V3FpNTBxVGtzNzBuaktPcWo4VHJhdVRicTJvSDUyK3J1ditaYjcyRWg5WGRmOHkzM3NKSDZKejZSbjBtdnZ0WFJPWDUyK3J1ditaYjcyRWpaTzUzb3VyV3UxMWxjWGVtWFZDakJUYnFWS1RqRmZkZU9NN0xuMGo4U3RXcnFxcG1uSE15Y3h5TGJiU05XdXRxTCt2YjZiZFZhVXBSM1p3cE5wL2RYSXpyby9FalI2dXJTVnpYVEdjeGdpY09ETFFOYjgwWG5zWkU5NGRiODBYdnNaSGVNK2taOUo2bnR5NTVJVGx3ZnZEcmZtaTk5akkyL3VZNlpxRm5yRjFWdkxHdmJ3ZHZ1cVZXbTRwdmVYRnhuU2Mra0hHLzJ2Y3ZXcHR6VEVaUmxNZVZlczRkcVdpYTFVMUs3cVIwcThsR1ZlYlVsUmVHbkpuY0IrSmowV3RxMGt6Tk1aeVJPSEIrOE90K2FMMzJNaDNoMXZ6UmUreGtkNC9FZmllbDdjdWVTRTVjRzd3NjM1b3ZmWXlPaGR5Nnh2TEsxMUZYbHBXdG5PcEJ4VldEam5DZkprM2Y4UVp0VDJyWHFMVTI1cGlNb3lBQThkQUVBZ05UdmY4ZGNmNmorSjg0bDczL0hWLzhBVWZ4S0k5Q09Ub3NRQUJSODVtTm5yaGZ0TGFUNC93QjZQNW1JWkZPYzZWU05TbThTaThwa1ZVN1VZUkxjZ2VUVDcybmVVc3BxTlJmdlE2UDBQV1laaVluRXFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThtb1h0T3pwWmVIVWErNUhwOVBxSmlKbWNRTVp0QlhVcTFPaEYvdUxNdld6R0lpVXBWS2txazNtVW5sc2xHK21uWmpEcEN5QUFGV2VuU0hqVXFQcGJYdVBNejdhYzkyL29QK2RDcnd5TnJBQjU3bUFBQUFBTkMyKzJScTMxV1dyYVhUMzdocjl2UlhMVXgvRkgwK2puT1l6aEtFM0NjWENjWGh4a3NOZmdmb3M4R3BhUHBlcEwrM1dOR3UvRGxINzNXdU05M1I5clZXYVl0M0l6RWZWTVM0RVpUWi9STDdXN3RXOXBUZTRuKzByTmZjcHJwYi9JNnhTMk4yYXBUVTFwY0pOYzA1eWt1cHN6bHZSbzI5S05HM3BRbzA0OGtJUlVVdndSc3ZkdDA3T0xWTTU5VTVmTFRMS2hwMWhRc2JkWXBVWUtLNlgwdCtsdmpQU0FmTVZUTlV6TTgxUUFGUjRkYjB1MTFqVEsyblhrYzBxcTVWeXhrdVNTOUtPRTdTN09hbHMvZE9sZVVuS2kzK3p1SUw3azE2K1oraG42RUsxYWRPclRsU3EwNDFLY3VLVUp4VFQvQm1temZxdGZJZm1RSk9VbEZKdHZpU1hHMmQ3dWRpdGw3aW82azlJcFJrK1hnNVNndXBNOXVsYlBhSnBVbE93MDJoUnFML3dDNXU3MCt0OFpzblcwNDRRbkxVZTVoc25YMDV5MXJVNlhCM0ZTRzdRb3lYM3FjWHl5ZlEzMGRCME1BODY1Y201VnRTZ0FCekFBQURWOVZqdWFqWFhUTFBXamFEWGRlampVTStGQk03MmZFbWw0VVNWUlkxTGhESkFGR2k5cmMxN1dlL1JualBLdVprTkZXaGlKR2Z0ZFp0NnFVYXlkR2ZwNDQ5WmthZFNuVVdhZFNNMS9LOG1tdEVMS2VVMm42RGpObUo1SzRicmg5Qk9IMEdsOEpWOGJQdE1jTFY4YlB0TXJ1UFUyVzZZZlFNUG9OTDRXcjQyZmFZNFd0NDZmYVkzSHFiTGRNUG9HSDBHbDhMVzhkUHRNY0xXOGRQdE1iajFNTjB3K2dZZlFhWHd0YngwKzB4d3RieDArMHh1UFUyVzZZZlFNUG9OTDRXdDQ2ZmFZNFd0NDZmYVkzSHFiTGRNUG9HSDBHbDhMVjhkUHRNY0xWOGJQdE1qY2Vwc3QwdytnWWZRYVh3dFh4cysweHd0WHhzKzB4dVBVMlc2WWZRTVBvTkw0V3Q0NmZhWTRXdDQ2ZmFZM0hxYkxkTVBvR0gwR2w4TFc4ZFB0TWNMVzhiUHRNbmNlcGh1VXBSaXN5a29wYzdlREgzZXJXMUZOVTN3MCtpUEoxbXR0eWwrOUp5OWJKU0ppeEh4a3crdHpjVnJxcndsV1dYekpjaTlSUkJJc2tkNGpDeVVTUUNBS3NzUXlZSDAwK2ZCMzlDWE52cGRmRWJZYVpuZGtwZER5YmxDU25DTTF5U1NabXZ4eWxXVWdBektoenZ1dmFQZTZoRFRMaXhzNjExT201MDVxbEJ5YVR3MDNqMU02SURwYXVUYnFpcUIrYy9xNXRCNWx2dllTK1Ercm0wSG1XKzloTDVINk16NlJuMG0zdjFYUk9YNXorcm0wSG1XKzloTDVHUjJiMGpYOVAxL1Q3MTZOZlJqUnVJU2srQWx5WncvZGs3M24walBwSW5XMVRHTUdUblp6RHVsYUxmM092VTdxeXNhOXhHclFpcHVsVGNzU1RhNDhlakIwOEhMU2FtclMzTjVUR1VSd2NFN3dhNTVudmZZU0hlRFhQTTk3N0dSM3ZQcEdmU2V2N2R1K1NGc3VDZDROYzh6M3ZzWkd3YkJhZnJHbjdUMnRhdnBsM1NvelVxZFNjNlRTU2E1Vy9Xa2RiejZSbjBuTzcyemN1MjZxSm9qakdFWkRqKzJtZ2FtOXByNnJaNmRjVjZGYWFxUm5UcHVTNDF4cmk5T1RzQVBPMGVzcTBsYzEweG5NWUluRGduZUhYUE05NzdHUTd3NjU1bnZmWXlPOS9pUHhQVjl1M1BKQ2Rwd1R2RHJubWU5OWpJM0x1WDJtcWFmcXQzU3U3QzVvVWE5SDkrcFRjWTcwWHhlNXM2VCtJT0dvN1hydjJwdDFVUmlVWkFBZUlnQUFHdGExRGc5UW0rYWFVdi96cVBJbVpiYUtuL2MxdlhGL0V4Q045dWMwd3ZISjZiSFVhOXA5MWZ0S1hnUG05WFFaaWhxOW5WWDNwdWsraWEvTTF4b3JnVlc2YXVKaHR5dkxSckt1YVhhUlAwdTE4cHBkdEduNEdEbnVJNm8yVzRmUzdYeW1sMjBQcGRyNVRTN2FOUHdNRGNSMU5sdUgwdTE4cHBkdEQ2WGErVTB1MmpUOERBM0VkVFpiaDlMdGZLYVhiUStsMnZsTkx0bzAvQXdOeEhVMlc0ZlM3WHltbDIwUHBkcjVUUzdhTlB3TURjUjFObHVIMHUxOHBwZHRENlhhK1UwdTJqVDhEQTNFZFRaYmg5THRmS2FYYlErbDJ2bE5MdG8wL0F3TnhIVTJXNGZTN1h5bWwyMFBwZHI1VFM3YU5Qd01EY1IxTmx1SDB1MThwcGR0RDZYYStVMHUyalQ4REEzRWRUWmJkSzlzNHJNcm1uK0VzbmtyNjFhd3lxU2xWZm80a2E0a1NrVEZtbU9hY1BYZWFoYzNlWXlsdVUvQWp5ZmowbmxpZ29sa2p0RVJIQ0VwUlpFSWxBQm5pQlZnUStRMkxRb2J1bnhsenprMytYNUd0eU50c0ljSFpVSWRFRWNMMCs3aFdYM0FCa1ZBQUFCNWRTdjdYVGJLcGVYbFZVcU5OY2I1MitaSmM3WnlQYWZiRFVOWm5PalJsSzBzYzhWS0R4S2E2WlA4QUxrTitqMEYzVlQ3dkNPcWNPazZydFpvT215Y0sxOUdyVlhMVG9MaEpMcTRsMW1EcWQwblMxTEZQVDd1YTZXNHgvTTVZRDZTMzJMcHFZOTdNeW5EclZuM1E5RHJTVWE5SzZ0Yy94U2dwUlhVemFiQytzOVFvOFBaWFZLNHArRlRsbkhyNkQ4K0hxMHpVTHpUTHFOMVkxNVVhc2VkY2pYUTF6bzVYK3hiVlVadFRpZlhrWWZvSUdEMlIyZ282L3AzRGJxcDNOTEVhMUpjejVtdlF6T0h5MXkzVmFybWl1TVRDb0FhWnQxdHJSMEpTc0xGUnI2azF4NTQ0VVUrZVhTL1Ixa1VVVlZ6czBqYXIrK3N0UG9PdmZYVksycEwrS3JOUlQ5WFNhbmZkMG5aMjNrNDBQcE40MXowcWU3SHJrMGNnMUxVTDNVN3FWMWYzTlM0clMvaW0rVDBKY2lYcVBJZWxSb3FZOFU1UzY3RHVwNlM1WW5wbDdHUFNwUWY1bWUwZmJYWjNWSnFsU3ZmbzlhWEVxZHl1RGI5VDVIMW5CQVhxMGR1WTRjREQ5UGc0dnNKdHRjNlJYcDJHcFZaVnROazkxU2x4eW9lbFB3ZWxkUjJlRW96aXB4a3BSa3NwcmthNlR6YnRtcTFPSlFrQUhFQUFCNTlSbHVXTnhMK1JtcVFOazF1VzdwMVJlRTB2ZWExRTEyZkRLMUw2UkpLb3Nqc3NBQWdDTUVqQklxUmdzQUs0UXdpMkJna1Z3aGhGc0RCQXJoRENMWUdBSzRRd2kyQmdrVndoaEZzREJBcmhEQ0xZR0NSWENHRVd3TUVDdUVNSXRnWUFyaERDTFlHQUs0SlNKR0FDSkdBQUFCQUZXUytjcStRa1pQWjFadXFyNklmbVo4d2V6YS9hWEV2NVV2ZXpPR083NGxKNWdBT1NBNWR0N3IycjJXMHRlMnN0U3IwS01LZFBFSVN3azJzczZpY1k3b2N0N2E2Ky9sM0Yvd0FVZXoyUGJwcjFFeFZHZUg3d21Iayt0RzBYbm02N1MrUSt0TzBYbmk2N1MrUmhnZldkM3MrU1BwQzJHYSt0TzBYbm02N1MrUnN2YzgxclY5UTJoNEM5MUd2Y1VWUW5MY25MS3lzWVpvQnVYY3FqbmFPckx3YldmeFJqMXRtMVRwcTVpbU9YU0NZNE9zbklkcHRvOWN0OW9kUm9XK3EzRktqVHJ5akNFWmNVVXVaSFhrY0gybmx2YlI2cEwvNVZUNG5pZGkyNks3dFcxR2VIeCthc1B2OEFXbmFMenpkZHBmSWZXbmFMenpkZHBmSXdvUHArNzJmSkgwaGJETmZXbmFMenpkZHBmSTNQdVphcnFlcFhXb0svdnExekduVGc0cW84NGJiT1pIUSs1Q3YyMnFTL2twcjNzOC90S3phbzB0YzAweEU4UGhIV0NZNE9rQUErS1VBQUFBQUFBQUFnRUJxVjUvamEvd0RxUDRuelJlOC94dGYvQUZIOFNpUFFqazZMQUlBUXlyUllna1Zwem5TbXAwNXVFbHlOR1h0TmJhVzdkVTk3K2VIeU1RMFZhSW1tS3VhTU5xcGFsWlZGeFhFWStpWEVmVDZYYStVMHUyalVNREJ5M0VkVVliaDlMdGZLYVhiUStsMnZsTkx0bzAvQXdSdUk2bXkzRDZYYStVMHUyaDlMdGZLYVhiUnArQmdiaU9wc3R3K2wydmxOTHRvZlM3WHltbDIwYWZnWUc0anFiTGNQcGRyNVRTN2FIMHUxOHBwZHRHbjRHQnVJNm15M0Q2WGErVTB1Mmg5THRmS2FYYlJwK0JnYmlPcHN0dytsMnZsTkx0b2ZTN1h5bWwyMGFmZ1lHNGpxYkxjUHBkcjVUUzdhSDB1MThwcGR0R240R0J1STZteTNENlhhK1UwdTJoOUx0ZkthWGJScCtCZ2JpT3BzdHcrbDJ2bE5MdG8rVlRVYkttdU81Zy9SSGpacW1CZ25jUjFObG03clc4cHh0YWJUOE9meU1QT2M2czNPcE56aytWc3FrV1NPbE5NVThrNHdsSXNpRVNpeVVnQmtDckxXenhkVVgwVFh4S3ZuSXB2RldENkpMNGsvQWJrQUR6bk1BQUFBeDJ2NnZhNkxwMDcyNWJlUHV3cHJscVM1a2k5RkZWZFVVMHhtWkh0cjFxTnZTbFdyMVlVcWNlV2M1SkpmaXpXTC9ielFMV2JoU3FWcnlTNTZNUHU5YndjejE3WE5RMXU1ZGE5cS9jVC9BR2RHUEZDQzlDL014WjlQcCt4YUlqTjZjejBoYUlkUmozU2ROYnc5T3UwdW5laXpLNmJ0dHMvZXlVSGRTdFp2a1Z4SGRYWHlIR1FhYSt4dE5WSERNZjUvS2NQMFZDVVp3VTRTVW95V1ZLTHltU2NPMmQyajFMUTZxK2pWZUV0Mjh6dDV2TVplcm9mcFIyRFF0WHM5YXNJM2xwTGk1SjAzKzlUbDBNK2Uxblo5elM4WjQwOWZ5ck1ZWkVBSG1vREU2enRGbzJqSnJVTCtuVHFZeXFVZnZUZi9BR3I4elR1NkZ0dlZzNjFUUjlHcWJsZUhGWHVWL0EvQmo2ZWw4eHlxY3BUbktjNU9VcFBMbEo1YmZwWnVzNlNhNDJxdUVKaUhYcS9kUTBXRW1xTmplMWw0VFVZWjYyV3RlNmZvZFNXSzlwZTI2OExkak5lNW5IZ2ErNldrNGZvdlNOYzBqVjQ1MDYvcFY1WXk2YWVKcjF4ZkdaSS9NbEtwVXBWSTFhVTVVNmtIbU00dkRUOURPbmJEOTBDZFNwVDAzWDZpYmsxR2xlUGk0K1pUK2ZXWkx1a21tTTA4VVlkTkFCaFFBQUFZSGFKWXIwWmRNR3ZlWjR3MjBrZjJkQ2ZRMmpyYW4za3h6WWRGaWtlUXNqWXVrQUVBUVNNRWl1Q01Gc0FDdUVNSXRnWUFyaERDTFlHQUs0UXdpMkJnQ3VFTUl0Z1lBcmhEQ0xZR0NSWENHRVd3TUVDdUVNSXRnWUFyaERDTFlHQUs0UXdpMkJnQ3VDVWlRQVdDUmdBQUFRQkRKS3NtQldSdE9sejRUVDZFdjVjZFhFYXRJMkRaNmU5WXVIZ1RhNitNNDNvOTFFc21BREdvSGsxZFYzcE43OUdxU3AxK0FtNmM0OHFrazJzSHJEU2tuRjhqNG1XcG5abUpIQzF0VnRIalBmbTY3YStSUDFxMmo4ODNYYVh5TWRxVnU3VFVicTFmTFJyU2gxTm5tUDBTbXhZcWpNVVI5SVh4RE5mV3JhUHp6ZGRwZklmV3JhUHp6ZGRwZkl3b0o3dFo4a2ZTREVPMmJCNmpXMVBadWhYdWEwcTFlRTUwNms1UGpiVDRzL2cwZmJiU3BlVU5tcjI0c2E4NkZlakZWRk9tOFBDZkg3aldlNURjNzFucU5vMys1VWhVUzlEV0g4RWIxZjBGZFdOemJTV1ZXcFNoMXBvK0sxTk1XTmJQRGhFNS93QWMxZmk0bDlhZG8vUFYzMi8wSDFwMmo4OVhmYi9Rd3ppNHR4bHl4ZUg2d2ZhOTNzK1NQcEM3TS9XbmFQenpkZHBmSWZXbmFQejFkOXRmSXd3SGQ3UGtqNlFPOWJNWGs5UTJmc0x5cFBmcVZLSzM1ZE1seFAzb3lacC9jc3VlRzJaZEJ2THQ2OG8vZy92TDRzM0ErQjFkdmQzNjZPa3k1Z0FNd0FBQUFBQUFBOEd0MDkvVDV2bmcxSTF5TE52cjAxVm9WS2IvQUlvdEdueHltMCtWR3V4UENZV3BXd1Jnc0RRc3JnWUxEQUZjREJiQXdRSzRHQzJCZ2tWd01Gc0RBRmNEQmJBd1FLNEdDMkJna1Z3TUZzREFGY0RCYkF3QlhBd1d3Q0JYQ0dDd3dTSXdTaWNBZ0VnQUE1aXJMTXF3S3hpNTFJd1hMSnBHNVJXN0ZSWE1zR3E2WkRmMUNoSCtiUFViV1pyODhZaFdRQUdkVUFQSnEwYnFlbVhjTEZKM1VxVW8wc3ZDM21zY3BhbU5xWWdjbDI5MTZlc2FyT2hTbi9ZcldUaFRTZkZPWEk1L0wwR3NHMS9VSGFQeE52N2RENmc3UitKdC9ibys1czZqU1diY1c2SzR4SHFzMVFHMS9VSGFQeE52N2RENmc3UitKdC9ibzdkOTAzOXlQcVphb0RhL3FEdEg0bTM5dWg5UWRvL0UyL3QwTys2Yis1SDFIbTJBMUNWaHROYS9lYXBYTDRDb3VsUGs2bmc3VWNuMHZZZmFDMzFLMXIxYVZCVTZWYUU1TlZrK0pQTE9zUGxaOHoydlhhdVhhYTdjeFBEamhFc0Z0cHJxMmYwS3JlUlNsY1RmQjBJdm5tK2YxSmNad0N0VnFWcXM2MWFjcWxTcEp5bE9UeTVOOHJaMkh1azdQYTVyOXhaUTA2blNsYlc4Sk43OVZSek52bzlTTk0remphanhGdC91RWNOTFZib296TThaSWFjRGNmczQybzhSYS83aEQ3T05xUEVXMys0UnIzOXZ6UU5PQnVQMmNiVWVJdHY5d2g5bk8xSGlMYi9jSWI2MzVvR25IYnU1VnFrOVEyWVZ2Vms1VmJHZkE1Zks0NHpIM2NYNEdoZlp6dFI1UGJmN2hHOTl6VFo3VTlBdDlRaHFVS2NIWG5Cd1ZPb3A4U1R6OFRMcWE3ZGR2aFBFYm1BRHlrQUFBeFcwVXNXbE9QaFZQZ2pBeE14dEpML0R3L3FaaDQ4aHR0UjdpOGNsa1dJUkowU0FFQVRrakpHUnl2QUU1SXllcWpwOTVWU2NhTGluenplRDBMUnJwOHM2Uy9GbFpycGo0b3l4dVJreVhlYTY4WlM2MzhoM211dkcwdXQvSWplVTlUTU1ia1pNbDNtdXZHMHV0anZOZGVOcGRiK1EzbFBVekRHNUdUSmQ1cnJ4dExyZnlIZWE2OGJTNjM4aHZLZXBtR055TW1TN3pYWGphWFcva084MTE0Mmwxc2J5bnFaaGpjakprdTh0MTQybDd4M211dkcwdXRqZVU5VE1NYmtaTWwzbXV2RzB1dGp2TmRlTnBkYitRM2xQVXpERzVHVEpkNXJyeHRMcmZ5SGVhNjhiUzYzOGh2S2VwbUdOeU1tUzd6WFhqYVhXL2tPODExNDJsMXY1RGVVOVRNTWJrbkprZTgxMTR5bDFzUFJycExpblNmNHNieW5xWmhqaGsrOWV4dXFDYnFVWHVyK0tQR2p6cGw0bUo1SldCQ0pRQUFBUStjcStRcytjcStRa1pqWnBmZHVINllyNG1hTVJzMnYyRmQvenI0R1hNTnp4eXBQTUFCelFIRWR1WmIrMW1wdm9xNDZvbzdjY0sydG1wYlRhbzhyL0FCTTE3ejMrdzQvKzFVK243clVzU0JsZEs2eGxkSzZ6NjVZTjM3azBjNjVkeTZMYi93RHNqU0UxMHJyTjc3a2FUMVhVSkxEeGJ4WC9BQ1BQN1JuR2tyK1g3b25rNml1VmVzNEZyc3Q3VzlRbDAzTlQvd0JtZDlqKzh2V2ZuM1ZKS1dwM2p5dU92VTUvNW1lTDJGSHYxejZRaWw1UU1ycFhXTXJ3bDFuMVN3ZEc3a0svelYvNlMvOEFZNXpsZUV1czZUM0lVdUExU1NmOGROZTVubDlxL3dDa3IveCtzSW5rNkVBRDRaUUFBQUFBQUFBQ0FYS0JxTjUvamEvK28vaVVSYTcvQU1aWC93QlIvRXFqMFk1T2tMSUJBQVJna0FSZ2pCWWpCSXJoREJZQVZ3TUZzREFGY0RCYkF3QlhBd1d3TUFWd01Gc0RBRmNEQmJBd0JYQXdXd01FQ3VCZ3RnWUpGY0RCYkF3QlhBd2l3SUVKRTRDSndCQ0pBQUJnY3dGU2o0bmt1ejV5NXlSdWtYbUtmU2tTVXQzbWhTZlRCZkF1ZWM1Z0FJQTVCM1NkVGxlN1FUdFl5L1kyUzROTG0zdVdUL0w4RHI2NVRsT3E3RTdRM1dwM2x6Q2xRY2ExYWM0dDFrbTAyMmoyZXlhclZGNmE3a3hHSTRaVERTZ2JYOVFkby9FMi90MFBxRHRING0zOXVqNmp2dW0vdVI5VnN3MVFHMS9VSGFQeE52N2RENmc3UitKdC9ib2QrMDM5eVBxWmhxaG5kamRhbm91czA2cmsvbzFacW5YanpicmZMNjF5OVo3dnFEdEg0bTM5dWg5UWRvOFA5amIrM1J6dWFuU1hhSm9xcmpFK3BtSFlQVThycE1WdFZxYjBqWjYrMUNQOTVTcDRwLzF2aVh2WjZkSHAzTkxTclNsZUpLNWhTakdwaDVXVXNjdjRHSTIrMG0rMW5aNlZqcDZoS3RLdENUVTU3cWFXYzhaOFBUVEVYTVRQREtqZzBwU25LVTV5Y3BTZVhKOHJmU1FiaDluTzFIaUxiL2NJZlp6dFI0aTIvd0J3ajJkOWI4MExaYWVEY1BzNTJvOFJiZjdoRDdPZHFQRVczKzRRMzl2elFaYWVEY1BzNTJvOFJiZjdoRDdPZHFQRVczKzRSTy90K2FETGQrNVpyOVRWTkpxV0YxVWM3cXh3bEtUNDUwM3lOK3JrNmpkam1ld1d5ZTBPaDdRd3ZMcW5SamF5cHpwMWR5c3BQRFhGeGV0STZZZVBmaW5iblpuZ3FBQTRBWXphQ09iRlM4R2FNbWVMV1k3Mm0xdlJoKzh2UjRvVERXWThoZEZJbGtiMTFnQVFBQkFFNUlJeWZXaGJWN2orNXBTa3VubTZ4d2dmUEpHVEl3MGU3YTQzVGo2NVpKN3pYWGpLWFcva1UyNmVxTXd4dVJreVhlYTY4WlM2MzhoM211dkcwdXQvSWJ5bnFaaGpjakprdTgxMTQybDF2NUR2TmRlTnBkYitRM2xQVXpERzVHVEpkNXJyeHRMcmZ5SGVhNjhiUzYzOGh2S2VwbUdOeU1tUzd6WFhqYVhXL2tPODExNDJsMXNieW5xWmhqY2pKa3U4MTE0eWwxdjVEdk5kZU1wZGIrUTNsUFV6REc1R1RKZDVycnhsTHJmeUhlYTY4WlM2MzhodktlcG1HTnlNbVM3elhYaktYVy9rTzgxMTR5bDF2NURlVWRUTU1ia1pNbDNtdXZHMHV0L0lkNXJyeHRMcmZ5RzhvNm1ZWTNKT1RJOTVycnhsSi9pejVWTkx2WUp2ZzFOTHdIa21LNlorSm1IanlUa2lTbENUaktMakpjeldDTWxrckFoRWdDR1NRK2NDa2pMN056Ky9YcDlLVWtZbDhoN2RCbnVhakdQaHhhL1A4aWx5TTBTaWVUWlFBWUZBQUV3T0tkMEcyK2piVzM2U3dxcmpWWC9jdm5rMTAzdnV0MjNCNnJaWGZFbFdvT0RmcGpMNU0wUEs2VjFuNkRvYTk1cHFLdlQ5T0M4Y2tnaks2VjFqSzZWMW0xTGRPNVRjcWp0RlZ0MjhLNG9TUzlMaTAvbWRhWEU4bkNkajdwV20wMm0xbkpKY1BHTDQrYVhGK1ozYjBIeHZiZHZaMUVWZFlVbHdUYWEyK2g3UTZqYll3b1hFc2VwdksrSmpUYnU2bGJjQnRQdzJFbGNVSVQ5YldZdjRJMURLNlYxbjFPa3VieXhSWDFpRm9TQ01ycFhXTXJwWFdhVXVnOXlHNmNielViSnZpblRqVlM5S2VIOFVkTk9MOXptNlZ2dFphSnlTVmRUcFBqNlZ4ZTlJN1FmRTlzMjluVlo2eEUvdCt5azh3QUhqSUFBQUFBQUFBRFU3Nm53VjlYaHpLVGEvRTJ3MTdhQ251M2tLbk5PSHdPOWlmZXdtR1B5TW1TcGFOY1NXYWxTRlAwY3JQdXREampqdVpaOUVUdnZLWStLMllZYkl5Wm52SER5bWZaUlBlT0hsTXV5aHZhT3BtR0Z5TW1hN3h3OHBsMlVPOGNQS1pkbERlMGRUTU1Ma1pNejNqaDVUUHNvZDQ0ZVV6N0tHOW82bVlZYkl5Wm52SER5bWZaUTd4dzhwbDJVTjdSMU13dzJSa3pYZU9IbE11eWlPOGNQS1pkbERlMGRUTU1Oa1pNejNqaDVUTHNvZDQ0ZVV6N0tHOW82bVlZYkl5WnJ2SER5bVhaUTd4dzhwbDJVTjdSMU13d3VSa3pYZU9IbE11eWgzamg1VExzb2IyanFaaGhjakptZThkUHltZlpRZWh4eHhYTC9HSTN0SFV6RERaSnllK3RvOTFUVGROeHFyb1hFekh5VW95Y1p4Y1pMbFRXR1hpcUt1U1U1SnlWQ0pGc2pKQUFObFd5U3NnTWhvRU42L2N2QWczK1JzWmhkbTRjVmVwNm9tYU1kNmMxS1R6QUFja0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRFh0b1padklSOEduOFdZMko2OWFsdmFuVi9sU1h1UEpFMzBjS1lYamt1aWNsVUdXU25KRFlMMmxDZDFjUm93NStWOUM2Um40ajYyTnBWdktqakQ3c0YrOU44aU5ndExLaGF4KzVITStlY3VVK3RDalRvVW8wcVVkMk1UNkdPdTVOWHlVbVFBSEpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZUMrMDJqY0p5cHBVNnZTbHhQMW52QmFKbUp6QTArckNkS3BLblVpNHppK05FWk0vcmRxcXR1NjhWKzBwY3ZwaWE5Rm15aXJhaks4VGxkTW5KVWt1bEJXVExGSkFaL1oxZjJPbyttcCtTTXFZM1o5WXNHK21iTWtZcS9GS2tnQU9hQThzOU8wK3BPVTUyRnRPY25seWxSaTIzNmVJOVFMUlZNY3BIajcxNlo1dXRQWVIrUTcxNlo1dXRQWVIrUjdBVzNsZldSNCs5ZW1lYnJUMkVma2ZhM3RMVzJjbmIyMUdpNUxEZE9tbzU2ajdBaWE2cDRUSUhrZW1hYTIyOVB0VzI4dHVqSGo5eDZ3UkZVMDhwSGo3MTZaNXV0UFlSK1E3MTZaNXV0UFlSK1I3QVczbGZXUjQrOWVtZWJyVDJFZmtmYTN0cmEyVWxiVzlLaXBjdkJ3VWM5UjlnUk5kVXhpWkFBRkFBQUFBQUFBQUM1UUZ5Z2FoZC80eXYvcVMrSlZFM2Y4QWk2LytwTDRsVnlIb3h5ZEZreWNsVVNCT1JrZ2dDY2pKWEo5cmExdUxsL3NhYmE4SjhTNnhNNEh5eU1tVnA2SlVhelZyeGo2SXJKOWU4ZFB5bWZaUnozdFBWR1lZWEl5Wm52SFQ4cG4yVVQzanArVXk3S0c5bzZtWVlYSXlacnZIVDhwbDJVTzhkUHltWFpRM3RIVXpEQzVHVE5kNDZmbE11eWgzanArVXo3S0c5bzZtWVlYSXlacnZIVDhwbjJVTzhjUEtaZGxEZTBkVE1NTGtaTTEzamg1VExzb2Q0NGVVeTdLRzlvNm1ZWVhJeVpydkhEeW1YWlE3eDAvS1o5bERlMGRUTU1Ma1pNMTNqcCtVejdLSGVPbjVUTHNvYjJqcVpoaGNqSm11OGNQS1pkbER2SFQ4cG4yVU43UjFNd3d1Umt6WGVPbjVUUHNvcFBRL0F1ZTFFYjJucVpoaU1rNVBWY2FaZDBFNWJpcVJYUERqOXg0OGw0bUo1Sld5VGtxRVNMWkl6eEFBUWZPWE9mUStiSmdiZFlQZXNxRC9BT212Z2ZjOG1rdmUwNjNmOHVQZWVzOCtybkxtQUFxQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSHd2NDc5amNSNllNKzVXcEhlcFRqMHhhOXhNY0pHbXhaZEh6anhjWFFYWEllZzZMcGpKQzVDR0F5UTJHZS9RN1pWN2wxWnJNS1hIanBmTVJNNGpNajE2YnBjZDFWcnFPVytOVTN5TDFtWVNTU1NTU1hJa0FZYXFwcW5NdVlBQ29BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErVmVoUnJ4M2ExTlRYUytWR0MxRFRLbHNuVXBOMUtYUDB4OVpzUU9sRmMwcGljTk5UTFpQZHJGaXJhcHcxSllwVGZJdjRYOGpIcG15S29xak1McnBrTmtJTWtRK1F2WTFPQ3ZhTTg4azBVZklmTnZISHpyakhPTURkZ1ZwUzM2VUpyK0tLWlk4N0RtQUFnZkc0dGJhNVVWYzI5S3VvOG5DUVVzZXJKOGU5ZW1lYmJUMkVma2V3RjRycWlNUkk4ZmV2VFBOdHA3Q1B5SGV2VFBOdHA3Q1B5UFlDZDVYMWtlU09tYWJGcVVkUHRVMDhwcWpIaTl4NndDczFUVnprZkM0dExTNWtwWEZyUnJTaXNKMUthazB2eFBsM3IwenpkYWV3ajhqMkFtSzZvNFJJOGZldlRQTnRwN0NQeUhldlRQTjFwN0NQeVBZQnZLK3NqeTA5TzArbk9OU25ZVzBKeGVWS05HS2Fmb2VEMUFGWnFtcm5JQUFnQUFBQUFBQUFERTdSVTk2MnAxVXYzSllmNC93RDZNc2VYVktmQ2FmWGp6cU84dnc0eTlFNHFoTVBVQUNpQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTgxOVowcnVuaWF4TmZ1elhLajBnbUptSnpBMUN0VG5RclNwVkZpVVhncVpuYUdnblNoY0pjY1h1eTlLNWpDSm0raXJhcHl2QzZCQUxKQ2tpeFJnYkhzL0Rkc043dzV0L2taSTh1bFIzZE9vTCtYSjZqRFh4cWxRQUJSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJFcEtNWEp2Q1N5d05TdjViOTljUy9uWjg0OGhXVXQrcE9maE5zbUo2TVJpTU9peUFJQWhzenV6MUJSb1ZLN1hITjdxOVNNQTJiVnBNZDNUcUM2WTU2MmNyMDRwUkwxZ0F4cUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0dsSk9MNUdzTTAxcmRuS1BRMmpjMXltbVZYbXRVZlRKL0UwMlBpdFNzU2lzU1RRc0ZHV0tNa2JMb1N4cHNQVEtUOTVrRHc2Smp2WlMvSDRzOXhncjhVcUFBS0lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNVFGeWdhZmRmNHV2OEE2a3ZpVlhJTGhxVnpXYTVITi9FaUo2TWNuUlpFa0FBUTJHejE2UmFxNnV2dnJOT245NlhwNkVSTTRqTWoxYVhwbkNSVmU1VDNYeHhoMCtsbWNpbEdLakZKSmNpUklNVlZVMVR4VXlBQW9nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUEZmNmRSdWs1SktuVjVwTG45WjdRVEV6RTVnYWZWcFZLRldWS3JIZGxIbUlOaDFpMFZ4Yk9wQmZ0YWF5dlN1ZEd0cG0yaXJhaks4VGxkRWtJRjBoU1JabEdUQTJmUkhuVGFYb2JYdlBjWTNaNldkUDNlZU0yakpHQ3Z4U3BJQUNpQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBTk9yeDNMaXJIb20xN3lGeUgxMUZZMUM0UzhObnhpZWhIR0hSZEVBZ2tSSTJIWitDallPUzVaVGVUWFdiRHM5TE5nNCtETm5LNzRVVHlaTUFHTlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWZPNW94cjBKMFpja2xqMU0xRERoS1VaY3NYaG01bXE2ckRnOVJycm1jdDdyTkZpZWNMVXZnT1lyRXNhVmtjeFI4NWRsR0lHMWFUVTRUVHFMNkk3ci9EaVBXWW5aeW9wV3RTbG5qaFBQNE15eGhyakZVd3BJQUNpQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJKS1VYRjhqV0NRQUFBQUFBQUFBQUFBQUFBQUFBQklBQWdBQVNBQUlBQUFlSFdzZDdhdjRmRTFtSnNPME05MndVZkRtbDFjWnJpTmxud3IwOG4wWElTVlJZN0pReWpMRldTTm8wV29xbW5VdVBqaG1ML0E5cHJXaVhxdHE3cFZYaWxVNTMvQytrMlV4WEtkbXBTUUFISkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJqZGN1VlJ0SFNUL2FWZUplcm5QWGVYVkswb3VwVmw2b3Jsa3pWTHE0cVhWZVZhbytOOGk1a3VnN1dxTnFjenlURUtSTHhLSXNqWXVzUXh6RldRS3k1R2JqYVIzTFdqSG9oSDRHbnBiMGxIcGFSdWlXRWwwTEJ3di9CV1VnQXlxZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBK0pOOUNOS3ptVGZTemNxejNhTlI5RVcvY2FYRTFXUGl0UytrU3hTSlpjaDNXR1VaZGxHU005czVXVXJlcFFiKzlDVzh2VXpMbW5XZHhPMXVZMW9jZU9KcnBYUWJiYjFxZHhTalZwUzNvdjNlZ3lYYWNUbFNZZlFBSEJBQ2NCSUNBUzBRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR6MzlkVzFuVnF0NGFXSStsdmtQUTNHTVhLVFVZcFpiZk1hdnE5LzlNcktOUEtvdy9kL21mU2RMZEcxS1loNFlsNGxFWFJ1WFdCQ0k1aUJETmcyZXBxTmxLcHp6bS9jYTZ6WnRCL3kySDlVdmljcjNoUlBKa0FDVVkxRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnFGNVQ0RzdyVWx5Um0wdlViZWF0clN4cWRiMDRmdU5Gam5NTFV2TkVrcEVzalNzRldXS3NrWlBaNjRWTzRsUWsrS3J5ZXRHd21rcHVNbEtMYWFlVTBiUHBXb1F1NmU1TnFOZUsrOHZDOUtNMTZqL2RDc3c5NEFNeW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJEYWpGeWs4SkxMSk1QcnQ4b1UzYVVubWN2MzJ2NFYwRnFhWnFuRUVNTFdxY0xYcVZmRGszN3lJbEVXUjZEb3VRRnlFUG5JRldadlpxWDNMaUhRMHpDUG5NcnMxTEZ6V2g0VUUrcGxMa1pvbEU4bXdBQXdxQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYTd0RERkdllUOE9DOXhzUmhkcFlmY29WT2h1SjF0VDd5WTVzTEV1Zk5Ga2JWMGxXV1pWa0QwNlZkZlJidU1wUEZPWDNaK3JwTnJYR3NyalJwRE14bzJwcW1sYlhNc1JYRkNiNXZRempkb3o3MEt6RFBnTGpCa1ZBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQjV0UXVvV2x0S28ydDU4VUk5TEppTXppQjZRQVFBQUFBQUFBWVhiTzhkanN4cUZlTTNDYnA3a0duaHFVbmhZT2x1aWJsY1VSOFp3TTNoOUQ2aGg5RDZqODk5OGRROHZ1dmJTK1k3NDZoNWZkZTJsOHo2RDJGWDUvdC9LMkg2RXcraDlRdytoOVIrZSsrT29lWDNYdHBmTWQ4ZFE4dnV2YlMrWlBzS3J6L2IrVFpmb1RENkgxREQ2SDFINTc3NDZoNWZkZTJsOHgzeDFEeSs2OXRMNWoyRlg1L3QvSmgraE1Qb2ZVUjZ6OCtMVU5ROHZ1dmJTK1oyRHVleHJMWmExcTE2dFNyVXJTblUzcWtuSjRid3VOK293NnpzMmRMYjI1cXp4eHlSaHNZQVBKUUFBQUFBTUh0TFBqdDZYcmwrUmhVWkRYcDcrb3lqelFpbCtaNEViN2NZb2hlT1N5TEZVV0xMWVFWWllna3crYlJrdE8xYXBiSlVxNmRXa3VKUG5qOHpIdEZXaUpwaXFNU2pEYnJlK3RMaFpwVjQ1OEdUdytwbnBYSHljWm83aUU1cmtsSmVwczRUWTZTcnN0NHd4aG1rYjFUdzU5cGpmcWVNbjJtUnVQVTJXNzRZd3pTTitwNHlmYVkzNm5qSjlwamNlcHN0M3d4ZzBqZnFlTW4ybU4rcDR5ZmFZM0hxYkxkOE1Ha2I5VHhrKzB4dlZQRG4ybU54Nm15M2NHa2IxVHc1OXBqZXFlSFB0TWJqMU5sdTROSTNxbmh6N1RHL1U4T2ZhWTNIcWJMZDhNWVpwRy9VOFpQdE1iOVR4aysweHVQVTJXNzRZd3pTTitwNHlmYVkzNm5qSjlwamNlcHN0M3dEU04rcDR5ZmFZM3FuaHk3VEc0OVRaYmxWdUtGRk4xYTBJSmRNakdYZXVVb3B4dFlPcEx3cExDWHpOZXdXU0wwMmFZNXBpbGV2V3EzRlIxSzAzT1Q2ZVlxa0VpeVIyU0pGa1Fpd1RoREtzc3lyRUQ2V1VkKzhvUjZha2ZpYmdhcG84ZDdVNkM2Sk45U1p0Wmx2ODRVa0FCblZBQUFNTHIyMCtpNkg5eSt1djIyTXFoU1cvUDhBRmMzNG1JN291MUU5Q3NvV2xsSmZUN3BQZGx5OEZEazN2WHpJNHRVbk9wT1ZTcE9VNXplWlNrOHR2cGJOdGpUYnlOcXJrT3J6N3FlbUtlSWFWZHlqNFRuRlBxTTFvZTNXZ2FyVmpRVmFkblhseVF1VW9wdm9VdVE0V09JMXpwTGN4d1MvVG9PZmR5amFLdmYyOVhSNzJvNmxhMmlwMFp5ZVhLbnlPTDlYRitET2dubDNLSnQxVFRLQUhOdHV0cGRaMDdhR3JaMkY5S2pSaFNnOTFSaStOckw1VWEvOWN0cHZPayt4SDVIcTJ1eUw5MmlLNG1NVHgrUDRUaDJrSEZ2cmx0TDUwbjdPUHlIMXkybDg2VDluSDVIVDJKcVBOSDMvQUFZZHBCeGI2NWJTK2RKOWlQeUgxeTJsODZUN0Vma1BZbW84MGZmOEdIYVFjVyt1VzB2blNmWWo4aDljdHBmT2sreEg1RDJKcVBOSDMvQmgya0hGdnJsdEw1MG4ySS9JNmJzVGVYZC9zNWJYZDlXZGF2VWxQTTJrdUpTYVhKNmpMcXV6cnVsbzI2NWpHY2NQL0RET0FBOHhBQUFQamV2Rm5YZlJUbDhEVG84aHR1cVBkMDY1ZjhqUnFjVFhZNVN2U3RFc3VRckVzanVzTXEwWEtnd28wZmF6dTY5blVjcU11Si92UmZJejV0RmNERVR3bEdHeVdtc1dsWkpWSHdNK2lYSjFtUWhPRTFtRTR5WG9lVFNjQkpya2JYcU9FMkkrRW8yVzg0ZlFPUDBtajc5VHc1OXBqZnFlTW4ybVYzSHFqWmJ4eGtjWnBHL1U4T2ZhWTM2bmh6N1RHNDlUWmJ2aGpETkkzNm5qSjlwamZxZU1uMm1OeDZteTNmREp3elI5K3A0eWZhWTM2bmpKOXBqY2Vwc3Q0d3hoOUJvKy9VOFpQdE1iOVR4aysweHVQVTJXNzRmUU1Qb05JMzZuako5cGpmcWVNbjJtTng2bXkzZkQ2Q2NQb05IMzZuako5cGpmcWVNbjJtTng2bXkzakhvWXg2R2FQdjFQR1Q3VEcvVThaUHRNYmoxTmx2T0NNR2o3OVR4aysweHYxUERuMm1OeDZteTNlVFVWbVRTWHBlRHczT3EyZERLNFRoWkwrR254KzgxVjd6NVczNjNrSkZvc1I4Wk5sN2IvQUZHdmVOeGYzS1hOQmZuMG5qU0pTSlNPOFJFUmlGc0pTTEloRW9Kd2txeXhWa0dGR2JMb0grV3cvcWw4VFdtYk5zLy9BSlpIK3VYeE9WN3dxeXlCS0lKUmpVU1JnQUNBU01BUUNjRUFBU0FDV1J1dm9mVVlyYXFVNDdONm5PbktVSnh0NU5TaThOUDFuRmUrR29lWDNYdHBmTTlUUmRuenE2SnFpckdFeER2KzYvQmZVU292b2ZVZm4vdmhxSGw5ejdhWHpIZkRVUEw3bjIwdm1iL1lkWG4rMzhtSDZBM1gwUHFHNitoOVIrZisrR29lWDNQdHBmTWQ4TlE4dnVmYlMrWTloMWVmN2Z5WWZvRGRmUStvamRsMFBxT0FkOE5ROHZ1ZmJTK1pIZkRVUEw3bjIwdm1QWWRYbiszOG1IZjhQb0JxL2MxclZhK3pFWlZxczZzMVhxTGVuSnlmS3VkbTBIaFhyVzZ1Vlc1K0VvQUFjUUFBQTFuWGxqVXArbUVYN2paa2E1dEVzYWduMDAxK1oycytKTkxHb3VpaUxvMk9nUXl4QkJoODJoRnloSlRoSnhrbmxOY3FMTkVZSlF6RmxyalNVTHlMZi9VaXZpakxVTHUycnJOS3ZDWG96aDlScDdSWGRPVlZtbWVTTU41NWVRWWZRYVFwVFhKT1MvRmpmcWVNbjJtYzl4Nm8yVzc0WXd6U04rcDR5ZmFZMzZuako5cGpjZXBzdDN3eGhta2I5VHhrKzB4djFQR1Q3VEc0OVRaYnZoakROSTM2bmpKOXBqZnFlTW4ybU54Nm15M2ZENkJoOUJwRy9VOE9mYVkzcW5oejdURzQ5VFpidmhqRE5JMzZuaHo3VEcvVThaUHRNYmoxTmx1NHd6U042cDRjKzB4djFQRG4ybU54Nm15M2ZER0gwR2tiOVR4aysweHYxUEdUN1RHNDlUWmJ4aDlBdytnMGZlcWVIUHRNYjFUdzU5cGpjZXBzdDN3ejQxcnEzb0p1cldoSDBaNCtvMDdlbS80NWRwa0pFeFk2eWJMTlgydHVTZE96VGovMUpMai9BQVJodU50dHR0dDViZk9FaXlSM3BwaW1PQzBRSkZrRWlVU25DU0dTUXlEQ2pQZm9FdDNVb3J3b1NSNEdlalM1N21vMjc2WjQ2eUtvOTJVUzIwQUhudVlBQUFCcW5kSDE2cG9taDd0clBjdkx1VHAwNUxsZ3Y0cEwwOHk5WmVpbWE2b3BnZW5hRGJIUTlFcU9oYzE1VnJsY3RDZ3Q2VWZXK1JmaWE4dTZucHUvaDZUZHFQVHdrTTlSeWFUY3BPVW01U2J5MjNsdGtIcVU2UzNFY2VLWGZOQjJ4MEhXcWlvMjkwNk53K1NqY0xjay9WelA4RFlUOHhKNGVWeW82djNNZHJhMTdOYUhxZFYxSzBZdDI5YVR6S2FYTEdUNTJseU16M3RMc1J0VThoMFlBNTMzUWRkMXZTZGFwMGJLK2xSb1ZLRVpxS2hGOGVXbnlyMEhMVGFhclUzTjNUT0o5VU9pQTRyOWM5cGZPayt4SDVFZlhQYVh6cFBzUitSNmZzVFVlYVB2K0U0ZHJCeFQ2NTdTK2RKOWlQeUgxejJsODZUOW5INUQySnFQTkgzL0FBWWRyQnhUNjU3UytkWit6ajhoOWM5cGZPcy9aeCtSUHNUVWVhUHYrRER0WU9LZlhQYVh6cFAyY2ZrUHJudEw1MG43T1B5SHNUVWVhUHYrRER0WU5iMkExUzYxYlFYWHZhM0RYRUswb1NtMGxsY1RYSjZHYkllTmR0VldyazI2dWNJQUFjZ01kcjBON1RwUHdKSi9rWkU4K29RNFN4dUlkTUhqNGxxSnhWQkRVVVhSU0pkSG9PaVNDVUNFNFVhS3RIMHdWd1NQWFlhcGNXbUlQOXJTWDhNdWIxTXpkdHF0blg0dUU0S1hnMU9MM21zTkZkMDUxV3FhbGNOM2pLTWxtTWxKZWg1Sk5IV1Z5TnIxTW5lcWVIUHRNNWJqMVJzdDNHRFNONnA0YysweHYxUERuMm1OeDZteTNjWU5JMzZuaHo3VEcvVThPZmFZM0hxYkxkOEEwamZxZU1uMm1OK3A0YysweHVQVTJXN2cwamVxZUhQdE1iMVR3NTlwamNlcHN0M0JwRzlVOE9mYVkzcW5oejdUSGQvVTJXN2cwamVxZUhQdE1iMVR3NTlwanUvcWJMZDhNWVpwRzlVOE9mYVkzcW5oejdUSGQvVTJXNzRZTkkzcW5oejdURzlVOE9mYVk3djZteTNjaVVveFdaU2pGZExlRFNkNnA0YysweUhsOHJiOVk3djZteTJhNzFpMW9wcW0rR24wUjVPc3dGMWMxcnFxNmxhV1h6SmNpWG9QZ2tXU08xRnVtamttSWJzQUR6MUFBQUFBQU5JN3JOendlaDIxcW54MTdqTFhvaW0vaTBidWN0N3JkMHFtcTJkb24vY1VYT1M5TW44a2VuMlhiMjlYVDZjVXh6YUlBRDd0Y0F3U0JHQ1FBZzlYS2QvMFMyK2g2UFpXdU1jRlFoRit2SEdjTTBXMmQzcTlsYXBaNFd2Q0w5V2VNL1FITzhjaDh4MjVYNEtQbktzZ0FQbVVBQUFBRmFrOXluT2IvaGkyU05TdjU4SmZYRSttYitSOFVWVGNtNVBsYnlXUjZNUmlNT3E2SktwazVBa2pBeU1nUVJnc1FCWEJHQzVCSXJnWUxBQ3VCZ3NBSzRHQ3dBcmdZTEFDdUJnc0FLNEdDd0FyZ1lMQUN1QmdzQUs0R0N3QWpBU0ovQWtnRWlVQmtDUVJrWkFNb3kyU3JBeUd6OGM2aW40TUpNMlV3R3pVYzE2OCtpQ1h2L1F6NWp2ZUp6bm1BQTRvQUFCd251azE2bGZiTFVWTnRxazQwb3JvU2l2bXpXVGYrNjNvdFczMVdPdFU0dDI5MmxHbzEvQlVTeHgrdEwzTTBBOTJ4TVRiakNRakJJT3czSHVUUXFTMnZoS0NlN0czcU9iOUdFdmlkck5MN21XemRYUnRQcVgxN1QzTHk4Uys0K1duVDVVbjZYeXY4RGRFZUxxYTRydVRNSWNXMitxY0p0YnFMem5kbEdQVkZHdm1hMmx0N3k0MmcxS3RHMHJ1TXJpZUdxVW1tczQ2UFFZMzZEZStSM0hzcGZJKzYwODAwMmFLYzhvajlGb2VjSG8rZzN2a2R4N0tYeUgwRzk4anVQWlMrUjIyNmVxWG5CNlBvTjc1SGNleWw4aDlCdmZJN2oyVXZrVHQwOVI1d2VqNkRlK1IzSHNwZklmUXIzeU80OWxMNURicDZqem83WnNMRGc5a3ROWFRUY3V1VFp4djZEZStSM0hzcGZJN2RzeFNsUjJkMHlsS0xqS050REthdzA4WlBCN2JyaWJOTVJQeC9hVVN5WUFQazFRQUFlSFdualRLL3B3dmVhdWpaZGZlTk5tdW1jVjd6V29teXo0VjZWMFdSUkZzblpaSkF5TWdRUmd0a2dDdUJnc1FCWEF3V0JJcmdZTEFDdUJnc0FLNEdDd0FyZ1lMQUN1QmdzQUs0R0N3QXJnWUxBQ3VCZ3NBSzRKd1NTUUlTSlFKeUFSSkdSa0NTckp5VkFxelp0bnY4dGovQUZ5K0pyTE5tMmQveTFmMXkrSnh2ZUZXV1FKQU1hZ0FFQktBSkFGY0ZpQUF3RVNCaXRwNDUyYzFSZjhBeHAvQTRTdVE3MXRESGUwSFVsMDIxVC8xWndWY2k5UjlYMkgvQUU2L21tQUFIMEN3QUFBQUE2ejNLNVoyYnFSOEc1bjhFYmVhWDNKNVowSzdqMFhUL3dEVkc2SHdXdmpHcXIrYWdBRENBQktBSTE3YVZmMnlrK21uK2JOaFJnTnBsaXZRZjhyWHZPMW54cGpteENMb3BFc21iSFJZRVpHUUdDTUU1QUZjRVlMRDhBS1lHQ3dKRmNEQllBVndNRmdCWEF3V0FGY0RCWUFWd01GZ0JYQXdXQUZjREJZQVZ3TUZnQlhCT0NTUUlTSlNCSkFKRWtaR1FKSVl5UTJCREZDVzVYcFQ4R2FmdkRQbTNoWkEzam5CV2xMZXBRbDB4VDl4WTgxeUFBQU9ZZDJxbFV6cE5iLzdhVlNINDhUK0IwOHcyMTJpUTEvUTY5aGxScmNVNk0zeVJtdVQ4SHlQMW5helhGRnlLcEg1N0I5NzYwdUxHN3EybDNTbFJyMHBiczRTNVV6NEh1ODBoNnRLdWFsbnFkcGRVbTFPaldoSk5laG5sTTVzVm8xYld0ZnRyZUVjMGFVbFZyeTVvd1R6NytRclZNUlRNeVAwRHk4WnpqdXUwY1ZOTXVlbU5TbSt0TTZQem1tZDFPMHFYR2lXMDZWS2RTZEs0WEZDTGJ3NHRjaTlTUFA3TXIyTlZSUC9BSGtRNU1UZzlIMEc5OGp1UFpTK1EraFh2a2R4N0tYeVB1ZHVucXU4K0JnOUgwSzk4anVQWlMrUStnM3ZrZHg3S1h5RzNUMUhtd0QwL1FiM3lPNDlsTDVENkRlK1IzSHNwZkliZFBWR1htQjZmb045NUZjZXlsOGlQb045NUZjZXlsOGh0MDlVdWg5eUd2bTExSzJ6KzdVaFVTOWFhL0k2Q2N1N2xrYnEyMXk0cFZyZXRUaFd0M3h6cHRMTVduei9BSW5VVDRudFdtSTFWVXg4Y2ZvcElBRHkwQkRTa25GOGpXQ1FCcFVvN2s1UWY4TGE5NU1UNzZuRGc5UnVJL3o1WDQ4WjU0bnBSeGpMckM2NUNTcVpPUUdDQ2NnQ3VDTUZnQlRBd1dCSXJnWUxBQ3VCZ3NBSzRHQ3dBcmdZTEFDdUJnc0FLNEdDd0FyZ1lMQUN1QmdzQUs0SndTQUlTSlNKUUlHNWdBOHh5QWM2N3JHdmFocGRiVHJYVGIycmF6bkdkU282VHcyc3BKUDNtZ2ZXN2FmejVlZHMyVzlKVmNwMm9rZm9RSDU3K3QyMC9ueTg3WjBidVQzK3JhbmI2amQ2bGYxN3FFSlFwMDFWbG5EeGx2NEVYTkxWYnAycGtiOGNSMjd1ZnBXMWVvelR6R25OVW8rcUt4OGNuYktsU05Lbk9yUDkybkZ5ZnFTeWZucTZyTzV1cTl4SjVkV3BLYi9GdG5zZGhXODNLNitrWSt2L0FJbUh5d0FENnBZQUFBQUFiTjNPTGI2UnRYYXl4bU5DTXFyL0FBV0Y3MmRtT1o5eUszM3J2VWJ0cjl5bkNtbjYzbC9BNllmRjlzVjdXcW1Pa1JINy91cklBRHgwQUFBSGsxYWZCNmJjUzUzSGRYNDhSNnpGYlIxTjJ4alQ4T2E5eGVpTTFRbUd1UlBvdVFwSGtMSTlCMFdYSUNNazVJQURKR1FKeVJraklqdlNlSXhjbjBKWkFrSDNoWTNzMW1OdFV4NlZndjN0di9KcGRhSTJxZXFNdktEMWQ3Yi9BTW1sMW9kN2IveWFYV2h0VTlUTHlnOVhlMi84bWwxb2Q3Yi9BTW1sMW9iVlBVeThvUFYzdHY4QXlhWFdoM3R2L0pwZGFHMVQxTXZLRDFkN2IveWFYV2gzdHY4QXlhWFdodFU5VEx5ZzlYZTIvd0RKcGRhSGUyLzhtbDFvYlZQVXk4b1BWM3R2L0pwZGFIZTIvd0RKcGRhRzFUMU12S0QxZDdiL0FNbWwxb2Q3Yi95YVhXaHRVOVRMeWc5WGUyLzhtbDFvZDdiL0FNbWwxb2JWUFV5OG9QVjN0djhBeWVYV2lsU3l2S2F6SzJxWTZVc2phcDZtWHdKeVZ5MDhOWVl5U2xZRUprNUFBWkdRSUtzc1VaSXp1ek1mMlZ4UHBrbDdqTkdMMmNqaXdsTHdxai9JeWhndWVPWE9lWUFEbWdBQUh5dXJhaGQyOVMydXFNSzFHb3QyZE9heXBJNTVxL2N2b1ZLa3FtazZpNkVXOHFqY1Iza3ZWSmNmV2RJSE5ubU90RjJ1MzRaSEphUGN0MVJ6U3JhbmFRaHp1TVpTZlZoRzRiTmJENlJvbFNOekxldnJ1UDd0V3NsaUQvbGp6ZXZqTnFYSHljWUwxNmk1WEdKa0FDVVp3ekxwWTNuMHZySkl3QTNuMHZyR1plRStzWVpBRTVmaFByR1gwdnJJd01BVGw5TDZ4dlM4SjlaR0FCT1gwdnJKSVNKQWhrRWtBQUFCaTlvM2l3aXVtb3Z6TmNpYkJ0TThXdEZkTlQ4algwYmJQZ1hwWEpJUk9UcXNBWkdRQXlSa2pJRTVCRWQ2VDNZeGNuMEpaUFRDd3Zack1iYXBqMHJBekVHWG5CNnU5dC81TkxyUTcyMy9BSk5MclJHMVQxUmw1UWVydmJmK1RTNjBPOXQvNU5MclEycWVwbDVRZXJ2YmYrVFM2ME85dC81TkxyUTJxZXBsNVFlcnZicUhrMHV0RHZicUhrMHV0RGFwNm1YbEI2dTl0LzVOTHJRNzIzL2swdXREYXA2bVhsQjZ1OXQvNU5MclE3MjZoNU5MclEycWVwbDVRZXJ2YmY4QWswdXREdmJmK1RTNjBOcW5xWmVVSHE3MjMvazB1dER2YmY4QWswdXREYXA2bVhsQjZ1OXQvd0NUUzYwTzl0LzVOTHJRMnFlcGw1UmsrODdLOHByTTdhb2w2Rms4K1duaHJEWE15WW1KNUp5dGtGY2twZ1NCa1pBRUU1SUVDak5tMmQveTFmMXlOWmZPYk5zNS9scS9ya2NyM2hWcVpMbkpBUmlVUUNjREFBQWtBUWMwN3FtczZ0cG1xMlZQVDlRcjJ0T3BidVVvMDVZVGU4MWswbjYyN1MrZTd6dG11alMxVjB4VkVwdy9RSkorZlZ0WnRONTd2TzJkTTdsZXAzK3A2VGUxTlF1NnQxVXAzQ2pHVlI1YVc2dUlpNXBxcmRPMU1tRzFheXQ3UjcrUFRiMVAvVm41L2p5TDFINkQxRmIybjNjZW1qUC9BTldmbnhjaTlSNzNZYys3WEh5L2NoSUFQbzFnQUFBQUIwN3VTU3pwV29SNkxpTC9BT0p2YU5BN2tVdjdKcWNPaXBUZnVaMEJId3ZhVVkxZGYvZmdySnpGUzVYQjV5RUVvSkVnRVlIYWhjZHMvd0NwR2ZNSHRRdjJWdkxvazE3anJhOGNKam13VVN5S3Bsa2JuUklHUmtnQU1rWkFuSkJHUkhlazhSaTIraExJRWc5RUxHOW1zeHRxbVBTc0Z1OXQvd0NUUzYwUnRVOVVaZVVIcTcyMy9rMHV0RHZiZitUUzYwTnFucVplVUhxNzIzL2swdXREdmJmK1RTNjBOcW5xWmVVSHE3MjMvazB1dER2YmYrVFM2ME5xbnFaZVVIcTcyMy9rMHV0RHZiZitUUzYwTnFucVplVUhxNzIzL2swdXREdmJmK1RTNjBOcW5xWmVVSHE3MjMvazB1dER2YmYrVFM2ME5xbnFaZVVIcTcyMy9rMHV0RHZiZitUUzYwTnFucVplVUhxNzIzL2swdXREdmJmK1RTNjBOcW5xWmVVSHE3MjMvazB1dEZKMlY1VFdaVzFSTDBMSTJxZXBsOE1rNUt0dFBEV0d1WmpKS1ZnUW1Ua0FPWVpJeUE1ajV5NUM1VjhoSTI3VFo3OWhieS9rU1BTWS9RWmIybVUvNVhKZTh5QjUxVVlxbHlBQVZBQUFZYmFMWnZTdGZwS045UXhWaXNRcjArS2NmeDUxNkdhRmU5eXk3ak51eTFXalVoekt0VGNaTHF5anF3dytnN1VYN2xFWXBrY3JzTzVaY3VvbnFHcTBvVStlTkNtM0ovaStKSFE5QzBYVDlEczFhYWZRVk9MNDV6ZkhLbyttVDV6SXJqNU9QMUFWM3E3bkNxUUM0dVJnSEVUbDlMNnhsOUw2eUFCT1gwdnJHOUxwZldRQUozcGRMNnhsOUw2eUFCT1gwdnJHWDB2cklBRTVmU3lBQUFBQUFBRFd0b0lidW9iL0FEVGduK1JqNG1aMm1oL2g2bnJqK1poVXpmYm5ORUx4eVhRSVJPUzZ3QmtaQURKR1NNZ1NDSTcwbmlNWEo5Q1dUMHdzYjJhekcycVk5S3dNeEJsNXdlcnZiZjhBazB1dER2YmYrVFM2MFJ0VTlVWmVVSHE3MjMvazB1dER2YmYrVFM2ME5xbnFaZVVIcTcyMy9rMHV0RHZiZitUUzYwTnFucVplVUhxNzIzL2swdXREdmJmK1RTNjBOcW5xWmVVSHE3MjMvazB1dER2YmYrVFM2ME5xbnFaZVVIcTcyMy9rMHV0RHZiZitUUzYwTnFucVplVUhxNzIzL2swdXREdmJmK1RTNjBOcW5xWmVVSHE3MjMvazB1dER2YmYrVFM2ME5xbnFaZVVIcTcyMy9rMHV0RHZiZitUUzYwTnFucVplVVpQdk96dktheksycUpkT01ubnkwOE5ZZlF5WW1KNUp5M1VBY1M0M3hKY3A1ams0YjNVN3Y2VHRoYzAwOHh0b1FvcjBQR1g3MmFpZTdYTHQzMnMzOTQzbmhyaWMxNnQ1NDl4NFQ2TzNUczBSQ1E3bDNLN1Q2TnNkYlRheEs1cVRyUDFONFh1UnczamZFdU44eCtrdEJ0UG9HaVdGbGpEb1c4SVAxNDQvZVl0YlZpaUtSNU5zcm42SnN2cVZaUEV1QmNJK3VYM2Z6T0dIV082dGRjRm9GRzFUNDdpdXVxS2IrUnljOXpzVzNzNmVhdXNwZ0FCN2FRQUFBQUIxbnVWVzNCYlBWYmhyRHVMaHRlcUtTK1p1Wmg5anJiNkpzeHB0RnJENEZUZnJseC9tWmcvUGRYWHZOUlhWNnlvQUF5Z0FBQmdOcHA1cTBLZlJGeTkvNkdmTlcxNnB2NmxOWi9jaW9uYXpHYWt3OEtMSWhFbzJMcEFJWURJaXBTa294VGxKOFNTNVdRc3RwSlpiNGtsem16YVRwOGJXbXFsUkoxNUxqZmcraEZLNjRwamlpWnc4ZGpvdVVwM2NtdjhBcHhmeFptS05HbFJqdTBxY1lMK1ZIMEJqcXJtcm1ya0FCUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ0M05yYjNNWEd0VFV2NXVScjhUWHRTMDJwYVBoSU56b3YrTG5qNnpaeUp4ak9Fb1RTbEdTdzArYzZVWEpwVEU0YVVpeVB0cU5zN1M3blM0OTNsZytsSHdSdWljeGxkSUFBaGxYeUZpa254RWphdERqdTZaUjlPWDd6M0huMCtPNVkyOGVpbWowSG5WVG1aY3dBRlFBTVB0ZnFrdEgyZHZiK204Vm9RM2FUL25rOEovaHkvZ1dwaWFweEExM2JmYnFubzlXZW5hWEdGeGZSNHFrNWNjS0w2TWM4dlJ6SEx0UzF2VjlTcU9wZTZqY1ZtLzRkOXFLOVNYRWp3VG5LYzVUbkp6bkp0eWszbHR2bFpVOXExWm90eHc1cGVtMnY3NjFxS3BiWGx4Um12NG9WWkw4em91eEczOWFyYzA5TjEyY1pLbzkybmQ0dzk3bVUrYmo2ZXM1aUMxeTFUY2pFd1AwNGZHN3VhVm5hMXJxdkp4cFVZT2MybG5DUmo5a2J5cHFHek9tM2xWdDFLbENPKzN6dGNUZnVQbHR0VTRMWlRVNVo1YU82dnhhUjQ5dTN0WFl0ejhaeDkwUEg5ZmRuUEtLL3NKRDYrN09lVVYvWVNPUEErcjlqYWJyUDEvaGJEc1AxOTJjOG9yK3drUHI1czU1Ulg5aEk0OEI3RjAzV2ZyL0JoMkg2K2JPZVVWL1lTSit2bXpmbEZmMkVqam9Ic1hUZForc2ZndzdEOWZObS9LSy9zSkQ2KzdOK1UxL1lTT1BBZXhkTjFuNngrRERzdHZ0dnMvY1Y2ZENsWHJ1cFZrb1JYQU5aYmVFYkkrWEhRY0kyWnA4THRGcGtPbTVoOGNuZG55czhQdExTVzlMWFRUYnp4ajRva0FCNVNBRTRDUUdFMm9mM0xhUHBrekJJek8xRC9hVzhmNVpQM21HaWJyWGdoZU9TeUpJUkowU0VFbFdBNWVKR1owL1JYTktwZDVpdWFtdVg4VDY2RFlKUVYzV2ptVC91MCtaZEptek5jdTQ0VXF6TDVVS0ZHaEhkcFU0d1hvUjlRRE9xQUFnQUFBQUFBQUFBQUJBSkFBQUFDQ1FCQklBQStGemFXOXpGcXRTakwwOGpYNG4zQk1UamtOWTFMU3FscW5Wb3QxS0s1ZW1KalV6ZUdrMWg4NXJHdFdLdGF5cVVsaWpVNUY0TDZEVmJ1YlhDVm9sajBTVlJaSGRZSVpKREFxK1JtemJPZjViL0FOOGpXWHlHemJOLzViLy9BTkpISzk0VVR5WlFBR0pRQUFBQUFjbTdzNi8rcmFhK20za3YrWnp3NkwzYUYvOEFVTkxmL1JuL0FPeU9kSHQ2YitsQzBCMWZ1THYvQU9sNm5Ib3VJZjhBcWNvT3FkeFovd0JpMWFQUlZwdi9BSXNycXY2VWt1aDNTM3JXdEhwcHlYdVorZWVZL1JGUlpwelhURi9BL1BNbGlVbDBObTNzS2VGei9IN29oVUFIMHF3Q1VnQkFKSUE2TDNJWmY1cEgvVGYvQUxIUmptbmNpbC9hOVRoMDBxYi9BT1RPbG54SGFzWTFkZjhBajlJVmtBQjVhQUFBREQ3VEwreDAzMFZQeVptREZiU0xPbnA5RlJmbWRMZmloTU5hUlpGWThoWkc1ZElBQWdqSU1ub1ZrcmlzNjFSWnAwbnhKL3hNaXFkbU15TGFacEU2OFZWdU13cHZranp5K1JuNkZ2UnQ0N3RHbkdDOUM0ejZndzFWelZ6VXlBQW9oQkJZakFGUVd3TUFWQmJCR0FJQk9DQUFKd01BUUFBQUFBQUFBQUFQbGNXMUM0aTQxcVVaK25ISDFtRHY5SG5TVHFXemRTQzVZdjhBZVh6TmhCMHBybW5rbUp3MGxFb3pXdDZldDJWM1FqaHJqcVJYeE1JalpSVkZVWmhhT0t3Q0JaS0dWZklXWlY4akpHdzdOU3paVkkrRFUrS01zWUxaZVhIYzAvNlpmRXpwZ3VSaXVWSjVnQU9hQUFBYXp0dnRWUjJjdEl4cHdqV3ZxNmZCVW55SmVGTDBmRTQ1cXUwR3M2clZsVXZkUXJ6VC9nakp4Z3ZWRmNSNys2RGRWTHJhL1VuVWJhcFZlQ2duelJpc2YvbnJOZFBaMDltbWltSitNcGZlM3ZieTJtcWx2ZDE2TTF5U2hVa244VGQ5bCs2TmZXdFdGdnJmOXJ0WHhPdWwrMWg2WDRTOTVvSU8xZHVpdU1WUVAweGJWNk4xYjA3aTNxeHEwYWtWS0U0UEtrdWsraTQzZzVmM0h0Wm53bHpvZGFibERkZGVobC91NC9lWHZUNnpxSEllTGR0emJxbWxEV2F1M0d6MUtyT2xVcjExT25KeGt1QWx5cDRaVDYrYk4rVTEvWVNPYTdXMEZiN1M2blJTd2xYazE2bngvbVljK3B0OWthYXVpS3N6eGpySDRXdzdGOWZObS9LYS9zSkQ2K2JOK1UxL1lTT09nNmV4ZE4xbjZ4K0REc1gxODJiOHByK3drUHI1czM1VFg5aEk0NkI3RjAzV2ZySDRObDJMNitiTitVMS9ZU0gxODJiOHByK3drY2RBOWk2YnJQMWo4R0hZdnI1czM1VFg5aEkyUzB1S1YxYTBycWhMZXBWb0tjRzFqS2ZJZm5rN1pzSFgra2JKNmZMT1hDRHB2L3RrMGVYMmwyZmIwMXVLN2VlZU9LSmhud0FlQ2dBQUdNMmhodmFmdmVCTlA4alcwYmJxY09FMCs0ano3amEvRGpOUmkrSTJXWjkzQzFLNkpJUkoyV0FDQUlNbHBtbHp1a3F0WnVGSG14eXlQUHBsdDlMdTQwNWZ1TDcwL1ViWEZLS1VZckNYRWt1WTRYYTluaENzeStkdlFvMjhOMmpUakJlamxmNG4xQU12TlVBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCOHE5dlFyeHhXcFJuNld1UHJQcUJHWUF4ZTFGMzlCMmMxTzd6aDA3ZWU2L1MxaGU5bVVOTTdyVjM5SDJTblFVc1N1cThLZU9sTDd6K0NMMnFkcXVJSEVrQUQ2TlprdG1yVDZkdEJwMXBqS3EzRUUxNk01ZnVSK2pueXM0ajNKclA2VHRkVHJOWmphMHAxZnh4dXI0bmJqeDliVm11STZJY3Y3cmR6djZuWTJpZkZTb3ViWHBrL2tqUXp0MnI3S2FQcTE3Szl2YWRhVmFVVkhNYXJpc0xrNGp4L1VIWnp4Tng3ZG50YVR0VFRXTEZOdWM1ajAva3k0NkRzUDFCMmM4VGNlM1krb096bmliajI3Tlh0clRkSituOHB5NDhEc1AxQjJjOFRjZTNZK29Pem5pYmoyN0h0clRkSituOG1YSGk5Q2xLdFdwMFk4Y3FrbEJmaThIWHZxRHM1NG00OXV6N1dleE9nV2wxUnVxTkd0d2xHYW5IZXJOcks1T0lpZTJ0UGpoRTUrWDhtV3hVYWFvMFlVWS91MDRxSy9CWUxnSHg2b0FDQUFBQkdtWGsrRnZLOVR3cWorSnVGYWZCMGFsUi93eGI5eHBNZU41L0UwMkk1eXRTdWl5NUNxTEdwWUtzbGxYeUFaYlo2MlZXdks1bXZ1MHVLUDlSc0o0ZEVwcW5wdExwbjk5L2llNHdYS3MxU3BJQURtZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWWJhV21uUW8xdWVNdDM4SC9BUG93U05oMmplTENLNmFpK0ROZGliYlBnWGprdWdRaVRzbEQ1eWt1UGlMTW1oSGZ1S2NPbWFYdkEzT25IZHB4ajBSUzl4WWM3QjVqbUFBQWFuM1VxRlN0c2RkT0N6d1ZTblVsNmxMRCtKdHA4N21oUnViZXJiMTRLcFNxeGNKd2ZJMCtWRjZLdG1xS3VnL013Tm8ydjJQMURRcm1wVnBVcWx6cHplYWRlS3p1cm9samthNmVSbXJudlUxUlhHYVVoTUl5bk5RaEZ5bkpwUlM1M3pJK2x0YjE3cXRHaGJVYWxlcko0VUtjWEp2OEVkVTJBMkhucDlhbnEyc3dYMHFQSFJ0dVhnMzRVdlQwTG1LWGJ0TnVNeU4wMmNzSHBtZzJHbnkvZW9VWXhsL1Z5djN0bUg3cFZUZzlsSzhVL3dDOHEwNC84cy9rYk9ZcmFiUlk2N3B5c2FseE8zaXFpcWIwWXFUZU04WEg2enk5TmNwcHYwMTE4b25LSERBZEsrelcxODcxL1l4K1pQMmFXM25ldDdHUHpQcmZhMms4MzJuOExaYzBCMHY3TkxienZXOWpINWo3TkxienZXOWpINWoycnBQTjlwL0JselFIUy9zMXRmTzlmMk1mbVI5bXRyNTNyZXhqOHg3VjBubSswL2d5NXFEcFgyYTJ2bmV0N0dQekgyYTJ2bmV2N0dQekh0YlNlYjdUK0RMVWRob2NKdFpwaTZLdTkxSnM3WWFqb0d3OXZwR3EwZFJocUZXdktsbkVKVTBrOHBybHo2VGIwajUzdFBVMjlSZGlxM09ZaVAzbEVvSndTa0R5a0NRSkFHdGJUU3plVW85RlA4ekZSTWp0Rzg2ampvcHgvTXg2Tjl2d1F2SEpaQWhFblJLRDYyTkQ2VGQwcUhOSi9lOVhPZkZtVDJiaXBhaE9UL2hwdkhXaXRVNHBtVU5sU1NTU1dFdUpJa0E4NVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR5NmxRVnhZMXFmUHU1ajYxeG5xSTVzRXhPSnlOR2krSXNpSmNWU2E2SlA0a285SjBTUXlTR0JWOGhzdXpmK1cvL3dEU1JyTDVEWnRtL3dETG4vcVNPTjd3b25reW9BTVNnQUFBQUE1WDNhVi9iTktmL1NxTC9ram01MHJ1MHI5dnBML2txcjN4T2FudDZiK2xDMEIxSHVLdjlqcTYvbnBQM1NPWEhUZTRxK1BWNC82VC93RFlqVmYwcEpkT2F5bWo4ODFWaXRVWFJPWHhaK2h6VnBiQjdQU2xLVG8zR1pOdC90bVY3TTFsdlM3Vzh6eHh5L3lpSmNlQjJENmhiTytKdVBic2ZVTFozeE54N2RucysyZE4wbjZmeW5MajRPd2ZVTFozeE54N2RrZlVMWjN4Tng3ZGoyenB1ay9UK1RMa0FPdi9BRkMyZDhUY2UzWStvV3p2aWJqMnpIdG5UZEorbjhtV3RkeVNXTlYxQ1BUYnhmVkk2Z1lYUk5tdEwwVzRxWEZoVHF4blVodVMzNmprc1p5Wm8rYzExK2pVWDV1VWNwd3FBQXdnQUFCamRvVm5USnZvbEg0bVNQQnJxenBkZjBZZnZMMGVLRXcxT1BJWFJTSmRIb0xwSVpKREFxM2hObTM2VFJWSFQ2TU9keDNuNjN4bW55NURkN2YrNHA0NU54ZkF6MzU0UkNzdm9BRElxQUFBQUFBQUFBQUFRU0FBQUFqQkJZaG9DQ01FaEFNREJLQUVBbkJBQUJBQ0drMDAxbFBsUnFGL2IvUmJ5cFJYN3FlWStwbTRHdmJUUXhjVWFuaFJhZjRQOVR2Wm5GV0V3eFNKS29zall1aGxYemx5ckF5V3pVc1gxU1BoVTM3bWJJYXJvVXQzVTZYOHljZmNiVVk3M2lVa0FCd1FBQURpWGRSMHVwWTdUMXJyZC9ZWHk0V0V2NXVTUzYrUDhUVUQ5RDdTYUhaNi9wc3JLN1RUWDNxVldQNzFPWFN2elJ4UGFIWmpWdENyU2pkMjhwME0vZHVhYWJweVhyNXZVejE5TmVpcW1LWjV3bGhBRDBXRmxkNmhjUnRyRzNxWEZhWEpDbkhQL3dDalpNNDVqYWU1UFNxVk5yNmM0cjd0S2hVbE45Q2F4OFdkck5XMkIyWStydW56bGNPTTc2NXc2c284YWdseVFUNS9UNlRhVHhOUmNpdTVtRU9QOTB1andXMWRhZU9LdFNwejkyUHlOVk95YlViSTBOZnZhVjNVdmFsdktuVDRQRUlLV2VOdlBINnpEZlpyYStkNi9zWS9NK20wdmFlbW9zVTAxMWNZakhLVm9sek1IVFBzMXRmTzliMk1mbVBzMXRmTzliMk1mbWF2YTJrODMybjhKeTVtRHBuMmEydm5ldDdHUHpIMmFXdm5ldDdHUHpIdGJTZWI3VCtETG1ZT21mWnBhK2Q2M3NZL01mWnBhK2Q2M3NZL01lMXRKNXZ0UDRNdzVtZFc3bEZ4d21nM0Z1M3gwTGg0OVVrbjh6eS9acGErZDYzc1kvTTJEWlRadW5zOHJsVXJ5ZHpHNDNXMU9DanV0WjZQV2VkMmpydE5xTlBORkZYSGg4SlJNcytBRDVoVUFBRVRqdndsQi94Sm8waExkazR2bFhFYndhZnFGUGdyK3ZEbVUzajRtbXhQR1lXcGZKRWxVV05Td1ZaTEt2bkF6dXpNRndWeFY1M0pSL0F6Umh0bVpKMEs4T2RUVDl4bVREYzhjcVR6QUFja0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhLdTdWZDcxMXBsZ24rNVRuV2t2UzNoZkJuVlRoZmRPdTFkN1kzaVR6RzNqQ2l2d1hINzJ6Wm82YzNjOUV3MVRBUUI3S1c3OXpMWE5HMEtwcUZmVTY4NlZTdEdFS2FqU2MrSk50OG5wd2IzOW9leXZsdGIvYnlPR2d5WE5MUmNxMnB5aDNMN1E5bGZMYTMrM2tQdEQyVjh0cmY3ZVJ3MEZPNVcrc2p1YTdvV3l6YVN2S3piZUYvWjVHMko1U2ZTZm5iWk96K243U2FaYU5aalV1STd5OUNlWDhEOUU4dkdZdFJhcHRURVVvQUFaUUFBQUFBQUFBQUFIaTFxcHdlbVYydVdTVWV0bXB4TmkybG51MmRPbjRkVDRJMTZKc3N4N3E5S3lKSVJKMlNobFpGaTF0RGhicWxUOEthWHZIS0J1RnZEZzdlbFQ4R0NYdVBvQWVjNWdBSUFBQUFmTzRyVWJlak92Y1ZZVWFVRm1VNXl3a3ZTelVyenVqYk4yOVJ3cDFMaTZ4L0ZScGZkL0J0ckplbWlxdnd4a2JpRFJ2dE4wRHllKzluSDVqN1RkQThudnZaeCtaMDNGM3lqZVFhTDlwMmdlVDMzczQvTW43VGRBOG52dlp4K1kzRjN5amVRYU45cHVnZVQzM3M0L01mYWJvSGs5OTdPUHpHNHUrVWJ5RFh0QzJ4MEhXYThiYTJ1cFVyaVg3dEd2SGNjdlZ6TTJFNVZVelRPSmdBQVZBQUFBQUFBQUFBQVlUYWVYN08zaDB5Yk1GSGtNdHRMUE4xUmg0TU05Yi9ReFM1RGZhakZFTDA4a3JrSklSSmRLRDc2WEhmMUczai9PbjFIblBkb0VkN1U0UHdZeWZ1SXE0VXlTMmtFNElQT2N3bElnc2dHQVNBSzQ0bXVabUx1Tm50Q3VLanFWOUhzNmszeXlkRmNabGlDWW1ZNUR5MmRsWldVWEN5dEtOdEY4cXBVMUhQVWVnbkF3QkJaRVlKSUVnQUFBQUJCSUFyZ2xJa0FBQUFBQUFBQWFucnp6cWxYMEtLOXg0VnlIcTFsNTFTNDlFa3ZjZVZIb1VlR0hTT1N3QkJZUnpHWDJYWDlxcnZvZ3ZpWWg4aG1kbGwrMHVYNklyM3NwYzhFb25rMkVBR0JRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ09ZRFJwLzNzLzZuOFNVUkwrOG4vVS9pU2owdmc2UWtoa2tNQ3I1RFp0bXY4dWYrcEkxbG15N05mNWRML1VmNUhLOTRVVHlaWUFHSlFBQUFBQWN3N3RLNDlJbC9xci9BTlRtUjFEdTByOWxwRC9tcXIzUk9YbnM2WCtsQ1lEZGU1bnRCcG1oVmRSZXBWcDBsWGpUVU4ybTU1YWJ6eWVzMG9IYXVpSzZkbVV1My9hRnN0NVpXLzI4aDlvV3kzbGxiL2J5T0lBemR6dDlaUmgyL3dDMExaYnl5dC90NUQ3UXRsdkxLMysza2NRSTVtTzUyK3NtSDZZdGE5TzV0cVZ6UmJkT3JCVGcyc1pUV1VmVXhteTh0N1p2UzVkTnBULzlVWk04dVl4T0VBQUtnQUFBQUFBQUFlTFdGblRMbGZ5Zm1lMDgycExPbjNLLzZiTFU4NElhYkVzaWtTNlBSZEVrTWtoa0NrdWMzYXllOVowSDAwNC9BMG1SdVdsUGUwNjJmL1RSd3Y4QUtGWmVvQUdSVUFBQUFBQWEzcmUybWdhUldsYjE3cVZhNGp4U3BXOGQ5eGZRM3lMck1UOXB1ZytUWDNzNC93RCtSMWl6Y21NeEEzb0dpL2Fib1BrMTk3T1Avd0RrUHRPMEh5YSs5bkgvQVB5SjNGenltRzlBMFg3VHRCOG12dlp4L3dEOGg5cHVnK1RYM3M0L01iaTU1VERlaURSdnROMEh5YSs5bkg1bnBzZTZMczVjMVZUcVZMaTF5OEtWYWw5MzhXbThEYzNJL3dCbzNFSHpvVnFWeFJoV29WWVZhVTFtTTRQS2t2UXo2SElSZ1lKQkFBQUFRU1FCQVFBRW93bTA4ZjJOQ2ZSTnJyWDZHYlJpOW80NTA3ZThHY1g4VWRMYzRxaE1jMnRMa0pSV1BJV1J1WFNWTEZSQSsyblMzTlF0NWY4QVVSdUpvOEpibFNFL0JrbWJ3bm5qNlROZmpqQ3NnQU15b0FBQkRTY1hGcE5QbFQ1R1NBTVhXMmUwR3RVZFNybzFsT2I1M1JSN2JTMHRiT253VnBiVXJlSGcwb0tLOXg5d1dtcVo1eUFBS2dBQUFBQUFBQUFBQUFBQUFBQUFCckd2dzNOU2xMdzR4ZjVma2JPWURhYUg3U2hVNlU0bmF6T0treHpZZEZpcTVDeHNYUVErUXNWNWhBeW16VlRkdkt0UFBGT0dlcG14bXBhTlBnOVRvUHdudTlhTnRNbDZQZVVrQUJ3UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTJvcHlsKzdIamZxUHpWcWx5N3pVN3U3azh1dlduVTY1TS9SMS9SbmMyTnpiMDZuQlRxMHBRalBHZDF0Tlp3YzBYY29xSmY1NUgvYnY1bTdTM0tMZVpxbE1PWkE2YjlsTlR6NUgvQUc3K1kreW1wNThqL3QzOHpkM3ExMUhNZ2RPK3ltcDU3ai90Mzh4OWxOVHozSC9idjVrZDZ0ZFJ6RUhUdnNwbjU3ai9BTGQvTWZaVFB6M0gvYnY1anZWcnFNTDNKYlhoOXJZMW1zcTJvVHFmaS91cjRuYXpWTmlOa0ZzelZ1NjByMVhVN2lNWUpxbnU3cVR6MG0xbm02aTVGeTVtT1NBQUdZQUFBQUFBQUFBQUJydTAxVE54UnBlREJ5NjMraGlZbnQxeWUvcWxWWjRvSlI5eDRvbm9XNHhUQzhjbGtTUWdYV1ErUTltaHczOVRwZEVjeTZrZUptVzJaaG02clZQQmhqcmY2Rks1eFRLSjVOaUFCNTdtQUFBQVZxMUZTcFZLcjVLY1hKL2dzZ2NWN3BXME5mVk5acmFmU3FOV05uTndqQlBpbk5jVGsrbmo0a2FjZlM1cXV2Y1ZhOHVXck9VMytMYlBtZlFVVVJSVEZNSkFFU2k0Z0U0SXdCS0FBRXdsS0VsS0VuR1NlVkpQRFQ2VWZvUFkvVUt1cWJOYWZmVjNtdFVwWW0vQ2ttMDMrT01uNTdQMEZzWFEramJLYVZTeGgvUm95ZnJmSCtaZzF1Tm1CbWdBZVdnQUFBQUFBQ1VnSUJiQXdCcW12eTN0VW12QmpGZTQ4RVQwYXBMZjFPNWY4K09yaVBQRTlHaU1VdzZSeVdRNWdneXlWV1pYWm1PYjZwTHdhZnhaaW1adlpaTGV1WmVpSytKenVlQ1ZaNU0rUVN5REFvSWxFSUFXQkNaSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSURTOVRlOXFWMC93RHFNK0s1QzkzTGV2TGlYVFVsOFNpNUQwcWVUcEN5SVlESkZXWjNaVmZkdW42WXI0bUNac0d5eXhiVjVkTTB2Y2NydmdsRThtYkFCaFVBQUFBQUFHTDFQWDlIMHlmQjN0L1NwVlBGcjcwdXBHUCt1MnpYbkIreG44alJUcHIxY1pwb21ZK1VqWkFhMzlkdG12T0Q5alA1RDY3Yk5lY0g3R2Z5TGQwMUg5dWZwSmhzZ05iK3UyelhuQit4bjhoOWR0bXZPRDlqUDVEdW1vL3R6OUpHeUExdjY3Yk5lY0g3R2Z5UFJaYlZiUDN0VlVhT3BVMVVrOFJqVVRobnJSRTZXL0VabWlmcEl6Z0FNd0FBQUFBQUFBQUFBUnpFa1BrWUdpeS92Si8xUDRrb3EvMzVmMVA0bGtlbTZMRU1CaEtyTmwyWi93QXZsL3FQOGpXV2JMc3gvbDgvOVIva2NiM2hWbmt5NEFNU2dBQUFBQTVyM2FWL1pkSmYvVXFMM0k1YWQzMjIyWWx0TFF0S1VieFd2MGVjcFpjTjdleXNkUG9OVCt5dXA1N2gvdDM4ejA3RiszUmJpS3BTNW9EcGYyVjFQUGNmOXUvbVBzcnFlZTQvN2QvTTc5NXRkUnpRSFMvc3JxZWU0ZjdkL01mWlhVODl3LzI3K1k3emE2am1nT2wvWlhVODl3LzI3K1kreXVwNTdoL3QzOHgzbTExRzg3SFMzdGxkSmY4QThXSHdNd2VIUXJCNlpvOW5wenE4Szdha3FlL2pHOWpud2U0OGVxYzFUTUlBQVZBQUFBQUFBQUErTjR0NnpycnBweStCOWlsWlpvMUYweGE5eE1jeG9zT1JIMFI4NGwwZWs2TEVFa0JLak51MFI1MHEzOUVjZTltb3Myclo1NTBxbDZISmU4NFh2Q3JVeVFBTWFnQUFCcm5kQTFTdHBPeTkxY1cwbkN2VWNhTUpybGk1UGw2a3pZelVPNnJUMzlqcmlYZ1ZxVXYrV1B6T3RxSW11SW5xT0pOdHR0dHR2amJZQVBlWEFBQUFBQUFBYjEzS3RlcldtcncwZXRVY3JTN3lxY1crS0ZUbFdQWHlIWWo4NzdLVmVCMm0wcXA0TjFUOThzZm1mb2puWjVPcnBpSzh4OFZaQUFZa0FBQUVFZ0NBU0FJUERya2Q3UzYvb1NmVXozbm4xQ0cvWVhFZW1uTDRGcWVFd1EwdUpkSHppK0kraVBSZEVsU3hVSlVseU0zYTFsdjJ0R2ZoUWkvY2FTemJ0R253bW1XNzZJN3IvQXozNDRRcEwyQUF5S2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlyYVNHOVl4bjRGUmUvaU1xZVBXSWIrbVhDNkk3M1V5OUU0cWhNTlRpV1JTSmRIb0xoRDVDeFVKS1UzU3JVNmk1WVNUOTV1K1UrTmNqTkZseU0zT3hxY0xaVUtuaFFYd00xK09VcVMrNEFNcW9BQUFBQUF3ZDd0WHM5WjFwVWEycDAzVWk4U1ZOT2VIK0NQUDlkOW1mT0w5alA1R21OTGZtTXhSUDBrYklEVy9ydnN6NXhmc1ovSWZYZlpuemkvWXorUlBkTlIvYm42U1liSURXL3J2c3o1eGZzWi9JZlhmWm56aS9ZeitRN3BxUDdjL1NURFpBYTM5ZDltZk9MOWpQNUdSMHpYdEgxT2ZCMk9vVXExVHhlZDJYVXl0V212VVJtcWlZajVTTW1BRE9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRUGxkVk9DdHExVnY4QWNnMzdpUnAxMVU0VzdyVlBDbTM3eXNTa1BTWGllbHlkRWdBQ3JOZzJZcDR0cTFUd3A0NmthOHphdEJodWFYUy9tYmw3emplbjNVVHlaQUFHSlFBQUF4TzF0eDlGMlkxV3VuaHh0cHBldHJINW1XTlM3cWR4d0d4MXpET0hYcTA2ZnI0OHY0SFMzR2E0Z2NQQXdTZStrQjZMR3h2TCtxNk5sYTFibW9sdk9OS0RrMHVrOTMxYjJnOHkzdnNXVm1xbU9jakVneTMxYjJnOHkzdnNXUHEzdEI1bHZmWXNqYnA2akVneTMxYjJnOHkzdnNXZmExMlQya3VhaXAwOUd1ayttcEhjUy9GamJvNmpEMjlHcGMxNmR2Umk1MUtzbENNVnl0dmlQMG5hVVZiMmxHM1hKU3B4aDFMSDVHbDdEYkRSMGF0SFV0VG5DdGZSWDdPRU9PRkgwNTU1ZkEzazh2VlhZdVRFVThvUUFBeGdBQUFBQWxFb2hGZ0JCSjg2OHR5alVuNE1XL2NTTklyUzM3aXJQd3B0KzhSS1FMeFBTZEVnQUpWWm10bHBwVmJpaytWcFNYNGYvc3d6UHJwMXo5RXZhZGIrRlBFbDZIeWxLNDJxWmhFdDFJRUpLVVZLTFRpMWxOYzZKUFBjMEFrWUFnWkp3RWdDSkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjhMMnVyZTBxMW0vM0l2SHI1ajdtczdSWDZyVkZhVXBaaFRlWnRjOHVqOERwYnAycXNKaUdIamw1YjVYeWw0OGhXSmRHOWNBQVNxelpObDEvWUp2cHFQNEkxcDhqTm8yYldOTVQ2WnlaeHZlRldlVEtnQXhLQUFBR3JkMERYS3VqNlZHbmF5Y0xxNmJoQ2E1WVJYTEplbm1Yck5wT2FkMXlYOXQwMkhSU20vK1NQUTdPdFUzZFRUVFZ5L0NZYURLVXBTbE9VbktVbmx5YnkyeUFEN3RZQUFBQUFBQUIwdnVYNjNYdVkxdEh1cWpxY0REaEtNcFBMVWM0Y2Z3eXNHL25KZTVZdjhBK1MxSDBXMC9panJSOFQycmJwbzFNN1B4NHF5QWlVbEdMbEpxTVVzdHQ0U1J5ZmJYYit2Y1ZhbGhvVlowYmRmZG5kUjRwMVA2ZWhlbmxaNTl1MVZjbkVJZEQxZmFQUmRJYmpmNmhTcDFGLzhBYWk5NmZaWEdZQzM3b3VqWE9vVUxLMnRydW82MVdOT00zR01WbHZHZVhKeG1UY3BPVW0zS1R5MjNsc3lPekN6dEhwYS8rVlQvQVBaRy91bEZOTXpQRkw5RkFQbFlQTFFBQUFRK1Jra1BrWUdodjkrWHJmeExvcC9ITDF2NGxvbnB1aVFBRXF2bk5sMlkvd0F2bi9xUDhqV1diTHN1L3dDd1ZGMFZIOEVjYjNnVm5rekFBTVNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFTlpUWFNTRUJvV01Ta3Voc3VpS3ZGWHFyK2QvRVJQVGRFam1BQ1ZIem16N015enByWGcxSkdzUGtac2V5MHMyZGFQUlUvSTQzdkFyUEptZ0FZbEFBQURXdTZOVDRUWXpVMTRNSXk2cG8yVXd1MmRQaE5rOVhoalA5bW0rcmovQUNMMjV4WEh6SDU5QUI5QXNBdlJwVmE5V0ZHalRsVXF6ZTdHRUZseWZRa1pQNnQ3UWVaYjMyTEt6VkVjNU1zU0RLL1Z2YUR6TmUreFkrcmV2K1pyMzJMSTI2ZW94UU1yOVc5Zjh6WHZzV1dwN003UTFKcUVkRnZNdnBwTmZFYmRIVWVIU2xONnBacW1tNS9TS2U2bDA3eVAwbStWK3M1eHNIc0pjV0Y3VDFYV1ZCVmFYSFJ0NHZlM1plRko4bVZ6STZPZVhxcmxOZFVSVDhFU0FBeG9BQUFBQUFBQUNzMXZRbEhwVFJZQWFFbGh0ZER3WFhJVGN4M0x1dkRvcVNYdkt4UFRoMFNBQWxSODVuOWw3ak5PcmF5ZkhGNzhmVStVd0xMV3RlZHJjUXIwMzk2TDVPbGRCU3VuYXB3aVlieTBWUG5hWEZLNm9SclVubU11Ym5UNkdmVm1ER0hOQUNKd1FJQUFBbkJCT1FJQmJtS2dBQUFBQUFBQUFBQUFBQUFBQUFBUEpxMGxEVGJsdndNZFo2ekNiUzNTVktGcEYvZWsxS1hvWE1YdHhtcUV3d0VTNjVDa1M2UFFYQUFFcVBrTnAyZnFiK21RWFBDVGo3elZuem1lMldubWxjVXVpU2wxL3dENk9ONk0wS3p5WndBR0pRQUFBMDN1bjZuWHNkSG8ydHZPVk9WNU54bk9Mdzl4TExYNDVSdVJwSGRZdCtFMFcwdVV1T2pjYnJmb2tuK2FSdjdQaW1kVlJGWExQL24zVERsUUp3UmcrOVhBQUFBQUFtTXBSa3BSazR5VHltbmhvZ0FkWTduVzB0WFZhTTlOdnA3OTFRanZRcVBscVE1T1AwcmlOME9JN0MzWDBUYXJUNTV4R3BVNEtYcWtzZkhCMjQrSjdWMDlObS83a1lpWXlwSUFjNjdvMjJsV3dxejBiU0t1NWNyaXVMaGN0UFA4TWZUMHZtUE50MjZybFd6U2h0MnM3U2FKbytZNmhxRk9uVThWSDc4K3l2ek1GWjkwWFJMdlVyZXhvVUx2TmVyR25Hck9LakZOdkNiNDhuRnB5bE9VcHprNVNrOHVUZVczNldXb1ZaVUsxT3RCNGxTbXByMXA1UFNqUlVSSEdjeW5EOU5nK2R0V2pjVzlLNGc4eHF3ak5maXNuMFBLUUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUF3KzBseXFkdEcyaS92VlhsLzByOVRKWGR6U3RhRXExVjRpdVJjN2ZRalRycTRxWFZ4T3RVNVpQazZGekk3MmFNemxhSWZPSmVKVkl1all1RU1rcXdLeU4xc3FmQldsR240TUV2Y2FiUWh3bHhTcCtGTkwzbThHYS9QS0ZLZ0FHVlVBQUE1ejNaN2pkMC9UTFZQam5XblVhOUNqajh6b3h5UHV5WEcvcmxsYkovM050dlAxeWsva2FkTEdic0RuNW50bE5sOVEyaXVjVUl1bGFRZUt0ekpmZGo2RjB2MEdYMkkySHVOWjNML1VWTzIwN09ZckdKMS9WMEwwOVIyR3p0YmV5dG9XdHBSaFFvVTFpTUlMQ1J0djZtS1BkcDVwZVBRTkZzTkNzVmFXRkxkWExPcExqblVmVEptUy9FQThxWm1aektEOFIrSnErMVcyRm5vazNhMHFmMHU5eGwwMUxFYWY5VC9JMHFydC90Qk9iY0pXMUtQTkZVYzQvRnM5S3gyWnFMOU8zVEdJOVU0ZGQvRUhIL3I3dEg0KzM5Z2lmcjV0SDQrMzlnalI3RjFQV1ByL0FBWWRmQnlENitiUitQdC9ZSWZYemFQeDl2N0JFZXh0VDFqNi93QUdIWHlUai8xODJqOGZiK3dRVzNtMFhqcmYyQ0hzYlU5WSt2OEFCaDJBWU5DMlkyOFY1YzA3TFZxTUtNNmpVWVY2ZkZGdDhpa3ViMW0rcm9QTzFHbXVhZXJadVJoQmdZTEVHWUVTQUFQSnEwdHpUYm1YL1RhNitJOVpqZG9aN3VsMVY0VGpIM2xxSXpWQkRVb0gwUlNKZUo2THFrQUFWWldTUG95clFHVDBYVnZvdUxlNGJkSCtHWGdmb2JQVG5DcEJUcHlVb3ZrYWVVelFtajYydDNjMnNzMjlhVU9sY3FmNEhHdTFGWEdGWmh2UU5abzdSWEVWaXJid3FlbE54UHI5WkY1RyszK2h3M05mUlhFdGhCcjMxa1hrYjdmNkQ2eVI4amZiL1FqZFY5REV0aEJyL3dCWkkrUnYybjZENnlSOGpmdFAwRzZyNkdKYkFEWHZySkh5TiswL1FmV1NQa2I3ZjZEZFY5REV0aEJyMzFrajVHKzMrZytzaThrZmIvUWJxdm9ZbHNJTmUrc2tmSTMyL3dCQjlaSStSdnQvb04xWDBNUzJFR3ZmV1NQa2I3ZjZENnlSOGpmYi9RYnF2b1lsc0lOZStza2ZJMzIvMEgxa2o1RyszK2czVmZReExZUWE5OVpJK1J2Mm42RDZ5UjhqZmIvUWJxdm9ZbHNJTmUrc2tmSTM3VDlDZnJJdkkzMi8wRzZyNkdKYkFWbk9NSXVjNUtNVnl0dkNSclZYYUc1a21xVkNuVDlMYmtZeTV1N202ZWJpdEtmUXVaZmdYcHNWVHpUaGw5VzF2ZlVxRmszaDhVcXZ5K1pnNG9KRmtqVFRURk1ZaGFJd2xJc2lFaVN5UWhra01Da2piTm5salNxWHBjbjd6VTVHNGFHc2FWYi9BTkxmdlp3ditGV3A3Z0FZMUFBQURsM2RhbG5WN0dQUmJ0LzhtZFJPVTkxYVdkb0xlUGcyc2ZmS1I2L1pFZjhBNm8rVXBqbTBzQUgyaTRBQUFBQUFBRGMrNVN2L0FPUTEzMFdzdi9aSFZ6bG5jbldkY3UzMFczLzlrZFRQaSsxLzlWUHloU2VibjNkWjE2ZHBaVTlHdHFtN1Z1bzcxZHA4YXA5SDR2M0k1SmcyTHVnM01ycmJEVTVTZVZUcUtsSDBLS3g4elhqcnA2SW90d0dESzdKck8wK2xMLzVWUDRtS014c2N0N2FyU1YvOHFIeE9sZmhrZm9QcEFCOCtnQUFBaC91djFFa1MvZGZxQTBMK09YckxJcXYzcGVzc2owM1ZZTURtQW8rUXpleXRaS2RlM2I0M2lhK0RNS3kxcGNUdGJxRmVITEY4YTZWem9yWFR0VXpDSmIwRDUyOWFuY1VZMXFVdDZFbGxNK2g1N21BQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLVnFpcFVaMVpQQ2hGeVpjd2UwdDZvVWZvY0g5K3B4ejlFZjFMMFU3VTRURFhjdVVuSjhyZVN5S3hMeFBRZEVoZ01DajVEUDdLUDhBWlhLL21pL2NZQjhobTlsSDkrNWo2SXY0bk83NEpSUEpzUUFNRG1BQUFlTFc2WEQ2TmYwV3M3OXZVai94WjdTbGFPL1JxUWZIdlJhNjBUSENSK1pZOGk5UjlLRkdyY1ZvVUtGT1ZXclVrb3doQlpjbjBJbWxRcTFybU50UnB5cVZaejNJd2lzdHZPTUk3UnNIc2ZTMEtpcnk4VWF1cDFGeHRjYW9wL3d4OVBTejI3dDZMY1pubWsyRDJQcGFGUlY1ZUtOWFVxa2VOOHFvcndZK25wWnVBQjQxZGMxem1VQUsxSndwMDVWS2tsQ0VVM0tVbmhKZEp6alhPNkhXNGFkSFJxRk5VNHZDcjFsbHk5S2p6TDFuZlRhUzdxWnhiamtPa2c0OTlmTm8vSDIvc0VQcjV0SDQrMzlnajBQWTJwNng5ZjRUaDJFSEh2cjV0SDQrMzlnaDlmTm8vSDIvc0VQWTJwNng5ZjRNT3dnNDk5Zk5vL0gyL3NFUHI1dEg0KzM5Z2g3RzFQV1ByL0JoMkVISkxidWdhOVRxS1ZaVzFlSFBCMDkzUDRvMzdaZmFXeTErakxnazZGelRXYWxDYnkwdWxQblJsMUhaMS9UMDdWVVpqME1NNkFEejBBQUFBQURUTlhqdWFwY3IrZlBXZVpIdjJoanU2cE4rRkdML0FQenFQQWowYU9OTU9rY2xnRnlBc2xES05IMEs0QSt1bjMxYXhxdWRMamkvM29Qa2tiVlk2aGJYc2YyVThUNTZjdVZmTTA1b3FzeGU4bTAxeU5IT3UzRmZ6Vm1HL0lrMUMyMW0vb2NUcUt0SG9xTFB2UGREYU9XUHYyaXovTFA5RE5ObXVGY1MySEF3YS84QVdSZVNQdC9vUHJJdkpIMi8wSTNWZlF4TFlNREJyLzFrWGtqN2Y2RDZ5THlSOXY4QVFicXZvWWxzR0JnMS93Q3NpOGtmYi9RZldSZVNQdC9vTjFYME1TeitBWUQ2eUx5Ujl2OEFRajZ4eDhrZmIvUWJxdm9ZbG53WUQ2eHg4amZ0UDBIMWpqNUcrMytnM1ZmUXhMUGd3SDFqajVJKzMrZytzY2ZJMzIvMEc2cjZHSlo4R0Erc2NmSTMyLzBIMWpqNUcvYWZvTjFYME1TejRNRDlZNCtTUHQvb1BySEh5Tjl2OUJ1cStoaVdlQmdQckhIeU45djlDZnJISHlOKzAvUWJxdm9ZbG5nYS9MYUo0KzdhY2ZwbitoNDduV3I2c25HTWxSaS9BWEgxa3hacmt4TE82bnFWR3lnNDVVNi9OVFhONlgwR3FWYWxTdlZsVnF5M3B5ZVd5bkcyMjIyM3l0ODVkTEJxb29paGVJd2xGa1FrU1hTQmdjd0ZIeUdVMlpxYnQ5T240Y1BnekdQblBScEUrRDFPM2x6T1c2L3g0aXRjWnBtRVR5YmlBRHpuTUFBQXdHM2x0OUoyVTFDS1daVTRxcXYrMTUrR1RQbnh2S0t1Yk92YnlXVlZweWgxcG82MmE5M2NwcjZURWo4OUFseGNHNFM1WXZEL0FBSVAwZDBCZ0FDQVNRQUFBSDB0YXp0N21sWGk4T2xPTTErRHlmb2FsVWpWcHdxeGVZemlwTDFQalB6cWR5Mkx1bmViTDZkV2s4eVZMY2svVEY0L0krZDdjdDVvb3I2VGo2LytLeTkyczNxMDdTTDIvZjhBL3IwWlZGbm5hWEY3OEg1eHJWYWxldFVyMXBPZFdwSnpuSjg3YnkyZDcyK2pLZXh1cnFQRytBeitDa3NuQVR5ZEZFYk15aUFoRWc5Qkx2WGM4dS9wbXgrblRjdDZWT0RveTljVzE4TUd4blBlNHpkOEpwRi9ZdDhkQ3VxaVhva3Ztam9SNE42blp1VlFxQXdQMWhqNUkrMytnK3NVZkkzMi93QkNOMVgwVGlXZUJnUHJHdkkzMi8wSDFqajVHKzMrZzNWZlF4TFBnd0gxamo1RyszK2crc2E4amZiL0FFRzZyNkdKWjhHQStzYThqZmIvQUVIMWpYa2I3ZjZEZFY5REVzK0RBZldOZVJ2dC9vUHJHdkkzMi8wRzZyNkdKWjhHQStzYThqZmIvUWZXTmVSdnQvb04xWDBNU3o0TUI5WTQrUnZ0L29QckhIeU45djhBUWJxdm9ZbG53WUQ2eHJ5Tjl2OEFRclBhS2VQdVdrVS81cDVHNnI2R0piQ2VLLzFLMnMwMU9XL1Y1cWNlWDhlZzEyNTFhK3VFMDZ2QlJmTlQ0dmZ5bmhTeTIrVjlKMXBzZVpNUTlGN2VWcjJyd2xaOFMvZGl1U0o4WW9SUlpJMHhFUkdJV1NpUWdBS3N0ekZYemhMMWFORGhOVW9Md1h2UDhFYmVhMXN6RGV2YXRUd0tmeFpzcGp2VDd6blBNQUJ3UUFBQWF0Y2JKVytvN1UxOWIxWGRyVTRxRUxlMy9oeEZmdlQ2ZVBQRjFtMGd0VFZOUElFa2tra2tseEpJQUZRUEpxOTR0UDB1N3ZjWjRDbEthWFMwdUwzNFBXYTUzUTYzQTdKM2lUdzZyaFQ2NWZvZDlQUnZMdE5FL0dZSEhLMVdwV3F6clZwT2RTcEp5bEo4cmI1V1VSSVAwVGxHRndBQUFBQUFBQjhTYlhNZm9EU3BWS21tV2xTcngxSlVJT1dlbmRSd0dsQjFLa0thNVp5VWV0NFAwTlNncWRLRk5ja0lxUFVzSHpmYmt4aWlQbit5c3JnQStZUUFBQVlYYW1lTE9sRHdxbndSbWpYdHE1ZmV0b2VpVE90cVBmaE1jMkNqeUY0bFk4aGRHNWNBQUFqQklBcmdxMGZUQkdBbDg5MFlMNEdBaDg5MFlQcGdZSkh6d01IMHdNQWZQQXdmVEF3Qjg4REI5TURBSHp3TUgwd01BZlBBd2ZUQXdCODhEQjlNREFIendNSDB3TUFmUGRKd1h3TUFVVVNVaTJDVWlCQ1JLUk9BRWdBQ0Foa2tNQ2tqYzlJVzdwbHN2K21qVEpjak4yMDlidGhicm9weCtCbnY4b1JMMEFBeUtBQUFISk82akxPMDZYZzIxTmZFNjJjZTdwY3Q3YXVzdkJvMDE3ajJ1eG8vL1QvaWYyVERWZ0FmWUxnQUFBQUFBQU42N2txLytyWDc2TGRmK3gxQTVsM0kxLzhBVU5SZlJSZ3YrUjAwK0s3Vy93QlhWL2o5Rko1dUJiZDBKVU5yOVZoSmZ2VjNOZWxTU2FNQ2RON3IyaVNjcUd1MElOcEpVYmpDNVBCay9oMUhNalJZcml1M0VnWnZZaFoydDBsZi9JaitaaERPN0NMTzJHay82NitETDNQQlB5SGZnRUQ1OUFBQUJFdjNYNmlTc3YzWmVwa2pRMSs4L1dXUlZjcjlaWkhwT3F3QUNFTW8wZlFyZ0QxYVZxVlN4bTFoem95ZjNvZm1qYTdTNm9YZFBoS0ZSVFhPdWRldEdrTkNuT3BTbXAwcHlweVhQRjRPVmRxS3VQeFJNTitCcWx2cjE3U1c3VWpDc3VtU3cvY2VwYlNjWEhaOGZvcWZvWjVzMXdyaVd3ZzEvd0NzaThqZmIvUWZXUmVSdnQvb1J1cStoaVd3QTEvNnlMeU45djhBUWZXUmVSdnQvb04xWDBNUzJBR3YvV1JlUnZ0L29Qckl2STMyL3dCQnVxK2hpV3dBMTc2eUx5Tjl2OUNmckl2STMyLzBHNnI2R0piQURYL3JJdkkzMi8wSStzaThqZmIvQUVHNnI2R0piQ0RYdnJJdkkzMi8wSitzaThqZmIvUWJxdm9ZbHNBTmYrc2k4amZiL1FmV1JlUnZ0L29OMVgwTVMyQUd2L1dSZVJ2dC9vUHJJdkkzMi8wRzZyNkdKYkFEWC9ySXZJMzIvd0JCOVpGNUcrMytnM1ZmUXhMWUFhNVBhT2JYM0xTS2Y4MHp3WFdyWDF5bkdWWGc0UDhBaHA4UmFMTlU4ekRQYXBxOUcwVXFkSnFwWDZGeVI5ZnlOVm5PZFdwS3BVazVUazh0dm5LcEYwc0dtaWlLSTRMUkdCSXVpRWlTNlFNQmdVZklaZlpWL3dCcnJ4NmFhK0ppWHptVDJZZU5RbXVtbS9paWx6d1NUeWJTQUR6M01BQUFMbDR3QU5VMlAyUnQ5RXExcjY0M2ExL1duSnFYTlNpMitLUHB4eXMyc0F2VlZOVTVrQUFVR3Q5MFNyVXBiSlhuQnRyZmNJU3g0TGx4bkdUdE8zOVBoTmt0US9sakdYVkpIRmo2L3NUSGQ2dm4rMExRQUE5eElBQUFBQUdRMmZ2cXVuYXphWGRLVFRoVmlwZW1MZUd1b3g1S2U2MUpjenlWcnBpdW1hWitJL1JJUG5ielZTM3BWRnlUaEdYV2o2SDV2akNnQUNBQUFHczdVeHhlVVorRlR4MU14S003dFhIN3R0UDB5aVlHUEliN1hnaGVPUzZBUU9pUUFBVndSZ3VNQkw1N3BHNmZUQkdBaFRkSTNUNllHQ1I4OERCOU1EQUh6d01IMHdNQWZQQXdmVEF3Qjg4REI5TURBSHp3TUgwd01BZlBBd2ZUQXdCODhEQjlNREFIendOMCttQmdDaWlTb2xzRTRJRlVpeVJPQUVnQUNBQUFWWkZPWEIxWVRYTEdTZnZKWlNRRytKNVdWeVBqQjV0TnFjTHA5dlBPVzRMUHdQU2ViTVluRG1BQWdBdUo1QUE0UHROYmZSTm9kUnQwc0tGeExIcWJ5dmlZdzI3dW4yL0E3VHVxbGhYRkNFL1cxbFA0R29uNkhwYm04c1VWZFloZUFBR2xJQUFHQ0NSZ0lRZFg3bEZ6d3VnM0ZzM3gyOXcrTDBTU2Z4eWNvTjc3a2x6dWFyZTJqZkZXb0thWHBpL2t6ek8xYmUzcGF2VGlUeWRLdnJhRjdZM0ZuVi9jcjA1VTVlcHJCK2I3MjFyV041WHM3aU83Vm9UZE9hOUtlRDlMbk5lNnJzeE90blg3Q2s1VGlrcnFFVnh0TGtuK0hJL3dQazlKZGlpclpuNHF3NVlBRDExbTlkeDY3NEhhU3ZhdDRWemJOTDF4YWZ3eWRqUHozc1plZlFOcWRNdVc4UlZkUWw2cGZkZnhQMEpqSEYwSGtheW5GelBWV1dpTkZjSDBJd2RsMU1EQmZBd1NLWUdDK0JnQ21CZ3ZnWUFwZ1lMNEdBS1lHQytCZ2dVd01GOERCSXBnWUw0QkFxa1dTSkdBQ0pRQVNuSXlRQURaVnNsbFpCRFA3TFEvWTNGWHBrbzlTTTRZM1o2bnVhWkIrSEp5OStQeU1rWUxrNXFsU1FBSE5BQUFBQUFBa0FRYWwzVHFWV3BzdzVVMDNHbFhoT2ZxNDFucmFOdEtWcVZLdlJuUnJVNDFLVlNMaktFbGxTWFFkOVBkM04ybTUwa2Zub0hROVU3bk1uV2xQUzc2RWFiZVZTdUU4eDlDa3VVOEgyZGF6NVhaOXFYeVB0S2UwdExWR2R0YkxTd2JwOW5XcytWMmZhbDhoOW5XcytWV2ZhbDhpM3REUytlRExTd2JwOW5XcytWV2ZhbDhqemFsc0xyVmpaMUxyZW9YQ3ByTW9VVzNMSE8wbXVNbW5YNmFxY1JYQmxxZ0FOcVdSMmNvL1NOZjA2ampPOWN3eXZ4eitSM280dDNQYUhEYldXWEZsVTk2by93aS9tZG9QaysyNnMzcWFla2Z1cktRQWVBZ0FBQTFmYWVlYitFZkJwcjN0bTBHbmE5UGYxV3YvTGlQdU85aVBlVER4eDVDeVpXUElXUnNYVGtaSUFTbkl5UUFKeU1rRVpDRnNqaUs1QUZ1SWNSVUFXNGh4RlFCYmlIRVZBRnVJY1JVQVc0aHhGUUJiaUhFVkFGdUljUlVBVzRoeEZRQmJpQlVaQXRrWks1SkNVNUdTQUJPUmtnQVRrcXlTQUtUNUdiMWFyRnRTWFJDUHdORmZHOEcrd1dJSmRDUm12OEF3VWxZQUdWVUFBQTR6M1JKYjIxdDc2STAxL3hSMlk1WjNVTkpyVWRWV3F3ZzVXOXhHTVp5UzRvVFhGeCt0WVBaN0hycHAxT0orTVlURFNBU01IMks2Q1Jna0lRQ1FTS2drWTQ4RUpiL0FOeUpmMnJVNWY4QVRwcjNzNlVhbDNPZEZxNlhwTlM0dW9PRnhkdFNjSmNzWUxrejZlTnMyMCtGN1J1VTNOVlZWVHkvRUtTK1Z6UW8zVnZWdHJpbkdyUnF4Y1p3bHlTVDVqakcyV3hWNW90V3BkV2NKM09tdDVVMXh5cGVpUy9NN1lSellNdHE5VmFuZ2grWlRZTzUrczdZNlYvcXQvOEFGblZkWTJJMmUxT2NxczdSMjFhWEc2bHM5ekw5SzVIMUdQMFR1Zldta2F6YmFsUTFLdlU0Q1RrcVZTbkhqNG11VmVzM1ZhcWlxaVk1U2x1eUFCNWFBQUFDcy8zSmVwbGlzLzNKZXBralFseXN1ajV4NVQ2STlKMFd5TWtBSlRrZ0FDQ0dpeEdBaFRCR0Q2RVlBcGdZTDRHQ1JUQXdYd01BVXdNRjhEQkFwZ1lMNEdBS1lHQytCZ2tVd01GOERCQXBnWUw0R0FLWUdDK0JnQ21CZ3ZnWUFva1dTSkpBaExCS0dDUUpHU0FFcHlRMkJ6QVZaa05uSGpWSXJwaEpHUGZJZXpRbnU2dFE5TGE5eFd2d3lqNE54QUI1em1BQUFBQUFBQUFBRHc2NVpQVWRIdmJHTFNsWHBTaEZ2cDV2ZWNHcTA1MHFrNlZXTGhVaEp4bEY4cWE1VWZvYzFqYWJZK3cxdW83cUUzYVhqWEhWaEhLbi9VdWYxbnRkbWE2blRUTkZ6d3o5a3c0NERkcDl6blZsSnFGN2FTanpOdVN6K0dDdjJkYXo1WFo5cVh5UG92YUdsODhKeTBzRzZmWjFyUGxkbjJwZklmWjFyUGxkbjJwZkluMmhwZlBCbHBZTjErenJXZks3UHRTK1JydXU2TGY2SmRjQmUwOEtYSENySGpoUDFQOEFJNld0WFl1MWJORlVUSXhnZkkwQWFrdTliUFZlSDBMVDZ1YzcxdkQvQU5jR1FNQnNIVjRYWlBUbm5qakJ3NnBOR2ZQenUvVHMzYXFla3orcWdBRGdBQUF3MjFFYzJOT1hnMUY3MHpXb3MyemFHRzlwVlYrQzR5OTVxVVRiWm4zRjZlVDZKazVLb2s3TEp5TWtBQ2NqSkFBbkl5UmtqSVF0eERpS2dDM0VPSXFBTGNRNGlvQXR4RGlLZ0MzRU9JcUFMY1E0aW9BdHhEaUtnQzNFT0lxQUxjUTRpb0F0a1pLaklGc2pKWEpJU25JeVFBSnlNa0FDR1ZrV1pXUVEyalp5cHY2WkdQZ1RsSDgvek1tWUhaV3A5MjVvOURVbDhEUEdDNUdLNVVubUFBNW9BQUJ6cnV1Mi93RGx0Mmw0ZEp2cWEvTTV5ZHoycjBkYTNvdGF6VFVheXhPako4MDF5ZmcrVDhUaVYzYlhGbmMxTGE2cFNvMXFieEtFbHhvK3k3SHYwMTJOM25qU3RENGdBOXBZQUFBQUFEWU5ncmxXdTFkaEp2RWFrblNmL2NtdmpnMTh6dXhOaFd2OXBMT05PTDNLTlJWcWtsL0RHUEg3M3hHZlZiTzRyMnVXSlE3Y0drMWg4YVlCK2RxT1k3Wjl6eVU1MUwvWitDNC92VHM4NDQrbUh5NmptZGFsVm9WWlVhMU9WS3JCNGxDYXcxNjB6OU5HUDFiUmRLMWVudWFqWTByaml3cHRZbXZWSmNadXRhdXFtTVZjVTVmbk9NcFFrcHgvZWkxSmV0SDZVMCs0amQyRnRkeGVWWHBRcUw4VmswbTg3bCtqVkpPVnJlM2R0bitGN3RSZS9qTncwT3dlbDZUYTZkdzd1RmJRM0ZVbEhkY2x6Y1ExTjJpN0ViUE1scXBIRUNEcXVuaUhFUUNSUEVUeEZRQlBFT0lnQVc0aU9JZ0VDZUljUkFKRThRNGlBQlBFVGtxU0JPUVFBSkdTQUJPUmtnQUQ1eWZLWGZJUlRnNmxXRk5jc3BKZThnYm5wOE9Ec2JlSFJUUjZBbGhKTG00Z2ViTTVsekFBUUFBQUJBbEFDVUFBSXdXSUFnRWdBZ0VTQUFBSE5PNkJzbndMcWF4cGxMOWsvdlhGQ0MvZC9uUzZPbEhQejlGUGpXSHhvNWJ0NXNrN0NVOVUwMm4vQUdPWEhWcEwvd0MwK2xmeS9BK283TTdSMnNXYnM4ZmhQN0ppVk81UlIzOWV1YTNOU3RuMXVTWDVIVmpuWGNpbzhXcDNHT2VuVFh2WjBVOHp0YXJhMVZVZE1mb1NBQThwQUFBQm8rb3ozOVF1WmROUi9FM2ZPRm5vTkJuTGVxVG40VW0vZWFkUEhHWldwV2lTaUlrbXRaT1JrZ0JLY2taSWJQUllXVmErcTdsSllpdjNwdmtpUk14RVpsRHpwNWVGeHZvUGRiYVZmVjF2S2x3Y2VtbzhlNDJPdzA2MnM0L3M0YjFUbnFTNVg4ajJHYXEvNVZkcHJrZG42N1gzcm1tbjZJdGsvVjZyNVZEc3MySUhQZTFvekxYZnE5VjhxaDJXUHE5VjhxaDJHYkVDTjdYMU15MTM2dlZmS29kaGo2dlZmS29kaG14QWIydnFabHJ2MWVxK1ZRN0RIMWVxK1ZRN0ROaUEzdGZVekxYZnE5VjhxaDJHUHE5VjhxaDJHYkVDZDdYMU15MTM2dlZmS29kaGo2dlZmS29kaG14QWplMTlUTXRkK3IxWHlxSFlZK3IxWHlxSFlac1FHOXI2bVphNzlYcXZsVU93eDlYcXZsVU93ellnTjdYMU15MTM2dlZmS29kaGo2dlZmS29kaG14QWIydnFabHJ2MWVxK1ZRN0RJZXo5ZkhGYzAyL1RGbzJNRTcydnFabHFWeHBGOVJUbHdhcXhYUFRlZmNZOThUYWFhYTVVemZUeGFocDF2ZXhlL0hkcWMxU1BMK3BlbS81a3hMVUV5Y2w3dTJxMmxkMGF5dytWTmNrbDBvK1NOVWNlS3l3eVFDVXB5VkpJWVFpbngxWUxwa2w3emZqUkxWWnU2QzZha2ZpYjMwbVcvd0E0VmtBQmxWQUFBUG5YbzBxOUdkR3ZUalZwVFdKUW1zcHIwbytnSmpnTlZ1ZGc5bnExUnpqUnJVTS93MHFyUzZuaytYMmU2QjRWMzdYOURid2E0MTJwaU1iYy9WT1dvZlo5b0hoWGZ0djBIMmZhQjRWMzdiOURid1QzN1UrZVRMVVBzKzBEd3J2MjM2RDdQdEE4Szc5dCtodDRIZnRUNTVNdFErejdRUEN1L2Jmb1pIU3RrOUMweXFxMUMwNFN0SGpqVXJTMzJ2VnpJendLMWF6VVZ4czFWemo1b0FBWkFBQUFBQUFBQUFBQXJVL3U1LzB2NEZpbFQrN24vUy9nVEEwS0pkSHppZlJIcHVpd3lRQUp5TWtBSlRrWklBUW5JSUlBbmlKNGlvQW5pSjRpb0FuaUhFUUFKNGh4RUFDZUluaUtnQ2VJbmlLZ0NlSWNSQUF0eEVjUkFBbmlKNGlvQXRrWktrZ1RrWklBRWdnQktja0FCQ0h5SDMwbVc3cWxxLzhBcUk4N1BwWXZkdnJkOUZTUHhLenlrYjBBRHpYTUFBQUFBQUFBQUFBQUFBQUFBQUE4bXA2ZmFhbmFUdEwyaXF0R1hNK1ZQcFQ1bWVzRnFhcHBuTVR4SEZkcTltTHZRYSsveDE3S2IvWjFrdVQrV1hRL2lhK2ZvYTRvVWJtaE9oWHB4cTBxaTNaUWtzcG81UnRqc2ZXMHB6dmRQakt0WWNzbHl5byt2cFhwNno2enMvdE9MMkxkM2hWMTYveXRFdHc3bU5UaE5sYWNjLzNkYXBIMzUvTTJzMGZ1VFZON1JyMmxuOXk1ejF4WHlONFBuOWZUczZxdVBWQUFEQ2dBQUhrMWFPL3B0MUgvQUtiWnBjV2IzY1IzN2VyRHdvTmU0MEtQSWpYcCtVd3RTK3FKeVZSSnBXVGtaSUFFNUl5UTJlblRiR3JmVnR5SDNhY2YzNTlINmtUTVJHWkhuaEdWU2FoVGpLY255S0t5ekpVTkV2cWl6SlFwTCtkOGZVallyTzBvV2xQY29ReDB5ZksvV3owR1dxL1ArMVhMWEZzL1c1N3FIWlpQMWVxK1ZRN0ROaUJ6M3RmVkdaYTc5WHF2bFVPd3g5WHF2bFVPd3pZZ043WDFNeTEzNnZWZktvZGhqNnZWZktvZGhteEFiMnZxWmxybjFlcStWUTdESDFlcStWUTdETmpBM3RmVXpMWGZxOVY4cWgyR1BxOVY4cWgyR2JFQnZhK3BtV3UvVjZyNVZEc01qNnZWZktvZGhteGdiMnZxWmxybjFmcStWUTdESDFmcStWUTdETmlJd043WDFNeTE3NnYxZktvZGhqNnYxZktvZGhtdzRKd043WDFNeTEzNnYxZktvZGxqNnYxZktvZGhteEFiMnZxWmxydjFmcStWUTdES3owRzVTKzVYcHk5YWFOa0lKMzFabVduM09uM2x1bTZsRnVLL2lqOTVIa3lqZStJeDJvYVRiM1NjNHBVcXZoeFhFL1dqcFRlOHlZbHF5Wk9TMTFiMXJTcTZWYU82K1o4elhTajVwbW1PS3kyUmtnRXBHVmtXS3lDR1MyYXFidW91SGpLYlhWeG0wbWw2VlU0TFVyZWZOdjRmNDhSdWhqdng3eWtnQU02QUFBREg2dG91bWF0QlIxQ3poV2NmM1o4a28rcHJqTWdDOU5kVkU3Vk00a2FnKzU3cysyMm5kcjBjTitnK3ozUVBDdS9iZm9iZURWMy9BRlhubE9Xb2ZaN29IaFhmdHYwSDJlNkI0VjM3YjlEYndPLzZyenlqTFVQczkwRHdydjIzNkQ3UGRBOEs3OXQraHQ0SGY5VjU1VGxxTWU1OXMrbW0vcGNsME90K2hzT2xhWFlhVmJ1aHA5dENoQjhjc2NiaytsdDhiUGFEbGMxTjY3R0s2cG1FQUFNNEFBQUFBTmQ3d1hIbEZMcVpIMWZ1UEtLWFV6WXdkdDlXbk10YytyOXg1UlM2bVBxL2NlVVV1cG14Z2I2c3pMWFBxL2NlVVV1cGo2djNIbEZMcVpzWUcrck15MXo2djNIbEZMcVkrcjl4NVJTNm1iR0J2cXpNdGMrcjl4NVJTNm1QcS9jZVVVdXBteGdiNnN6TFhQcS9jZVVVdXBqNnYzSGxOTHFac1lHK3JNeTF6NnYzSGxOTHFaUDFmdVBLYVhVellnTjlXWmxyY3RBdWtzeHJVcFBvNDBlRzVzYnUyeTYxR1NqNFM0MTFtNUQwRXhmcWptWmFLbVNaL1ZkSGhPTXE5cEZScUxqZE5ja3ZWNlRYaytabXFpdUtvekM4Y1ZnUmtrdUFBQXF6MDZQVDRUVTdlUE1wYnovRGpQSzJaVFppRy9xTXArQlRiNitJcFhPS1pSTGFjRUZrUmc4NVJBQUFBbkJBQkZrUWlVQklBQWdrQUNDU0NRQUFBQUFBVm5HTTRTaE9LbEdTdzAxbE5GZ1NNVm9XaTJ1aXE4aGFaVks0cmNLb1ArRGl4dXIwR1ZBTFYxMVYxYlZVNWtBQVVBQUFmRzhud2RwV240TUpQM0dpUTVEYzlibnVhVmN2cGpqclpwa1RacDQ0VEsxTDZSSklpU2FGZ2dGV3dQdFoyOVM3dVlVS2ZMSjhiNkYwbTUybHZTdGFFYU5KWWpIM3ZwWml0bUxaUXRwM01sOTZvOFJmb1g2bWJNVjZ2TTRVbVFBSEJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE4T3IyU3ZMU1VVbHdzT09EOVBSK0pwMGVMaWZFYithWHJGSlVOU3J3U3dtOTVmanhtcXhWenBXcGVjRlUrSXNhbGdoa2xXd1B0cHF6cUZzditySDRtOEdsYU9zNnBhcitmSnVwa3Y4NFZrQUJtVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXBWL3VwL3dCTCtCY3BWL3VwL3dCTCtCTURRWW4wUjg0OGhlTFBUZEZnQUFBSXlBR1czaExMZk1qN1dOcFd2YTNCVWw2WlNmSkZHMVdHblcxbkZPRWQ2cHoxSmN2NkhLdTVGSHpSTXRjdDlLdjY2eXFPNUY4OVI3cDZvN1AzVFhIWHBKL2liTURQTjZwWExXdnE5YytVVXVwajZ2WFBsRkxxWnNvSTMxWm1XdGZWNjU4cHBkVEgxZXVQS2FYVXpaUU45V1psclgxZXVQS2FYVXg5WHJueW1sMU0yVURmVm1aYTE5WHJueWlsMU1mVjY1OG9wZFRObEEzMVptV3RmVjY0OHBwZFRIMWV1UEthWFV6WlFOOVdabHJYMWV1ZktLWFV4OVhybnlpbDFNMlVEZlZtWmExOVhybnlpbDFNZlY2NThvcGRUTmxBMzFabVd0ZlY2NThvcGRUSDFldWZLS1hVelpRTjlXWmxyWDFldWZLS1hVeDlYcm55aWwxTTJVRGZWbVphekxaKzZTNHE5SjlhUEpjYVhmMEU1U29PY1Z6dys4YmlDWXZWUVphRG5tWkp0OS9wbHRlSnVVZHlyelZJOHY0OUpxMTdhVnJLdHdWWmN2SEdTNUpJMFVYSXJXaWN2a0NFeVRxa0FBRU1paTkydlNsMFRpL2VHK0lwbkVrK2g1QTZDQ0l2TVUrbEVubHVZQUFBQUFBQUFBQUFBQUFBQUFBQUFBRU5KcHBwTlBpYWZPU0FNWHBHaTJtazNONVVzbHdkSzZjWk9pdVNFbG5rOUR6eUdVQUwxMTFWenRWVG1RQUJRQUFBNWVJMEdwSGNxemg0TW12ZWI4YVJxY2R6VXJtUC9VWnAwODhaaGFsOFlrbFlzc2ExZ0FxMkFTY3BLTVZsdDRTTjEwKzFoWjJzS01lVkxNbjB2bk5YMEttcW1xMFUrTlJ6THFSdUpsdjFmN1ZaQUFaVlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVFRWtBTWpKQUE4OS9hVXJ5ZzZWUllmOE11ZUxOUHIwcWx2V25ScXJFNFBETjRNSnROYXFWR04zRmZlZzFHWHBYTWFMTmVKMlpXaVdBUkpXTEpOaXlTckxGV0JWUzNKUm11V0xUTjhqSlNpcExra2t6UW55RzZhVlU0WFRyZWZQdUpQOE9Jelg0NFJLc3ZVQURJcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJyRzBWb3FGMHE4RmlGYmxYUkpjcHM1aXRwSUtXbTczUENjWCtSMXRUaXBNTllpeTU4MHk2WnVkRWtNQmdVWnNHeWROYnR6VjU4eGorWnI3TmoyVWt2bzF4SG5WUlAzSE85NEpWbG5TQ1FZRkZBV2FJU0FsRWdBUmdqakxBQ3ZHU2lRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVluYWFlN3BqajRjNHI4elZFWnphcTRVcXRLMVQvY1cvTDF2a01KRTMyWXhRdlN0RXNWUk9Ub3NNK2JmS1hiS1l5OExuNGlZRzhhYkRnN0MzZ3VhbXZnZWtyVGp1MDR4NkVrV1BNbWN5NUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5TMmsveldYOUVUYlRUdG9KWjFhdDZGRmU0NzJQRXRTOE1TeUt4TEo4UnRYU1VaWXF5QjdkQ1dkWHQvVy9nemNqU2RJcUtscWR0TnZpMzhQOGVJM1l5WC9FcElBRE9xQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCU3QvYzFQNlg4QzU1TlZyS2hwMXhVYnc5eHBldDhSTVJtY0RTSWNoOUlsSThoZEhwdXNMQWpJeVFESXB3bFZxUnB3VzlLVHdsMHNoc3kyekZGVkwyZFpyS3BSNHZXeUtwMmFabEU4R3dhZmFVN0syalJoeHZsbEx3bWVrQTg2WnpPWmN3QUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCNTc2MXAzbHZLalU1LzNaYzhYMG5vQk1UampBME92U25RclRvMUZpY0hobFVadmFtM1VaMHJxSy9lKzVMOGpCeFo2RkZXMVRsMGlWd1FtTWxrb1o4NWNqUG95akpnYjdidmVvVTVkTUl2M0gwTWZvTmRWOU1vdk9aUVc0L3cvUXlCNXN4aVpoeUFBVkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5PMStPN3ExYjBxTDl4dUpwMnZ6VTlXclkvaDNZOVNORmp4TFV2REV1aWtTeVpzWFNVWmJtS3NnWkRaMlNXclFUNTR5WHVOdk5KMGVlNXFscy93Q2ZIWHhHN0dTLzRsSkFBWjFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaGtnQ21BV0lBZytGOVNWYXpyMG1zNzBIajFub3dRdWdtSndOQmkrSStpSXJRNE92VnB2K0diWHZJVFBUZFZ5ckp5R1FQbXphTm1hbS9wemhuanAxR3V2ak5ZWmx0bWJsVXJ1ZHZKNFZaY1g5U09kMk0wS3kyY0FsTEtNQ2lBTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmk5cEpLT21TVC9pbkZMNG1VTUR0WFV4VHQ2WFRKeWZ3T2xxTTF3bU9iWDRsMFVpWFI2QzRHQUJWbVUyWnVWUnZwVVpQRWF5d3Y2bHlHTFpWTnhrcFJiVWs4cHJtWkZWTzFHQjBJR00wYlU0WHRKUW0xRzRpdnZSOEwwb3laNTB4Tk00bHpBQVZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFENFh0elR0TGFkZXErS1BJdWw4eUl2THVoWjBuVXJ6VVZ6TG5sNmthZnFlb1ZiK3R2VCs3VGorNURQSitwMnQyNXJuMFRFWmZDdlduY1Y2bGVvOHptOHNoRllvdWpjdWxBQUNDMXBEaEx1akR3cWtWN3lqUFhvc2QvVmJaZEU4OVNJbWNSTWpkUUFlWTVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJwT3N2ZTFXNmY4QVBqM0c3R2k2azk3VWJwLzlXWHhOT244VXJVdmlpeTVDcUxJMXJCQkpBRk9OUEtlR3VSbTc2WGR4dkxLbld6OTdHSnJvbHpta3RIcjByVUo2ZmNPU1RsU2x4VGgrYTlKeXUwYmNjRVREZGdmSzNyMGJta3F0Q2FuQjg2UHFZVkFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJyVzFGNnB6alpVNVpVSHZWTWRQTWozYXpxOU8waktqUWFuY1BxaDZYNmZRYXBseWs1U2JsSnZMYjV6Vlp0OGRxVm9oTVN5SVJaR3BZREFZRldiRnNrbHdGeStmZml2Y2E0elk5a3Y4UGMvMXI0SEs5NEpSUEpuZ0FZRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0wyamdwYVZVZmd5aTExbXBSTnkxMVowbTU5RVUvZWFiRTIyUEN2U3VnUWlUdWtaUm91VllHUzJldmxhM1RvMUpZcFZ1TEw1cGN6TnVPZU5HdzZIck1kMk5yZVR3MXhRcXY0UDVtYTlibWZlaFdZYkVDRnhyS0pNaW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCRXBSakZ5bEpSaXVOdHZDUUh6dUswTGVoVXJWSGlNRmxtaVZha3ExYWRXZjcwNU9UL0V5V3U2cDlNbndGQnZnSVBsOE45UHFNWEUzV2FObU15dkVMSXNRaVRza0tzc1F3RnZMY3VLVS9CbkYrODM4NTVMaU4vb1MzNkZPZmhSVDl4bDFFY2xaZlFBR1ZVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRTUVnRFM5YnA4SHF0d3VhVFV1dEhqUmx0cVlidC9UbjRkUDRObUppZWpibk5NT2tMQUxrQmNWWldNcFFtcHdlN0tMeW4wTXVWYUEzTFNyNkY5YXFhYVZTUEZVajBQNUh0aStZMFMwdWExblhWYWpMRWx5cm1hNkdiYnB1cFc5L0Q3ajNLcTVhYmZIK0hTWXJscWFlTWNsSmg3eXBJT0NFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9kZmFwcC9taTY5ckUrbHQzVU5OcTNGS2xQVExtbEdjMUZ6ZFNMVVUzakxOSGQ3dlFkQkE0dVo1WFNET0FBQUFBQUFBQUFBQUFBQUFCcXUwOVRlMUdOUG1wMDB1dmpOclNOSjFpcHd1cVhNdVZLZTZ2dzRqUllqM3NyVXZORXNpcUxJMnJKQUJDVlNyUmNqQVFwRnloTlRoSnhsRjVUVHcwWnF5MmhyVTF1WGRQaGw0Y2VLUmhtaU1FVlUwMWN6RGJxZXZhZE5mZXF5cCtpVUgrUjlPL1dtZVZMc3MwekJHRGx1S1VZYnAzNTB6eXBkbC9JZCt0TThxajJYOGpTOERkSTd2VDFSc3QwNzlhWjVWSHN2NUR2MXBubFVleS9rYVh1amRIZDZlcHN0MDc5YVo1VkhzdjVEdjFwbmxVZXkva2FYdWpkSGQ2ZXFkbHVuZnJUUEtvOWwvSWQrdE04cWoyWDhqUzkwYm83dlQxUnN0MDc5YVo1VkhzdjVEdjFwbmxVZXkva2FYdWpkSGQ2ZXFkbHVuZm5UUEtvOWwvSWQrZE04cWoyWDhqUzkwYm83dlQxTmx1bmZyVFBLbzlsL0lkK3RNOHFqMlg4alM5MGJvN3ZUMU5sdW5mclRQS285bC9JZCt0TThxWFpmeU5MM1J1anU5UFUyVzZkK3RNOHFYWmZ5SGZyVFBLbzlsL0kwdkF3TzcwOVVZYmhVMTdUWUxpcXlxUG9qQm1PdTlvNmtrNDJsRlEvbnFjYjZqQTRKU0xSWm9oT0lXclZhdGVvNmxhcEtwTjg4bVZTSlNMSkhia2tTSlFSS0lTQmdnQ3JNbHMxSGUxV0Q4R0VtWTFtWjJUam05clQ4R25qclpTNU9LSlJQSnRBQVBPY3dBQUFBQVBtNnRKTnAxYWFhNWZ2SStocXUyR3h0bHIwSlhGRnEwMUJMaXF4WDNaK2lhNS9YeWw2WXBtY1ZUZ2JOdzFIeDFQdG9jTlI4ZFQ3YVB6cnEybTMrazNrck8vb1RvMVk4bWVTUzZVK2RIankrbDladWpSeE1aaXBMOUxjTlI4ZFQ3YUhEVWZIVSsyajgxWmZTK3NaZlMrc251WC9MN0dINlY0YWo0Nm4yME9HbytPcDl0SDVxeStsOVl5K2w5WTdsL3dBdnNZZnBYaHFQanFmYlE0YWo0Nm4yMGZtckw2WDFqajZYMWtkeS93Q1gyTVAwcncxSHh0UHRvY05SOGJUN2FQelZsOUw2eGw5TDZ5ZTVmOHZzWWZwWGhxUGpxZmJSYU00VGJVSnhrMTBTVE9LN0o3RTZqclc3YzNMblpXRDQrRWt2djFQNlYrYjR2V2RkMGJTYkRSN1JXdGhRVktDL2VseXltK21UNXpKZHQwMGNJcXpLSHZBQndBQUFBQUFYS2FCY3ZldXEwdW1wSis5bS9jMlRuMG5tY24wdHYzbXJUL0ZhbFpGa1ZpV1JxWENDUUJWb28wZlFob2xDMXBkWEZuVTRTM3FPRDUxelAxb3p0cnRKVGFTdXFFb3Z3cWZHdW8xNW9yZ3BWUlRWek1OeGhybW1TV2ZwRGovVkJvdDM1MHp5cVBaZnlOTXdSZzVkM3BSc3QwNzg2WjVWSHN2NUR2MXBubFVleS9rYVhnYm83dlQxTmx1bmZuVFBLbzlsL0ludnpwbmxVZXkva2FWdWpkSGQ2ZXBzdDE3ODZaNVZIcWZ5SGZuVFBLbzlsL0kwcmRHNk83MDlUWmJyMzUwenlxUFUva1IzNTB6eXFQWmZ5TkwzUnVqdTlQVTJXNmQrZE04cWoyWDhoMzUwenlxUFpmeU5MM1J1anU5UFUyVzY5K2RNOHFqMVA1RWQrZE04cWoyWDhqUzkwYm83dlQxTmx1bmZuVFBLbzlsL0ludnpwbmxVZXAvSTByZEc2TzcwOVRaYnIzNTB6eXFQVS9rUjM1MHp5cVBaZnlOTDNSdWp1OVBVMlc2ZCtkTThxajJYOGgzNTB6eXFQWmZ5Tkx3TUR1OVBWR0cyMXRvTENDZkI4SlZmOHNjZkV4RjdydDNjSndvcFc4SDRQSEovaVlwSWxJdlRhb3BURUlTNVdXU0pTSlNPcVJGa1FpU0VoRDV5U0h6Z1Vac215UDhBaDduK3VQd05iWnNleVA4QWNYWDljZmdjcjNnbFdlVFBnQXdLQUFBQUFBQVlqWDlvdEowS21uZjNHS2tsbUZHQzNweTlPT2owc3RFVFZPSUdYQnp5WGRSMDVTZTdwTjAxek4xSW9qN1VyRHpSZGUxaWRlNzNlZzZJRG5mMnBXSG1pNjlyRXl1elczV242NXFVZFBWclZ0S2s0dDAzVW1tcHRmdzhYUGdpYkZ5SXpNRGJ3QWNRQUFBQUFBQUFBQUFBQUFBQjQ5WVdkTHVsL3dCTm1rUk42MUZiMm4zSzZhVXZnYUxFMmFmbEsxSzZMSXFpeTVEUXZBUVNBS05GR2o2WUl3U2g2N0RWYnl5U2hDYW5TWDhFK05MMWRCbXJmYU8wbXYyOUtwU2w2RnZJMWpCR0RuVmFwcTVvdzNOYTFwaldmcEtYcml4MzUwenlxUFpmeU5Md01IUHU5UFV3M1R2enBubFVleS9rTy9PbWVWUjdMK1JwZTZOMGQzcDZteTNUdnpwbmxVZXkva1QzNTB6eXFQVS9rYVZ1amRIZDZlcHN0MTc4Nlo1VkhxZnlIZm5UUEtvOVQrUnBXNk4wZDNwNm15M1R2enBubFVleS9rTy9PbWVWUjdMK1JwZTZOMGQzcDZteTNUdnpwbmxVZXkva08vT21lVlI3TCtScGU2TjBkM3A2bXkzVHZ6cG5sVWV5L2tPL09tZVZSN0wrUnBlNk4wZDNwNm15M1R2enBubFVleS9rTy9XbWVWUjdMK1JwZTZOMGQzcDZteTNUdjFwbmxVZXkva08vV21lVlI3TCtScGU2TjBkM3A2bXkzVHYxcG5sVWV5L2tIcldtSlora3ArcUxOTHdNRHU5UFV3Mm00Mmp0SUpxaFRxVlpjMlZ1b3dkL3FWM2ZjVldlN1Q1cWNlSmZxZU5Jc2tkS2JkTlBJaUVKRmtna1dSMFNJa0lFSk9ZcXl4VmdVWnZHa3ozOU10cGY5TkxxNGpSMmJmczNQZTBtbXZCbEtQdk9GK1BkVmxsQUFZbEFBQUFBQkVwUmlzeWtvcnBid1U0YWo0Nm4yMEs5R2xYcFRvMTZjS3RLYXhLRTFsTmVvNXJ0WjNPbiswdk5uNU44N3M1eS93RFIva3pyYnBwcW5GVTRIU3VHbytPcDl0RGhxUGpxZmJSK2E2OUt0YjFwMGE5T2RLckI0bENhYWFmcFI4OHZwZldiTzVmOGs0ZnBqaHFQanFmYlE0YWo0Nm4yMGZtZkw2WDFqTDZYMWp1WC9MN0dINlk0YWo0Nm4yME9HbytPcDl0SDVueStsOVl5K2xqdVgvTDdHSDZZNGFqNDZuMjBPR28rT3A5dEg1bnkrbGpMNlgxanVYL0w3R0g2WTRhajQ2bjIwT0dvK09wOXRINW55K2xreFU1eVVZcVVwU2VFbHh0c251WC9BQ01QMHZ3MUh4MVB0b3VtbWswMDArZEhNOWlkZ0hGMDlSMStHV3VPblp2M09mOEEvajFuVElwUlNqRkpKY1NTWElZcmxOTk00cG5LRWdBNUFBQUFBQXdHMWxQTkszcStESnhmNC84QTZOZGliYnRKVDM5S3FQd0pSbDc4Zm1hakUzV0p6UXZISmRFa0lrN0xJSWFMRUFVYUtweWpKU2kzRnJrYWVNSDB3VndTaGxiUFg3dWlsR3ZGWEVWenZpbDFtVm82L3A4MTkvaEtUL21qbjRHcVlJd2NwczBTakVOeTc4Nlo1VXV5L2tPL09tZVZSN0wrUnBtQmdwM2VucWJMYysvT20rVlI3TCtSSGZuVGZLbzlsL0kwM2RHNk83MDlUWmJsMzQwM3lxUFpmeUo3OGFaNVZIc3Y1R21ibzNSM2VucWJMYysvR21lVlI3TCtRNzhhWjVWSHN2NUdtYm8zUjNlbnFiTGN1L0dtK1ZSNm44aDM0MDN5cVBVL2thYnVqZEhkNmVwc3R5NzhhYjVWSHFmeUhmalRmS285VCtScHU2TjBkM3A2bXkzTHZ4cHZsVWVwL0lkK05OOHFqMlg4alRkMGJvN3ZUMU5sdWZmalRmS285VCtRNzhhYjVWSHFmeU5Od1NrTzcwOVRaY2lBQjZ5cjlBN0VhajMwMlhzTHFVdDZvcWZCVlA2bzhUL0ovaVp3NWYzR2RSKzlxR2t6bHlwVjZhOTB2eU9vSGhYcU5pNU1JQUFjUUFBQUFBQUFBQUpRREJLUUpBcktTaENVbnlSV1RuODVPcFVuTjhzcE45Yk4zMWFwd1dtM00rZmcybCtQRWFORTE2ZU9FeXRTdWk2S29rMHJKQkFDVWtZQUNEQkdDUUJYQXdXR0FLNEdDMkJna1Z3TUZzREFGY0RCYkF3QlhBd1d3TUFWd01Gc0RBRmNEQmJBd0JYQXdXd01BVndNRnNEQUZjREJiQXdCWEJLUklJRVlKUUFFZ2dCS1NIemdoaENHYkJzbEQ3dDFVOU1ZL0UxNW0wYktSeHA5U1hoVlg3a2psZW4zSlJQSm1nQVlGQUFBQUFCV3BPRk9uS3BVbW9RaXN5bEo0U1hTU21tazA4cDhhYU1OdHBWNEhaYlU1OU5GeDYybCtaenpaUGJDNjBkd3RMdmV1YkRPTWNzNlg5UG85QjZPbjBOelVXWnVVYzRua2wwdlhkRjAvVzdOMnVvVUZVaXVPRTF4U3B2cGl6ak8xZXllb2JQVmQrZjlvc3BQRUxtQzR2Vkpjek8zNmZlMnVvV3NMcXpyUnJVWjhrby9COUQ5QjlxMUtuV3BUbzFxY2FsT2F4S0UxbFNYUTBaN2Q2dXpPSitpSDVvQjBQYkx1ZjFMWGZ2dENoT3RRNDVUdGVXVVA2ZWxlamw5WnowOWEzY3B1Um1sS0FBZEFBTnAyVDJNMUhYWlJyMUU3U3d6eDE1cmptdjVGeit2a0tWVnhSR1prYS9wOWpkNmhkUXRiSzNuWHJUNUlRV2Z4ZlF2U2RXMlM3bjlwcCs1ZDZ4dVhsMnNPTkxscDAzL0FQMmZ1TnAwTFJOTzBPMCtqYWZRVUUvMzZrdU9jMzB0bVFxVGhUcHlxVkp4aENDektVbmhKZExQTXU2bXF2aFR3Z1N1SllSVlZLYnFTcEtjWFVpazVSVDQwbnlaUm9PMCsza1lPVnJvYlU1Y2tycVM0bC9TdWYxcyszY3FsVnJVZFZ1cTA1VktsU3RCU25ONWI0bnovaWRLdEJjbzA4M3JuRGxpUGp6K3hodllBUE9RQUFBQUFLVlhpbE45RVcvY2MvajBtK1hzdDJ6dUpkRk9Yd05DaHlHdlQ4cFdwZlJGa1ZSSnBXU0NBRTVTUUFFSXdNRWdDdUJnc01BVndNRnNEQklyZ1lMWUdBSzRHQzJCZ0N1Qmd0Z1lBcmdZTFlHQUs0R0MyQmdDdUJndGdZQXJnWUxZR0FLNEdDMkJnQ3VDVWlRUUNKU0lBRWdnQk9Va1BuQkRDRldiSHNqL0FITjEvWEg0R3VNMlBaSCs1dXY2by9Cbks5NEpSUEpud0FZRkFBQUFBQjhieTRqYTJkZTZtc3hvMDVWR3VsSk5uNTIxTy91ZFR2NjEvZHpjNjFhVzgzMGRDWG9YSWQvMmhXZEExTmYvQUJhbi9xejg3Ui9kWHFQUzBVUmlaVENBU0QwQkI5Yld2V3RibWxjMjgzQ3RTbXB3a3VacDhSOGdRUDBQczVxMUhXOUh0OVJwY1RxTEZTSGdUWEt1c3laeDN1V2E3M3YxWjZYWG5pMnZYaUxmSkdyemRmSjFIWWp4YjF2ZDE0K0NBQUhBQUFBQUFBQUFBQUFBQUh5dWx2V3RaZE5PWHdab01PUTZEVVdhYzEweGZ3T2ZSNHVJMTZmbEsxSzZMTGtLb2swckpCQUNjcHdRQUVJd1Jnc0FLNEdDd3dCWEF3V3dNRWl1Qmd0Z1lBcmdZTFlHQUs0R0MyQmdDdUJndGdZQXJnWUxZR0FLNEdDMkJnQ3VCZ3RnWUFyZ1lMWUFGY0U0SkJBRW9nQVNDQUU1U1F3UXdoVm16Ykp6elkxb2VEVStLTlpabjlrWjhkMVQvcGw4VWNyM0dpVVR5YkdBREFvQUFBQUFLVktrS1ZPVlNwTlFoQlpsS1R3a3VsbGsxSkpwcHByS2E1R2ZEVWFQMGpUN3EzOGJSbkRyaTBjZzJaMnMxTFEzR2hKL1NyTlBEb1RmSEgrbDgzcTVEZnB0RlZxYUtwdHp4ajRKdzZYdExzeHBldjBYOUxwY0hjcFloYzAxaWNmbXZRemoyMCt5bXFiUDFISzRodzFxM2lGelRYM1g2L0Jmck8xYUhyZW5hMWI4TFkxMUtVVjkrbExpbkQxcjh6SVZhZE9yVGxTcXdqVXB6V0pSa3NwcjBvNTAzYmxpcllxai9Fb2ZtWUhVOXErNXpUcTc5M3MrMVRueXl0SnkrNi82SHplcDhSekc2dDY5cGNUdDdxak9qV3B2RXFjMWhvOUszZHB1Um1sTDVBQTZnQVpuWm5aelVkb0x2Z2JTRzdSZzF3dGVmN2tGK2I5Qldhb3BqTWpINmJZWGVwWGxPenNxRXExZW84UmpINHZvWHBPeWJGN0ZXbWh4amQzZTVkYWkxKy9qTWFYb2o2ZlNaZlp2WjdUdG43UGdMS20zT1g5NVhuKy9VZnA2RjZETUhsM3RUTmZDbmtaQ2lxVTNWbFNVNHVwRktVb1o0MG55Tm8wN2EvYlNqcHUvWmFaS0ZlOVhGS3B5d3BmTitndzNjdnZxMWJYdFFWelZsVnEzTkZUbE9ieTIxTDlUdFQyZmRuVDFYNnVFUnk5VERwb0FQTlFBQUFBQVBMcWRQaGRQdWFmVFRabzBUb1RTa25GOGo0alFLa09EcXpwK0RKeDk1cjA4OEpoYWtSWkZVU2FWa2dnQkpnWUFDRVlJd1dBRmNEQmJBd1NLNEdDMkJnQ3VCZ3RnWUFyZ1lMWUdBSzRHQzJCZ0N1Qmd0Z1lBcmdZTFlHQUs0R0MyQVFNRjlsbW8rZHJUMmN4OWxlbytkN1QyY3pyV0gwUHFHSDBNeTk2dTlYTnpyWmZZTFU5RDF5MjFKYXBiVGhTYlZTRVlTVG5GckRSMFFuRDZHTVBvWnhydVZYSnpVSUJPSDBNWWZRK281aUFUaDlENmlNTmNxQUFBQUNVQUlKUkFBc2lTRVNCaU5wNm01cGpobmpxVGl2ei9BQ05UaWJCdGRVNDdhai9WSi9BMStKdnN4aWhlT1M2SklSSjFTQUFBQ01qSUVncmtaQXNNbE41RGVKRjhqSlRlUTNrQmZJeVUza041QVh5TWxONURlUUY4akpUZVEza0JmSXlVM2tONUFYeU1sTjVEZVFGOGpKVGVRM2tCZkl5VTNrTjVBWHlDbThodkxwUUZ3VnlTbVFKQkdTUUFBQUVNa2dDck52MmNqdTZUU2ZoT1Q5NXA3WnUranczTkx0by85TlByT0Yvd29sN0FBWWxBQUFBQUJySGRIcWNIc25jcnhsU25EL2xuOGpqeDFYdXExTjNaK2hUOFpjeDkwV3psUjlqMlBUalRaNnpLME1sb090MytpM1hEMmRYRVpZNFNsTGpoVVhwWDU4cDF6WnZhS3cxMmh2VUpjRmNSWDdTM20vdlI5SzZWNlRpSjlMYXZXdGE4TGkzcXlwVnFiekdjSGhwbmZXZG4yOVRHZVZYWDhtSDZFTk0yeDJIdE5aMzd5dzNMVFVIeHZpeENyL1YwUDA5WlhaSGJXanFHNVphbzQwTHQ4VWF2SkNxL3lmdU4xUGtibHE5cGJtS3VFL3FxL050L1pYV24zVTdTOW9Ub1Y0UGpoTlkvSDByMGtXZHJjM3R4QzJ0S0U2OWFieEdFRmxzNzV0RnMvcDJ2Mm5BWHRQRTRyOW5XaHhUcHYwUG85Qk96MmdhYm9OdHdOaFJ4T1NTcVZwY2M2bnJmNUkwOThqWjVjVXRVMlM3bnRDMDNMelhOeTVycmpqYkxqcHcvcThKKzcxblFJcFJpb3hTU1N3a2xoSU5xS2NtMGtsbHQ4U1JvdTFHM2RHMzM3VFJYR3ZXNDFLNGF6Q1A5UGhQMDhod3QycjJycnhUR2YwaERadGUxN1R0RW9jSmVWYzFHdnVVWWNjNS9oekwwczVUdEp0UHFPdVZIQ3BMZ0xSUDd0dkI4WHJsMHN3OTFjVjdxdk80dWFzNjFhbzh5bk41YlBsZytxMGZadHZUZTlQR3JyK0ZvZ09wOXlpR05DdXArSGN2M1JSeXc2NTNNWWJteTBaZUhYcVAzcGZrYysxNXhwZm5NRXRzQUI4YXFBQUFBQVBIcTh0M1M3cC85Tm1rUk56MTk0MGk1OUtTOTZOTWliTlA0WlhwWFJKQ0pOQ1FBQUFDTWdTQ01rWkFzTWxONWRJM2tTTDVHU204aHZJQytSa3B2SWJ5QXZrWktieUc4Z0w1R1NtOGh2SUMrUmtwdklieUF2a1pLYncza0JmSXlVM2tONUFYeU1sTjVEZVFGOGdwdkRQcEF1Q3VRbVFMQWpJeUJJQUFFTWtnQ3JOaTJSL3VycitxUHdacnJOaTJSL3VycitxUHdaeXZlQ1VUeWJBQURBb0FBQUFBUFBxTnU3clQ3cTFqSlJkYWxLbW0rUlpUWDVuTUYzTHRSU1M3N1duczVuVnhoOURPdHU3WGI4STVSOWwybytkclQyY3g5bDJvK2RyVDJjenErSDBNWWZRenIzcTcxSEtQc3UxSHp0YWV6a1BzdTFIenRhZXptZFh3K2hqRDZHTzlYZW81VER1WWFsR1NsSFY3V01rOHBxblBLZlNkUHNZWE5Pem9RdktrS3R4R0NWU3BCTktVbHl2ajZUNzRmUXhoOURPVmQycTU0Z0F3K2hqRDZHY2dBdytoakQ2R0FBQUFBQUFBQUFBQTU3SlluSmRFbjhUb1M1VG45d3QyNXJSNkp5WHZacTAveFdwRVNWUlpHcFlBQUFBaklFZ2pKR1FMQXBsRGVSSXZrWktieUc4Z0w1R1NtOGh2SUMrUmtwdklieUF2a1pLYnlHOGdMNUdTbThodklDK1JrcHZJYnlBdmtaS2J5RzhnTDVHU204aHZJQytRVTNrTjVBWEJUUHBKeVFMQWpJeUJJQUFFTWtoZ1ZabDlsWjd1b1ZJZUhUZnVaaUdlL1o2ZTdxOUgrYk1mY3lsY1pwbEU4bTVnQTg1UUFBQUFBRnk4WitmOEFWYVAwZlU3eWg0dXZPUFZKbjZBT0k3YlVlQTJxMU9PT0tWWGZYNHBNK2c3RXF4Y3JwOVAwL3dEVnFXSnRMcTRzN2lGeGExcDBLMFAzWndlR2pwR3pHM3RHNDNMWFdsR2hWNGtybVA3a3Y2bC9DL2NjeEI3K3AwbHJVMDRyamoxK0tjUDBSQ1VaeFVvU1VveVdVMDhwb3hHMFd6bWw2L2J1bmUwVXFxV0lYRU9LcEQxUG5Yb1p5N1pyYXJVZERrcVVKZlNMUFBIYnpmRXY2WHpQM0hWZEIxN1RkYm91ZGxXL2FSWDM2TStLY2Z3NTE2VWZKNnJRWHRKTzF6anJIN3E0dzQ1dFRzZnFtZ1NsVm5INlRaWis3YzA0OFMvcVg4TDl4clorbTVSaktMakpLVVpMRFRXVTBhbzlndG51K3kxQlc4bEJjZjBYUDdKeTZjZEhvNUN0dlZ4ajN4b0d4ZXhOM3JiaGVYdS9hNmRuS2VNU3JmMCtqMDlSMk93c3JYVDdTbmFXVkNGQ2hUV0l3Z3YvQU15L1NmZUtVVW94U1NTd2t1WThtcWFqWjZYWnl1NzZzcVZLUEY2WlBvUzUyWnE3bGQrckVmNGhEMDFhbE9sVG5WcXpqVHB3V1pTazhKTHBiT1o3WWJiVkxyaExEUnB5cDIvSk81WEZLcDZJOUM5UEtZYmFyYW04MTJvNlVjMjlqRi9jb0ovdmVtWFMvY2E2ZlNhRHNxTGVMbDdqUFRvdEVCc2ZjOXI4QnRaWkxPRlYzcWIvQUJpL2thNGUvUWEvMGJXOVByNXh3ZHhCL3dESTlqVVViZG11bnJFcGQ3QTUyRDg3VUFBQUFBQTBqV2FmQjZwY3g2Wjd5L0hqTjNOVDJvcDdtcEtmakthZlZ4R2l4UHZZVFN4UzVDeFNKWkd4ZElBQUFBQUNNa1pBc0N1U041ZEpJdmtaS2J5RzhnTDVHU204aHZBWHlNbE41RGVRRjhqSlRlUTNrQmZJeVUza041QVh5TWxONURlUUY4Z3B2SW5JR2g5K2RYODYzbnQ1Zk1kK2RYODYzbnQ1Zk04QVBzOTFiOHNmUkQzOStkWDg2WG50NWZNZCtkWDg2WG50NWZNOEFHNnQrV1BvUGYzNTFmenBlZTNsOHgzNTFmenBlZTNsOHp3QWJxMzVZK2ljUGYzNTFmenBlZTNsOHo2VyswR3QwS2lxVXRWdTFKZUZWY2wxTXhoSkUyYmM4SnBqNkk0T3diRDdUUFhhRlNoZFJqQzlvSk9XNnNLcEh3a3ViMG0wSEorNVpDYjJrcVRqKzdDMm52Zmkwa2RaUjhWMmxZb3M2aWFhT1hOV1JJa2tIbW9VQmJCR0FDTEVJa0RVZHA2bS9xZTU0dUNYNW1MUjZOVXFjTHFWelBQL0FOeHBmaHhIblI2VkVZcGlIU09TeUpJUkpaTUJBSWJDREo5clMwdUx1cHVVS2JrK2Q4aVhyWjZOSTA2ZC9WYmVZVUlQNzB1bjBJMjYzb1VyZWtxVkdDaEJjeU9OeTdGUENPYUpuREVXbXoxR0NVcnFwS3JMd1k4U01uU3NyT2tzVTdhbEgwN3VUMGd5VFhWVnpsWEtuQlUvRnc3S0hCMC9GdzdLTGdxaFRnNmZpNGRsRGc2Zmk0ZGxGd0JUZzZmaTRkbERnNmZpNGRsRndCVGc2Zmk0ZGxEZzZmaTRkbEZ3QlRnNmZpNGRsRGc2Zmk0ZGxGd0JUZzZmaTRkbERnNmZpNGRsRndCVGc2Zmk0ZGxEZzZmaTRkbEZ3QlRnNmZpNGRsRGc2Zmk0ZGxGd0JUZzZmaTRkbERnNmZpNGRsRndCVGc2Zmk0ZGxFU29VWkxFcU5OcjB4UjlBTWpHM09qV05kUEZMZ1plRlQ0dmNZRFV0S3VMTE0vNzJqNGNWeWV0RzRrTktTY1pKTlBpYWZPZGFMdFZLWWx6OU1reVd1NmNyS3NxbEpQZ0tuSXZCZlFZeE0yMHpGVVpoZFlFSWtsSnpGV1NRd2hTUjBDM2p1VUtjUEJnbDdqUXFNZCt2VGg0VWt2ZWRCNU9JemFqNEt5QUF5S2dBQUFBRFFPNjNVeGFhYlJ6eTFKeTZrbCtaelkzdnV0VmM2aHA5RHdLTXBkY3Nma2FJZmNkbVU3T2tvL3orcTBBQVBTU0c2YkpiYTF0UDNMTFZIS3ZhTGlqVjVaMC9tdmVhV0RoZnNXNzlHeGNqTUlmb08ydUtGMVFoY1cxV0ZhbE5aak9EeW1lUFd0WjAvUnJmaHI2dW90L3VVNDhjNXYwTDh6ajJoYlFhcG91K3JHdWxUbm5OT2EzbzU2Y2RKNEwyN3ViNjVuYzNkZWRldFBsbk41Zi9BT2p3S094WjNudlZlNzkwWVp2YWJhelVOYmNxS2J0YlBtb1FsKzkvVStmMWNocnVDUWZRMnJWRnFuWW9qRUpNQUE2cERzdmMraHViSldQODIvTHJrempSMi9ZK253V3pHbVEvNkNmWGxuaGR0VC84S1k5ZjJsRXN3QUQ1SlVBQUFBQVl2YVI0MGlxdW1VVjd6VUltMTdVeXhwaVhUVWorWnFrVGRZOEM5S3k1Q3lLb3NkbG9DQ1NvRWtMTGVFc3Q4aVFXVzBrc3Q4U1NOcjBYU28ya0ZXclJVcmhyc2VoZWtwWFhGRVpsV1p3eHRob05hcWxPNms2TWZBWDd6K1JtcmZTckNnbHUyOFpQd3AvZVo3Z1lxcmxWWHhWeW9xVkpMQ3BRWHFpaHdkUHhjT3lpNEtJVTRPbjR1SFpRNE9uNHVIWlJjQVU0T240dUhaUTRPbjR1SFpSY0FVNE9uNHVIWlE0T240dUhaUmNBVTRPbjR1SFpRNE9uNHVIWlJjQVU0T240dUhaUTRPbjR1SFpSY0FVNE9uNHVIWlE0T240dUhaUmNBVTRPbjR1SFpRNE9uNHVIWlJjQVU0T240dUhaUTRPbjR1SFpSY0FVNE9uNHVIWlFkS20rV25Ec291QVBMWDAreXJwcXBiVStQbmlzUDNHSHZ0bjJrNTJkUnkvNmMveVpzUUwwM0txZVVweTUvT0U2YzVVNmtYQ2NlSnhrc05FRzQ2dHB0TytwTnJFYThWOTJmVDZINkRUNXhsVG5Lbk5PTW92RFQ1bWJiZGNWd3RFNUVTVkxJdXRBUVNRQlZtdzdJZjNkMS9WSDRNMTFteGJJZnVYWDlVZmd6bmU4RXF6eWJDQUR6MUFBQUFBQjhMNXRXVnk0dHFTcFRhYTVudXM0ZEhXTlh3di9BS3BlY25qNWZNN2xkck5wY0xwcFMrRFB6K3VSSDB2WWxOTlVWNWpQTDkwdzkvZmpWL09sMzdhWHpIZmpWL09sMzdhWHpQQUQ2SGRXL0xDWHY3OGF0NTB1L2JTK1k3OGF0NTB1L2JTK1o0QU4xYjhzZlFlL3Z4cTNuUzc5dEw1anZ4cS9uUzc5dEw1bmdBM1Z2eXg5Qjd1L0dyK2RMdjIwdm1PL0dyK2RMdjI4dm1lRURkVy9MSDBIdTc4YXY1enUvYnkrWlBmalZ2T2w1N2FYelBBQnVyZmxnWnZUdHFOZHNhcW5EVUt0YUtmSFRyeTM0dnJPcGJMNjliNjlZY1BUU3AxNmVJMXFPYzdyNlYwcG5FamJlNWpYblQybGRGUDdsYWhOU1hUampSNVhhV2l0VjJhcmxNWXFqaVlkWkFCOGNxQUFBQUFDTkQxR083cU56SG9xeStKdmhvK3NMZDFXNlgvVVpwMC9PVnFYbVJLS29zaldza0FoaElSa1pQWnBGaksvdWQza3BRNDV5OUhSNnlKbUlqTW9WMCt3dUw2ZUtVY1FYNzFTWElqWWJUUXJPaWs2dWE4LzV1SmRSazZOS25ScFJwVW9xRUlyQ1NMbU91OVZWeVV5K05PMnQ2YXhDaFRpdlJCRitEcCtMaDJVWEJ4eWhUZzZmaTRkbERnNmZpNGRsRndCVGc2Zmk0ZGxEZzZmaTRkbEZ3QlRnNmZpNGRsRGc2Zmk0ZGxGd0JUZzZmaTRkbERnNmZpNGRsRndCVGc2Zmk0ZGxEZzZmaTRkbEZ3QlRnNmZpNGRsRGc2Zmk0ZGxGd0JUZzZmaTRkbERnNmZpNGRsRndCVGc2Zmk0ZGxEZzZmaTRkbEZ3QlRnNmZpNGRsRGc2Zmk0ZGxGd0I4YWxyYlZGaXBiMHBMMHdSanJyUWJPcW02TzlRbC9MeHJxTXVDMFYxUnlreTBtLzA2NXNwZnRZNzFQUEZVanlQNUhrVE4vbkNNNFNoT0tsR1N3MDF4TTFUVzlMZG5KMTZDemJ0OG5QQi9JMVc3dTF3bm12RXNZU1ZUSlIzU2toa2tNSlZaOTlMbndlcFcwdWlvajRzaW5MY3F3bjRNay9lSmpNWVE2RUNFOHJLNXlUeTNNQUFBQUFEa1hkUG9jSHRPNm5OV29RbDFaWDVIWFRtbmRibzR2Tk91TWZ2VTV3YjlUVC9BRFBYN0lxMmRWRWRZbjgvc21PYlFBQWZacmg5YmF2V3RxOEs5dlZuUnF3ZVl6ZzhOSHlCSE9NU09sYk1iZlU2bTVhNjJsVG55SzZpdnV2K3BjM3JSdjFPY0trSTFLYzR6aEpaVW92S2E5RFB6dVpuUk5wTlcwYW5PbFozSDdHU2Y3S290Nk1YMHBjelBCMWZaRk5mdldPRTlQaC9DdUhWZHB0bzdIUXJkdXRKVmJxUy9aMjhYeHk5TDZGNlRrT3Q2dmZhemVPNnZhdTgvd0NDbXYzYWE2RWp5WFZ4WHVyaWR4YzFaVnExUjVsT2J5Mno1RzdSZG4yOUxHZWRYWDhKaUFBSHBBU3BPTFVseXhlVVFBUDBIWlZsY1dkQzRpOHFyVGpQUHJXVDdtRTJLci9TTmx0TnFaeTFSM0g2NHRyOGpObjV6ZG8yTGxWUFNaVUFBY2dBQUExM2E2bjkyMnE5RGxGL0UySXhHMDlQZjB0eXgrNU9ML0k2MnB4WENZNXRVUlpGSWwwZWd1a0FFSlFBVmJDRm9SbFVtb1FpNVNrOEpKY2JNOVliUDVpcDNzMm0vd0Q3Y0h5ZXRucjBEVG8yMUJYRldPYTlSWjQvNFYwR1hNdHk5T2NVcXpMelViQ3pvckZPMnByMHVPWDd6NjhGVDhYRHNvK2dNMlpsVjgrQ3ArQkRzb2NGVDhDSFpSOUFCOCtDcCtCRHNvbmdxZmdRN0tMZ0NuQlUvRnc3S0k0T240dUhaUjlDR0I4OXluNHVIWlEzSWVCRHNvc0FLOEhEd0lkbERjcCtMaDJVV0FGZURoNEVPeWh3ZFB3STlsRmdCWGc2ZmdSN0tIQjAvQWoyVVdBSDUyQUIrbHJnQVNDUVlKQkNCQUFEbzNjanR2dWFsZU5jcmhTVDk3L0k2SWpWTzVsYjhCc3RUcU5jZHhWblUvRE9GOERhejRQdEN2YjFWYyt1UHB3VVNDQ1RBQUFBRmFrbENuT2I1SXBzc2VMV2F2QmFYY3o1OXpkWDQ4Uk1SbWNEU041eWxLVDVaUEpaRklsMGVvNkxBRUVDRDYyZHZPN3VZVzlQbG0rWG9YT3o0czJMWk8zVzVXdXBMamIzSXYwYy93Q1JTdXJacHlTemx0UXAyMUNGQ2tzUWdzTDAraytvQjU3bUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSGwxSzJWMVkxcUxYRzQ1ajYxeUdqTDBuUTBhQmR4VWJ5dkZjaXFTWHZacjA4ODRXcFZSSlZGalNzRldTUXdQdnBjTi9VcmFQVFVpYjJhWnM3RGYxZWovS25MM0c1bVMvUHZRcklBRE1xQUFBQUFPVGQxS2JlMGtJdmtqYlF4K0xiTlFPcTkwVFoydHFsR25xRmpUZFM1b1IzWjAxeXpoeThYcFJ5dWNaVTV1RTA0U1hFNHlXR2o3anN5N1JjMDFNVXp4amhLMElBNHVsRGk2VWVra0NIRjBvWlhTZ0pCR1Ywb1pYU2dKQkdWMG9aWFNnSkJHVjBvbks2VUFmSXp2ZWowblEwbXlveVdIVG9RaTE2ZDFITk5pdGs3bS91cVYvZjBaVWJLbTFPTVpyRHJOY2lTNlBTZFhQbGUyTlJSWFZUYnBuT09hc2dBUG4wQUFBQUFEQjdXdkZqUmowMWZ5WnE4VFpOcjMreHRvOU01UDNHdHhOOW53THh5WFJKQ0pPcVVFTWxsR3lSbk5sN05WYTByeW9zeHBQRVA2dW44RGFEeGFMUlZEVEtFTVljbzcwdlcrTTlwNTF5cmFxbFNRQUhOQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3Q3VldpaktuZVFYNzMzSit2bVpzaDRkYXBLcnBkekhIR29ieTlhNHpwYnEyYW9URFMwU2lrUzZQUVhTUXlTR0JWbXc3SWZ1WGZyaitacnpOaDJQL2R1L1hIOHpuZDhFb25rMklBSG5xQUFBQUFENTNDemIxVjB3bDhHZm4xSDZFcWNkS2EvbGZ3UHo0K0p0ZWsrbTdENVhQOGZ1bUVBQStrV0FBQUFBQUFBQUFBTmw3blV0M2F5MTlNS2kvd0NMTmFOZzJDbHU3V1dIcGxKZjhXWmRYR2RQWDhwL1JEc3dDQitmcWdBQUFBQWFWcjZ4ckZ6NlduN2ticWFidEdzYXZWOU1ZdjNHalQrSmFubXg2SlJWRmx5R3haSkRKS3NDR3pkTkZ0VmE2ZlRqakU1cmZuNjJhZGJRNFM1cFUzL0ZPSzk1MEQwR2EvUENJVmtBQmtWQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBcFVwd3EwNVU2a1ZLRWxocDg1Y0VqUmRRdFpXVjVVb1M0MHVPTDZWekhuUnNlMWxCT2pSdVV1T0wzSlAwUGtOYlI2RnVyYXB5NlJ4WEJDSkxpcFNYSXk3NXlqSmdiL1pUNFN6b1Q4S25GKzQreDROQ252NlRiUG9oanFiUGVlWlZHSm1ITUFCVUFBQU5IN3JGQnowaXp1RXNxbFhjVytoU2o4MGJ3ZVRWTEdocVZoWHNibU9hVmFPNjhjcTZHdlNqVHBiMjR2VTNKK0JEZ0pCbWRvTm50UTBTNGxDNHBTcVVNL2N1SVJlNUpmay9RekRaWFNqNzZpdW01VHRVVG1Gd0RLNlVNcnBSZElCbGRLR1Ywb0FCbGRLR1Ywb0FCbGRLR1Ywb2tBTXJwUjZMR3p1cis0amJXZENkZXJKNFVZTFBYMElpWmlJekk2cDNMNnJxYkxxRDVLVnhPSzlYRS96TnVNVHN0cFBlWFJhRmk1S1ZWWm5WbEhrYzN5NDlITVpZL1B0VlhUY3YxMVU4cG1YTUFCbUFBQUR5YXRUNFhUYm1IUHdiYS9EalBXVm5GVGhLRDVKSm9tSnhPUnoySmRGWEZ3bktENVl2QktQVWRGZ0NDQkI2dElvSzUxS2pTa3N4enZTWG9YR2VWbVUyWHc5VGVlYW5MOGl0YzRwa2JjQUR6WE1BQUFBQUFBQUlKQUZTQ3hBRUFrQVFBQUFBQS9Pd0JLUittT2lFaVFDRUFBQURrVFlQUnB0QjNXb1d0c2xsMWEwSWRiSW1ZaU15TzQ3T1d2MExRYkMxeGh3b1J6NjJzdjRtUkNTaXQxY2k0a1NmbkZkVTExVFZQeFVRU0FVQUFBRERiVlZOM1RZdzhaVVM2c3N6SnJXMTlUNzl0UlhNbkovQTYyb3pYQ1k1c0JFdWlrU3lQUVhXSVlJWUZXYnBvTlBnOUt0MXp5VzgveFpwVHkrSTZEYlE0TzNwVTEvQkJMM0diVVR3aUZaZlFBR05VQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSejZ2TGZ1YTAvQ20zN3pmYmlmQjI5V3A0TUcvY2M5anhtdlR4eldwZlJGaWlMR3BZNWlySktzRE1iS1J6cU5TWGcwbjcyamJEV3RrSWZ0THFmUkdNZmV6WlRCZThhazh3QUhGQUFBQUFBSG11TEd5dVpiMXhhVUswdW1wVFVuN3owZ21KbU9NRHc5Nk5LODIybnNZL0lkNk5LODIybnNZL0k5d0w3eXZySThQZWpTdk5scDdHUHlJNzBhVjV0dFBZeCtSN3dONVg1cEhnN3o2VjV0dFBZeCtSUGVqU3ZOdHA3R1B5UGNCdksvTkk4UGVqU3ZOdHA3R1B5SGVqU3ZOdHA3R1B5UGNCdksvTkk4UGVqU3ZOdHA3R1B5TDBkTjA2ak5UcFdGdFRtdVNVYVVVMTdqMWdieXVmaklBQTVnQUFBQUFBQURXdHI1ZmZ0WStpVE1ERXpXMXovQUxaUWowVS96TUpFOUcxSHVRdkhKZEVsVVRrdWxES1M1R1haVGxrbDZTUjBHZ3NVS2E2SUplNCtoRVZpS1hRaVR5M01BQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUI1Ny9BUHdOei9wUytEUFFlZlVQOEJjLzZVdmdUSE1hRkhrUG9qNVE1RDZJOVIwV0lZeVFRSVpzT3gvSmQrdVA1bXVzMkhZL2t1L1hIOHpuZDhFb25rMk1BSG5xQUFBQUFDSmNjWkwwTS9QbFRpcVRYOHorSitoT1kvUHRaWXJWVi9QTDRzK2s3RC8vQUtmNC9kTVBtQUQ2VklBQ1VnQUlRQUFBQUFCbXRpNWJ1MU9tUC9ySmRhWmhUS2JMUzNkcE5NbC84bUh4T09vak5tdVBTZjBIY2tBRDg4VkFBQUFBQTFEYWhZMVhQVFRpL2liZWFwdFlzYWhUZlRTWHhaM3NlTk5QTmg0bGx5RklsamN1c1ZaSlZnZld5bHUzdENYUlVqOFRmbnlzNTNUZTdWZytpU2Z2T2lHVFVSeGhXUUFHVlVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmpkb1liMmtWLzVjUzk1cHFONTFXRy9wdDFIcHBzMFdMTnVuOE1yMHZvaVNxSk82UW95eFZramJ0bDU3MmxSWGdUa3Z6L015eGdOa0o1dHJpbjRNMCt0Zm9aODg2NUdLNVVrQUJ6UUFBQUFBSWxGU2k0eVNsRjhxYXltZUtXazZYSnR2VGJSdDgvQXgrUjdnV2lxcW5sSThIZWZTZk5scDdHUHlIZWZTZk5scDdHUHlQZUMyOHI4MGp3ZDU5SjgyV25zWS9JZDU5SjgyV25zWS9JOTRHOHI4MGp3ZDU5SjgyV25zWS9JZDU5SjgyV25zWS9JOTRHOHI4MGp3ZDU5SjgyV25zWS9JZDU5SjgyV25zWS9JOTRHOHI4MGp3ZDU5SjgyV25zWS9JOU52Ylc5dEhjdDZGT2pGOHFwd1VmZ2ZZRVRYVk1ZbVFBQlFBQUFBQUFBQWFMcXRQZ3RUdVlMazMyMStQR2VkR1Mybmh1YW81ZUhDTC9MOGpHSm5wMFRtbUpkSVhJNWdDUkRQZnM3VTNOWHBMbW1uSDNHUFpleXE4RGUwS3ZnVkUvZVJWR2FaZ2RBQUI1am1BQUFBQUFBQUFBQ0NDeEFFQUpEQUVBbkJLUUZRV3dSZ0Q4N0lHWStyTzBQbWE3N0ErckcwUG1lNjdCK2k5NHMrZVByQzdEZ3pIMVoyaDh6M1hZSStyTzBQbWU2N0E3eFo4OGZXRU1RREwvVm5hSHpQZGRnbjZzN1ErWjdyc0R2Rm56eDlZR0hObjduV25UdmRwS05mZGZBMmY3V2N1YlBKRmRmd0xhVnNOcnQ1Vmo5SW9LeG81KzlPczFuSG9pdU5uVU5CMGV6MFN3amFXa1gwenFTL2VxUzZXZVYyaDJqYW90VGJ0em1xZUhENEdXU0FCOGVxQUFBQUFCcHUwMVRmMWFjZkZ3akg4L3pOeU5DMUtwdzJvM05UbWRSNC9EaU5PbmozcGxhbDhJbGtWUlkyTEJESklZSDBzcWZEWHRDbDRWU0s5NXY1cG16a04vVjZUOEJTbDdqY3pIcUo5NklWa0FCbVZBQUFBdytoOVF3K2g5UUFERDZIMUFBQUFBR0gwUHFHSDBQcUFBWWZRK29ZZlErb0FCaDlENmh5Y29BQUFBQUFBQUFBQUFBQjQ5WW51YVhkUy82YlhYeEdpeE55MmxudTZSVlhoU2pIMy9vYWRFMjZlUGRsZWxaRWhBMEpPWXF5ektNRFo5a1lZdGJpZmhWRXVwR2VNVHN2RGQwcU12RG5KL2taWTg2NU9hNVVubUFBNW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWFsdFc4Nm5GZEZKZkZtSVJrdHBublY2aTZJUlh1TWFqMHJmZ2hlT1N3QUxwUStjVVZtdlRYVE5MM2huMHNvNzE3Yng2YWtmaUo1RGYrY0I4ckI1VG1BQUFBQUFBQUFBQUFBTlQyazJ5cDZKcWNyQ1dueXVIR0VaNzZxcVBMell3WXY3U0tYbWlmdDE4akFkMGg1MnJ1RjBVcWEvNG1zSDEybTdPMDFkbWlxcW5qTVI4Wi9LWWgwYjdTS1htaWZ0MThoOXBGTHpSUDI2K1J6a2swZXk5SjVmdlA1VGgwWDdTS1htaWZ0MThoOXBGTHpSUDI2K1J6cEFleTlKNWZ2UDVNT2kvYVJTODBUOXV2a1B0SXBlYUorM1h5T2RJa2V5dEo1ZnZQNU1PM2JNNnhIWE5OZDlHM2R1dUVsRGNjdDdreHg1L0V5eHFmY3lXTm1GNmJpcCtSdGg4bHFxS2JkK3VpbmxFcWdBTXdBQUFlZlVQOHZ1ZjlLWHdaNkR6YWovbDkxL3BTK0Jhbm1RMEtISWZSSHpqeUYwZW82SkFCRUVLczJIWS8vd0QyL3dEdC9NMTVtd2JIL3dEKzMvMi9tY3IzZ2xFOG15QUE4OVFBQUFBQUZ5bkJkV3RxbG5xbDNhMVZpZEtySlByTzlHcWJZN0p3MXAvVExTY2FOOUdLVDN2M2FpWEluMFAwbnI5bDZxalQzSml2bEtZY2xCbTYyeXUwTkdiZzlLclR4ejA4U1QvRk0rZjFhMmc4ejNYWVBxNDFGbWY5OGZXRXNPRE1mVnJYL005MTJCOVd0b1BNOTEyQnY3UG5qNndNT0RNZlZyYUR6UGRkZ2ZWclgvTTkxMkJ2N1BuajZ3TU9ETWZWcmFEelJkZGdqNnRiUWVaN3JzRGYyZlBIMWdZZ0dYK3JXMEhtZTY3QlAxYTJnOHozWFlHL3RlZVByQXc1bGRsYU5TdnRIcDFPbXN5NGVNbjZFbmx2cVI5cUd5bTBOYWFndEtyd3ovRlV4Rkw4V2RDMk4yVmhvYWxkWE00MXI2cEhkYmorN1RYUXVuMW1QV2E2emF0VlJGVVRNOHNEYVFBZkVxZ0FBQUFBYXZ0Y3Y3VmJ2cHB0ZTgyZzFyYTlmZnRaZWlTTzFueHdtT2JBSXNpc1N5TjY0UStja2hpQlJ2SEdkRXB2Tk9MNllwKzQ1M0xrWjBDemU5YVVKZE5PUHdNMm81UXJMN0FBeHFnQUFBWWZReGg5RDZnQUdIMFBxR0h6b0FBQUFDVGZJbXljUG9mVUJBSncraDlRdytoOVFFQW5ENkgxRVlmUStvQUFBQUFBQUFBQUFBQUFwV2p2MGFrUENpMTdqbmtlTGk2RG95T2ZYRWR5NXJROEdjbDcyYTlQUE9GcVZVU1JFazFMSE1WWllxeEF6dXlFOFY3bW4wd1Q2bitwczVxR3lzOTNWSEh3NmNsOEdiZVliMGUrcFBNQUJ3UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMXJhNm45KzJyZEtsRi9Fd0VUYTlxcWU5cHFuNHVvbjE1UnFrVGZabk5DOGNsZ0Z5QTdKUXlraTdLTWtkQXM2bkMydEdyNGNJdjNIMk1iczlVNFRTS0hUQk9EL0JtU1BMcWpFekRtQUFxQUFBQUFBQUFBQUExemEzYVZiUE8yM3JLVnpHNDNzU1ZUZHcxamk1UFNhLzlwZEx6UFAyNitSa082bmE4TnMvVHVFdU8zcnhmNFM0dmtjblBwK3p0RnB0UnA0cnJwelBIUEdVdzZSOXBkTHpQUDI2K1ErMHVsNW5uN2RmSTV1RDBmWldrOHYzbjhwdzZSOXBkUHpQUDI2K1ErMHVsNW5uN2RmSTV1QjdLMG5sKzgva3cvUk9BU0Q0ZFZVWkp3RXVVQVNna1NBQUFBQUFBQUFBQUZLMCtEbzFLajVJUmN1cEhQRTIyMitWOFp1K3VWT0MwbTVsbmpjZDFmaThHa1JObW5qaE1yMHJ4SklpU2FWZ3F5M01WZk9CbTlrYWVidTRxK0RCTHJmNkcwbUMyUnA3dGxXcStIVXgxTDlUT21DN09hNWM1NWdBT0tBMXZ1aFhkUzAyWHVKVXFrcWRTcE9GT01vUERXWHg4ZnFSc2hvbmRhcjd1bDJOc254MUs3bTE2SXgvVTI2Q2piMU5FZXY2Y1V3NTMzeTFMemhkZTJsOHgzeTFIemhkZTJsOHp5QSs3MktPaTdLNlpkNmxkYWxhMjNmQzYvYTFvUS92cGM3WHBPNm5GTmhhSEQ3VjZkSEdWQ2JxUC90VFoycytXN2FtSXUwMHgwL1gvQU1VbGo5ZDFlMDBUVGF0L2VTZkJ3NG94ais5T1Q1SXIwbkc5YzIzMTdWSzB1RHVwMk51LzNhTnZMZDR2VExsYk16M1liK3BVMWkxMDVUL1pVS0txT1A4QU5Kdmo2a2puNWwwMW1uWjJwampJOW5mWFZQT1Y1N2VYekhmWFZQT1YzN2VYelBHRFpzeDBIczc2NnA1eXUvYnkrWTc2NnA1eXUvYnkrWjR5Y0Raam9QWDMxMVR6bGQrM2w4ejM2VnRWcjJtMW8xS0dwVnFrVStPbFdrNXdsNkduK1JoUmdUUlRNWW1CK2hObU5hb2E5cEZQVUtNZURrMjRWS2JlZHlhNVYrYU1zYzY3akNtdE4xTnQvYzRlR0Y2ZDNqL0k2S2VIZHBpaXVhWVFBQTVBQUFBQUFBQURCYld6eFkwcWZoVk05U1pxOGVRMkRiQ2YzN1duNkpTL0kxK0o2Rm1QY2RLZVM2QVhJRHJDUmxIeUYyVVlHN2FESGMwaTJYVEhQVzJlODhPaHlVdEp0V3VhR09wczl4NXRYaWx5QUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUliU1RiZUV1TmdhVnRCTGUxaTQ5RFM5eDRVZlM3cmZTTHl0WDhPYmE5UlNKNmxNWXBpSFNPU1FBV1Nobm8wbGIycVdxLzZxUE96MTZFczZ4YmYxNTl6S1ZlR1VONEFCNWptQUFBQUFBQUFBQUFBQU9POTBKNTJzdlBSR212K0tOY00vdDNMZTJzMUQwU2l2K0tNQ2ZvR2tqR25vK1Vmb3RDQVNEVWxCSUFBQUFkYjdtcXhzdFM5TmFwOFRhVFdlNXlzYktXL3BxVlAvWTJZK0ExbitvcitjcUFBTWdBQUFlYlV2OHV1djlLWHdQU2ViVXY4dXV2OUtYd0xVOHhvVWVRdWlrUzZQVGRVZ0FDcjV6WU5qdVc3OVVmek5mZk9iQnNkKzlkK3FQNW5LNzRKUlBKc2dBUFBjd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMTdhK1A3SzFsL05KZTQyRXdXMXkvc1ZCOUZYOGpyYThjSmptMWlKWmNoUkYxeUhvT2dReVNHQlNSdm1sdmUwMjFmL1NqOERSR2J2b2IzdEl0WC9KajNzejZqd3dyVTl3QU1TZ0FBT1U5ME81dkxiYWV0R2pkMTZVSlVxY2xHRlNTWEowSitnMXJ2bHFQbkM2OXRMNW16ZDFPRzd0QlJuNGR0SDNTYU5PUHU5RFRUVnBxSng4Rm9ldnZscVBuQzY5dEw1bStkeXU3dUxpV3BRdUxpcldjVlRsSGhKdVdPVmM1emczbnVUenhxbC9UOEtoRjlVdjFPZmFWdW51dGVJNmZxUzZhYVYzUU5yNTZKdTZmcCs2NzZwRGVsT1N5cU1YeVBITzJicWNHMjhsT1cyR3E4STh0VnNMMUpMQjhscHJjVjE4ZmdxOE54cm10WE5SMUsycTNjNVBuNGFTOXlQbDMwMVB6bGQrM2w4enhnOWJacDZKZXp2cnFubks3OXZMNWp2cHFmbks3OXZMNW5qQTJZNkQyZDlOVDg1WGZ0NWZNbUdyNnRDU2xEVkx5TWx6cXZMNW5pQTJZNkRmOEFaSHVnWGxDNHAybXVWUHBOdE5xS3VHdnYwL1MvQ1h2T3NSYWxGU2kwMDFsTlBLYVB6UWQwN25WM084MlFzWjFaT1U2U2xSeStpTHd2ZGc4N1ZXcWFZMnFSc2dBTUNBQUFBQUFBQUEwWFY0N21xM1VmK28zMW05R21iUnczZFhxdndveGw3alRwNTk2VnFXUGlTVlJZMkxoVmxpR0I3TkJud2VyMjdmUEp4NjBidWM3cFZIU3JRcXg1WVNVbCtET2cwcHhxMDQxWVBNWnBTWDRtVFVSeGlWS2x3QVpWUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIaDF1bndtazNVZWRRM2wrSEdhUkhrTjgxSnBhZGROOG5CUytCb1VlUTI2Znd5dlMraUFRTkVMREtQa0w4eFI4NEd6N0kxTTJsZWw0RlJQclg2R2VOVjJScWJ0NVhwZUhUVDZuK3B0Umd1eGl1WE9lWUFEaWdBQUFBQUFBQUFBR0gyd3R2cGV6T3BVVXN5NEZ6ajY0OGY1SERPWGpQMFJWcHFyU25TbCs3T0xpL3dBVmcvUGwxUmxiWE5hM2wrOVNuS0QvQUFlUHlQcU93N251VjBmNVRENUFBK2pXQUFCK2l3UWlUODBVQUFBQUFBQUFBQUFBQUFBQVlQYXlwdTJGT25uKzhxZTVJMWFKbWRxN2hWTDJuYnhlVlJqeCt0L29ZYUo2Rm1NVU9sUEpaRWtJazdKUmtxeVdWa0J1bXp0UGMwaWh4WWNzeTYyWkkrTmxUNEd6bzB2QWhGZTQreDVkVTVtWmNnQUZRT1hkMW12djZ0WlcyZUtsUWNzZW1VbjhqcUp4cnVpVitHMnN1MW5pcFJoVDZvL3FlejJQUnRhblBTSi9DWWEwQUQ3RmR1WGNzb2NKdEZWck5aVkczay94YlMrWjFnNTczSTZDNFBVcmxyamNvVTArdC9JNkVmRmRxMTdXcXFqcGlGSmNKN285eDlJMnkxRjU0cVRqU1gvYkZHdEdYMnVqVWh0UnFzYXVkLzZWTnZQUTNsZTdCaURWYmpGRVI2QUJnbkIwRUVqQUFBRXJMNGtzdm9RSFpPNUhRNFBaYWRYSEhXdVp2cXd2eU4xTUxzYnAxVFN0bXJDeXJMRldOUGVxTG9sSjVhL0RPRE5IZzNhdHF1WlFBQTVBQUFBQUFBQURVdHJKNTFHRVBCcEwzdG1IaVpEYUtlL3JGZjhBbFVZKzR4NjVEMHJjWW9oMGprdWdRaVRva2ZJVWZJV0t2a0EyYlpPNlU3ZXJhU2YzcWIzbytwL3I4VFBuUDdHNnFXZDFDNHBjc1h4cnBYT2plYk81bzNkdkd2UWx2UWwxcDlETU42akU1VW1IM0FCblZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF4RzBkOHJXeWRHTC9hMTF1cjBSNTJlM1ViNmhZMEhWclBML2hndVdUTkl2THFyZVhNN2lzL3ZTNUZ6SmRDTkZtM3RUbWVTWWg4b2w0bFlvc2pjNkpBREFxejM3T0xPc1VmUXBQM014L01aUFpkWjFhTDZJU2Z1S1YrQ1VUeWJrQUR6SE1BQUFBQUFEbCszKzFHdDZadEpWczdDL2xRb1JwVTN1S0VYeHRaZktqcmJ0emNxMllIVUFjTSt1KzFQbldmczRmSWZYZmFuenJMMmNQa2FPNTNPc0pkekJvZmN4MXpWdFpxNml0U3UzY1JveHA3bVlwWWJienlMMEcrR1d1aWFLdG1VT0s3YVBlMnAxTi85Ykh1UmhUSzdWeTN0cHRVZi95SkdLUDBEVHhpelJIcEg2TFFBQTdwQUFBQUFIWU81NHNiSjJucGxOLzhtYklhOXNBc2JKMlBwVTMvQU1tYkNmbityLzFGZnpuOVZBQUdVQUFBUExxZitXM2YrbEw0SHFQTHFuK1czZjhBcFMrQmFubkEwT0plSjg0bDBlbzZyQUxrSWZPQlZtd2JIZnZYZnFqK1pyNzVET2JJVkVydTRwdC92VTAxK0QvVTVYZkJLSjVOcEFCNXptQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHRjJzV2ROZytpcXZnek5HRTJza2xwMEk4OHFxeCtDWjB0ZU9FeHphckV1bWZPSmRIcE9pU0dTVllGV2JuczVMZTBlaDZONWU4MHhtM2JLdk9sSmRGU1NNOS93cTFNd0FEQ29BQURtZmRZaGpVZFBxZUZRa3VxWDZtaW5RKzYxRC9MS24rcEg0TTU0ZmNkbVRuU1VmNS9XVm9EYis1ZFBkMmpxUThPMm11cHBtb0d6ZHptcHViVjJ5eisvQ3BIL2oraDIxc2JXbXJqMGtkZ09HOTBlbndlMldvZno3ayt1S081SEl1NjVZMUtPdlVMN2RmQlhORlIzdjVvNVRYVTBmRzZTY1hGWWFLUVNEMWtvQXdNQUFCZ0FkaTdrZFhmMlhxVS9GWFUxMXBNNDZkYjdqMUdwRFFyMnRKWWhWdWZ1ZW5FY015YXYrbU45QUI1Q0FBQUFBQUFBQTFQYXlHN3FGT2ZoVTE3bXpiRFc5c0ljZHJVL3FpZHJNKyttbm0xOUZpa2VRc2owSFJKREpJQW96WnRscjlUcE94cVMrL0RqcDU1MTBmZ2EweUtjNTBxa2F0T1RqT0R5bXVabEs2TnVuQ0pqTG93TVpvMnEwcitudVN4QzRpdnZRNmZTakpublRUTk00bHpBQVZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3M1eGhDVTV5VVl4V1czeUpBWXZhVzRWSFRKd3o5NnMxQkwwY3JOUWlleldiOTM5MjV4eXFNUHV3VDZPbjhUeHhQUnRVYk5QRjBpRmtTUWlUcWtLc3N5b0h1MmZxY0hxOURqNHB0d2Y0bzNZNTVhMU9DdXFOWHdKeGZ2T2htTFVSeGlWS2dBR1pVQUFBQUFBYVgzVHRVMWJSN0N5dTlMdTVXNmxWbFRxWWlubml5dVZlaG5QUHJ6dFY1Mm43S0h5TlZ2VFZYS2RxSlRoM2NIQ1ByenRWNTJuN0tIeU16c1p0anJsM3ROWTJtbzZoS3RiVjV1bktEaEZjYlR4eUxwTFZhU3VtSm5NR0hYamlPM050OUYycTFHQ1dJenFLb3ZWSlorWjI0NVozV0xYZzlZdGJ0TGlyME4xK3VMK1RSdTdHcjJkVHM5WS9raG80QXdmWXJBQUEvUllBUHpSUUFBQUFBQUFBQUFBQUFEejMxMVRzN1dkeFU1SXJpWFMrWkgwclZhZENsS3JWbW9RaXN0czB2V05TbnFOZmlUalFoKzVGL0YrazYyN2MxejZKaU12RlZxVHJWcDFxanpPY20yRVJGRmtlZzZKUklRWklxV3RhZkMzVkdseTcwNHIzbFdlM1orbndtcjBPaUxjdXBGYXB4RXlodTRBUExjd0FBRWNGMSs0VjNybW9YS2VWVXVKdGVyT0R1bDdWVkN6dUs3NUtWS1UrcE5uNTl5NVprK1Y4YlBwT3c2T05kZnloTUlDSkI5T3M2ejNMcUhCN05PcTF4MXJpY3Z3V0YrUnQ1aE5pcmY2TnN0cDFOckRkTGZmL0FITnY4ek5uNTlxNjl2VVYxZXNxTkkyODJLZXQxZStPblRoVHZsRlJuQ2J4R3FseWNmTXpuZFRZemFpRTNGNk5YbGpuaTR0UDhjbmV5QmIxTmRFYlBNY0UrcCswL21XNTZsOHg5VDlwL010ejFMNW5mQWRPKzE5SVM0SDlUOXAvTWx6MUw1ajZuN1QrWkxucVh6TzlqQ0hmYStrRGc5TFl2YWlwTlFXajFvWjU1dU1Vdnh5YjNzYnNERFRhOVBVTlhuVHVMbUhIVG9RNDRVMzB0L3hQM0cra25PdlZYSzR4eVFBQXlnQUFBQUFBQUFFQ000VGZSeGdhRnFjK0UxRzZuMDFaZkUrQ0U1YjlTYy9DazM3eVVlckVZakRxc2dFQ1FaVmxpQUtOSDNzTDY0c0t2Q1VKY1QvZWcrU1hyUGtWYUltSW1NU052c2Rlc3JpS1ZhWDBlcHpxZkorRE1yVG5Db3Q2bk9NMTB4ZVRuT0JGeWcvdVNjZlU4R2VkUEU4cFYyWFNNUG9Zdytobk91R3IrT3FkdGpocS9qcW5iWlh1L3FqWmRGdytnWWZRem5YRFYvSFZPMnh3MWZ4MVR0c2QzOVRaZEZ3K2hqRDZHYzY0YXY0NnAyMk9HcitPcWR0anUvcWJMb3VIME1ZZlF6blhEVi9IVk8yeHcxZngxVHRzZDM5VFpkRncraGpENkdjNjRhdjQ2cDIyT0dyK09xZHRqdS9xYkxvdUgwTVlmUXpuWERWL0hWTzJ4dzFmeDFUdHNkMzlUWmRGdytoakQ2R2M2NGF2NDZwMjJPR3IrT3FkdGp1L3FiTG91SDBNWWZRem5YRFYvSFZPMnh3MWZ4MVR0c2QzOVRaZEZ3K2hqRDZHYzY0YXY0NnAyMk9HcitPcWR0anUvcWJMb3VIMERENkRuWERWL0hWTzJ5T0ZyUGxyVkgvM3NkMzlUWmRBcjNOdlFUZGV2VHBwZUZMQmhyL2FPakJPRm5EaFplSEpZaXZtYXJodDVmRytsa3BGNmJGTWMrS1lwZlM0cjFycXM2MWVvNXpmTytiMUZZb0pGa2p2eVdFU2dpU1FEQkRBcStReSt5aXpxY24wVW44VVloOGhtdGtWbStyeTZLWDVuTzU0SlJQSnRZQVBOY3dBQUFBQU9KZDB4NzIyTjc2SVUxL3hSMjA0WjNRNWIyMk9wZWlVWTlVVWJkSC9BRkorU1lhNEFEMVIwenVNeCs3cTB2VFNYL3NkS1hLYzY3alVmN0hxc3Y4QXEwMS94WjBhSzQxNnp4ZFIvVmxEaGUwYjN0b05UbDAzTS9pekhIdDF0NzJzMzh1bTRxZit6UEVmZTJveGJwajBoYUFBSFZJQUFBQUE3THNHc2JKNmY2WVNmL0ptZk1Ic092OEErSjZiL3BQL0FObVp3L1BkVC9YcitjL3FvQUF6Z0FBQjVOVi95eTcvQU5LWHdQV2VUVnY4cnUvOUtSYW5uQTBTSlpGWWxrZW82ckxrSVpLNUF3S005R2wzWDBPL28xMys2bmlYOUw1VDRNbzBSTVpqQTZNbW1rMDhwOGFhNXlUWHRtZFVqT0ViQzRsaWNmN3FUZjd5NlBXYkRnODJxbWFaeExrQUFvQUFBQUFBQUFBQUFEQVJJRVlCSkFBQUFBQUFBQUFBQUFBQU5VMnJ1VlV2S2R0RjVWR09aZjFQOURQNnBmVTdDMWxWbTA1dmloRHduOGpScHpuVnFUcVZKT1U1dkxiNTJhckZISGFXcGdqeUZrVlJaR3hkSkRKSUFvemF0a1paMCtySG9xdjRJMVZtemJIdit6M01laWFmdU9GN3dLenliQUFEQW9BQURSZTZ4RE9tMkUvQnJ5WFhIOURtWjFYdXBRM3RucU0vQXVZKzlOSEtqN1BzbWM2V1BuSzBCbTlpcDhIdFZwc3VtdHU5YWFNSVpIWnlmQjY5cDA4OGx6VC9BUFk5Qy9HMWFxajBrZDFNZnJ1a1dldGFmT3h2WVpoTGpqSmZ2UWx6U1hwTWcrVmcvUFltWW5NS3VMNnQzUHRmczYwdm9sS09vVWMvZG5Ta2xMSHBpekcvVkRhZnpMYzlTK1ozb0d5TlpYRWNSd1g2b2JUK1pibnFYekgxUDJuOHkzUFV2bWQ2QlBmSytrRGd2MVEybjh5M1BVdm1QcWh0UDVsdWVwZk03MEIzeXZwQTR6b3ZjKzF5OHJ4K24wMXA5dm43OHB0T2VQUkZjL3JPdWFaWTIrbTJGQ3h0SWJsR2pIZGl1ZCtsK2w4cDZnWjdsNnE1ekFBSEVBQUFBQUFBQURCYlhRelpVWitEVngxcjlET21KMm5odmFUTitET0w5NTB0eml1RXh6YWhFc2lrUzZQU2RFaGdBVkt0RnlNQVVpNVFrcHdrNHlpOHBwNGFNL3AyMGM0SlU3NkRtdkdRNWZ4WE9ZSm9xMFVxb2lybWpEZkxiVUxLNVg3RzVweWZndDRmVXoxK281dHVsNDFLMFZpTldvbDZKTTRUcDQrRXE3TG8ySDBNWWZRem5YRFYvSFZPMnh3MWZ4MVR0c2p1L3FiTG91SDBNWWZRem5YRFYvSFZPMnh3MWZ4MVR0c2QzOVRaZEY0K2dZZlF6blhEVi9IVk8yeHcxZngxVHRzZDM5VFpkRncrZ1lmUWM2NGF2NDZwMjJPR3IrT3FkdGp1L3FiTG91SDBNWWZRem5YRFYvSFZPMnh3MWZ4MVR0c2QzOVRaZEZ3K2hqRDZHYzU0YXY0NnAyMlR3MWZ4MVR0c2QzOVRaZEZ3K2hqRDZHYzY0YXY0NnAyMk9HcitPcWR0anUvcWJMb3VIME1ZZlF6blhEVi9IVk8yeHcxZngxVHRzZDM5VFpkRjQraGpENkdjNjRhdjQ2cDIyT0dyK09xZHRqdS9xYkxvdUgwTWg4U3krSmVrNTN3MWZ4MVR0c3JLZFNYNzFTY3ZYSnNkMzlUWmJ2ZWF2WVdxZTlYalVtdjRLZjNtYXhxbXJYR29QY3h3VkJQS2dueSt0ODVqbEVsSTYwV3FhZUtZZ2lpNklTTEk3TENKQ0FCbFMzTVZZRkpjNXY4QVlWZUdzcUZYdzZjWDdqUUdibnMxVTRUU0tTNTROeDk1bTFFZTdFcTFNb0FERW9BQUFBQU5UN3FGcTduWSs2a2xtVnZPRmI4RThQM000ZWZvN1hMWDZibzEvYWN2RFc4NHIxN3J3Zm5CWnh4OHA2bWpxOXlZVENUMGFkY1N0TCsydTR2RG8xWVQ2bms4NURXVTEwbTduR0V3L1RrWktjVk9MekdTeW42R2FSM1dMYmhOR3RMcEwrNXI3cjlVbDgwYkZzbmRmVGRtdE11YzVjN2VDZnJTdy9nZWZibTErbDdLNmhCTE1xY0ZWWHJpOC9NOHJSMWJyVTBUNi93ckRpYUFCOTh1RUVnRDlGQTB2djhBYW40MkhZUkhmL1ZQSFE5bWo4ODNGU3VHNmcwcnYvcW5qb2V6UTcvNnA0NkhzME83MW1HNmcwcnYvcW5qb2V6UTcvNnA0NkhzME83MW1HNmcwcnYvQUtwNDZIczBPLzhBcW5qb2RoRHU5Wmh1b05LNy93Q3FlT2gyRVE5ZDFSckhEeFhxZ2gzZW93M2IwbU12OWFzclJPS253MVZmd1UrUHJmTWFqWHZieTQ0cTF6VW11aHk0dW84NlIwcDA4ZjdwVGg3TlIxRzUxQ2VhMHNRVCs3VGp5TDVubFNDUlpJMHhFUkdJV0VXUkNKSkVrQWhnUXpOYkpVOTY5clZQQXA0NjMraGhHYk5zZlR4YjNGWHdwcVBVdjFPVjJjVVNpZVRZQUFlY29BQURDYmFWL28reTJwVkU4TjBkeGY4QWM4Zm1jU09zZDFHdndXemtLS2VIWHVJeDlhU2IvSkhKejdEc1dqR25tcnJLMEFTY251cmxmRWdlelJLSDBuV2JHM3huaExpQ2ZhUFpxcTJhWnFuNEpkMnM2U29XZENndVNuVGpEcVdEN0I4ckIrYnpPWnlvQUFnREI3UmJUYWJvYVVMaVVxMXpKWmpRcC92WTZXK1JJOXV1YWhIUzlKdXIrU3p3TU14aStlWElsMTRPRjNWeFh1cmlwYzNOU1ZXdFVsdlRuSjhiWjdIWnVnalV6TmRmaGo3cGlHN1ZlNlJmT2I0TFRMZU1PWlNuSnNyOW8rcGViclh0Uytab3dQb3ZaMms4bjZwdzNuN1I5UjgzV3ZhbDh4OW8rbyticlh0Uytab3dIczdTK1Q5VERlZnRIMUx6ZGE5cVh6SDJqNmw1dXRlMUw1bWpBZXp0TDVQMU1ONSswZlV2TjFyMnBmTTltbTkwZFNyS09vNmVvVTIvN3loSnR4L0I4cHpyQkpGWFptbG1NYkg2bUg2QnRMbWhlVzFPNnRxc2F0R3JIZWhPUEkwZlkwRHVUWGRXZHRmMk1tM1RwU2pVaDZON0thOTJUZno0L1ZXTzczcXJmUlVBQm1BK041UGc3T3ZQd2FjbjdtZll4K3ZUNFBTTGw5TWQzcmVDMU1abUlHa1I1QzZLUkxvOVIwV1FJQUVnZ0FDQ1FCWEJHQytDTUFWd01Gc0RBRmNEQmJBd0JYQXdXd01BVndNRnNEQUZjREJiQXdCWEF3V3dNQVZ3TUZzREFGY0RCYkF3QlhBd1d3TUFWd01Gc0RBRUpBbkJJRUlrQUNRUUFKSVlJWUVNejJ4NnpYdXBkRUlyM21BWnNleHkrN2R5L3BYeE9WM3dTaWVUWXdBZWNvQUFBQUFCd2JibVcvdGRxcnpuOXUxMUpJN3lmbi9heVcvdFBxMHYvbFQrSnUwZmpsTU1TQUQxQjFidU54eHBPcFM2YmlLNm9uUW84cTlab1hjZWpqUUwyWFRkZi8wUnZpNVVlSmYvQUtsU0hBdFNlOXFWNUxwcnpmOEF5WjV6N1hhazd1NGU2K09ySjhuOHpQbHV5OEdYVWZvRkhDbUZrQW5kbDRNdW9ic3ZCbDFGc3BRQ2QyWGd5Nmh1eThHWFVNaUFUdXk4R1hVTjJYZ3k2aGtkcDJLV05sTk0vd0JIODJab3creHl4c3RwaWZpRjhXWmcvUGRSL1dyK2MvcW9BQTRBTUVnQ0R5YXYvbGQzL3BNOWg0OVgvd0FxdS84QVNaYW5uQTBPSmRGSWwwZW82TElFQUFWWllqQUh6NDA4cDRhNTBiSHBPME82bFIxREx4eEtzbDhWK1pyelJWb3BWUkZVWWt4bDBhalZwVjZhcVVha2FrSHp4ZVM1emlsVnEwWmIxR3JPbkxwakxCN3FldDZwQlkrbE9YOWNVek5Pbm40U3Jodk9DTUdsZC84QVZQSFE5bWgzL3dCVThkRDJhSzkzclJodW9OSzcvd0NxZU9oN05Edi9BS3A0NkhzME83MW1HNmcwcnY4QTZwNDZIczBPL3dEcW5qb2V6UTd2V1licURTdS8rcWVPaDdORHYvcW5qb2V6UTd2V1licURTdS8rcWVPaDdORHYvcW5qb2V6UTd2V1licURTdS84QXFuam9lelE3L3dDcWVPaDdORHU5Wmh1b05LNy9BT3FlT2g3TkR2OEE2cDQ2SHMwTzcxbUpicURTdS84QXFuam9lelE3L3dDcWVPaDdORHU5WmlXNmcwcnYvcW5qb2V6UTcvNnA0NkhzME83MW1KYnFEU3UvK3FlT2g3TkVQWHRVYXh3OFY2b0lkM3FNTjJNVnFXdDJsb3BRaEpWNnk1SVJmRXZXelZMaSt2YmhOVnJxcE5QbTNzTHFSNWtqcFRwNC93QjBwaUgzdkxxdmUxM1dyeTNwUGtTNUV1aEh6aVFrV1JwaU1jSVdTaXlJUUpFa01FTUNyTmkyT2Y4QWk0LzB2NG11c3p1eDcvdE56SHBwcCs4NVhmQktKNU5wQUI1eWdBQU5ZN28wTi9aUzRmZ1ZLY3YrV1B6T1E0T3o3Y3czOWs5UldNNGdwZFVrY1pQcnV4WnpwNWoxL2FGb1FmYXdud2Q5YjFQQXF3ZlZKSHlDZTYxTG9lVDJwak1ZUy9RajVXQ2xHVy9ScHo4S0NmV2k1K2NjbEFBRUFZRGFUYWl3MFBGS29wVjdxU3lxRUh5THBiNWpPeWtvUWxOcktpbStvNEpxRjNWdnI2dmVWNU9WU3ROeWJmdVhVZXQyYm82ZFRYTTE4b1REY1pkMGUvM251NmJiS1BNbk9USy9hTnFQbTIxN1V2bWFPRDZQMmRwZkorcWNONCswYlVmTjFyMnBmTWZhTnFQbTYxN1V2bWFPQjdPMHZrL1ZEZVB0RzFIemRhOXFYekgyamFqNXV0ZTFMNW1qZ24yZHBmSitxVzhmYU5xUG02MTdVdm1aRFMrNkpScVZGRFVyRjBZdC93QjdSazVKZXRQak9iZ3JWMlpwYW94czQrcGgrZ2JXNG8zVnZUdUxhckdyUnFMZWhPTHltajZuTWU1ZnF0U2xxTlRTYWttNk5lTG5UVGY3czF5NDlhK0IwNCtUMWVtblRYWnR6L2o1S2dBTVlIaDFxRy9wTjFIb2hucTR6M0h4dTRiOXBYaDRWT1M5ekxVemlZa2MvaVdSU0pkSHFPaXdJQUVrQUFSZ0VnQ3VDTUZzREFTcmdZTFlHQWhYQXdXd01BVndNRnNEQUZjREJiQXdCWEF3V3dNQVZ3TUZzREFGY0RCYkF3QlhBd1d3TUFWd01Gc0RBRmNEQmJBd0JDUktKd0FCS0lBRWdnQktTckpJWVFxelp0ajZ1YmU0bzUvZG1wZGEvUTFsbVoyU3FidW9WYWZoMC9nemxkak5Fb25rMjBBSG5LQUFBQUFBc2MvSWZuRFhMWjJXczM5bzFqZ2JpY1V2UnZQSHVQMGVjTzdxRnQ5SDJ3dXBKWWpYaENxdnhXSDcwYnRIVml1WVREVkFBZW9sMmp1UzNYRDdLY0EzbDIxZWNQVW5pUytMTnZ1cUt1TFd0YnlXVlZoS0QvRk5ITSs0dmRZcWFwWk44cWhWUzYwL3lPb3JpNHp4YjhiTjJjS3Z6dk9EcHpsVGx4U2czRit0UEJVekcxdG5LejJrMUdpb3ZkNFp6amhjMHVQOHpFYnN2QmwxSDM5dXVLNklxajR3dWdFN3N2QmwxRGRsNE11bzZaSFE4RVlMNEdENHBLbUJndGdZQXJnWUxZR0FLNEdDMkJnQ3VCZ3RnbkFGTUVwRnNEQUVKRmtnQUFBQUVNa2hnVlp1V3pWUGc5SnBQbm0zTDMvb2FaSTM3VHFmQldGdlQ4R25INEdhL1B1NFZsNlFBWWxRQUFjNjdybGYvTExaUHc2alhVdm1jN053N3FOeHd1MGNhS2Y5eFFqSDhXMi96UnA1OTMyYlJzYVdpUDhBUDFXZ05qN250dXErMWRubFpWTGVxZFVmMU5kTjI3bEZEZjFxN3J0ZjNWdmo4WlNYeUw2NnZZMDFjK242OEIxSUFId0tvQUFOUjdwOWJnOW1lRFQ0NjFlRWVyTC9BQ09TblNlNjNWYXRkTm9jMHFrNXY4RWwrWnpZKzA3SXAyZExFOVpuOGZzdEFBRDFrZ0FBQklrQUFBQjBudVMwY1dtbzNEWDcxU0VFL1VtL3pOK05UN21WQjB0bUkxR3NjTlduTmVsY1MvSTJ3K0U3UXEyOVZYUHIrbkJRQUJnQXcrMU05M1NuSHc2a1Y4V1pnMS9hK2VMYTNwK0ZVYjZsK3AwdFJtdUV3MWlKZEZJbDBla3VrQUFBQUFBQUFFWkdRSkJHUmtDUVJrWkFrRVpHUUpCR1JrQ1FSa1pBa0VaR1FKQkdSa0NRUmtaQWtFWkdRSkJHUmtDUVJra0FBQUFBQUVNa2hnVlpzK3g2L3N0ekxwcUplNDFobTFiSXJHbjFYMDFmeVJ3ditCRThtY0FCZ1VBQUFBQUNQS3ZXZm5uYUdXL3IycFM2YnFwLzdNL1E4ZjNsNno4NTZvOS9VN3lYVGNWSC93QW1iOUh6bE1QSUFTajBoMS91UlJ4c3pYbDAzY3YvQUZpYnNjcTJGMnYwblE5RWRsZVF1WFdkYVZUTk9tbXNQR09mMEd3L2FScy80dTk5a3ZtZVJkdFZ6WE14Q0c1OEhEd0k5bERnNGVCSHNvMDM3U05uL0YzdnNsOHg5cEd6L2k3MzJTK1p6M04zcEkzSGc0ZUJIc29ia1BBajJVYWQ5cEd6L2k3MzJTK1p0R2thaFExWFRxT29XeW1xTmROeFUxaDhyWEd2d0sxVVYweG1ZSHAzSWVCSHNvYmtQQWoyVVhCVElwdVE4Q1BaUTNJZUJIc291QmtRa2tzTGlRSkJBZ2tBQUFBQjQ5WS95cTcvQU5KbnNQSHJQK1ZYZitreTFQaWdhSEV1aWtTNlBVZEVnQUFBQUl3UmdzQUtZSXdYd01BVXdNRjhFWUFyZ1lMWUdBSzRHQzJCZ0N1Qmd0Z1lBcmdZTFlHQUs0R0MyQmdDdUJndGdZQXJnWUxZR0FLNEdDMkJnQ3VCZ3ZnWUFwZ2xJdGdZQUpFb0FBQUFBWURBb3pNN0l2R29WWTlOSi9GR0dabGRscFkxWkx3cWNrYzduZ2xFOG00Z0E4MVFBQUdMMnBod216ZXB3NmJhYjZsazRlZDQxZUhDNlRmVS9DdDZpLzRzNE5IOTFlbytwN0RuL3dDZGNlcVlTUkw5MStva2craFdkNjBpcHd1azJWVE9kNmhUZi9GSHJNUnNsVTRYWm5USjV6L1o0cnE0dnlNdWZuVjJuWnVWUjBtVkFBSElSS085R1VlbE5INTlyUjNLdFNIZ3lhNm1mb09QS3ZXY0cxcWs2R3NYMUdVZDF3cnpXUDhBdVo5RjJKVjcxY2ZMOTB3OFFBUHBsZ0FBQUFFQUFKR2IyS3E4RHRWcHNzNDNxdTUxcG83V2NIME9icDYxWVZGeXh1S2Ivd0NTTzhQbGZyUGxlMjZmL3JUVjZJa0FCNENBaHJLYTZlSWtJRG5Nbzd0U2NlaVRYdkpSOXRSaHdlb1hNT2lwTDRueFI2c2NZZEZnQVNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRG1BQXF6MmFEVTRMVjdkdDhVcE9ML0ZIallvemRPdFRxTGxoSlM2bVZtTXhNRG9vSVRUV1Z5UGpKUExjd0FBQUFBT1ZkMmUyM2I3VGJ4TCs4cFRwTitwNVh4T3FtajkxMjE0YlppbmNKWmR0Y1JlZlJKTlA4alJwNXhkZ2NiQUI3U1cyOXl5NmR0dGZRcDV4RzVwenBQMTR5dmVqdDUrY2RDdlZwdXMyViswM0czclJuSlI1V2srUDNIVi90TDJkOFZlK3lYelBPMVZxcXF2Tk1EZFhDRGVYR0xmcFJIQjAvQWoyVWFYOXBtenZpcjMyUytZKzB6WjN4Vjc3SmZNeTdtNzBsRGRPRHArQkhzb2NIVDhDUFpScGYybWJPK0t2ZllyNW4zc082Rm9ON2UwTE9sQzdqVXIxRlRpNTBra20zaFo0eU56Y2o0U01XQUQwSFFBQUFBQUFBQUFBQUFBQUFBQUFBaGtsV0JOQ0RxMTZkSmNzNXFQV3pvaVdGaGNpNGpSOUJwOEpxOXN1WlMzbitDeWJ5WTlSUEdJVmtBQmxWQUFCeERiT3Y4QVNOcWRTcUo1U3JiaTlVVmo4akRIYWEreCt6MWV0VXJWYkRlcVZKT1VwY0xMamJlWHpueitwV3pYbTcveXorWjlYYTdYMDl1M1RSaWVFUkh3L0syWEdqcFhja29idG5xTnkxKy9VaFRUOVNiL0FETTU5Uzltdk4zL0FKWi9NeTJsYVpaYVZiTzJzS1BBMG5KemNkNXZqZnI5UmwxdmFkcS9ZbTNSRTVuci93Q295OWdBUG5rQUFBMVh1aDZOVzFYU0lWYldEcVhGcEp6VUZ5eWkxeHBlbmtaeUhITjBINklNUnFPem1pYWpWZGE3MDZsT3ErV2Njd2I5ZU9VOXZRZHB4cDZOM2NqTWZEQ1lsdzRZT3pmVXZacnpkLzVaL01mVXZacnpkLzVaL005UDIxcCtrL2I4cHk0MWdIWmZxWHMxNXUvOHMvbVBxWHMxNXUvOHMvbVBiV242VDl2eVpjYUIyWDZsN05lYnYvTFA1ajZsN05lYnYvTFA1ajIxcCtrL2I4bVhHaktiUGFKZWEzZVJvVzBHcVNmN1dzMTkybXZuNkRxY05qZG00U1VscGtYam1sVWsxMVpNM2JVS0Z0UmpSdDZNS05LUEpDRWNKSEM5MjFUczR0VXpuMVJsU3d0S05qWlViTzNqdTBxTUZDSzlDUFFBZk16TXpPWlFBQWdEVnRzSjV1TGFuNE1ITHJmNkcwbW03VlQzdFdjZkFweFh4WjNzUjc2WTVzVkVzaXNTNk42NEFBQUJWc0Nja1pQYnBtbTNHb1RlNTl5bEYvZXFQa1hxNldiWFlhWGFXU1RwMDk2cHoxSjhiL1E0MTNhYU9DSmxxbHZwbW9YQ3pUdHBxTC9pbDkxZTg5UzJlMUJyamRGZjkvNkczZ3p6ZnFSbHFQMWQxRHdxUGJmeUgxZDFEd3FQYmZ5TnVCRy9yUm1Xby9WM1VQQ285dC9JZlYzVVBDbzl0L0kyNERmMW1aYWo5WGRROEtqMi93QkI5WGRROEtqMjM4amJnTi9XWmxxUDFkMUR3cVBiZnlIMWQxRHdxUGJmeU51QTM5Wm1Xby9WM1VQQ285dC9JZlYzVVBDbzl0L0kyNERmMW1aYWo5WGRROEtqMjM4aDlYZFE4S2oyL3dCRGJnTi9XWmxxUDFkMUR3cVBiZnlIMWQxRHdxUGIvUTI0RGYxbVphajlYZFE4S2oyMzhoOVhkUThLajIzOGpiZ04vV1pscVAxZDFEd3FQYmZ5SDFkMUR3cVBiL1EyNERmMW1aYWo5WGRROEtqMjM4aXM5bjlSaXNwVXAraFROd0EzOVptV2czRm5kMjM5L2J6Z3Vscmk2enpwblJXazAwMWxQbFRNSnFtZzBxeWxWczBxVlhsM1A0WmZKbmFpL0U4S2t4TFY4Z2ljWjA1eXAxSXVNb3ZEVDVVd2pTc2tBQUNHU1F3S3MyN1pSWTByUFRWbCtScUxOeTJZV05HcCttVW43elBmOENKNU1xQWdZVkFBQUFTQUlYRng5QitiN3FXOWRWNWROU1Q5N1AwZlVlS2MzMFJiOXgrYlp2TTVQcGszN3owTkgvdVRDQUFlZ0FBQUFBQWQxMkFXTmp0TC93Qkp2L2t6aFNPODdEeDNka2RKWC94MC9lekhyUEJIekdjQUI1YUFBQUFBQUFBQUFBRHhhMS9sTjMvcE05cDR0Yi95bTcvMDJXcDhVRFE0bDBVaVhSNmpva0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRldaRFp5V05ab2VuZVh1WmoyZXpRcGJ1c1dyL254N21VcjhNbndiMEFEekhNQUFIenJ4MzZGV0hMdlFrdmN6OC80dzJ1amlQMElhODlqZG0yMjNwM0czbis5bDh6MSt6ZGJiMHUxdHhQSEhML0tZY2NJT3lmVXpacnpkL3dDV2Z6SDFNMmE4M2Y4QWxuOHoxL2JXbjZUOXZ5Wk5nSjcreWRqL0FDcWNlcVROaFBMcHRoYTZiYVJ0TEtsd1ZHTGJVZDV2RGZMeW5xUGw3OWNYTHRWZFBLWm1VQUFPSUhPdTZMczVYbGNUMXF5cHVwQ1NYMGlFVmx4YTR0N0hSamxPaWcxYVhVMTZhNXQwajg5SUhiYjdablFyMnE2dHhwdEoxSHh1VU13YjllRHkvVXpadnpkLzVaL00raWp0cXhqalRQMi9LMlhITURCMlA2bWJOK2J2L0xQNWo2bWJOK2J2L0xQNWsrMnRQMG43Zmt5NDREc2YxTTJiODNmK1dmekorcG16Zm03L0FNcy9tVDdhMC9TZnQrVExqWkIyWDZtYk4rYnYvTFA1bHFleCt6bE9ha3RNaEpybW5PVWwxWkk5dGFmcFAyL0tNdEIyQTBPdHFPclVyMmNHck8xbXB5bTF4VGt1U0svSGpaMTBwUnBVNk5LTktqVGpUcHhXSXhpc0pMMUZ6NS9XYXVyVlhOcVl4SHdRQUF4QUFBTkkyaGp1YXhjZWxxWFdqd0l5MjFjTjNWRkx3cVVYOFVZbEhwMjV6UkRwQ3dBTGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFobnprZlJsR0J2K21WZUcwKzNxYzhxY2M5UjZURTdMMU9FMG1FVytPbktVZnovQURNc2VaWEdLcGh6QUFVQUFBREI3YjJ2MHZaUFZLS1dXcURtdlhINzM1R2NLVmFVYTFLZEdhekdwRndhOURXQzFNN014SS9Nd1BwYzBYYjNOYTNseE9sT1VIK0RhUG1mUUpBQUFBQUErbHRWbFF1S1ZlRHhLbk9NMTYwOG56QVM2d0FER3NBQUFBQUFBQUFBQUFBQUFBQUFBVlpKVmdablpPbnZhbE9mZ1UzNzNnMjQxM1k2bmlsYzFlbVNpdndXVFlqejcwNXJsU2VZQURpZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTkcxK2UvckYwK2lTajFJM2xjcHoyK253bDljejhLcEorODA2ZU9NeXRTK2FMRlVXTnF3QVFBWjdOSTArZW9YTzV4eHBRNDZrbHpMbzlaNHVOdkM0M3pHODZSWnhzcktGSEgzMzk2YjZaSEc3WHNSdzVvbVhxbzBxZEdsR2xTZ29RaXNKSXVBWUZBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3ZTB1bkt2UWQ1U2orMXBMN3lYOFVmME5WUjBiaXhocktmS2pRZFJvZlJiK3ZRWEpDWDNmVnlvMldLOHhzeXRUTDRnaEVtcFlJWkpEQW96ZDluVmpScmYwcHYzczBobTk2R3NhUGFML3A1OTVtMUhoUkwyZ0lHSlFKUkJJQUFBZks2ejlGcjdxYmx3Y3NKYzd3emdDMExXOGY1UmUrd2w4ajlDREw2V2FMVjZiV2NSekg1Nzd4YTM1b3ZmWVMrUTd3NjM1b3ZmWVMrUitoTXZwWXkrbG5idmxYUkw4OTk0dGI4MFh2c0pmSWQ0dGI4MFh2c0pmSS9RbVgwc1pmU3gzeXJvUHozM2gxdnpSZSt3bDhoM2gxdnpSZSt3bDhqOUNaZlN4bDlMSGZLdWcvUGZlTFcvTkY3N0NYeU8zN0owYWx2czFwbEdyQ1ZPcEMzaXBRa3NOUG9hTXJsOUxCeHUzNXVSaVlRQUF6Z0FBQUFBQUFBQUFCNHRiL3lpNy8wMmUwOE91ZjVSZC82YkxVK0tCb2lMb29pNlBVZEVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFxejc2WExkMUsxZlJWajhUNE12YVBkdTZFdWlwRis4aWVRNkdBK1Yrc0hsT1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTlcyd2hpNHRxblRCcnFmNm1CaWJOdGhETnZiVk9pYmoxcjlEV1lub1daOXlGNDVMZ2hFblpJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaGxXV0tzRFpOanFtYVZ6Unp5U2pKZmp4ZmtiR2Foc25WM05TblQ1cWxOKzdqTnZQUHZSaXVWSjVnQU9LQUFBQUFCdzdiSFo3VlZ0UHFVclhUTHF0UXFWblVoT25TYmkxTGo0bXZXWWY2djY3NW52dllTK1IraWZ4R1gwczNVNnVxSWlNRDg3ZlYvWFBNOTc3Q1h5SDFmMXp6UGUrd2w4ajlFNWZTeGw5TEo3NVYwUy9PM2VEWFBNOTc3Q1h5SGVEWFBNOTc3Q1h5UDBUbDlMR1gwc2Q4cTZHWDUyN3dhNTVudmZZUytRN3dhNTVudmZZUytSK2ljdnBZeStsanZ0WFF5NTJBRHV1QUFBQUFBQUFBQUFBQUFBQUFBQ0NyTE1vd054MldwN21reGx6MUp5bCtYNUdYUEhvOEZEUzdXSzhXbjE4WjdEeks1elZMbUFBb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSzFKYmxPY3ZCaTM3am5LYmsyM3o4WnZ1clZWUjB5NnFQbXB0TDF2aU5DaWJOUEhDWldwV1JZaEVtcFlJWkpWZ2U3UXFDcjZyUWhKWmpGNzcvRGpONE5TMlJoblVLcy9CcGZGbzIwdzM1OTdDa2dBTTZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1FJQUpBZzAvYXFLanF1OHY0cWNXL2VqY1RUdHE1WjFYZDhHbkZmRTcyUEdtbm14S0xGVVdONjRReVNHQlJtL3dDbFIzZE10WTlGS1B3TkFseU02RnArSFkyK09UZzQvQXk2amxDdFQ3Z0F4cWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQjRkYy95aTcvMC93QXozR1AxK1Nqbzkxbm5oajNscVBGQkRSa1hSU0pkSHFPaVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZaRUh1MUl2b2tuN3l6UG13T2tyaldRZk8xbXFsdFNxTGpVb1JmdVBvZVU1aVFKQkFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdHMnJqdmFWdmVCVWkvaWpVWW02YlJwUFJyalBOdXYzbzB0RzZ4NEY2ZVN5NUNTRVNhRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFWWllxd1BYb2xUZ3RXdHBjem51djhBSGlON09jVTV1blZoVVhMQ1NrdndaMFNsT05XbENySDkyY1ZKZmlZOVJIR0pWbGNBR1ZVQUFBQUFBQUFBQUFBQUFBQnpzQUhyT2dBQUFBQUFBQUFBQUFBQUFBQUFJWlJsMlZZRzg2SlVWVFNyYVM1b0pkWEVlNDE3Wkc3VXFOU3prL3ZRZS9EMHA4di9BT2VrMkU4MjVHS3BoU1FBSE5BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSHh2TG1sYVc4NjlhV0lSWDR0OUNKaU1qQ2JYWFNqUXAyY1g5NmIzNWVwY252TllpZlc4dWFsM2MxTGlyKzlOOG5RdVpIelI2TnVuWXB3dkhCWkVrSWs2SkNqTGN4VmdiRnNkRDcxM1AwUmo4V2JLWUxaQ0dMQ3RQd3F2d1JuVHpyczVybFNlWUFEa2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrZ2tBQUFCcE8wc3M2eldYUW9yM0c3R2k2Kzk3V2JyMFN4N2thTlA0cFdwZUpGaXFMRzVZSVpKQUZHYnhzOVdWYlNLSEh4MDF1UDhBRC84QUVhUXpOYktYeW9YTXJTcExFSzNIRnZtbCtweHZVN1ZLSmJjQUR6MUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdPMTF3b1dWTzNUKzlWbmwrcGZxWjJVb3hpNVNhakdLeTIrWkdoNnhldS92cDFsbmcxOTJDOUMrWjNzMDVxejBURHlSTElyRXNqZXVrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFTW95NVZnYmxzeGNxdnBrYWJlWjBYdVAxY3hsalJORXYrOTk2cHl5NlUvdTFGNk9uOERlb3RTaXBSYWNXc3ByblBQdTBiTldlcWt3a0FIRkFRQWdCSUFBZ2tBUUNTQUFKSUFBQUFBQUFBQUFBQUFBQUFBQUFERDdVMVZEU25EUEhVbkZMOE9NMUNKbDlxTHhYRjZxRk9XWVVGaHRjOG55L0l4RVQwTE5PelF2SEpaRWtMa0pPeVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJWkpBRkdiZHN0ZUt2WS9ScFA4QWFVT0wxeDVqVW1mYlQ3dXBaWFVMaW54NDRwUjhKYzZPZHlqYnB3aVlkQkI4YlM0cFhWQ0ZlakxlaEpkWG9aOWp6dVNnQUNBQUFBQUFBQUFBQUFBQWM3QUI2em9BQUFBQUFBQUFBQUFBQUFBQUFBVlpZaGdUYlY2bHJjUXIwWGljSGxmSTNuVEwramYwT0ZwUEVsKy9COHNXYUUwWHQ2OWEycXFyUXFPbk5jNk9WeTNGY2VxSmpMb29OYXN0cGxoUnZhRFQ4T244aktVOWIwdWF6OUxqSDBUVFJpbTNYSHdWd3lJUEQzMjAzeTJsMWp2dHB2bHRMcks3TlhSRDNBOFBmYlRQTGFYV08rMm1lVzB1c2JOWFFlNEhoNzdhWjViUzZ4MzIwenkybDFqWnE2RDNBOFBmYlRQTGFYV08rMm1lVzB1c2JOWFFlNEhoNzdhWjVkUjZ4MzIwenk2ajFqWnE2RDNBOFBmYlRQTHFQV08rMm1lWFVlc2JOWFFlNEhoNzdhWjVkUjZ4MzIwenk2ajFqWnE2RDNBOFBmYlRQTHFQV08rMm1lWFVlc2JOWFFlNEhoNzdhWjVkUjZ4MzIwenk2ajFqWnE2RDNBOFBmYlRQTHFQV08rMm1lWFVlc2JOWFFlNEdNcTY1cGROZjRuZmZSQ0xaaTd6YWFUVGpaME4zK2VweCs0dlRhcnErQ2NNL2UzZEN6b3VyY1ZGR1BNdWVYcVJwbXJhbFcxR3RtV1lVby91VTg4bnBmcFBMY1Y2MXpWZFd2VWxVbStkdmtLSkd1M2FpampQTmFJSW91aUVpeDJTQUFDQ3JMTW93TnkyWGh1NlJUZmhUay9mK2hsanc2RkhjMGkxWFREUFd6M0htVjhhcGN3QUZBQUFBQUFBQUFCRDRsbDhTUnovYXZiaHdsVXN0RWtuamluZGN2SDBRK2ZVYWRQcHJtcHIyYmNEY05XMW5UTkpodlg5M0NsSjhsTmNjMzZvcmpOVHZ1Nk5ieGJqWTZkVXFkRTYwOTFkU3ljNnExS2xXcEtyVnFTcVZKUE1weWVXL3hLbjAxbnNleFJIL0FOUGVuNlF0aHVVdTZIckRmM2JTeml1amRrL3pQUmE5MGE4akwrMWFiUXFSL3dDbE54ZnZ5YUtEWFBaMmxtTWJCaDEvUjl0TkYxR2NhVTZrck90TGlVYS9FbjZwY2hzc2NOWlhHbnlNL1Bac3V5dTFsNW8xU05DdktWellONGROdkxwK21ML0k4clZkanhFVFZZbi9BQlA3SXc3QUQ0MmR6UXZMYW5jMjFXTldqVVdZemp5TkgyUG01aVluRW9BQVFCQklBaEVnQUFBQU5CMWVXOXF0Mi84QXFzMzVjcHp5OWU5ZlhFdW1yTDRzMWFmbksxTDVvc1ZpV05pd0FBS3NweHA1WEUwZlFxMEJ0dWc2ekM2akcydVpLTnd1Sk44bFQ5VE5uTmVRekduN1FYZHRGVTY2VnpUWEk1UEVsK1BPWks3SHhwVm1HNUF4RnZ0RHB0VmZmcVRveTZKeC9OSHBXcjZaNWRTNnpQTkZVZkJYRDNBOFBmZlRQTHFQV08rK21lWFVlc2pacTZEM0E4UGZmVFBMcVBXTysrbWVYVXVzYk5YUWU0SGg3NzZaNWRSNngzMzB6eTZqMWpacTZEM0E4UGZmVFBMcVBXTysrbWVYVWVzYk5YUWU0SGg3NzZaNWRSNngzMzB6eTZqMWpacTZEM0E4UGZmVFBMcVhXTysrbWVYVXVzYk5YUWU0SGg3NzZaNWRTNngzMzB6eTZqMWpacTZEM0E4UGZmVFBMcVBXTysrbWVYVWVzYk5YUWU0SGg3NzZaNWRSNngzMzB6eTZqMWpacTZEM0E4UGZmVFBMcVBXVmxyT2x4V1hlMDM2c3NiTlhRWkFpVW94aTVTYWpHS3kyM2hJd1YxdExhUVRWdFRuWGwwdGJxTUJxR3AzZCs4VnA3dFBtcHc0by9xZGFiTlZYUGduRDM2L3JQMHRPMXRYK3cvaW40ZjZHRWlpRWk2UnRwcGltTVF2QWl4Q0pMQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVZhTEVBVWFNMW9PdGZSTVcxMDI3ZitHWEs0Zm9ZZG9vMFZxcGlxTVNPa1FuR3BCVGhKU2pKWlVrOHBsalFOUDFHN3NKZnNLbjNIeTA1Y2NXYkJhYlRXMDFpNm96b3k2WS9lWHpNVlZpcU9YRlREUGd4OE5aMHVTeXJ5Qy9xeWkzZmZUUExxUFdjdGlyb2g3Z2VIdnZwbmwxSHJIZmZUUExxWFdObXJvUGNEdzk5OU04dXBkWTc3Nlo1ZFM2eHMxZEI3Z2VIdnZwbmwxTHJIZmZUUExxWFdObXJvUGNEdzk5OU04dW85WTc3Nlo1ZFI2eHMxZEI3Z2VIdnZwbmwxTHJIZmZUUExxWFdObXJvUGFEeGQ5OU04dXBkWkhmZlRQTHFYV05tcm9QY0R3OTl0TTh1cGRZNzdhWjVkUzZ4czFkQjdoZzhYZmZUUExxUFdSMzIwenk2bDFqWnE2RDNBOFBmYlRQTHFQV08rMm1lWFVlc2JOWFFlNEhoNzdhWjVkUzZ6NFZ0ZjB5bW51MXBWWDBRaS93QXlZb3FuNERLbUcxM1Y0MmNKVzl2SlN1WkxHVi85dGRQck1UZjdRM05lTHAyMFBvOEh4YjJjeWY0OHhoZU50dHR0dmxiNXpSYnNmR3BhSUZsdHQ4YlpkRUpGa2Exa2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0dpalI5Q3JRSHIwblVxMm5WdDZQMzZVbjkrbjArbGVrM0t4dmJlOW84TGJ6M2x6eGZMSDFvMEJvdFJxMWFGUlZLTlNWT2E1NHZCeHVXb3I0L0ZFdzZNRFZyUGFXckJLTjNRVlQrZUhFK295dEhYdE1xTGpydW0raWNXakpWYXJqNEs0bGxBZUh2dHBubHRMckhmYlRmTGFYV1UyYXVpSHVCNGUrMm0rVzB1c2Q5dE04dHBkWTJhdWc5d1BEMzIwenkybDFqdnRwbmx0THJHelYwSHVCNGUrMm1lVzB1c2Q5dE04dHBkWTJhdWc5d1BEMzIwM3kybDFqdnRwdmx0THJHelYwR2tnQTlSMEFBQUFBQUFBQUFBQUFBQUFBQUFBQUVZS3RGeU1BZlBCR0Q2WUdBUG5nWUw0R0FLWUdDK0JnQ21CZ3ZnWUFwZ1lMNEdBS1lHQytCZ0NtQmd2Z1lBcGdZTDRHQUtZR0MrQmdDbUJndmdZQXBnWUw0R0FLWUpTTDRDUUVKRXBFNEpBQUFBQUFJWlNYSXk3SXB4MzZzSWVGSkwzZ2RBc29jSFowSWVEVGl2Y2ZZSlk0dWppQjVUbUFBZ0FBQUFBQUF4VzAycVIwalJiaTl5dUVTM2FTZlBOOG56L0F2UlJOeXFLYWVjalVlNkp0SkpUbm9salVjY2Y0bXBGOHY4aS9QcU9mRXpuT3BPVlNwSnpuSnR5aytWdDg1Qjk3cGRQUnByY1VVL3dDZlZZQUJwQUFBQUFRaHVYYzQxMlZscUMwdTRuL1picVgzTXY4QWNxYzNYeWRSMU0vUGNaU2hKU2czR1VYbE5jek83YUZlOThkSHM3M25yVWxLWDlYSS9lbWZMZHNhZUtLNHUwL0huOHg3Z0FlQWdBQUFBQUFBQVhGeG5PS3IzcTFTWFRKdjNuUlp2ZHB6bDBSYk9jTGpiZlNhOVA4QUZhbGFKWXJFc2ExZ0FBQ01FZ0NtQ01GeGdENTRJd2ZUQkdBS1lHQytCZ0NtQmd2Z1lBcGdZTDRHQUtZR0MrQmdDbUJndmdZQXBnWUw0R0FLWUdDK0JnQ21CZ3ZnWUFwZ1lMNEdBS1lHQytDY0FVU0pTTFlKd0JDUktKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkJHQ3dBK2VDTUgwd1JnRDU0R0Q2WUl3QlRBd1h3TUFVd01GOERBRk1EQmZBd0JUQXdYd01BVXdNRjhEQUZNREJmQXdCVEF3WHdNQVV3TUY4REFGTURCZkF3QlRCT0MyQ2NBVlNKU0xKQUFrU0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ2tBVndRMFhJd0I4OEVZUHBnWUErZUJndmdZQXBnWUw0R0FLWUdDK0JnQ21CZ3ZnWUFwZ2xJdGduQUZnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVm4zMHlIQ2FsYlE2YXNmaWZCbnUyZWh2NnhiK2h1WFVtVnFuRk1qZUFBZVc1Z0FBQUFBQUFCenJ1cjNqZFd3MCtMKzZveXJTWHBmRXZnem9weVR1bFRjOXFLc1h5UW8wNHJxYlBXN0pvaXJWUk0vQ0puOXYzSWFzQUQ3SklBQUFBQUFBQWRjN21sV1ZUWmVuRi84QTJxMDRMMVp6K1p5TTYzM05LVHA3THdrLy91MXB5WHF6ajhqeCsyTWQyL3pIN2phZ0FmSG9BQUFBQUFBQWZHOGx1V2R4TG9weWZ1Wnp1SnYrclMzZEx1My9BTktSb01UWnArVXJVcm9raEVtcFlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRldaYlpTRzlxamw0Rk52OEFJeERNL3NkSE5lNm4wUWl2ZitoenV6aWlVVHliUUFEelZBQUFBaVFBQUFEbU9UZDA2ZzZlMG5DODFhaENTL0RLT3NtajkxUFRwVnRQdHRScHh5N2FUaFV4NE11UjlmeFBVN0x1UmIxTVorUEFoeklBSDJpUUFBQUFBQUFCSnQ0U3krWmRKM1haNnk3MzZKWldiL2VwVWtwZjFQamZ2WnpEdWY2TzlUMXFGZXJETnJhTlZKdHJpY3Y0WTlmSCtCMTgrWTdadnhOVk5tUGh4a0FBZlBJQUFBQUFBQUFlRFhudTZQZHZwaGozbzBWRzY3U3ZHalYvUzRyM21sUk4ybjhNclVyb2toRW1oWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSTVpU0FLczJiWTZHTGU2bjB6UzZsK3ByTE51MlRodTZXNWVIVmsvZ2poZW4zRVR5WmtBR0JSSUNBQUFBQUFBUGplVzFHN3RhMXJYanZVcTBIQ2E5RFBzQ1ltWW5NRGp0OXNicnRDN3EwYmV5bmMwWXl4Q3JGckVselBsUGg5VXRvL05OYnJqOHp0SVBianRtL0VZbUkrL3dDUnhiNnBiUithYTNYSDVqNnBiUithYTNYSDVuYVFUN2F2K1dQditVdUxmVkxhUHpUVzY0L01mVkxhUHpUVzY0L003U0I3YXY4QWxqNy9BSkhGdnFsdEg1cHJkY2ZtWG9iSDdSVktzS2N0Tm5TVW1rNXprdDJQcGZHZG1CSHRxLzVZKy81UXgrZzZWYjZOcHRPeXQrTlI0NXpmTE9UNVd6SUFIalZWVlYxVFZWT1prQUFVQUFBQUFBQUFHSDJxbGpTV3ZDcVJYeE5PaWJidGU4YWRUWFRWWHdacWNUZlk4QzlQSlpFa0lrN3BBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNHU1F3S3MzZlo2RzVvOXQ2VTVkYlpvOHVRNkJwa09EMDYyaDBVby9BemFqd3dyTDBBa2d4S2lKSVJJQUFBQUFBQUFBMUxhcmJTanMvcVViQ2VuenVaT2txamxHb280eTN4Y25vTnRPTWQxSnllMTlaUGtWQ2xqcVpvMDlGTmRlS2hzUDJvMi9tYXI3ZGZJbjdVTGZ6TlY5dXZrY3dCNkhkclhSTHAvMm9XL21hcjdkZklmYWhiK1pxdnQxOGptQUhkclhRZDUyUzErTzBWald1NFdrcmFOT3J3ZTdLYWxuaVR6N3pObW45eXFoS2pzb3FrbGpoN2ljMTZWeEw4amNEeTdrUkZjeENBQUhNQUFBQUFBQUFBQUJyMjJNdjdOYlI2WnQrNDFpSnNXMlV1TzBqNkpQNEd1eFBRcytDRjQ1TElraGNoSjJTQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFTWtxd0s0eThkUEVkSHBSM0tjSUwrR0tYdU9mV2NPRXZLRlB3cWtWN3pvWmsxRThvVmtJSkJrVkFBQUFBQUFBQUFBT1k5MTdTNml1TFRWNmNHNmNvY0JWYTVtbTNGdjFwdGZnZE9QaGYyZHZmMmRhenU2U3EwSzBkMmNYenI1blcxWHU2b3FINXlCdU8wV3dXcTZmVm5VMDZuSy90TTVqdWYza1YwT1BQNjBhck96dklUM0oybGVNL0JkS1Nmd1BZcHVVMXhtSlMrQjY5SjArNTFUVUtOaGFRM3F0V1dGMFJYTzM2RVpYU05rTmYxT2NlRHNaMjlKOHRhNFc1Rkw4ZU4vZ2pxMnltek5qczlieVZGdXRkVkZpcmNTV0hMMEpjeU9WMi9UUkhEakl5dW0yZEhUOVB0N0dnc1VxRk5RajZjYy93Q1BLZWtBOGptZ0FCQUFBQUFBQUFBQUFEVmRzWC9hcmFQUlRiOTVnWW1hMnZlZFNwcm9wTDRzd3FQUnRlQ0Y0NUxMa0pDQjFTQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGV1dLc0QyYUhEZjFlMWowVHoxSTNzMHZaZU85cThINE1KUDNHNkdHL1B2S1NBQXpvQUFBQUFBQUFBQUFBQUFaZlNBQUFBQUFBQUFBQUFBQUFBQUFBQUdtYlZQT3J5WGcwNG94YU1odEk4NnpYOUNpdmNZOUhwMi9CQzhjbGdBWFNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZXV0tNRE9iSHd6ZjFwK0RTeDFzMncxclkySy90Y3VmN3ErSnNwNTk3eHlwUE1BQnhRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFhSnJzdDdXTHQvejQ5eDQwZmJVWjhKcU4xTmNqcXkrSjhVZXBUd3BoMGhZQUZnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLTXVWWUdmMk5xSlZicWwweGpKZmc4RzBHaWFGZEswMU9sVW04UWw5eVQ5RC9YQnZaZ3Z4aXJLa2dBT0NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErTjVYamJXdGF2SjhWT0RmNDh4OWpXdHJiNVlqWVU1Y2VWS3BqM0w4enBicDJxc0pocmFiYmJmRzN4c3Npc1M2UFNYU0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCVmxpQVBtMGJqczVxYXU3ZFc5V1g5b3BMSEgvSEhwTlFhRk9jNlZTTlNuSnduRjVVbHlvNTEwUlhHRVREcEFNQnBlME5HcWxTdnNVcW5qRis3TDVHZGhPTlNLblRrcHhmSTR2S01GVkUwenhVV0FCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJTclZwMFlPZGFwR25GYzhuZ3dPcGJSMG9KMDdCY0xQeHNsOTFlcGM1ZW1pcXJrbkQzNnpxbFBUNk9GaVZ4TmZjaDBlbCtnMG1jNTFha3FsU1RsT1R6SnZuWXExS2xhcEtwVm01ems4dVVueHNKRzYzYmlpRm9qQ1VXSVJKMVNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSXdWYUxrWUErZUM5Q3ZYb1BOQ3RVcGYweWFHQ01BZTJPczZyRllWN04rdEova08vV3ErV1M3TWZrZUhBd1YyS2VoaDd1L2VxK1dTN01ma08vV3ErV1M3TWZrZUhBd05pbm9ZZTd2MXF2bGt1eXZrTy9XcStXUzdLK1I0Y0RBMktlaGg3dS9lcStXUzdLK1JQZnZWZkxKZGxmSThHQmdiRlBRdzkzZnZWZkxKZGxmSWQrdFY4c2wyVjhqdzRHQnNVOUREM2QrdFY4c2wyVjhoMzYxWHl5WFpYeVBEZ1lHeFQwTVBkMzYxWHl5WFpYeUhmclZmTEpkbGZJOE9CZ2JGUFF3OTNmclZmTEpkbGZJZCt0VjhzbDJZL0k4T0JnYkZQUXc5L2Z2VmZMSmRtUHlIZnZWZkxKZG1QeVBCZ1lHeFQwTVBmMzcxWHl5WFpqOGgzNzFieXlYWmo4andZR0JzVTlERDM5KzlWOHNsMlkvSXJQV05Va3NPOXFKZWpDUEZnWUd4VDBNSnExS3RhVzlXcVRxUzZaU2JLcEZzRXBGaENSWklKRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSXdBQXdNQUFNREFBREF3QUF3TUFBTURBQURBd0FBd01BQU1EQUFEQXdBQXdNQUFNREFBREJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUgvLzJRPT0nKSBjZW50ZXIgY2VudGVyL2NvdmVyIG5vLXJlcGVhdCAhaW1wb3J0YW50Owp9Ci8qIEtleWNsb2FrIHVzZXIgc2NyZWVucyBlbmQgKi8KCi5wb3J0YWwtdGl0bGVfX2ltYWdlIHsKICB3aWR0aDogODJweDsKICBoZWlnaHQ6IGF1dG87Cn0KCi5wb3J0YWwtdGl0bGUgewogIHBhZGRpbmc6IDAgMTBweCAwIDVweDsKfQoKLyoKLnBvcnRhbDo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDA7CiAgICBoZWlnaHQ6IDEwcHg7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICM1NzFFRkEsICM1NzFFRkEgNjIlLCB3aGl0ZSA2MiUpOwp9CiovCgoucG9ydGFsX19iYWNrZ3JvdW5kOjpiZWZvcmUgewogIGNvbnRlbnQ6ICcnOwogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBmaXhlZDsKICBsZWZ0OiAwOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgvdW5pdmVudGlvbi9wb3J0YWwvY3VzdG9tL3BvcnRhbF9iYWNrZ3JvdW5kX2ltYWdlLnN2Zyk7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDIzN3B4OwogIGJhY2tncm91bmQtc2l6ZTogNDgwcHg7CiAgYm90dG9tOiA0cHg7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMjVweCBjZW50ZXI7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEzMDBweCkgewogIC5wb3J0YWxfX2JhY2tncm91bmQ6OmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDM1MHB4OwogICAgYm90dG9tOiAtMjhweDsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDE5cHggY2VudGVyOwogIH0KfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzQ4cHgpIHsKICAucG9ydGFsX19iYWNrZ3JvdW5kOjpiZWZvcmUgewogICAgYmFja2dyb3VuZC1zaXplOiAyNTBweDsKICAgIGJvdHRvbTogLTUwcHg7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAyMHB4IGNlbnRlcjsKICB9Cn0KCi5wb3J0YWwtY2F0ZWdvcmllczpiZWZvcmUgewogIHdpZHRoOiAxMDAlOwogIGNvbnRlbnQ6ICcnOwogIHBvc2l0aW9uOiBmaXhlZDsKICBsZWZ0OiAwOwogIGhlaWdodDogMXB4OwogIHRvcDogdmFyKC0tbGF5b3V0LWhlaWdodC1oZWFkZXIpOwogIGJhY2tncm91bmQtY29sb3I6ICNkZGRkZGQ7CiAgei1pbmRleDogMTsKfQoKLnBvcnRhbC1zaWRlbmF2aWdhdGlvbl9fbG9naW4taGVhZGVyIHsKICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19lZGl0LW1vZGUgewogIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19lZGl0LW1vZGU6aG92ZXIgewogIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5LWRhcmspOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeS1kYXJrKTsKfQoKLnBvcnRhbC1oZWFkZXJfX2VkaXQtbW9kZS1sYWJlbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKLnBvcnRhbC1zaWRlbmF2aWdhdGlvbl9fbG9nb3V0LWxpbmsgewogIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19tZW51LWl0ZW06aG92ZXIsCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtc3ViSXRlbTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcG9ydGFsLXRyYW5zaXRpb24tZHVyYXRpb24pOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19tZW51LWl0ZW06aG92ZXIgLnBvcnRhbC1zaWRlbmF2aWdhdGlvbl9fc3VibWVudSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19tZW51LWl0ZW06YWN0aXZlIHsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgppbnB1dCB7CiAgYm9yZGVyOiAwLjFyZW0gc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5LWRhcmspCn0KCmlucHV0W3JlYWRvbmx5XSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKLyppbnB1dCB7CmJvcmRlci1jb2xvcjogdmFyKC0tYmdjLWlucHV0Ym9yZGVyLW9uLWNvbnRhaW5lcik7Cn0qLwoKLnBvcnRhbC1zZWFyY2hfX2lucHV0IHsKICBib3JkZXI6IDAuMXJlbSBzb2xpZCB2YXIoLS1iZ2MtaW5wdXRib3JkZXItb24tY29udGFpbmVyKTsKfQoKLmltYWdlLXVwbG9hZF9fY2FudmFzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCmJ1dHRvbiB7CiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXBvcnRhbC10cmFuc2l0aW9uLWR1cmF0aW9uKTsKfQoKYnV0dG9uLnByaW1hcnkgewogIGNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSk7Cn0KCmJ1dHRvbi5wcmltYXJ5IHN2ZyB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKYnV0dG9uW2Rpc2FibGVkXSB7CiAgY29sb3I6ICNhZmFmYWY7Cn0KCmJ1dHRvbltkaXNhYmxlZF0gc3ZnIHsKICBjb2xvcjogI2FmYWZhZjsKfQoKaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXMgewogIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1ibGFjayk7Cn0KCi5mb3JtLWVsZW1lbnQgewogIG1hcmdpbi1ib3R0b206IDJweDsKICAvKm5lZWRlZCBmb3IgY2xlYW5lciBPdXRsaW5lKi8KICBtYXJnaW4tbGVmdDogMnB4Owp9CgpzZWxlY3QgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5tdWx0aS1zZWxlY3RfX3NlbGVjdCB7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKLm11bHRpLWlucHV0X19yb3ctLW11bHRpbGluZSB7CiAgYm94LXNoYWRvdzogaW5zZXQgMnB4IDAgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKdGV4dGFyZWEgewogIGJvcmRlcjogLjFyZW0gc29saWQgI0IyQUZBRjsKICB3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTsKfQoKLm5vdGlmaWNhdGlvbi0tc3VjY2VzcyB7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZm9udC1jb2xvci1zdWNjZXNzKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mb250LWNvbG9yLXN1Y2Nlc3MtbGlnaHQpOwp9Cgoubm90aWZpY2F0aW9uLS13YXJuaW5nIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mb250LWNvbG9yLXdhcm5pbmcpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZvbnQtY29sb3Itd2FybmluZy1saWdodCk7Cn0KCi5ub3RpZmljYXRpb24tLWVycm9yIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mb250LWNvbG9yLWVycm9yKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mb250LWNvbG9yLWVycm9yLWxpZ2h0KTsKfQoKLmhlYWRlci10YWJfX2NsaWNrYWJsZTpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSk7CiAgYm94LXNoYWRvdzogMCAwLjJyZW0gMCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIGJvcmRlci1ib3R0b206IDA7Cn0KCi5oZWFkZXItdGFiOmhvdmVyOmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5LWRhcmspOwogIGJveC1zaGFkb3c6IDAgMC4ycmVtIDAgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5LWRhcmspOwogIGJvcmRlci1ib3R0b206IDA7CiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXBvcnRhbC10cmFuc2l0aW9uLWR1cmF0aW9uKTsKfQoKLmhlYWRlci10YWI6Zm9jdXM6YmVmb3JlIHsKICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stYmxhY2spOwogIGJveC1zaGFkb3c6IDA7Cn0KCi5oZWFkZXItdGFiLS1hY3RpdmU6Zm9jdXM6YWZ0ZXIgewogIGJvcmRlcjogMC4ycmVtIHNvbGlkIHZhcigtLWNvbG9yLW9wZW5kZXNrLWJsYWNrKTsKfQoKLmhlYWRlci10YWI6aG92ZXIsCi5oZWFkZXItdGFiOmhvdmVyfi5pY29uLWJ1dHRvbiAucG9ydGFsLWljb24sCi5oZWFkZXItdGFiLS1hY3RpdmUsCi5oZWFkZXItdGFiLS1hY3RpdmV+Lmljb24tYnV0dG9uIC5wb3J0YWwtaWNvbiB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcG9ydGFsLXRyYW5zaXRpb24tZHVyYXRpb24pOwp9CgouaGVhZGVyLXRhYi0tYWN0aXZlfi5pY29uLWJ1dHRvbjpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSk7Cn0KCi5jaG9vc2UtdGFiOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgouY2hvb3NlLXRhYi0tYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpOwogIGNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSk7Cn0KCgouaGVhZGVyLWJ1dHRvbl9fYnV0dG9uIC5wb3J0YWwtaWNvbiB7CiAgY29sb3I6ICMxRjFGMUY7CiAgc3Ryb2tlLXdpZHRoOiAzOwp9CgouaGVhZGVyLWJ1dHRvbi0taXMtYWN0aXZlIC5wb3J0YWwtaWNvbiB7CiAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7Cn0KCi8qCi8vCi8vCi8vIExvYWRpbmcgT3ZlcmxheSBpbWFnZSBhbmQgQW5pbWF0aW9uCiovCgouc3RhbmRieUNpcmNsZSB7CiAgZGlzcGxheTogbm9uZTsKfQoKLnN0YW5kYnlXcmFwcGVyOmJlZm9yZSB7CiAgY29udGVudDogJyc7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC91bml2ZW50aW9uL3BvcnRhbC9pY29ucy9sb2dvLnN2Zyk7CiAgYmFja2dyb3VuZC1zaXplOiA3MCU7CiAgd2lkdGg6IDIwMHB4OwogIGhlaWdodDogMjAwcHg7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2F0ZS1iY2sgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZSBib3RoOwogIGFuaW1hdGlvbjogcHVsc2F0ZS1iY2sgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZSBib3RoOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzYXRlLWJjayB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICA1MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuOSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7CiAgICBvcGFjaXR5OiAwLjU7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKQGtleWZyYW1lcyBwdWxzYXRlLWJjayB7CiAgMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7CiAgfQoKICA1MCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuOSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7CiAgICBvcGFjaXR5OiAwLjU7CiAgfQoKICAxMDAlIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKLnBvcnRhbC10b29sdGlwIHsKICBib3JkZXItY29sb3I6ICNEM0Q3REU7CiAgYm94LXNoYWRvdzogMHB4IDBweCA0cHggMHB4IHJnYmEoMzIsIDUwLCA4NywgMC4xMCk7Cn0KCi5wb3J0YWwtdG9vbHRpcF9fYXJyb3cgewogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI0QzRDdERSB0cmFuc3BhcmVudDsKfQoKLnBvcnRhbC10aXRsZV9fcG9ydGFsLW5hbWUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICBib3JkZXI6IDA7Cn0= + favicon.ico: + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAACMuAAAjLgAAAAAAAAAAAAD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v7///j5///19v//9fb///X2///19v//9fb///X2///19v//9fb///X2///19v//+fr//////////////////////////////////////////////////////////////////////////////////////////////////u/y//y5xv/7mKr/+5Gl//uRpf/7kaX/+5Gl//uRpf/7kaX/+5Gl//uRpf/7kaX/+5Gl//uarP/9wMv///T2//////////////////////////////////////////////////////////////////////////////////7v8v/7m63/+niQ//p4kf/6eZH/+nmR//p5kf/6eZH/+nmR//p5kf/6eZH/+nmR//p5kf/6eZH/+niQ//p5kf/8prb///X3/////////////////////////////////////////////////////////////////////////////LnF//p4kf/6epL/+nqS//p6kv/6epL/+nqS//p6kv/6epL/+nqS//p6kv/6epL/+nqS//p6kv/6epL/+nqS//p6kv/9yNL////////////////////////////////////////////////////////////////////////4+f/7l6r/+niQ//p6kv/6epL/+nmR//p4kP/6eJD/+niQ//p4kP/6eJD/+niQ//p4kP/6eJD/+niQ//p4kP/6eJD/+naO//yktP///f7///////////////////////////////////////////////////////////////////X2//uRpf/6eZH/+nqS//p5kf/7iZ///Ke3//ynt//8p7f//Ke3//ynt//8p7f//Ke3//ynt//8p7f//Ke3//ynt//8prb//b/K///8/f//////////////////////////////////////////////////////////////////9fb/+5Gl//p5kf/6epL/+niQ//ynt////f3///7+///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+///+/v///v7////////////////////////////////////////////////////////////////////////19v/7kaX/+nmR//p6kv/6eJD//Ke3///+/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////X2//uRpf/6eZH/+nqS//p4kP/8p7f///7+////////9vj//tXf//7S3f/+0t3//tLd//7S3f/+0t3//tLd//7S3f/+0t3//tLd//7W4P/+5u3///r7////////////////////////////////////////////////////////9fb/+5Gl//p5kf/6epL/+niQ//ynt////v7///////7V3//6OWv/+itg//osYf/6LGH/+ixh//osYf/6LGH/+ixh//osYf/6LGH/+i5j//s9bv/8aI7//bbJ///2+P/////////////////////////////////////////////19v/7kaX/+nmR//p6kv/6eJD//Ke3///+/v///////tLd//orYP/6HFX/+h1W//odVv/6HVb/+h1W//odVv/6HVb/+h1W//odVv/6HVb/+hxW//oaVP/6JFz//G+T//7j6v////////////////////////////////////////X2//uRpf/6eZH/+nqS//p4kP/8p7f///7+///////+0t3/+ixh//odVv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//odV//6G1X/+1uE//7m7P//////////////////////////////////9fb/+5Gl//p5kf/6epL/+niQ//ynt////v7///////7S3f/6LGH/+h1W//oeV//6Hlf/+hxW//obVf/6G1X/+htV//obVf/6G1X/+htU//obVf/6Hlf/+h5X//oeV//6HFX//Hqc///6/P/////////////////////////////19v/7kaX/+nmR//p6kv/6eJD//Ke3///+/v///////tLd//osYf/6HVb/+h5X//odVv/8XIb//Zaw//2Ur//9lK///ZSv//2Ur//8h6X/+057//ofWP/6Hlf/+h5X//odVv/6LGH//snW//////////////////////////////X3//uRpf/6eZH/+nqS//p4kP/8p7f///7+///////+0t3/+ixh//odVv/6Hlf/+htV//2VsP//////////////////////////////////7PH//HOX//oeV//6Hlf/+h5X//obVP/8hKP/////////////////////////////+fr/+5qs//p4kP/6epL/+niQ//ynt////v7///////7S3f/6LGH/+h1W//oeV//6G1X//ZWw///////////////////////////////////////+4Oj/+z1u//ocVv/6Hlf/+htU//tYgv//9/n////////////////////////////9wMv/+nmR//p6kv/6eJD//Ke3///+/v///////tLd//osYf/6HVb/+h5X//obVf/9lbD////////////////////////////////////////7/P/8Y4r/+hpU//oeV//6G1X/+0d2///v8//////////////////////////////09v/8prb/+nqS//p2jv/8prb///7+///////+0t3/+ixh//odVv/6Hlf/+htV//2VsP////////////////////////////////////////3+//xqkP/6GlT/+h5X//ocVf/7RXT//+3y///////////////////////////////////19//9yNL/+6S0//y/yv///v7///////7S3f/6LGH/+h1W//oeV//6G1X//ZWw/////////////////////////////////////////f7//GqQ//oaVP/6Hlf/+hxV//tFdP//7fL//////////////////////////////////////////////f3///z9/////////////tLd//osYf/6HVb/+h5X//obVf/9lbD////////////////////////////////////////5+v/7Xob/+htU//oeV//6G1X/+0l3///w9P/////////////////////////////////////////////////////////////////+1uD/+i5j//odVv/6Hlf/+htV//yDo////////////////////////////////////////tHd//o0Z//6HVb/+h5X//oaVP/7X4f///n7///////////////////////////////////////////////////////////////////o7v/7P3D/+hxV//oeV//6HFb/+z1u//7K2P///P3///3+///9/v///f7///r7//7S3v/7V4L/+hxW//oeV//6Hlf/+hxV//2Srf////////////////////////////////////////////////////////////////////////z9//xxlf/6GlT/+h5X//oeV//6HVb/+jRo//xiiv/8apD//GqQ//xqkP/8Xof/+jNn//ocVv/6Hlf/+h5X//ocVv/7Nmn//tfh/////////////////////////////////////////////////////////////////////////////sfV//ouY//6HFb/+h5X//oeV//6HVb/+hpU//oaVP/6GlT/+hpU//oaVP/6HVb/+h5X//oeV//6HVb/+h9Y//2Vr////v///////////////////////////////////////////////////////////////////////////////f3//Zey//okW//6HFX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+hxW//ofWP/8epz///P2////////////////////////////////////////////////////////////////////////////////////////+Pr//Z63//o2af/6G1X/+hpU//obVf/6HFX/+hxV//ocVf/6G1X/+hpU//ocVf/6Nmn//ZWw///z9v///////////////////////////////////////////////////////////////////////////////////////////////////v7//tbh//yMqf/7WYP/+0d2//tFdP/7RXT/+0V0//tJd//7X4j//ZKu//7Y4v///f7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3+f//7/P//+3y///t8v//7fL///D0///5+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + logo.svg: + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik04My4xLDk3LjI2djIuMTJjMCw4Ljk3LTcuMywxNi4yNy0xNi4yNywxNi4yN0gyOC42MmMtOC45NywwLTE2LjI3LTcuMy0xNi4yNy0xNi4yN3YtMzguMmMwLTguOTcsNy4zLTE2LjI3LDE2LjI3LTE2LjI3aDIuMTJ2NTIuMzVoNTIuMzVaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODMuODEsODQuNTJoLTQwLjMzdi00NC41N2MwLTE1LjIyLDEyLjM4LTI3LjU5LDI3LjU5LTI3LjU5aDEyLjc0YzE3LjU2LDAsMzEuODQsMTQuMjgsMzEuODQsMzEuODR2OC40OWMwLDE3LjU2LTE0LjI4LDMxLjg0LTMxLjg0LDMxLjg0Wk02MS44OCw2Ni4xMmgyMS45M2M3LjQxLDAsMTMuNDQtNi4wMywxMy40NC0xMy40NHYtOC40OWMwLTcuNDEtNi4wMy0xMy40NC0xMy40NC0xMy40NGgtMTIuNzRjLTUuMDcsMC05LjIsNC4xMy05LjIsOS4ydjI2LjE4WiIvPgo8L3N2Zz4= + portal_background_image.svg: + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== + +--- +# Source: nubus/charts/nubusPortalFrontend/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-portal-frontend + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-frontend +data: + ENVIRONMENT: production + LOG_LEVEL: INFO +--- +# Source: nubus/charts/nubusPortalFrontend/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-portal-frontend-nginx + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-frontend +data: + nginx.conf: | + worker_processes auto; + error_log /dev/stderr notice; + pid /var/run/nginx.pid; + events { + worker_connections 1024; + } + http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /dev/stdout main; + sendfile on; + keepalive_timeout 65; + #gzip on; + server { + listen 80 default_server; + listen [::]:80 default_server; + root /var/www/html; + index index.html index.htm; + server_name _; + location / { + try_files $uri $uri/ =404; + } + } + } +--- +# Source: nubus/charts/nubusPortalServer/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-portal-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-server +data: + ENVIRONMENT: production + LOG_LEVEL: INFO + PORTAL_SERVER_ADMIN_GROUP: cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal + PORTAL_SERVER_AUTH_MODE: saml + PORTAL_SERVER_EDITABLE: 'true' + PORTAL_SERVER_PORT: '80' + PORTAL_SERVER_UCS_INTERNAL_PATH: portal-data + PORTAL_SERVER_UMC_GET_URL: http://ums-umc-server/get + PORTAL_SERVER_UMC_SESSION_URL: http://ums-umc-server/get/session-info + PORTAL_SERVER_CENTRAL_NAVIGATION_ENABLED: 'true' + OBJECT_STORAGE_ENDPOINT: https://objectstore.opendesk.apps.digilab.network + OBJECT_STORAGE_BUCKET: ums +--- +# Source: nubus/charts/nubusProvisioning/charts/nats/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-nats-config + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.1.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-provisioning-nats +data: + nats.conf: | + { + server_name: $SERVER_NAME + pid_file: "/var/run/nats.pid" + port: 4222 + http_port: 8222 + lame_duck_duration: 30s + lame_duck_grace_period: 10s + max_payload: 16MB + jetstream { + max_file_store: 1Gi + max_memory_store: 256Mi + store_dir: "/data" + } + + authorization { + users: [ + { + user: $NATS_USER + password: $NATS_PASSWORD + permissions: { + publish: '>' + subscribe: '>' + } + } + { + user: $NATS_API_USER + password: $NATS_API_PASSWORD + permissions: { + publish: '>' + subscribe: '>' + } + } + { + user: $NATS_DISPATCHER_USER + password: $NATS_DISPATCHER_PASSWORD + permissions: { + publish: '>' + subscribe: '>' + } + } + { + user: $NATS_UDM_TRANSFORMER_USER + password: $NATS_UDM_TRANSFORMER_PASSWORD + permissions: { + publish: '>' + subscribe: '>' + } + } + { + user: $NATS_PREFILL_USER + password: $NATS_PREFILL_PASSWORD + permissions: { + publish: '>' + subscribe: '>' + } + } + { + user: $NATS_UDMLISTENER_USER + password: $NATS_UDMLISTENER_PASSWORD + permissions: { + publish: '>' + subscribe: '>' + } + } + ] + } + + } +--- +# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-common + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +data: + PROVISIONING_API_HOST: ums-provisioning-api + PROVISIONING_API_PORT: '80' + NATS_HOST: ums-provisioning-nats + NATS_PORT: '4222' +--- +# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-wait-for-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +data: + wait-for-api.sh: |+ + #!/bin/bash + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2024 Univention GmbH + + set -xo pipefail + + [ -z "$1" ] && { + echo "A url is required as the first argument" + exit 1 + } + + set -uxo pipefail + + retry_interval=2 + response_code=404 + timeout_duration=240 + end_time=$((SECONDS + timeout_duration)) + + while [ $response_code -ne 401 ]; do + if [ $SECONDS -ge $end_time ]; then + echo "Timeout reached. Exiting." + exit 1 + fi + + echo "Waiting for the Provisioning API to be available ..." + response_code=$(set +x; curl -s -o response.txt -w "%{http_code}" -X POST "$1") + if [ "${response_code}" -ne 401 ]; then + echo "Provisioning API is not reachable, status code: $response_code" + cat response.txt + sleep ${retry_interval} + else + echo "The Provisioning API is reachable" + exit 0 + fi + done + + echo "Permanent error ocurred. Exiting." + exit 1 + + +--- +# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +data: + LOG_LEVEL: INFO + DEBUG: 'false' + ROOT_PATH: / + CORS_ALL: 'false' + wait-for-nats.py: | + #!/usr/bin/env python3 + import os + import asyncio + from nats.aio.client import Client as NATS + + async def error_cb(e): + print(f"Unavailable, waiting 2 seconds. Error: {e}") + await asyncio.sleep(2) + + async def check_nats(): + nc = NATS() + print("Checking if NATS server can be reached...") + await nc.connect( + servers=[f"nats://{os.environ['NATS_HOST']}:{os.environ['NATS_PORT']}"], + error_cb=error_cb, + user=os.environ['NATS_USER'], + password=os.environ['NATS_PASSWORD'], + ) + print("Success, the NATS server is available") + await nc.close() + + asyncio.run(check_nats()) +--- +# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-dispatcher + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +data: + LOG_LEVEL: INFO + NATS_MAX_RECONNECT_ATTEMPTS: '5' + UDM_HOST: ums-udm-rest-api + UDM_PORT: '9979' +--- +# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-prefill + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +data: + MAX_PREFILL_ATTEMPTS: '5' + NATS_MAX_RECONNECT_ATTEMPTS: '5' + LOG_LEVEL: INFO + UDM_HOST: ums-udm-rest-api + UDM_PORT: '9979' + wait-for-udm.py: | + #!/bin/python3 + import os + import time + import sys + from univention.admin.rest.client import UDM + + udm = UDM.http( + f"http://{os.environ['UDM_HOST']}:{os.environ['UDM_PORT']}/udm/", + os.environ["UDM_USERNAME"], + os.environ["UDM_PASSWORD"], + ) + + timeout = int(os.environ.get("TIMEOUT", "600")) + start_time = time.time() + + while time.time() - start_time < timeout: + print("Checking if UDM Rest API can be reached...") + try: + udm.get_ldap_base() + print("Success, UDM Rest API is available") + sys.exit(0) + except Exception as e: + print(f"Unavailable, waiting 2 seconds. Error: {e}") + time.sleep(2) + + print("Timeout reached, giving up") + sys.exit(1) +--- +# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-udm-transformer + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +data: + LDAP_PUBLISHER_NAME: udm-listener + LOG_LEVEL: INFO + UDM_HOST: ums-udm-rest-api + UDM_PORT: '9979' + LDAP_HOST: ums-ldap-server-primary + LDAP_PORT: '389' + LDAP_TLS_MODE: off + + LDAP_BASE_DN: dc=swp-ldap,dc=internal + LDAP_BIND_DN: cn=admin,dc=swp-ldap,dc=internal + +--- +# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-register-consumers + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +data: + PROVISIONING_API_BASE_URL: http://ums-provisioning-api/v1/subscriptions + UDM_HOST: ums-udm-rest-api + UDM_PORT: '9979' + LDAP_BASE_DN: dc=swp-ldap,dc=internal + wait-for-data-loader.sh: | + #!/bin/bash + # TODO: find a way to not leak the udm passwort into the log + set -euxo pipefail + + while ! (set +x; curl -o- --fail -X GET -u "${UDM_USERNAME}:${UDM_PASSWORD}" "http://${UDM_HOST}:${UDM_PORT}/udm/settings/data/cn=stack-data-ums.done,cn=data,cn=univention,${LDAP_BASE_DN}" -H 'Accept: application/json'); do + echo "Data loader not finished yet, waiting..." + sleep 2 + done + + echo "Success, the data loader has finished." +--- +# Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-selfservice-listener-common + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: selfservice-listener + helm.sh/chart: nubusSelfServiceConsumer-0.11.3 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 0.0.1 +data: + LOG_LEVEL: INFO + MAX_UMC_REQUEST_RETRIES: '5' + PROVISIONING_API_BASE_URL: http://ums-provisioning-api + UMC_SERVER_URL: http://ums-umc-server + PROVISIONING_API_USERNAME: selfservice + MAX_ACKNOWLEDGEMENT_RETRIES: '3' +--- +# Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-selfservice-listener-scripts + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: selfservice-listener + helm.sh/chart: nubusSelfServiceConsumer-0.11.3 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 0.0.1 +data: + wait-for-provisioning-api.sh: | + set -uo pipefail + + retry_interval=2 + response_code=404 + timeout_duration=120 + end_time=$((SECONDS + timeout_duration)) + + while [ "$response_code" -ne 200 ]; do + if [ $SECONDS -ge $end_time ]; then + echo "Timeout reached. Exiting." + exit 1 + fi + + echo "Waiting for the Provisioning API to be available ..." + response_code=$(set +x; curl -s -o response.txt -w "%{http_code}" "${PROVISIONING_API_BASE_URL}/v1/subscriptions/${PROVISIONING_API_USERNAME}" -u "${PROVISIONING_API_USERNAME}":"${PROVISIONING_API_PASSWORD}") + if [ "${response_code}" -ne 200 ]; then + echo "Provisioning API is not reachable, status code: $response_code" + cat response.txt + sleep ${retry_interval} + else + echo "The Provisioning API is reachable" + exit 0 + fi + done + + echo "Permanent error ocurred. Exiting." + exit 1 +--- +# Source: nubus/charts/nubusStackDataUms/templates/configmap-data.yaml +apiVersion: v1 +data: + 00-umc-init.yaml: |- + # Source: data-files/default-v2/00-umc-init.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2023 Univention GmbH + + # Source: https://git.knut.univention.de/univention/ucs/-/blob/5.0-4/base/univention-lib/shell/umc.sh#L85 + # "umc_init" is called from many join scripts + --- + action: create + module: container/cn + position: cn=univention,{{ ldapBaseDn }} + properties: + name: UMC + --- + action: create + module: container/cn + position: cn=policies,{{ ldapBaseDn }} + properties: + name: UMC + policyPath: true + --- + action: create + module: container/cn + position: cn=UMC,cn=univention,{{ ldapBaseDn }} + properties: + name: operations + + --- + action: create + module: policies/umc + position: cn=UMC,cn=policies,{{ ldapBaseDn }} + properties: + name: default-umc-all + --- + action: ensure_list_contains + module: groups/group + position: cn=Domain Admins,cn=groups,{{ ldapBaseDn }} + policies: + policies/umc: + - "cn=default-umc-all,cn=UMC,cn=policies,{{ ldapBaseDn }}" + --- + action: create + module: policies/umc + position: cn=UMC,cn=policies,{{ ldapBaseDn }} + properties: + name: default-umc-users + --- + action: ensure_list_contains + module: groups/group + position: cn=Domain Users,cn=groups,{{ ldapBaseDn }} + policies: + policies/umc: + - "cn=default-umc-users,cn=UMC,cn=policies,{{ ldapBaseDn }}" + 09-set-mail-domain.yaml: |- + # Source: data-files/default/09-set-mail-domain.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2023 Univention GmbH + + + + --- + # TODO: move this back to stack-data-swp after solving + # https://git.knut.univention.de/univention/customers/dataport/team-souvap/-/issues/286 + action: create + module: mail/domain + position: cn=domain,cn=mail,dc=swp-ldap,dc=internal + properties: + name: opendesk.apps.digilab.network + 10-ldap-server.yaml: |- + # Source: data-files/default/10-ldap-server.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2023 Univention GmbH + + + + --- + # See: https://git.knut.univention.de/univention/ucs/-/blob/5.0-3/management/univention-ldap/10univention-ldap-server.inst#L254 + action: "create" + module: "users/user" + position: "cn=users,dc=swp-ldap,dc=internal" + properties: + username: "Administrator" + lastname: "Administrator" + + # TODO: Workaround. We configure currently "firstname" and + # "mailPrimaryAddress" as required via UCR settings. + # See: https://git.knut.univention.de/univention/customers/dataport/team-souvap/-/issues/286 + firstname: "Admin" + mailPrimaryAddress: "administrator@opendesk.apps.digilab.network" + password: "d9f55507b96f479dbdbef0937396e436bb93169f" + primaryGroup: "cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal" + guardianRoles: + - "guardian:builtin:super-admin" + + --- + # See: https://git.knut.univention.de/univention/ucs/-/blob/5.0-3/management/univention-ldap/10univention-ldap-server.inst#L265 + action: ensure_list_contains + module: groups/group + position: cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal + properties: + users: + - "uid=Administrator,cn=users,dc=swp-ldap,dc=internal" + 35-management-console-module-udm.yaml: |- + # Source: data-files/default/35-management-console-module-udm.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2023 Univention GmbH + + + + # Source: https://git.knut.univention.de/univention/ucs/-/blob/5.0-4/management/univention-management-console-module-udm/35univention-management-console-module-udm.inst + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-all" + description: "UDM - All operations" + flavor: "" + hosts: [] + objectFlag: [] + operation: + - command: "udm/*" + option: "" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-users" + description: "UDM - Users" + flavor: "users/user" + hosts: [] + objectFlag: [] + operation: + - command: "udm/*" + option: "objectType=users/user" + - command: "udm/*" + option: "!objectType" + - command: "udm/query" + option: "objectType=groups/group" + - command: "udm/properties" + option: "objectType=groups/group" + - command: "udm/values" + option: "objectType=groups/group" + - command: "udm/properties" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/query" + option: "objectType=policies/*" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-groups" + description: "UDM - Groups" + flavor: "groups/group" + hosts: [] + objectFlag: [] + operation: + - command: "udm/*" + option: "objectType=groups/group" + - command: "udm/*" + option: "!objectType" + - command: "udm/query" + option: "objectType=users/user" + - command: "udm/properties" + option: "objectType=users/user" + - command: "udm/values" + option: "objectType=users/user" + - command: "udm/query" + option: "objectType=computers/*" + - command: "udm/properties" + option: "objectType=computers/*" + - command: "udm/values" + option: "objectType=computers/*" + - command: "udm/properties" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/query" + option: "objectType=policies/*" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-policies" + description: "UDM - Policies" + flavor: "policies/policy" + hosts: [] + objectFlag: [] + operation: + - command: "udm/*" + option: "objectType=policies/*" + - command: "udm/*" + option: "!objectType" + - command: "udm/properties" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/query" + option: "objectType=policies/*" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-navigation" + description: "UDM - Navigation" + flavor: "navigation" + hosts: [] + objectFlag: [] + operation: + - command: "udm/nav/*" + option: "" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-portal" + description: "UDM - Portal settings" + flavor: "settings/portal_all" + hosts: [] + objectFlag: [] + operation: + - command: "udm/*" + option: "objectType=settings/portal*" + - command: "udm/types" + option: "" + - command: "udm/get" + option: "" + - command: "udm/put" + option: "" + - command: "udm/properties" + option: "" + - command: "udm/values" + option: "" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-syntax" + description: "UDM - Syntax" + flavor: "" + hosts: [] + objectFlag: [] + operation: + - command: "udm/syntax/choices/info" + option: "" + - command: "udm/syntax/choices" + option: "" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-validate" + description: "UDM - Validate" + flavor: "" + hosts: [] + objectFlag: [] + operation: + - command: "udm/validate" + option: "" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-reports" + description: "UDM - Reports" + flavor: "" + hosts: [] + objectFlag: [] + operation: + - command: "udm/reports/query" + option: "" + - command: "udm/reports/create" + option: "" + - command: "udm/reports/get" + option: "" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "udm-usertemplates" + description: "UDM - Apply User Templates" + flavor: "settings/usertemplate" + hosts: [] + objectFlag: [] + operation: + - command: "udm/get" + option: "" + + --- + action: ensure_list_contains + module: policies/umc + position: "cn=default-umc-all,cn=UMC,cn=policies,dc=swp-ldap,dc=internal" + properties: + allow: + - "cn=udm-all,cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + --- + action: create + module: policies/umc + position: cn=UMC,cn=policies,dc=swp-ldap,dc=internal + properties: + name: default-udm-self + --- + action: ensure_list_contains + module: policies/umc + position: "cn=default-udm-self,cn=UMC,cn=policies,dc=swp-ldap,dc=internal" + properties: + allow: + - "cn=udm-self,cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + 40-self-service.yaml: |- + # Source: data-files/default/40-self-service.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2023 Univention GmbH + + + + --- + # Source: ucs/management/univention-self-service/34univention-self-service.inst + action: "create" + module: "policies/umc" + position: "cn=UMC,cn=policies,dc=swp-ldap,dc=internal" + properties: + name: "selfservice-umc-servers" + ldapFilter: "(|(objectClass=univentionMemberserver)(objectClass=univentionDomainController))" + --- + action: "ensure_list_contains" + module: "policies/umc" + position: "cn=selfservice-umc-servers,cn=UMC,cn=policies,dc=swp-ldap,dc=internal" + properties: + allow: + - "allow=cn=passwordchange-all,cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + + # TODO: Check if we need this in the container stack (if so, add the missing + # schema aspects), otherwise remove. + # --- + # action: "modify" + # module: "container/cn" + # position: "cn=dc,cn=computers,dc=swp-ldap,dc=internal" + # properties: + # policy-reference: "cn=selfservice-umc-servers,cn=UMC,cn=policies,dc=swp-ldap,dc=internal" + # --- + # action: "modify" + # module: "policies/umc" + # position: "cn=memberserver,cn=computers,dc=swp-ldap,dc=internal" + # properties: + # policy-reference: "cn=selfservice-umc-servers,cn=UMC,cn=policies,dc=swp-ldap,dc=internal" + + --- + # Source: ucs/management/univention-self-service/35univention-self-service-passwordreset-umc.inst + action: "create" + module: "settings/extended_attribute" + position: "cn=custom attributes,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "UniventionPasswordSelfServiceEmail" + CLIName: "PasswordRecoveryEmail" + module: ["users/user"] + syntax: "emailAddress" + default: "" + ldapMapping: "univentionPasswordSelfServiceEmail" + objectClass: "univentionPasswordSelfService" + shortDescription: "Password recovery e-mail address" + longDescription: "During the password recovery process an e-mail is sent to the specified e-mail address. Password recovery via e-mail is only available for users if configured and enabled by the administrator." + translationShortDescription: + de_DE: "E-Mail-Adresse zur Passwort-Wiederherstellung" + fr_FR: "Adresse e-mail pour la réinitialisation du mot de passe" + translationLongDescription: + de_DE: "An diese E-Mail-Adresse wird während der Passwort-Wiederherstellung eine Mail verschickt. Der Mail-Versand steht dem Benutzer nur zur Verfügung, wenn dieser vom Administrator eingerichtet und freigeschaltet wurde." + fr_FR: "Lors de la réinitialisation du mot de passe, un e-mail est envoyé à l’adresse spécifiée. La réinitialisation du mot de passe par e-mail est disponible pour les utilisateurs et utilisatrices uniquement si elle a été activée et configurée par l’administrateur ou l’administratrice." + tabAdvanced: False + tabName: "Password recovery" + translationTabName: + de_DE: "Passwort-Wiederherstellung" + fr_FR: "Réinitialisation du mot de passe" + multivalue: False + valueRequired: False + mayChange: True + doNotSearch: False + deleteObjectClass: False + overwriteTab: False + fullWidth: True + --- + action: "create" + module: "settings/extended_attribute" + position: "cn=custom attributes,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "UniventionPasswordSelfServiceMobile" + CLIName: "PasswordRecoveryMobile" + module: ["users/user"] + syntax: "phone" + default: "" + objectClass: "univentionPasswordSelfService" + ldapMapping: "univentionPasswordSelfServiceMobile" + shortDescription: "Mobile phone number" + translationShortDescription: + de_DE: "Mobilfunknummer" + fr_FR: "Numéro de téléphone portable" + longDescription: "During the password recovery process a SMS is sent to the specified mobile phone number. Password recovery via SMS is only available for users if configured and enabled by the administrator." + translationLongDescription: + de_DE: "An diese Mobilfunknummer wird während der Passwort-Wiederherstellung eine SMS verschickt. Der SMS-Versand steht dem Benutzer nur zur Verfügung, wenn dieser vom Administrator eingerichtet und freigeschaltet wurde." + fr_FR: "Lors de la réinitialisation du mot de passe, un SMS est envoyé au numéro de portable spécifié. La réinitialisation du mot de passe par SMS est disponible pour les utilisateurs et utilisatrices uniquement si elle a été activée et configurée par l’administrateur ou l’administratrice." + tabAdvanced: False + tabName: "Password recovery" + translationTabName: + de_DE: "Passwort-Wiederherstellung" + fr_FR: "Réinitialisation du mot de passe" + multivalue: False + valueRequired: False + mayChange: True + doNotSearch: False + deleteObjectClass: False + overwriteTab: False + fullWidth: True + --- + action: "create" + module: "settings/extended_attribute" + position: "cn=custom attributes,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "UniventionPasswordRecoveryEmailVerified" + CLIName: "PasswordRecoveryEmailVerified" + module: ["users/user"] + syntax: "TrueFalseUpper" + objectClass: "univentionPasswordSelfService" + ldapMapping: "univentionPasswordRecoveryEmailVerified" + shortDescription: "Email address verified" + translationShortDescription: + de_DE: "E-Mail-Adresse verifiziert" + fr_FR: "Adresse e-mail vérifiée" + longDescription: "This attribute indicates whether an email address is verified or not. The value is set to False both by default and in case PasswordRecoveryMail is changed. When an email address is verified the value will be set to True. " + translationLongDescription: + de_DE: "Dieses Attribut zeigt an, ob eine E-Mail-Adresse bereits verifiziert ist oder nicht. Anfänglich und bei Änderung der PasswordRecoveryMail ist der Wert auf False gesetzt. Wenn es zur Verifikation einer E-Mail-Adresse kommt, wird der Wert auf True gesetzt." + fr_FR: "Cet attribut indique si une adresse e-mail a déjà été vérifiée ou non. La valeur est réglée sur False par défaut et lorsque PasswordRecoveryMail est modifié. Lorsque’une adresse e-mail a été vérifiée, la valeur est réglée sur True." + tabAdvanced: False + tabName: "Password recovery" + translationTabName: + de_DE: "Passwort-Wiederherstellung" + fr_FR: "Réinitialisation du mot de passe" + multivalue: False + valueRequired: False + mayChange: True + doNotSearch: False + deleteObjectClass: False + overwriteTab: False + fullWidth: True + --- + action: "create" + module: "settings/extended_attribute" + position: "cn=custom attributes,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "UniventionRegisteredThroughSelfService" + CLIName: "RegisteredThroughSelfService" + module: ["users/user"] + syntax: "TrueFalseUpper" + objectClass: "univentionPasswordSelfService" + ldapMapping: "univentionRegisteredThroughSelfService" + shortDescription: "Self-registration" + translationShortDescription: + de_DE: "Selbstregistrierung" + fr_FR: "Auto-inscription" + longDescription: "This attribute indicates whether a user has self-registered through the Self Service module." + translationLongDescription: + de_DE: "Dieses Attribut zeigt an, ob sich ein User selbst über das Self-Service-Modul registriert hat." + fr_FR: "Cet attribut indique si un utilisateur ou une utilisatrice a utilisé le module de libre-service pour s’inscrire par ses propres moyens." + tabAdvanced: False + tabName: "Password recovery" + translationTabName: + de_DE: "Passwort-Wiederherstellung" + fr_FR: "Réinitialisation du mot de passe" + multivalue: False + valueRequired: False + mayChange: True + doNotSearch: False + deleteObjectClass: False + overwriteTab: False + fullWidth: True + --- + action: "create" + module: "settings/extended_attribute" + position: "cn=custom attributes,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "UniventionDeregisteredThroughSelfService" + CLIName: "DeregisteredThroughSelfService" + module: ["users/user"] + syntax: "TrueFalseUpper" + objectClass: "univentionPasswordSelfService" + ldapMapping: "univentionDeregisteredThroughSelfService" + shortDescription: "Self-deregistration" + translationShortDescription: + de_DE: "Selbst-Deregistrierung" + fr_FR: "Auto-désinscription" + longDescription: "This attribute indicates whether a user has requested to deregister his account." + translationLongDescription: + de_DE: "Dieses Attribut zeigt an, ob sich ein User selbst über das Self-Service-Modul deregistriert hat." + fr_FR: "Cet attribut indique si un utilisateur ou une utilisatrice a demandé sa désinscription." + tabAdvanced: False + tabName: "Password recovery" + translationTabName: + de_DE: "Passwort-Wiederherstellung" + fr_FR: "Réinitialisation du mot de passe" + multivalue: False + valueRequired: False + mayChange: True + doNotSearch: False + deleteObjectClass: False + overwriteTab: False + fullWidth: True + --- + action: "create" + module: "settings/extended_attribute" + position: "cn=custom attributes,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "UniventionDeregistrationTimestamp" + CLIName: "DeregistrationTimestamp" + module: ["users/user"] + syntax: "string" + objectClass: "univentionPasswordSelfService" + ldapMapping: "univentionDeregistrationTimestamp" + shortDescription: "Deregistration timestamp" + translationShortDescription: + de_DE: "Deregistrierungs-Timestamp" + fr_FR: "Horodatage de la désinscription" + longDescription: "Timestamp of the moment the user requested deregistration of his account" + translationLongDescription: + de_DE: "Zeitstempel des Zeitpunkts, zu dem der Benutzer die Abmeldung seines Kontos beantragt hat." + fr_FR: "Horodatage de l’instant auquel l’utilisateur ou l’utilisatrice a demandé sa désinscription." + tabAdvanced: False + tabName: "Password recovery" + translationTabName: + de_DE: "Passwort-Wiederherstellung" + fr_FR: "Réinitialisation du mot de passe" + multivalue: False + valueRequired: False + mayChange: True + doNotSearch: False + deleteObjectClass: False + overwriteTab: False + fullWidth: True + --- + action: "create" + module: "settings/usertemplate" + position: "cn=templates,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "selfserviceregistrationtemplate" + displayName: " <:strip>" + unixhome: "/home/" + primaryGroup: "cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal" + shell: "/bin/bash" + --- + action: "create" + module: "container/cn" + position: "dc=swp-ldap,dc=internal" + properties: + name: "self registered users" + --- + action: "create" + module: "settings/umc_operationset" + position: "cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "passwordreset-all" + description: "Password reset service" + flavor: "" + hosts: [] + objectFlag: [] + operation: + - command: "passwordreset/*" + option: "" + --- + action: "ensure_list_contains" + module: "policies/umc" + position: "cn=selfservice-umc-servers,cn=UMC,cn=policies,dc=swp-ldap,dc=internal" + properties: + allow: + - "allow=cn=passwordreset-all,cn=operations,cn=UMC,cn=univention,dc=swp-ldap,dc=internal" + + ... + 41-selfservice-portal.yaml: |- + # Source: data-files/default/41-selfservice-portal.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2023 Univention GmbH + + + + + --- + action: "create" + module: "portals/entry" + position: "cn=entry,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "self-service-my-profile" + icon: "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48ZWxsaXBzZSBjbGFzcz0iYSIgY3g9Ijc0LjQ1NzQzIiBjeT0iNDguOTk1NzkiIHJ4PSIyMS4yNDEwNiIgcnk9IjIxLjUyMjk1Ii8+PHBhdGggY2xhc3M9ImEiIGQ9Ik0xMTAuMDU3MzcsNzguNDEzMjFjLTIuNjc1NjYtNi4zMTE3MS03LjI3NDc4LTExLjEzNDc3LTE1LjAwMTc3LTExLjQzN2EyNy4wMDI1MiwyNy4wMDI1MiwwLDAsMS00MS4xOTYyMi4wMDAxOEMzOC4zMjgxMiw2Ny41ODksMzUuNDUzLDg2LjYwNzczLDM1LjQ1Myw5OS4wOTA3YzAsOS4wNjk3LDUuOTIxMTUsMTQuNTIwOTMsMTQuODAyODYsMTQuNTIwOTNIOTMuMjgzNTdhMjMuNjg3NTUsMjMuNjg3NTUsMCwwLDEsMTYuNzczOC0zNS4xOTg0MloiLz48cGF0aCBjbGFzcz0iYSIgZD0iTTExMy44MzgzOCw4MS4xMDgxNWEyMC43MDk0OCwyMC43MDk0OCwwLDEsMCwyMC43MSwyMC43MDk0OEEyMC43MzI2OCwyMC43MzI2OCwwLDAsMCwxMTMuODM4MzgsODEuMTA4MTVabTAsMzguNDE5YTE3LjcwOTQ4LDE3LjcwOTQ4LDAsMSwxLDE3LjcxLTE3LjcwOTQ3QTE3LjcyOTQsMTcuNzI5NCwwLDAsMSwxMTMuODM4MzgsMTE5LjUyNzFaIi8+PHBhdGggY2xhc3M9ImEiIGQ9Ik0xMTguNzczNDQsOTMuMzM4NDRsLTEwLjQxMzMzLDEwLjQxMzMzLDMuMzYyMTIsMy40NDY5TDEyMi4xNzc5Miw5Ni43NDNhMi40MDczNSwyLjQwNzM1LDAsMCwwLTMuNDA0NDgtMy40MDQ1NFoiLz48cG9seWdvbiBjbGFzcz0iYSIgcG9pbnRzPSIxMDcuMjgzIDEwNC44MjkgMTA2LjAwNyAxMDkuNTEgMTEwLjY0NiAxMDguMjQ0IDEwNy4yOTkgMTA0LjgxMyAxMDcuMjgzIDEwNC44MjkiLz48L3N2Zz4=" + activated: True + anonymous: False + linkTarget: "samewindow" + allowedGroups: + null + displayName: + en_US: "My Profile" + de_DE: "Mein Profil" + description: + en_US: "Manage profile" + de_DE: "Profil verwalten" + link: + - - "en_US" + - "#/selfservice/profile" + --- + action: "create" + module: "portals/category" + position: "cn=category,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "self-service-profile" + displayName: + en_US: "User Profile" + de_DE: "Benutzerprofil" + entries: + - "cn=self-service-my-profile,cn=entry,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + + + --- + action: "create" + module: "portals/entry" + position: "cn=entry,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "self-service-protect-account" + icon: "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTEwNi4wNTk5Myw3Mi4yMjA3YTcuNjk5LDcuNjk5LDAsMCwwLTcuNTYyMTMtNy41NTUzNmMtLjg4Ny0uMDIxNTQtMS43NzUtLjAwMzE3LTIuNzc3ODMtLjAwMzE3VjYzLjc2NDFjMC0zLjA3NDc3LjAwNTA2LTYuMTQ5Ni0uMDAxLTkuMjI0NDNBMjAuNzEyODksMjAuNzEyODksMCwwLDAsNTQuNjExMiw1MC42Nzc1NWEyOC43OTU0MiwyOC43OTU0MiwwLDAsMC0uMzIzMDYsNC4xMDM1MmMtLjA0NTc3LDMuMjU4MTgtLjAxNDc3LDYuNTE3NDUtLjAxNDc3LDkuODc2NC0uNzcyNTgsMC0xLjQ5MTI3LS4wMDExNi0yLjIwOTkuMDAwMjRhNy43ODI4Miw3Ljc4MjgyLDAsMCwwLTguMTUwMTQsOC4xMjgxOHEtLjAwNywxNy42ODAyLS4wMDEyMywzNS4zNjA0MWMuMDAwMzcsNC4zMjkyMiwyLjIzODIyLDcuMTY3NjYsNi40NDI0NSw4LjE4NDIxYS43MTc2MS43MTc2MSwwLDAsMSwuMTk1MTMuMTI2MjhoNDguODk0Yy41MDYxLS4xNTk4NSwxLjAxODc0LS4zMDE3LDEuNTE3MjEtLjQ4MjU1YTcuNjM5ODMsNy42Mzk4MywwLDAsMCw1LjEwMzQ2LTcuMDk4NjlRMTA2LjEwNzYzLDkwLjU0ODE2LDEwNi4wNTk5Myw3Mi4yMjA3Wk02MS4xOTQ3LDYyLjQ4ODFjLjAwMDEyLTIuNjY5NzQtLjAxMTE3LTUuMzM5Ni4wMDI3NC04LjAwOTM0YTEzLjc5MjQxLDEzLjc5MjQxLDAsMCwxLDI3LjM3NC0yLjU5LDM0LjkyNzg0LDM0LjkyNzg0LDAsMCwxLC4yMTgzOCw0Ljc1NjljLjAzMjQxLDIuNjM3NDUuMDA4ODUsNS4yNzU1Ny4wMDg4NSw3Ljk2OEg2MS4xOTQ2NEM2MS4xOTQ2NCw2My44NzcyLDYxLjE5NDY0LDYzLjE4MjYyLDYxLjE5NDcsNjIuNDg4MVpNODkuMDI5OSw5Ni4zNzlhNS4wMTI4Miw1LjAxMjgyLDAsMCwxLTQuNTk2LDMuNTMyMjJxLS4yNDU4MS4wMTg4Ny0uNDgzNTIuMDE4OGE1LjEzMTUyLDUuMTMxNTIsMCwwLDEtNC40MTQ1NS0yLjQ0NjIzLDcuMzQxNjMsNy4zNDE2MywwLDAsMS00LjUwNjgzLDEuNTMwNTgsNy40MzgxOCw3LjQzODE4LDAsMSwxLDMuODE5NjQtMTMuODAxMDgsMS44ODE2NCwxLjg4MTY0LDAsMCwxLDEuNjk2NTktMS4wODAzOSwxLjkzMTUzLDEuOTMxNTMsMCwwLDEsLjE5NDk1LjAwOTg5LDEuODk0ODMsMS44OTQ4MywwLDAsMSwxLjY5MjYzLDEuODkyN3EuMDA2NTksMS41NTY0OS4wMDI4NiwzLjExM2wtLjAwMDU0LDEuMzcwNzNMODIuNDM0LDkxLjcxNzE2Yy0uMDAxNTIuOTc3NDgtLjAwMzExLDEuOTU1LjAwNiwyLjkzMjI1YTEuNTQxNzIsMS41NDE3MiwwLDAsMCwxLjA0MDgzLDEuNDIzMSwxLjY1NTQ3LDEuNjU1NDcsMCwwLDAsLjU1MjMxLjA5NjE5LDEuNDgzNTIsMS40ODM1MiwwLDAsMCwxLjE2NS0uNTUyMzcsMS42MTI0OCwxLjYxMjQ4LDAsMCwwLC4yODIyOS0uNTEzMjQsMTAuNzc2MTEsMTAuNzc2MTEsMCwwLDAtMS45Mjg1My0xMC41MjI3MSwxMC41NjIwOSwxMC41NjIwOSwwLDAsMC04LjU3OTQtNC4wNjc1cS0uMjU0NywwLS41MTI5NC4wMDk1OGExMS4wNjQyOCwxMS4wNjQyOCwwLDAsMC0xLjQyMDUzLDIxLjkzODQ4LDExLjUyMjE5LDExLjUyMjE5LDAsMCwwLDIuMDIyNy4xODMyOSwxMS4wMTcyNywxMS4wMTcyNywwLDAsMCw1LjU0NTU5LTEuNTMxLDIuMjI2LDIuMjI2LDAsMCwxLDEuMTAyNTQtLjMwOTU3LDEuODIxMjQsMS44MjEyNCwwLDAsMSwxLjYwODI4Ljk1ODYyLDEuODcsMS44NywwLDAsMS0uNzMxLDIuNTY2NTMsMTQuMjU1MzQsMTQuMjU1MzQsMCwwLDEtNC4zMTM0MSwxLjcyNjEzLDE1LjMxODg2LDE1LjMxODg2LDAsMCwxLTMuMjQ2MjIuMzUxLDE0Ljg0MjY4LDE0Ljg0MjY4LDAsMCwxLTE0LjU0MzQ2LTExLjc0LDE0Ljg2NDU5LDE0Ljg2NDU5LDAsMCwxLDExLjI5MDI5LTE3LjY3NTksMTQuODI2NzIsMTQuODI2NzIsMCwwLDEsMTcuODAyMTgsMTEuNzc3QTE0LjMyNTUsMTQuMzI1NSwwLDAsMSw4OS4wMjk5LDk2LjM3OVoiLz48cGF0aCBjbGFzcz0iYSIgZD0iTTc1LjAxOTUzLDg3LjkxMDc3YTMuNjYzNzYsMy42NjM3NiwwLDEsMC0uMDIyMjgsNy4zMjc0NWwuMDA0ODguMjQ5NTcuMDA0ODgtLjAwMDQ5di0uMjQ5MDhhMy42NzM0OSwzLjY3MzQ5LDAsMCwwLDMuNjUyMjMtMy42NDkxN0EzLjY2NTgzLDMuNjY1ODMsMCwwLDAsNzUuMDE5NTMsODcuOTEwNzdaIi8+PC9zdmc+" + activated: True + anonymous: False + linkTarget: "samewindow" + allowedGroups: + null + displayName: + en_US: "Protect your account" + de_DE: "Kontozugang schützen" + description: + en_US: "Protect your account" + de_DE: "Kontozugang schützen" + link: + - - "en_US" + - '#/selfservice/protectaccount' + --- + action: "create" + module: "portals/entry" + position: "cn=entry,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "self-service-password-forgotten" + icon: "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTExOS4yMjg5MSw3NC40OTg1NWgtNy4xNDAyQTQxLjcxNjg4LDQxLjcxNjg4LDAsMCwwLDcyLjc4NzMyLDMzLjQwODM0YTMuMDI1NDksMy4wMjU0OSwwLDAsMC0uNTQ2NjktLjA3OTY1Yy0uMzEwMTktLjAxMzc5LS42MTIxMy4wMTI2NC0uOTIxLjAwNTc0LS4zMDc2MS0uMDA2NzgtLjYwNjkzLS4wNDYwOC0uOTE2MDctLjA0NjA4LS40Mjk0NSwwLS44NTIwNS4wNDY4MS0xLjI3OTc5LjA1OTg3LS42Mzc1MS4wMTkwNS0xLjI3MjU4LjA0MTA4LTEuOTAzMDcuMDg4ODctLjcxNzcyLjA1NDQ0LTEuNDI4LjE0MDI2LTIuMTM4NjguMjMxMTQtLjYyNC4wOC0xLjI0NzkyLjE1NTQ2LTEuODYzNTguMjYzMDYtLjc0Mjg2LjEyOTIxLTEuNDc0MTguMjk3MTItMi4yMDY3My40NjU4OC0uNTUxMTUuMTI3NzUtMS4xMDUyOC4yNDMtMS42NDgxOS4zOTI1OC0uODM1NTcuMjI4NzYtMS42NTQxOC41MDQ3Ni0yLjQ3MjQxLjc4NDc5LS40MTMzMy4xNDIzNC0uODMzNjIuMjY2NDgtMS4yNDExNS40MjEyNy0uOTkwNzMuMzc0NDUtMS45NTg1Ni44MDI5MS0yLjkxODE1LDEuMjUyNDQtLjIxNjYyLjEwMTgtLjQ0MS4xODc4Ni0uNjU1NjQuMjkzMzNhNDEuNjg2ODIsNDEuNjg2ODIsMCwwLDAtMTAuMDQxNjMsNi44Nzg2Yy0uMDUxODguMDQ4LS4wNzEuMTE0MzItLjExODc3LjE2NTFBNDEuNTY2LDQxLjU2NiwwLDAsMCwyOC43MzAxOSw3My4xNjI4NmMtLjAyMDM5LjQ2NC4wMTE4NC45MjEuMDA2NTMsMS4zODMxOGEyLjk5OTUyLDIuOTk5NTIsMCwwLDAtLjA0NTg0LjQ1NGMwLC4zNTE5My4wNDQxMy42OTI4MS4wNTI4NiwxLjA0MjcyLjAxODkyLjc5OC4wNTY4OCwxLjU5MTI1LjEyMDYsMi4zODE3OC4wNDY4Mi41NzI1MS4xMDU4NCwxLjE0LjE3NTY2LDEuNzA1ODdxLjE1NDE5LDEuMjY0LjM4NCwyLjUwOWMuMDkxMy40OTEuMTg5MzMuOTc4LjI5Nzg1LDEuNDYyODlxLjI5NTgsMS4zMzE5MS42NzkzMiwyLjYzNmMuMTIwNzMuNDEwNjQuMjQ0ODcuODE4NDguMzc3ODEsMS4yMjM4MnEuNDQ2NCwxLjM2NjYuOTg4NywyLjY5NjE2Yy4xNDMuMzUxNjkuMjg4MDkuNzAxLjQ0MDM3LDEuMDQ3ODVxLjU4ODc4LDEuMzQzLDEuMjc0NiwyLjY0MTg1Yy4xNzMyOC4zMjk0Ny4zNDkxMi42NTYuNTMxLjk4MDE2cS43MDQ1OCwxLjI1NTc0LDEuNDk4NTMsMi40NjQxOC4zMzEzNC41MDU0Ni42NzYxNS45OTk2OS43OTM0LDEuMTM2MjcsMS42NjUsMi4yMjVjLjI3NTM5LjM0Mzc1LjU1NjM5LjY4MDI5Ljg0MjIyLDEuMDE1MDcuMzE5NzYuMzc0NDUuNjA3MTguNzY5MjkuOTQxMjgsMS4xMzQyOGEzLjAyNjE2LDMuMDI2MTYsMCwwLDAsLjQ1NjM2LjQwMzA4LDQxLjYxNTc5LDQxLjYxNTc5LDAsMCwwLDU5LjgwNDQ1LjkyNTU5LDMuMDIwODksMy4wMjA4OSwwLDEsMC00LjI3MjIyLTQuMjcyMTVBMzUuNjEzMzEsMzUuNjEzMzEsMCwwLDEsNDMuMjg0Miw5OC4xMTEyOWMtLjI0MTg4LS4yODM1MS0uNDgwMjgtLjU2OTEtLjcxMjQ2LS44NTg3MXEtLjc0NjE2LS45MzExOC0xLjQzMDQ4LTEuOTExNzQtLjI5MjIzLS40MTktLjU3MTQxLS44NDQ3OS0uNjc4MjMtMS4wMzQyNy0xLjI4Njg3LTIuMTE1NzhjLS4xNTQ0OC0uMjc1NTItLjMwMzgzLS41NTMxLS40NTA2Mi0uODMyMTZxLS41ODQtMS4xMDk5LTEuMDkxOTItMi4yNjM0MmMtLjEyOTctLjI5NTc4LS4yNTM4NC0uNTkzNjMtLjM3NTMtLjg5Mjc3cS0uNDYxNy0xLjEzNDc5LS44NDYtMi4zMDcxOS0uMTcwMzgtLjUyMTg1LS4zMjM4NS0xLjA0OTA3LS4zMjUzOC0xLjEwNzUxLS41Nzg1LTIuMjQ0NTctLjE0MDM0LS42MzExNS0uMjU4LTEuMjY3ODhjLS4xMzAwNy0uNzAwMjUtLjIzNjI3LTEuNDA4MzItLjMyNDc3LTIuMTIyMDctLjA2MDYxLS40OTUxOC0uMTEzMzQtLjk5MTU4LS4xNTMzMi0xLjQ5MS0uMDUzNTktLjY1OC0uMDgzNjgtMS4zMjIzOC0uMTAwNzctMS45ODk4Ni0uMDIwMi0uODI4NS0uMDQ4MjItMS42NTYwNy0uMDExMjMtMi40OTE4OUEzNS43MjEyLDM1LjcyMTIsMCwwLDEsNTcuOTAxODIsNDEuNjA3Yy4xNjYtLjA2MjA3LjMzNjQ5LS4xMTEyLjUwMzQyLS4xNzA4NC44NzUzLS4zMTQ0NSwxLjc2MzEyLS42MDE1LDIuNjY3NDItLjg0Nzc3LjMzMy0uMDkwMDkuNjcxODEtLjE1OTU1LDEuMDA3NjktLjIzOTkzLjc1MDYxLS4xODEwOSwxLjUwNi0uMzQ4NjQsMi4yNzMyNS0uNDgxMi40NDE1OS0uMDc1NTcuODg3OTQtLjEyOTIyLDEuMzMzMzEtLjE4ODE4LjY4MTgzLS4wOTEyNCwxLjM2NjQtLjE3MjI0LDIuMDU4OS0uMjI0MTIuNDk3ODctLjAzNjg2Ljk5OS0uMDUzODMsMS41LS4wNzAwNy42NDc4OS0uMDIxMTcsMS4yOTgzNC0uMDI4MzgsMS45NTM2OC0uMDE0MTZhMzUuNjc4MywzNS42NzgzLDAsMCwxLDM0Ljg0Njg2LDM1LjEyNzg3SDk4Ljk1NzU0Yy0yLjIxNTUxLDAtMi43NDY0NiwxLjI4MTgtMS4xNzk4MSwyLjg0ODM5bDguNDY3MTEsOC40NjcxYTQuMDQwMDgsNC4wNDAwOCwwLDAsMCw1LjY5Njg0LDBsOC40NjcxNi04LjQ2NzFDMTIxLjk3NTM3LDc1Ljc4MDM1LDEyMS40NDQ1NCw3NC40OTg1NSwxMTkuMjI4OTEsNzQuNDk4NTVaIi8+PHBhdGggY2xhc3M9ImEiIGQ9Ik01Ny4wMjQ2Miw3My4wMjMyN3EtLjAwMyw3LjY4OTMzLS4wMDA1NSwxNS4zNzg3M0EzLjM3NDkyLDMuMzc0OTIsMCwwLDAsNTkuODI2LDkxLjk2MTM4YS4zMTI3Ni4zMTI3NiwwLDAsMSwuMDg0ODQuMDU0OTNIODEuMTc1NTZjLjIyMDA5LS4wNjk1MS40NDMwNi0uMTMxMjIuNjU5ODUtLjIwOTgzQTMuMzIyNzcsMy4zMjI3NywwLDAsMCw4NC4wNTUsODguNzE5MTNxLjAxODg1LTcuOTcwODUtLjAwMi0xNS45NDE3MWEzLjM0ODQ1LDMuMzQ4NDUsMCwwLDAtMy4yODg4OC0zLjI4NTk1Yy0uMzg1NzQtLjAwOTM0LS43NzE5MS0uMDAxMzQtMS4yMDgxMi0uMDAxMzR2LS4zOTA1NmMwLTEuMzM3MjguMDAyMjUtMi42NzQ1Ni0uMDAwMzctNC4wMTE4NEE5LjAwODM2LDkuMDA4MzYsMCwwLDAsNjEuNjc3MjcsNjMuNDA4YTEyLjUyODU3LDEyLjUyODU3LDAsMCwwLS4xNDA1LDEuNzg0NzNjLS4wMTk5LDEuNDE3LS4wMDY0MSwyLjgzNDUzLS4wMDY0MSw0LjI5NTM1LS4zMzYsMC0uNjQ4NTYtLjAwMDQ5LS45NjExMi4wMDAxMkEzLjM4NDksMy4zODQ5LDAsMCwwLDU3LjAyNDYyLDczLjAyMzI3Wk03MS4wMjkxNCw4Ny41MjM4OGExLjM4MzQ4LDEuMzgzNDgsMCwwLDEtLjk0OTIyLjM2NTI0LDEuNDM5MzEsMS40MzkzMSwwLDAsMS0uOTcyNjYtLjM2MDM1LDEuMjY2NzEsMS4yNjY3MSwwLDAsMS0uNDE1LTEuMDA4NzksMS4zMDA2NiwxLjMwMDY2LDAsMCwxLC40MDEzNy0uOTY3NzgsMS4zNjA0MiwxLjM2MDQyLDAsMCwxLC45ODYzMy0uMzkyNThBMS4zNDA4NCwxLjM0MDg0LDAsMCwxLDcxLjQ0MDI3LDg2LjUyLDEuMjc1NDgsMS4yNzU0OCwwLDAsMSw3MS4wMjkxNCw4Ny41MjM4OFptMy40MDkxOC04LjQ1MjYzQTQuMTYzNjIsNC4xNjM2MiwwLDAsMSw3My42OTAyNyw4MC4wOHEtLjQzMzU5LjQyNDgtMS41NTY2NCwxLjQyODcxYTYuMTM4MjUsNi4xMzgyNSwwLDAsMC0uNDk3MDcuNDk3NTUsMi4wMzQ0NSwyLjAzNDQ1LDAsMCwwLS4yNzkzLjM5MjA5LDEuOTI0NTMsMS45MjQ1MywwLDAsMC0uMTQwNjIuMzU2Yy0uMDM0MTguMTE4NjUtLjA4NC4zMjc2NC0uMTUxMzcuNjI1NDlhMS4wMTU1NCwxLjAxNTU0LDAsMCwxLTEuMDg1OTQuOTQ5MjIsMS4xMTE3MiwxLjExMTcyLDAsMCwxLS43OTg4Mi0uMzEwMDYsMS4yMjA0OCwxLjIyMDQ4LDAsMCwxLS4zMjQyMi0uOTIyMzYsMy4yMzYxMywzLjIzNjEzLDAsMCwxLC44NjcxOC0yLjMxNCwxNC40Njg2NSwxNC40Njg2NSwwLDAsMSwxLjA1OTU3LTEuMDA4M2MuMzg4NjgtLjM0MDgyLjY3MDktLjU5ODE0Ljg0Mzc1LS43NzE0OGEyLjYyMTksMi42MjE5LDAsMCwwLC40Mzg0OC0uNTc5NTksMS40MDcxLDEuNDA3MSwwLDAsMCwuMTc3NzQtLjY5Mzg1LDEuNjExMDcsMS42MTEwNywwLDAsMC0uNTQzLTEuMjMxOTMsMS45ODIyMSwxLjk4MjIxLDAsMCwwLTEuNDAxMzctLjUwMjQ1LDEuOTM4LDEuOTM4LDAsMCwwLTEuNDc4NTIuNTA2ODQsNC4wNDk0NSw0LjA0OTQ1LDAsMCwwLS44MDM3MSwxLjQ5MjE5cS0uMzA5MDgsMS4wMzItMS4xNzY3NSwxLjAzMTc0YTEuMTU4MywxLjE1ODMsMCwwLDEtLjg2MzI5LS4zNjA4NCwxLjEwMjIxLDEuMTAyMjEsMCwwLDEtLjM1MTU2LS43ODAyOCwzLjMwMzc4LDMuMzAzNzgsMCwwLDEsLjU1NzYyLTEuNzU3MzIsNC4yODY0Myw0LjI4NjQzLDAsMCwxLDEuNjI0LTEuNDc0MTIsNS4xMTg4Niw1LjExODg2LDAsMCwxLDIuNDkyMTktLjU4NCw1LjMxOTA5LDUuMzE5MDksMCwwLDEsMi4zMzY5MS40ODgyOEEzLjc5MDIxLDMuNzkwMjEsMCwwLDEsNzQuMjAxLDc1Ljg4NTdhMy4yNTg2MSwzLjI1ODYxLDAsMCwxLC41NTI3NCwxLjgyNTY4QTIuODIxODIsMi44MjE4MiwwLDAsMSw3NC40MzgzMiw3OS4wNzEyNVpNNjQuNTQwNTUsNjguNTQ0NTdjLjAwMDA2LTEuMTYxMTMtLjAwNDg4LTIuMzIyMjYuMDAxMTYtMy40ODMzM2E1Ljk5ODU0LDUuOTk4NTQsMCwwLDEsMTEuOTA1NC0xLjEyNjQ3LDE1LjE5MjQ0LDE1LjE5MjQ0LDAsMCwxLC4wOTUsMi4wNjg4NWMuMDE0MSwxLjE0Ny4wMDM4NCwyLjI5NDQzLjAwMzg0LDMuNDY1MzlINjQuNTQwNTVaIi8+PC9zdmc+" + activated: True + anonymous: True + linkTarget: "samewindow" + allowedGroups: + null + displayName: + en_US: "Password forgotten" + de_DE: "Passwort vergessen" + description: + en_US: "Password forgotten" + de_DE: "Passwort vergessen" + link: + - - "en_US" + - '#/selfservice/passwordforgotten' + --- + action: "create" + module: "portals/category" + position: "cn=category,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "self-service-password" + displayName: + en_US: "Passwords" + de_DE: "Passwörter" + entries: + - "cn=self-service-protect-account,cn=entry,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + - "cn=self-service-password-forgotten,cn=entry,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + + + --- + # Create the portal with the categories above + action: "create" + module: "portals/portal" + position: "cn=portal,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + properties: + name: "self-service" + defaultLinkTarget: "samewindow" + displayName: + en_US: "Self Service" + de_DE: "Self Service" + showUmc: False + categories: + - "cn=self-service-profile,cn=category,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + - "cn=self-service-password,cn=category,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + --- + action: "ensure_list_contains" + module: "portals/portal" + position: "cn=self-service,cn=portal,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + properties: + userLinks: + - "cn=self-service-protect-account,cn=entry,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + - "cn=self-service-password-forgotten,cn=entry,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + - "cn=self-service-my-profile,cn=entry,cn=portals,cn=univention,dc=swp-ldap,dc=internal" + 42-readonly-user.yaml: |- + # Source: data-files/default-v2/42-readonly-user.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2024 Univention GmbH + + --- + action: create + module: groups/group + position: cn=groups,{{ ldapBaseDn }} + properties: + name: "LDAPSearch Users" + + --- + action: create + module: users/ldap + position: cn=users,{{ ldapBaseDn }} + properties: + username: "readonly" + lastname: "LDAP-system-User" + password: {{ readonlyUserPassword }} + overridePWHistory: true + overridePWLength: true + misc-saml.yaml: |- + # Source: data-files/default/misc-saml.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2023 Univention GmbH + + + + --- + action: create + module: users/ldap + position: cn=users,dc=swp-ldap,dc=internal + properties: + username: sys-idp-user + lastname: idp-user + name: idp-user + password: "e00aa613a1bb71985d35e4383f7f09c4bf4fd601" + # TODO: We should make this a system user at some point. + # lo.modify(dn, [('univentionObjectFlag', None, [b'functional', b'hidden'])]) + # + # FIXME: Running this produces an error in `udm-rest-api`: + # ERROR ( 51) : RsyslogEmitter().emit() failed: /dev/log does not exist, cannot emit entry ({"username": "cn=admin", "hostname": "95ffbfbd017d", "message": {"en": "Simple authentication account {username} created", "de": "Einfaches Authentisierungskonto {username} angelegt"}, "args": {"module": "users/ldap", "username": "sys-idp-user"}, "timestamp": "2023-07-10 15:40:19", "tags": [], "context_id": "16188c61-3647-40dc-9674-d9796ed23220", "event": "UDM_USERS_LDAP_CREATED", "type": "Entry v1"}) + # Nevertheless, the user is created. + ######################## +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.73.0 + name: ums-stack-data-ums-data +--- +# Source: nubus/charts/nubusStackDataUms/templates/configmap-ucr.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-stack-data-ums-ucr + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.73.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded + intents.otterize.com/service-name: ums-stack-data-ums +data: + base.conf: | + ad/member: false + apache2/autostart: yes + apache2/documentroot: /var/www/ + apache2/force_https/exclude/http_host/localhost: localhost + apache2/force_https/exclude/request_uri/mod-status: /server-status + apache2/force_https/exclude/request_uri/univention-portal: /univention/get + apache2/loglevel: info + apache2/maxclients: 150 + apache2/startsite: univention/ + auth/methods: ldap + directory/manager/rest/authorized-groups/dc-backup: cn=DC Backup Hosts,cn=groups,dc=swp-ldap,dc=internal + directory/manager/rest/authorized-groups/dc-slaves: cn=DC Slave Hosts,cn=groups,dc=swp-ldap,dc=internal + directory/manager/rest/authorized-groups/iam-api-full-access: cn=IAM API - Full Access,cn=groups,dc=swp-ldap,dc=internal + directory/manager/rest/debug_level: 5 + directory/manager/rest/ldap-connection/user-read/start-tls: 0 + directory/manager/rest/show-tracebacks: false + directory/manager/starttls: 0 + directory/manager/templates/alphanum/whitelist: "" + directory/manager/user/activate_ldap_attribute_mailForwardCopyToSelf: yes + directory/manager/user_group/uniqueness: true + directory/manager/web/language: de_DE.UTF-8 + directory/manager/web/modules/autosearch: 1 + directory/manager/web/modules/computers/computer/add/default: computers/windows + directory/manager/web/modules/groups/group/caching/uniqueMember/timeout: 300 + directory/manager/web/modules/groups/group/checks/circular_dependency: yes + directory/manager/web/modules/search/advanced_on_open: false + directory/manager/web/modules/users/user/add/default: cn=openDesk User,cn=templates,cn=univention,dc=swp-ldap,dc=internal + directory/manager/web/modules/users/user/properties/description/syntax: TextArea + directory/manager/web/modules/users/user/properties/firstname/required: true + directory/manager/web/modules/users/user/properties/homePostalAddress/syntax: postalAddress + directory/manager/web/modules/users/user/properties/mailPrimaryAddress/required: true + directory/manager/web/modules/users/user/properties/username/syntax: uid + directory/manager/web/modules/users/user/search/autosearch: True + directory/manager/web/modules/users/user/wizard/property/invite/default: True + directory/manager/web/modules/users/user/wizard/property/overridePWLength/default: False + directory/manager/web/modules/users/user/wizard/property/overridePWLength/visible: False + directory/manager/web/modules/users/user/wizard/property/pwdChangeNextLogin/default: True + directory/manager/web/modules/users/user/wizard/property/pwdChangeNextLogin/visible: False + directory/manager/web/modules/wizard/disabled: No + directory/manager/web/modules/wizards/disabled: no + directory/manager/web/sizelimit: 2000 + directory/reports/cleanup/age: 43200 + directory/reports/cleanup/cron: 0 0 * * * + directory/reports/logo: /usr/share/univention-directory-reports/univention_logo.png + directory/reports/templates/csv/computer1: computers/computer "CSV Report" /etc/univention/directory/reports/default computers.csv + directory/reports/templates/csv/group1: groups/group "CSV Report" /etc/univention/directory/reports/default groups.csv + directory/reports/templates/csv/user1: users/user "CSV Report" /etc/univention/directory/reports/default users.csv + directory/reports/templates/pdf/computer1: computers/computer "PDF Document" /etc/univention/directory/reports/default computers.rml + directory/reports/templates/pdf/group1: groups/group "PDF Document" /etc/univention/directory/reports/default groups.rml + directory/reports/templates/pdf/user1: users/user "PDF Document" /etc/univention/directory/reports/default users.rml + domainname: opendesk.apps.digilab.network + groups/default/domainadmins: Domain Admins + groups/default/printoperators: Printer-Admins + hostname: portal + kerberos/realm: stub_value + ldap/acl/nestedgroups: yes + ldap/acl/read/anonymous: no + ldap/acl/slavepdc: yes + ldap/acl/user/password/change: no + ldap/attributeoptions: entry-,lang- + ldap/autostart: yes + ldap/base: dc=swp-ldap,dc=internal + ldap/cachesize: 20000 + ldap/client/retry/count: 10 + ldap/database/bdb/db_config_options: set_flags + ldap/database/bdb/set_flags: DB_LOG_AUTOREMOVE + ldap/database/internal/checkpoint: 0 1 + ldap/database/internal/envflags: nosync + ldap/database/mdb/maxsize: 4295000000 + ldap/database/type: mdb + ldap/debug/level: none + ldap/hostdn: cn=admin,dc=swp-ldap,dc=internal + ldap/idlcachesize: 20000 + ldap/idletimeout: 360 + ldap/index/approx: cn,givenName,mail,sn,uid + ldap/index/autorebuild: yes + ldap/index/eq: aRecord,automountInformation,cNAMERecord,cn,description,dhcpHWAddress,displayName,entryUUID,gidNumber,givenName,homeDirectory,krb5PrincipalName,macAddress,mail,mailAlternativeAddress,mailPrimaryAddress,memberUid,objectClass,ou,pTRRecord,relativeDomainName,sambaAcctFlags,sambaDomainName,sambaGroupType,sambaPrimaryGroupSID,sambaSID,sambaSIDList,secretary,shadowExpire,sn,uid,uidNumber,uniqueMember,univentionCanonicalRecipientRewriteEnabled,univentionDataType,univentionInventoryNumber,univentionLicenseModule,univentionLicenseObject,univentionMailHomeServer,univentionNagiosHostname,univentionObjectFlag,univentionObjectType,univentionPolicyReference,univentionServerRole,univentionService,univentionShareGid,univentionShareSambaName,univentionShareWriteable,univentionUDMOptionModule,univentionUDMPropertyCLIName,univentionUDMPropertyCopyable,univentionUDMPropertyDefault,univentionUDMPropertyDeleteObjectClass,univentionUDMPropertyDoNotSearch,univentionUDMPropertyHook,univentionUDMPropertyLayoutOverwritePosition,univentionUDMPropertyLayoutOverwriteTab,univentionUDMPropertyLayoutPosition,univentionUDMPropertyLayoutTabAdvanced,univentionUDMPropertyLayoutTabName,univentionUDMPropertyLdapMapping,univentionUDMPropertyLongDescription,univentionUDMPropertyModule,univentionUDMPropertyMultivalue,univentionUDMPropertyObjectClass,univentionUDMPropertyOptions,univentionUDMPropertyShortDescription,univentionUDMPropertySyntax,univentionUDMPropertyTranslationLongDescription,univentionUDMPropertyTranslationShortDescription,univentionUDMPropertyTranslationTabName,univentionUDMPropertyValueMayChange,univentionUDMPropertyValueRequired,univentionUDMPropertyVersion,zoneName + ldap/index/pres: aRecord,automountInformation,cn,description,dhcpHWAddress,displayName,gidNumber,givenName,homeDirectory,krb5PrincipalName,macAddress,mail,mailAlternativeAddress,mailPrimaryAddress,memberUid,name,objectClass,ou,relativeDomainName,shadowMax,sn,uid,uidNumber,uniqueMember,univentionMailHomeServer,univentionObjectFlag,univentionPolicyReference,univentionUDMPropertyCLIName,univentionUDMPropertyDefault,univentionUDMPropertyDeleteObjectClass,univentionUDMPropertyDoNotSearch,univentionUDMPropertyHook,univentionUDMPropertyLayoutOverwritePosition,univentionUDMPropertyLayoutOverwriteTab,univentionUDMPropertyLayoutPosition,univentionUDMPropertyLayoutTabAdvanced,univentionUDMPropertyLayoutTabName,univentionUDMPropertyLdapMapping,univentionUDMPropertyLongDescription,univentionUDMPropertyModule,univentionUDMPropertyMultivalue,univentionUDMPropertyObjectClass,univentionUDMPropertyOptions,univentionUDMPropertyShortDescription,univentionUDMPropertySyntax,univentionUDMPropertyTranslationLongDescription,univentionUDMPropertyTranslationShortDescription,univentionUDMPropertyTranslationTabName,univentionUDMPropertyValueMayChange,univentionUDMPropertyValueRequired,univentionUDMPropertyVersion,zoneName + ldap/index/quickmode: false + ldap/index/sub: aRecord,associatedDomain,automountInformation,cn,default,description,displayName,employeeNumber,givenName,macAddress,mail,mailAlternativeAddress,mailPrimaryAddress,name,ou,pTRRecord,printerModel,relativeDomainName,sambaSID,sn,uid,univentionInventoryNumber,univentionOperatingSystem,univentionSyntaxDescription,univentionUDMPropertyLongDescription,univentionUDMPropertyShortDescription,zoneName + ldap/k5pwd: true + ldap/limits: users time.soft=-1 time.hard=-1 + ldap/master/port: 389 + ldap/master: ums-ldap-server-primary + ldap/maxopenfiles: 8192 + ldap/monitor: false + ldap/overlay/lastbind/precision: 3600 + ldap/overlay/lastbind: false + ldap/overlay/memberof/dangling: ignore + ldap/overlay/memberof/member: uniqueMember + ldap/overlay/memberof/memberof: memberOf + ldap/overlay/memberof/objectclass: posixGroup + ldap/overlay/memberof: true + ldap/policy/cron: 5 * * * * + ldap/ppolicy/enabled: false + ldap/ppolicy: false + ldap/pw-bcrypt: true + ldap/pwd_scheme_kinit: true + ldap/saml/service-providers: https://portal.opendesk.apps.digilab.network/univention/saml/metadata + ldap/server/name: ums-ldap-server-primary + ldap/server/port: 389 + ldap/server/type: master + ldap/shadowbind/ignorefilter: (|(objectClass=univentionDomainController)(userPassword={KINIT})) + ldap/shadowbind: true + ldap/sizelimit: 400000 + ldap/threads: 16 + ldap/tls/ciphersuite: HIGH:MEDIUM:!aNULL:!MD5:!RC4 + ldap/tls/dh/paramfile: /etc/ldap/dh_2048.pem + ldap/tls/minprotocol: 3.1 + ldap/tool-threads: 1 + ldap/translogfile: /var/lib/univention-ldap/listener/listener + license/base: dc=swp-ldap,dc=internal + locale/default: de_DE.UTF-8:UTF-8 + locale: de_DE.UTF-8:UTF-8 en_US.UTF-8:UTF-8 + password/hashing/bcrypt: true + password/hashing/method: SHA-512 + password/quality/length/min: 8 + password/quality/mspolicy: false + portal/auth-mode: saml + portal/paths: /univention/portal/, /univention/umc/, /univention/selfservice/ + self-service/backend-server: portal.opendesk.apps.digilab.network + self-service/ldap_attributes: jpegPhoto,description,title,givenName,sn,displayName,initials,univentionBirthday,o,street,postalCode,l + self-service/udm-rest-server: portal.opendesk.apps.digilab.network + self-service/udm_attributes/birthday/readonly: true + self-service/udm_attributes/city/readonly: true + self-service/udm_attributes/departmentNumber/readonly: true + self-service/udm_attributes/displayName/readonly: true + self-service/udm_attributes/employeeNumber/readonly: true + self-service/udm_attributes/employeeType/readonly: true + self-service/udm_attributes/firstname/readonly: true + self-service/udm_attributes/lastname/readonly: true + self-service/udm_attributes/organisation/readonly: true + self-service/udm_attributes/postcode/readonly: true + self-service/udm_attributes/street/readonly: true + self-service/udm_attributes/title/readonly: true + self-service/udm_attributes: jpegPhoto,description,title,firstname,lastname,displayName,initials,birthday,organisation,street,postcode,city + self-service/web/enabled: yes + server/role: domaincontroller_master + slapd/port: 389 + ssl/ca/cipher: aes256 + ssl/common: Univention Corporate Server Root CA (ID: XXX) + ssl/country: DE + ssl/crl/interval: 7 + ssl/crl/validity: 10 + ssl/default/bits: 2048 + ssl/default/days: 1825 + ssl/default/hashfunction: sha256 + ssl/email: ssl@example.org + ssl/host/objectclass: univentionDomainController,univentionMemberServer,univentionClient + ssl/locality: DE + ssl/organization: DE + ssl/organizationalunit: Univention Corporate Server + ssl/state: DE + ssl/update/expired: yes + ssl/validity/check: yes + ssl/validity/host: 20523 + ssl/validity/root: 20523 + ssl/validity/warning: 30 + system/setup/showloginmessage: false + ucr/backup/enabled: yes + ucr/encoding/strict: true + ucs/server/languages/de_AT: Deutsch (Österreich) + ucs/server/languages/de_CH: Deutsch (Schweiz) + ucs/server/languages/de_DE: Deutsch + ucs/server/languages/en_GB: English (United Kingdom) + ucs/server/languages/en_US: English + ucs/server/robots/disallow: / + ucs/server/saml-idp-server/primary.example.org: primary.example.org + ucs/server/sso/fqdn: id.opendesk.apps.digilab.network + ucs/server/sso/virtualhost: true + ucs/web/license/requested: true + ucs/web/theme: light + umc/cookie-banner/show: false + umc/http/allowed-session-overtake/ranges: 0.0.0.0/0,::/0 + umc/http/autostart: yes + umc/http/content-security-policy/connect-src: 'self' + umc/http/content-security-policy/default-src: 'unsafe-eval' + umc/http/content-security-policy/font-src: 'self' + umc/http/content-security-policy/form-action: 'self' + umc/http/content-security-policy/frame-ancestors: 'self' + umc/http/content-security-policy/frame-src: 'self' https://id.opendesk.apps.digilab.network + umc/http/content-security-policy/img-src: * + umc/http/content-security-policy/media-src: * + umc/http/content-security-policy/object-src: 'self' + umc/http/content-security-policy/script-src: 'self' 'unsafe-inline' 'unsafe-eval' https://www.youtube.com/ https://s.ytimg.com/ + umc/http/content-security-policy/style-src: 'self' 'unsafe-inline' + umc/http/cookie/samesite: Strict + umc/http/enforce-secure-cookie: true + umc/http/enforce-session-cookie: true + umc/http/interface: 0.0.0.0 + umc/http/port: 8090 + umc/http/response-timeout: 310 + umc/http/session/timeout: 28800 + umc/http/show_tracebacks: false + umc/login/content-security-policy/frame-ancestors: 'self' + umc/login/links/forgot_your_password/enabled: true + umc/login/links/how_do_i_login/enabled: true + umc/login/links/login_without_sso/enabled: true + umc/login/links/login_without_sso/text/de: Ohne Single Sign-On anmelden + umc/login/links/login_without_sso/text: Login without Single Sign On + umc/login/password-complexity-message/de: Das Passwort muss mindestens 8 Zeichen lang sein und darf keine Zahlenabfolge oder ganze Worte enthalten, wie '1234Test'. + umc/login/password-complexity-message/en: Password must be at least 8 characters long and cannot include a number series or regular words, like '1234Test'. + umc/module/debug/level: 2 + umc/module/timeout: 600 + umc/module/udm/oxmail/oxcontext/disabled: True + umc/module/udm/portals/all/disabled: True + umc/module/udm/users/self/disabled: true + umc/saml/idp-server: http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor + umc/saml/idp-server-internal: http://ums-keycloak:8080/realms/opendesk/protocol/saml/descriptor + umc/saml/in-memory-identity-cache: false + umc/saml/schemes: https + umc/saml/sp-server: portal.opendesk.apps.digilab.network + umc/saml/trusted/sp/primary.example.org: primary.example.org + umc/self-service/account-deregistration/blacklist/groups: Administrators,Domain Admins + umc/self-service/account-deregistration/email/subject: Account deletion + umc/self-service/account-deregistration/enabled: false + umc/self-service/account-deregistration/whitelist/groups: Domain Users + umc/self-service/account-registration/backend/enabled: false + umc/self-service/account-registration/frontend/enabled: false + umc/self-service/account-registration/udm_attributes/required: lastname,username + umc/self-service/account-registration/udm_attributes: firstname,lastname,username + umc/self-service/account-registration/usercontainer: cn=self registered users,dc=swp-ldap,dc=internal + umc/self-service/account-verification/backend/enabled: false + umc/self-service/account-verification/email/subject: Account verification + umc/self-service/account-verification/email/token_length: 64 + umc/self-service/account-verification/email/webserver_address: portal.opendesk.apps.digilab.network + umc/self-service/account-verification/frontend/enabled: false + umc/self-service/account-verification/next-steps/de: Weiter zum Univention Portal. + umc/self-service/account-verification/next-steps: Continue to the Univention Portal. + umc/self-service/allow-authenticated-use: true + umc/self-service/content-security-policy/frame-ancestors: 'self' + umc/self-service/email-change-notification/email/subject: Account recovery email changed + umc/self-service/enabled: yes + umc/self-service/invitation/enabled: true + umc/self-service/memcached/socket: memcached + umc/self-service/memcached/username: + umc/self-service/passwordchange/frontend/enabled: yes + umc/self-service/passwordreset/backend/enabled: true + umc/self-service/passwordreset/email/enabled: yes + umc/self-service/passwordreset/email/sender_address: Password Reset Service + umc/self-service/passwordreset/email/server/port: 25 + umc/self-service/passwordreset/email/server/starttls: false + umc/self-service/passwordreset/email/server/user: + umc/self-service/passwordreset/email/server: postfix.tn-openbsw-opendesk.svc.cluster.local + umc/self-service/passwordreset/email/subject: Password reset + umc/self-service/passwordreset/email/text_file: /usr/share/univention-self-service/email_bodies/passwordreset_email_body.txt + umc/self-service/passwordreset/email/token_length: 64 + umc/self-service/passwordreset/email/webserver_address: portal.opendesk.apps.digilab.network + umc/self-service/passwordreset/external/enabled: no + umc/self-service/passwordreset/external/token_length: 64 + umc/self-service/passwordreset/frontend/enabled: yes + umc/self-service/passwordreset/limit/per_user/day: 120 + umc/self-service/passwordreset/limit/per_user/hour: 60 + umc/self-service/passwordreset/limit/per_user/minute: 10 + umc/self-service/passwordreset/limit/total/day: 1000 + umc/self-service/passwordreset/limit/total/hour: 200 + umc/self-service/passwordreset/limit/total/minute: 120 + umc/self-service/passwordreset/sms/enabled: no + umc/self-service/passwordreset/sms/token_length: 12 + umc/self-service/passwordreset/token_validity_period: 172800 + umc/self-service/passwordreset/whitelist/groups: Domain Users + umc/self-service/postgresql/database: selfservice + umc/self-service/postgresql/hostname: postgresql + umc/self-service/postgresql/port: 5432 + umc/self-service/postgresql/username: selfservice_user + umc/self-service/profiledata/blacklist/groups: Administrators,Domain Admins + umc/self-service/profiledata/enabled: true + umc/self-service/profiledata/whitelist/groups: Domain Users + umc/self-service/protect-account/backend/enabled: true + umc/self-service/protect-account/frontend/enabled: yes + umc/self-service/service-specific-passwords/backend/enabled: false + umc/server/autostart: yes + umc/server/debug/level: 2 + umc/server/processes: 1 + umc/server/upload/max: 2048 + umc/server/upload/min_free_space: 51200 + umc/web/appliance/fast_setup_mode: true + umc/web/cache_bust: 1619020256 + umc/web/favorites/default: welcome,udm:users/user,udm:groups/group,udm:computers/computer,appcenter:appcenter,updater + umc/web/feedback/description: [UMC-Feedback] Traceback + umc/web/feedback/mail: feedback@univention.de + umc/web/hooks/univention-management-console-module-passwordchange: passwordchange + umc/web/hooks/univention-self-service: passwordreset + umc/web/hooks/univention-web-js: default_menu_entries + umc/web/language: de_DE.UTF-8:UTF-8 + umc/web/piwik: false + umc/web/sso/enabled: true + umc/web/sso/newwindow: true + umc/web/startupdialog: false + umc/web/title: openDesk Portal + update/available: false + update/reboot/required: false + uuid/license: 00000000-0000-0000-0000-000000000000 + uuid/system: 00000000-0000-0000-0000-000000000000 + version/erratalevel: 0 + version/patchlevel: 5 + version/version: 5.0 + + base-defaults.conf: | + # This file is empty on purpose + # And needs to have at least two lines +--- +# Source: nubus/charts/nubusStackDataUms/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-stack-data-ums + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.73.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded + intents.otterize.com/service-name: ums-stack-data-ums +data: + UDM_API_URL: http://ums-udm-rest-api:9979/udm/ + UDM_API_USER: cn=admin + UDM_API_PASSWORD_FILE: /run/secrets/univention.de/data-loader/udm_secret + UDM_API_PORT: '9979' +--- +# Source: nubus/charts/nubusUdmListener/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-listener + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning-listener + helm.sh/chart: nubusUdmListener-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 +data: + CA_CERT: '' + CA_CERT_FILE: '' + DEBUG_LEVEL: '2' + LDAP_BASE_DN: dc=swp-ldap,dc=internal + LDAP_PASSWORD: '' + LDAP_PASSWORD_FILE: /var/secrets/ldap_secret + LDAP_HOST: ums-ldap-server-primary + LDAP_HOST_DN: cn=admin,dc=swp-ldap,dc=internal + LDAP_PORT: '389' + NATS_HOST: ums-provisioning-nats + NATS_PORT: '4222' + NATS_MAX_RECONNECT_ATTEMPTS: '5' + PROVISIONING_API_HOST: ums-provisioning-api + PROVISIONING_API_PORT: '80' + NOTIFIER_SERVER: ums-ldap-notifier + TLS_MODE: off + +--- +# Source: nubus/charts/nubusUdmListener/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-provisioning-listener-files + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning-listener + helm.sh/chart: nubusUdmListener-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 +data: + base.conf: | + # univention_ base.conf + + cron/autostart: yes + server/role: memberserver + ldap/master: ums-ldap-server-primary + ldap/master/port: 389 + ldap/hostdn: cn=admin,dc=swp-ldap,dc=internal + ldap/base: dc=swp-ldap,dc=internal + uldap/start-tls: 0 + listener/debug/level: 2 + + # end of univention_ base.conf + + base-forced.conf: | + + + base-ldap.conf: | + + + base-schedule.conf: | + + + base-defaults.conf: | + + + ldap.conf: | + TLS_REQCERT never + BASE dc=swp-ldap,dc=internal + + +--- +# Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-udm-rest-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.25.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.7 + annotations: + intents.otterize.com/service-name: ums-udm-rest-api +data: + LDAP_SECRET_FILE: /etc/ldap.secret + MACHINE_SECRET_FILE: /etc/machine.secret + # used by the load-join-data job + UDM_API_URL: http://ums-udm-rest-api/udm/ + # This is hard-coded to be cn=admin in UCS + UDM_API_USER: cn=admin + UDM_API_PASSWORD_FILE: /etc/ldap.secret + +--- +# Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-udm-rest-api-ldap-conf + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.25.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.7 + annotations: + intents.otterize.com/service-name: ums-udm-rest-api +data: + ldap.conf: | + URI ldap://ums-ldap-server + BASE dc=swp-ldap,dc=internal + TLS_REQCERT never +--- +# Source: nubus/charts/nubusUmcServer/templates/configmap-proxy.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-umc-server-proxy + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + annotations: + intents.otterize.com/service-name: ums-umc-server +data: + traefik.yaml: | + global: + checkNewVersion: false + sendAnonymousUsage: false + api: + dashboard: false + log: + level: INFO + accessLog: + filePath: /dev/stdout + ping: + entryPoint: http + entryPoints: + http: + address: ":8080" + providers: + file: + filename: /etc/traefik/dynamic.yaml + watch: false + dynamic.yaml: | + http: + routers: + umc-server: + service: umc-server + rule: PathPrefix(`/`) + services: + umc-server: + loadBalancer: + sticky: + cookie: + name: traefik_session + servers: + - url: http://ums-umc-server-0:8090 + +--- +# Source: nubus/charts/nubusUmcServer/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-umc-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + annotations: + intents.otterize.com/service-name: ums-umc-server +data: + LDAP_SECRET_FILE: /etc/ldap.secret + MACHINE_SECRET_FILE: /etc/machine.secret + PRIVATE_KEY_FILE: /var/secrets/ssl/tls.key + CA_CERT_FILE: /var/secrets/ca_cert + CERT_PEM_FILE: /var/secrets/ssl/tls.crt + SMTP_SECRET_FILE: /var/secrets/smtp_secret +--- +# Source: nubus/charts/nubusUmcServer/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-umc-server-pw-reset-email-body + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + annotations: + intents.otterize.com/service-name: ums-umc-server +data: + passwordreset_email_body.txt: |- + Sehr geehrte Benutzerin, sehr geehrter Benutzer, + + Ihr Benutzername für {domainname} lautet: {username} + + Sie erhalten diese Nachricht, da Sie Ihr Passwort zurücksetzen möchten oder weil Ihr Benutzer neu im System angelegt wurde. + + Klicken Sie bitte auf den folgenden Link, um Ihr Passwort zu setzen: + https://{fqdn}/univention/portal/#/selfservice/newpassword/?token={token}&username={username} + + Der genannte Link ist nur 48 Stunden gültig, danach fordern Sie ihn bitte erneut an unter: + https://{fqdn}/univention/portal/#/selfservice/passwordforgotten + + Mit freundlichen Grüßen + Ihr {domainname} Passwort-Service + + +--- +# Source: nubus/templates/postgresql-provisioning-configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: ums-postgresql-provisioning + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-0.64.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +data: + provision-databases.sh: | + #!/usr/bin/env sh + echo "Provisioning databases ..." + cat /provisioning-scripts/databases.list + for db in $(cat /provisioning-scripts/databases.list | sort | uniq); do + echo "Provisioning database $db ..." + psql -c "SELECT 'CREATE DATABASE $db;' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$db');" -t | psql -v ON_ERROR_STOP=1 + psql -v ON_ERROR_STOP=1 <<-EOSQL + SELECT * FROM pg_database; + EOSQL + done + provision-users.sh: | + #!/usr/bin/env sh + set -eu + echo "Provisioning users ..." + for user in $(cat /provisioning-scripts/users.list | sort | uniq); do + USER_PASSWORD=$(cat /provisioning/passwords/$user) + echo "Provisioning user $user ..." + psql -v ON_ERROR_STOP=1 <<-EOSQL + DO \$\$ + BEGIN + IF NOT EXISTS (SELECT * FROM pg_user WHERE usename = '$user') THEN + CREATE USER $user WITH PASSWORD '$USER_PASSWORD'; + END IF; + END \$\$; + EOSQL + psql -v ON_ERROR_STOP=1 <<-EOSQL + ALTER USER $user PASSWORD '$USER_PASSWORD'; + EOSQL + done + + echo "Provisioning user grants ..." + for grant in $(cat /provisioning-scripts/grants.list | sort | uniq); do + echo "Processing grant: $grant" + _USER=$(echo $grant | cut -d: -f1) + _DATABASE=$(echo $grant | cut -d: -f2) + _PRIVILEGES=$(echo $grant | cut -d: -f3) + echo "Provisioning '$_PRIVILEGES' privileges for user $_USER on database $_DATABASE ..." + case ${_PRIVILEGES} in + rw) + psql -v ON_ERROR_STOP=1 <<-EOSQL + GRANT ALL PRIVILEGES ON DATABASE $_DATABASE TO ${_USER}; + \c $_DATABASE + GRANT ALL ON SCHEMA public TO ${_USER}; + EOSQL + ;; + ro) + psql -v ON_ERROR_STOP=1 <<-EOSQL + GRANT CONNECT ON DATABASE $_DATABASE TO ${_USER}; + \c $_DATABASE + GRANT USAGE ON SCHEMA public TO ${_USER}; + GRANT SELECT ON ALL TABLES IN SCHEMA public TO ${_USER}; + EOSQL + ;; + *) + echo "Invalid privileges: ${_PRIVILEGES}" + exit 1 + ;; + esac + done + grants.list: | + notificationsapi_user:notificationsapi:rw + selfservice_user:selfservice:rw + keycloak_user:keycloak:rw + keycloak_extensions_user:keycloak_extensions:rw + guardianmanagementapi_user:guardianmanagementapi:rw + users.list: | + notificationsapi_user + selfservice_user + keycloak_user + keycloak_extensions_user + guardianmanagementapi_user + databases.list: | + notificationsapi + selfservice + keycloak + keycloak_extensions + guardianmanagementapi +--- +# Source: nubus/charts/keycloak/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-keycloak + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: keycloak + helm.sh/chart: keycloak-0.5.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + clusterIP: None + ports: + - name: http + port: 8080 + targetPort: http + protocol: TCP + - name: https + port: 8443 + targetPort: https + protocol: TCP + - name: ispn + port: 7800 + targetPort: ispn + protocol: TCP + selector: + app.kubernetes.io/name: keycloak + app.kubernetes.io/instance: ums +--- +# Source: nubus/charts/nubusGuardian/templates/service-authorization-api.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-guardian-authorization-api + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-authorization-api + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-authorization-api +--- +# Source: nubus/charts/nubusGuardian/templates/service-management-api.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-guardian-management-api + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-management-api + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-management-api +--- +# Source: nubus/charts/nubusGuardian/templates/service-management-ui.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-guardian-management-ui + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-management-ui + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-management-ui +--- +# Source: nubus/charts/nubusGuardian/templates/service-open-policy-agent.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-guardian-open-policy-agent + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-open-policy-agent + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-open-policy-agent +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/service-proxy.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-keycloak-extensions-proxy + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak-extensions-proxy + app.kubernetes.io/version: 21.0.1 + helm.sh/chart: nubusKeycloakExtensions-0.11.0 +spec: + type: ClusterIP + ports: + - port: 8181 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-keycloak-extensions-proxy +--- +# Source: nubus/charts/nubusLdapNotifier/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-ldap-notifier + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-notifier + helm.sh/chart: nubusLdapNotifier-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 14.0.4 + annotations: +spec: + type: ClusterIP + ports: + - name: notifier + port: 6669 + targetPort: notifier + protocol: TCP + selector: + app.kubernetes.io/name: ldap-notifier + app.kubernetes.io/instance: ums +--- +# Source: nubus/charts/nubusLdapServer/templates/service-primary.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-ldap-server-primary + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +spec: + type: ClusterIP + clusterIP: None + # TODO: If it would be fine for the write requests to be distributed over all existing primaries, setting this to true would be a solution to the problem of a non-restartable statefulset. + publishNotReadyAddresses: false + ports: + - name: ldap + port: 389 + targetPort: ldap + protocol: TCP + - name: ldaps + port: 636 + targetPort: ldaps + protocol: TCP + selector: + app.kubernetes.io/name: ldap-server + app.kubernetes.io/instance: ums + ldap-server-type: primary +--- +# Source: nubus/charts/nubusLdapServer/templates/service-secondary.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-ldap-server-secondary + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +spec: + type: ClusterIP + clusterIP: None + publishNotReadyAddresses: true + ports: + - name: ldap + port: 389 + targetPort: ldap + protocol: TCP + - name: ldaps + port: 636 + targetPort: ldaps + protocol: TCP + selector: + app.kubernetes.io/name: ldap-server + app.kubernetes.io/instance: ums + ldap-server-type: secondary +--- +# Source: nubus/charts/nubusLdapServer/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-ldap-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +spec: + type: ClusterIP + ports: + - name: ldap + port: 389 + targetPort: ldap + protocol: TCP + - name: ldaps + port: 636 + targetPort: ldaps + protocol: TCP + selector: + app.kubernetes.io/name: ldap-server + app.kubernetes.io/instance: ums + ldap-server-type: primary +--- +# Source: nubus/charts/nubusNotificationsApi/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-notifications-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: notifications-api + helm.sh/chart: nubusNotificationsApi-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-notifications-api +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: notifications-api + app.kubernetes.io/instance: ums +--- +# Source: nubus/charts/nubusPortalFrontend/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-portal-frontend + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-frontend +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: portal-frontend + app.kubernetes.io/instance: ums +--- +# Source: nubus/charts/nubusPortalServer/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-portal-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-server +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: portal-server + app.kubernetes.io/instance: ums +--- +# Source: nubus/charts/nubusProvisioning/charts/nats/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-provisioning-nats + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.1.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-provisioning-nats +spec: + type: ClusterIP + ports: + - name: client + port: 4222 + targetPort: client + protocol: TCP + - name: cluster + port: 6222 + targetPort: cluster + protocol: TCP + - name: monitor + port: 8222 + targetPort: monitor + protocol: TCP + selector: + app.kubernetes.io/name: provisioning-nats + app.kubernetes.io/instance: ums +--- +# Source: nubus/charts/nubusProvisioning/charts/nats/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-provisioning-nats-headless + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.1.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-provisioning-nats +spec: + type: ClusterIP + clusterIP: None + publishNotReadyAddresses: true + ports: + - name: client + port: 4222 + targetPort: client + protocol: TCP + - name: cluster + port: 6222 + targetPort: cluster + protocol: TCP + - name: monitor + port: 8222 + targetPort: monitor + protocol: TCP + selector: + app.kubernetes.io/name: provisioning-nats + app.kubernetes.io/instance: ums +--- +# Source: nubus/charts/nubusProvisioning/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-provisioning-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-api + helm.sh/chart: nubusProvisioning-0.44.0 + annotations: +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-provisioning-api +--- +# Source: nubus/charts/nubusUdmRestApi/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-udm-rest-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.25.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.7 + annotations: + intents.otterize.com/service-name: ums-udm-rest-api +spec: + type: ClusterIP + clusterIP: None + ports: + - name: http + port: 9979 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: udm-rest-api + app.kubernetes.io/instance: ums +--- +# Source: nubus/charts/nubusUmcGateway/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-umc-gateway + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-gateway + helm.sh/chart: nubusUmcGateway-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + annotations: +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: umc-gateway + app.kubernetes.io/instance: ums +--- +# Source: nubus/charts/nubusUmcServer/templates/service-proxy.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-umc-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-umc-server-proxy + app.kubernetes.io/version: 12.0.29 + helm.sh/chart: nubusUmcServer-0.34.1 + annotations: + intents.otterize.com/service-name: ums-umc-server +spec: + type: ClusterIP + ports: + - name: http + port: 80 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-umc-server-proxy +--- +# Source: nubus/charts/nubusUmcServer/templates/service-server.yaml +apiVersion: v1 +kind: Service +metadata: + name: ums-umc-server-0 + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + annotations: + intents.otterize.com/service-name: ums-umc-server +spec: + type: ClusterIP + clusterIP: None + ports: + - name: http + port: 8090 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: umc-server + app.kubernetes.io/instance: ums + statefulset.kubernetes.io/pod-name: ums-umc-server-0 +--- +# Source: nubus/charts/nubusGuardian/templates/deployment-authorization-api.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-guardian-authorization-api + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-authorization-api + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-authorization-api + template: + metadata: + annotations: + checksum/config: b0ec52b725d7ebf01db435089c97fe12e407034959e784698b5a87297537ce42 + intents.otterize.com/service-name: ums-guardian-authorization-api + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-authorization-api + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + containers: + - name: authorization-api + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-authorization-api:2.0.0@sha256:5f194f9385aea5a279e25a57352f7b88a6cc4fa90b3bf04c2c97b9ff2bad70a5 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-guardian-authorization-api + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + httpGet: + path: /guardian/authorization/openapi.json + port: http + initialDelaySeconds: 120 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: /guardian/authorization/openapi.json + port: http + initialDelaySeconds: 30 + timeoutSeconds: 3 + periodSeconds: 15 + failureThreshold: 30 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - name: secrets + mountPath: /var/secrets + - name: tmp + mountPath: /tmp + volumes: + - name: tmp + emptyDir: {} + - name: secrets + secret: + secretName: ums-guardian-udm-secret +--- +# Source: nubus/charts/nubusGuardian/templates/deployment-management-api.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-guardian-management-api + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-management-api + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-management-api + template: + metadata: + annotations: + checksum/config: c333795107148d18926857f15905589157806237f4d522ea5a18c6d6dcf133d7 + intents.otterize.com/service-name: ums-guardian-management-api + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-management-api + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + initContainers: + - name: database-migrations + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api:2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2 + command: [alembic, upgrade, head] + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-guardian-management-api + env: + - name: SQL_PERSISTENCE_ADAPTER__PASSWORD + valueFrom: + secretKeyRef: + name: ums-guardian-postgresql-opendesk-credentials + key: guardianDatabasePassword + containers: + - name: management-api + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api:2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-guardian-management-api + env: + - name: SQL_PERSISTENCE_ADAPTER__PASSWORD + valueFrom: + secretKeyRef: + name: ums-guardian-postgresql-opendesk-credentials + key: guardianDatabasePassword + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + httpGet: + path: /guardian/management/openapi.json + port: http + initialDelaySeconds: 120 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: /guardian/management/openapi.json + port: http + initialDelaySeconds: 30 + timeoutSeconds: 3 + periodSeconds: 15 + failureThreshold: 30 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - name: secrets + mountPath: /var/secrets + - name: bundles + mountPath: /guardian_service_dir/bundle_server + - name: tmp + mountPath: /tmp + volumes: + - name: bundles + emptyDir: {} + - name: tmp + emptyDir: {} + - name: secrets + secret: + secretName: ums-guardian-keycloak-client-secret +--- +# Source: nubus/charts/nubusGuardian/templates/deployment-management-ui.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-guardian-management-ui + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-management-ui + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-management-ui + template: + metadata: + annotations: + checksum/config: a74008e9cc11d7364f5b136e44451430b7b148996bcc9e122df4cabee9ae8239 + intents.otterize.com/service-name: ums-guardian-management-ui + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-management-ui + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 + spec: + initContainers: + - name: app-configuration + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui:2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-guardian-management-ui + command: + - sh + - -c + - /entrypoint.sh; cp -a /app/* /target/app/ + volumeMounts: + - name: init-entrypoints-config + mountPath: /entrypoint.d/10-generate_config.sh + # NOTE: using target approach + - name: app-config + mountPath: /target/app + containers: + - name: management-ui + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + enabled: true + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui:2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-guardian-management-ui + volumeMounts: + - name: app-config + mountPath: /app + - name: nginx-conf + mountPath: /etc/nginx/sites-enabled/default + subPath: nginx.conf + - name: entrypoint + mountPath: /entrypoint.d + - name: var-lib + mountPath: /var/lib/nginx + - name: var-run + mountPath: /var/run + ports: + - name: http + containerPort: 8383 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 120 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 30 + timeoutSeconds: 3 + periodSeconds: 15 + failureThreshold: 30 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: app-config + emptyDir: {} + # NOTE: Workaround for removing the content of the entrypoint + - name: entrypoint + emptyDir: {} + - name: var-lib + emptyDir: {} + - name: var-run + emptyDir: {} + - name: init-entrypoints-config + configMap: + name: ums-guardian-init-config-management-ui + defaultMode: 0555 + - name: nginx-conf + configMap: + name: ums-guardian-nginx-conf +--- +# Source: nubus/charts/nubusGuardian/templates/deployment-open-policy-agent.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-guardian-open-policy-agent + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-open-policy-agent + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-open-policy-agent + template: + metadata: + annotations: + checksum/config: 655fe4dd682ce9ce5707e284f5ff2189c4ad7ba3e57b8d65a2d05e2e88d5a5db + intents.otterize.com/service-name: ums-ums-open-policy-agent + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-guardian-open-policy-agent + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + containers: + - name: open-policy-agent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-opa:2.0.0@sha256:56a92a08da5addb951a2b2df09974889295ddde8526e93ad40dd973de1052ad4 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-guardian-open-policy-agent + ports: + - name: http + containerPort: 8181 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 120 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 30 + timeoutSeconds: 3 + periodSeconds: 15 + failureThreshold: 30 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-handler.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-keycloak-extensions-handler + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak-extensions-handler + app.kubernetes.io/version: 21.0.1 + helm.sh/chart: nubusKeycloakExtensions-0.11.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-keycloak-extensions-handler + template: + metadata: + annotations: + checksum/config: 5936f2d4cbdfc14feed3cbf0b183b088d5ce10cb33e36a7888c81ef06ca743e3 + intents.otterize.com/service-name: ums-keycloak-extensions-handler + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak-extensions-handler + app.kubernetes.io/version: 21.0.1 + helm.sh/chart: nubusKeycloakExtensions-0.11.0 + spec: + serviceAccountName: ums-keycloak-extensions-handler + containers: + - name: keycloak-bfp-handler + securityContext: + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-handler:0.11.0@sha256:aaba6527f37a7302cf54b0a689a1c11cb439bdc471e01d101726a05902714b9c + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-keycloak-extensions-handler + env: + - name: KC_PASS + valueFrom: + secretKeyRef: + name: ums-opendesk-keycloak-credentials + key: admin_password + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: ums-keycloak-extensions-postgresql-opendesk-credentials + key: umcKeycloakExtensionsDatabasePassword + - name: SMTP_PASSWORD + valueFrom: + secretKeyRef: + name: ums-keycloak-extensions-smtp-opendesk-credentials + key: umcKeycloakExtensionsSmtpPassword + ports: + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-proxy.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-keycloak-extensions-proxy + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak-extensions-proxy + app.kubernetes.io/version: 21.0.1 + helm.sh/chart: nubusKeycloakExtensions-0.11.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-keycloak-extensions-proxy + template: + metadata: + annotations: + checksum/config: 2d3d5a51fdac99f1ee102f64e107c8f43464910c8a3dda8d05b61020dd6094f8 + intents.otterize.com/service-name: ums-keycloak-extensions-proxy + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak-extensions-proxy + app.kubernetes.io/version: 21.0.1 + helm.sh/chart: nubusKeycloakExtensions-0.11.0 + spec: + serviceAccountName: ums-keycloak-extensions-proxy + containers: + - name: keycloak-bfp-proxy + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy:0.11.0@sha256:9b2079ed4078daee00d95ac2de4d72497131e699b967943db5be1c655048edb0 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-keycloak-extensions-proxy + env: + - name: KC_PASS + valueFrom: + secretKeyRef: + name: ums-opendesk-keycloak-credentials + key: admin_password + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: ums-keycloak-extensions-postgresql-opendesk-credentials + key: umcKeycloakExtensionsDatabasePassword + - name: CAPTCHA_SITE_KEY + value: some_site_key + - name: CAPTCHA_SECRET_KEY + value: some_secret_key + ports: + - name: http + containerPort: 8181 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi +--- +# Source: nubus/charts/nubusLdapServer/templates/deployment-proxy.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-ldap-server-proxy + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + ldap-server-type: proxy + annotations: + intents.otterize.com/service-name: ums-ldap-server +spec: + replicas: 0 + strategy: + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: ldap-server + app.kubernetes.io/instance: ums + ldap-server-type: proxy + template: + metadata: + annotations: + checksum/configmap: ed47017dc7e6ea55e9189d6d47ba463ed4f7df3872b4f025c8946b5f730f4689 + checksum/configmap-proxy: 74556f6b8d345b0270648440b719332b388f098b0a690c2c98a75b1f75697c90 + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + ldap-server-type: proxy + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: ldap-server-type + operator: In + values: + - proxy + topologyKey: kubernetes.io/hostname + weight: 100 + securityContext: + fsGroup: 102 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-ldap-server + terminationGracePeriodSeconds: 5 + initContainers: + - name: univention-compatibility + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - cp -a /usr/share/univention-ldap/* /target/usr/share/univention-ldap/; cp + -a /etc/ldap/* /target/etc/ldap/; cp -a /etc/univention/* /target/etc/univention/ + volumeMounts: + - name: usr-share-univention-ldap-volume + mountPath: /target/usr/share/univention-ldap + - name: etc-ldap-volume + mountPath: /target/etc/ldap + - name: etc-univention-volume + mountPath: /target/etc/univention + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: load-internal-plugins + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + cp -av /var/lib/univention-ldap-local/local-schema /target/ldap-schema + cp -av /etc/univention/templates/files/etc/ldap/slapd.conf.d /target/ldap-acls + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-portal-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.38.0@sha256:aa6ec6b99810e05655d98fa1192bc2eabb855335f7a04aa4cd96ed5b5645d736 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-ox-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-opendesk-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.7.4@sha256:23976c92c1b9f366b04e5e17fb52912b624720e3a97f5fee0da43afe75a6645e + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: wait-for-secondary + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-ldap-server + - configMapRef: + name: ums-ldap-server-proxy + env: + - name: LDAP_CN_ADMIN_PW + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + command: + - bash + - -c + - /scripts-proxy/wait-for-secondary.sh + volumeMounts: + - name: proxy-scripts-volume + mountPath: /scripts-proxy + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: wait-for-saml-metadata + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - /scripts/wait-for-saml-metadata.sh + envFrom: + - configMapRef: + name: ums-ldap-server + volumeMounts: + - name: scripts-volume + mountPath: /scripts + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + containers: + - name: openldap + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-ldap-server + - configMapRef: + name: ums-ldap-server-proxy + env: + - name: LDAP_CN_ADMIN_PW + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + ports: + - name: ldap + containerPort: 389 + protocol: TCP + - name: ldaps + containerPort: 636 + protocol: TCP + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + volumeMounts: + - name: usr-share-univention-ldap-volume + mountPath: /usr/share/univention-ldap + - name: usr-share-saml-volume + mountPath: /usr/share/saml + - name: etc-ldap-volume + mountPath: /etc/ldap + - name: etc-univention-volume + mountPath: /etc/univention + - name: proxy-config-templates-volume + mountPath: /config/templates + - name: proxy-scripts-volume + mountPath: /entrypoint.d/90-generate-slapd-conf.sh + subPath: generate-slapd.conf.sh + - name: plugin-targets + mountPath: /var/lib/univention-ldap-local/local-schema + subPath: ldap-schema + - name: plugin-targets + mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d + subPath: ldap-acls + - name: var-run-volume + mountPath: /var/run/slapd + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + - name: data-volume + mountPath: /var/lib/univention-ldap + - mountPath: /entrypoint.d/30-purge.sh + name: migration-scripts + subPath: 30-purge.sh + - mountPath: /entrypoint.d/95-slapadd-24-ldiff.sh + name: migration-scripts + subPath: 95-slapadd-24-ldif.sh + volumes: + - name: data-volume + emptyDir: {} + - name: var-run-volume + emptyDir: {} + - name: usr-share-univention-ldap-volume + emptyDir: {} + - name: usr-share-saml-volume + emptyDir: {} + - name: etc-ldap-volume + emptyDir: {} + - name: etc-univention-volume + emptyDir: {} + - name: proxy-scripts-volume + configMap: + name: ums-ldap-server-proxy-scripts + defaultMode: 0555 + - name: proxy-config-templates-volume + configMap: + name: ums-ldap-server-proxy-config-templates + - name: scripts-volume + configMap: + name: ums-ldap-server-scripts + defaultMode: 0555 + - name: plugin-targets + emptyDir: {} + - name: config-map-ucr + configMap: + name: ums-stack-data-ums-ucr + - name: migration-scripts + secret: + defaultMode: 365 + secretName: ums-ldap-server-migration +--- +# Source: nubus/charts/nubusNotificationsApi/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-notifications-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: notifications-api + helm.sh/chart: nubusNotificationsApi-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-notifications-api +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: notifications-api + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/configmap: 7ee9a265a1c5a872f84a9b8c4f71c94be7376aceff9254f7e84b7518766a0140 + labels: + app.kubernetes.io/name: notifications-api + helm.sh/chart: nubusNotificationsApi-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + sysctls: [] + serviceAccountName: ums-notifications-api + terminationGracePeriodSeconds: 5 + containers: + - name: notification-api + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/notifications-api:0.42.2@sha256:ff744b2d5388bfc413a4d25108f37ba086d2a08cb14ceb02d17e93de003a1078 + imagePullPolicy: IfNotPresent + env: + - name: DB_USERNAME + value: notificationsapi_user + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: ums-notifications-api-postgresql-opendesk-credentials + key: password + - name: DATABASE + value: notificationsapi + - name: DATABASE_URL + value: postgresql://$(DB_USERNAME):$(DB_PASSWORD)@postgresql:5432/$(DATABASE) + envFrom: + - configMapRef: + name: ums-notifications-api + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 8080 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 8080 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 8080 + timeoutSeconds: 5 + ports: + - name: http + containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + volumes: +--- +# Source: nubus/charts/nubusPortalFrontend/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-portal-frontend + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-frontend +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: portal-frontend + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/configmap: 565734614dae43cfba57ae70455622b7cf1de28c87161911d8cbfe1d114d59e5 + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-portal-frontend + terminationGracePeriodSeconds: 5 + containers: + - name: portal-frontend + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update:1.8.0@sha256:5ae4d38d67aab0678e227d45737a4113382015225ef317dde1fbe8574689449e + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-portal-frontend + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 80 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 80 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 80 + timeoutSeconds: 5 + ports: + - name: http + containerPort: 80 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - name: var-run-volume + mountPath: /var/run + - name: var-lib-nginx-volume + mountPath: /var/lib/nginx + - name: ums-portal-frontend-nginx + subPath: nginx.conf + mountPath: /etc/nginx/nginx.conf + - name: ums-portal-frontend-branding + mountPath: /var/www/html/favicon.ico + subPath: favicon.ico + - name: ums-portal-frontend-branding + mountPath: /var/www/html/css/custom.css + subPath: custom.css + - name: ums-portal-frontend-branding + mountPath: /var/www/html/icons/logo.svg + subPath: logo.svg + - name: ums-portal-frontend-branding + mountPath: /var/www/html/custom/portal_background_image.svg + subPath: portal_background_image.svg + volumes: + - name: var-run-volume + emptyDir: {} + - name: var-lib-nginx-volume + emptyDir: {} + - name: ums-portal-frontend-nginx + configMap: + name: ums-portal-frontend-nginx + defaultMode: 420 + - name: ums-portal-frontend-branding + configMap: + name: ums-portal-frontend-branding +--- +# Source: nubus/charts/nubusPortalServer/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-portal-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + intents.otterize.com/service-name: ums-portal-server +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: portal-server + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/configmap: 1bcff58adb205f24b11f8fd7e6ce9e8efc2ce67a13b8d6bdeb2bf12720697706 + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-portal-server + terminationGracePeriodSeconds: 5 + initContainers: + - name: copy-files + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-server:0.42.2@sha256:00b45c354c421ad6bc0ee046444cc0a2caf633787c770cad60e7c06c4307a248 + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - -c + - | + set -euxo pipefail + cp -a /usr/share/univention-portal/* /target/usr/share/univention-portal/ + volumeMounts: + - name: usr-share-univention-portal-volume + mountPath: /target/usr/share/univention-portal + - name: tmp-volume + mountPath: /tmp + containers: + - name: portal-server + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-server:0.42.2@sha256:00b45c354c421ad6bc0ee046444cc0a2caf633787c770cad60e7c06c4307a248 + imagePullPolicy: IfNotPresent + env: + - name: OBJECT_STORAGE_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + name: ums-portal-server-minio-opendesk-credentials + key: access-key-id + - name: OBJECT_STORAGE_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + name: ums-portal-server-minio-opendesk-credentials + key: secret-key-id + envFrom: + - configMapRef: + name: ums-portal-server + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 80 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 80 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 80 + timeoutSeconds: 5 + ports: + - name: http + containerPort: 80 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - name: usr-lib-univention-portal-config-volume + mountPath: /usr/lib/univention-portal/config + - name: usr-share-univention-portal-volume + mountPath: /usr/share/univention-portal + - name: authenticator-secret + mountPath: /var/secrets/authenticator.secret + subPath: authenticator.secret + - name: tmp-volume + mountPath: /tmp + volumes: + - name: usr-lib-univention-portal-config-volume + emptyDir: {} + - name: usr-share-univention-portal-volume + emptyDir: {} + - name: authenticator-secret + secret: + secretName: ums-opendesk-portal-server-central-navigation + - name: tmp-volume + emptyDir: {} +--- +# Source: nubus/charts/nubusProvisioning/templates/deployment-dispatcher.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-provisioning-dispatcher + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-dispatcher + helm.sh/chart: nubusProvisioning-0.44.0 + annotations: + intents.otterize.com/service-name: ums-provisioning-dispatcher +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-provisioning-dispatcher + strategy: + type: Recreate + template: + metadata: + annotations: + checksum/configmap: 917567cd1bf78b07341165ced3d60f9dafa444131455805ae1605e064a9a10c7 + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-dispatcher + helm.sh/chart: nubusProvisioning-0.44.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-provisioning + terminationGracePeriodSeconds: 5 + initContainers: + - name: wait-for-nats + command: [poetry, run, python, /scripts/wait-for-nats.py] + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.44.0@sha256:b87218dcd2db7539b786ff479cde9620939274d4365721531dc6075b6fcc19ea + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-api + - secretRef: + name: ums-provisioning-api-credentials + volumeMounts: + - name: wait-for-nats + mountPath: /scripts + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + containers: + - name: dispatcher + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher:0.44.0@sha256:b7b9ee59c008bd8850bcfb6cb009ae47e6be43ed117116928374c721711b09ca + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-dispatcher + - secretRef: + name: ums-provisioning-dispatcher-credentials + livenessProbe: + exec: + command: + - sh + - -c + - | + exit 0 + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + exec: + command: + - sh + - -c + - | + exit 0 + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + startupProbe: + exec: + command: + - sh + - -c + - | + exit 0 + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + volumes: + - name: wait-for-nats + configMap: + name: ums-provisioning-api +--- +# Source: nubus/charts/nubusProvisioning/templates/deployment-events-and-consumer-api.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-provisioning-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-api + helm.sh/chart: nubusProvisioning-0.44.0 + annotations: + intents.otterize.com/service-name: ums-provisioning-api +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-provisioning-api + strategy: + type: Recreate + template: + metadata: + annotations: + checksum/configmap: 917567cd1bf78b07341165ced3d60f9dafa444131455805ae1605e064a9a10c7 + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-api + helm.sh/chart: nubusProvisioning-0.44.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-provisioning + terminationGracePeriodSeconds: 5 + initContainers: + - name: wait-for-nats + command: [poetry, run, python, /scripts/wait-for-nats.py] + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.44.0@sha256:b87218dcd2db7539b786ff479cde9620939274d4365721531dc6075b6fcc19ea + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-api + - secretRef: + name: ums-provisioning-api-credentials + volumeMounts: + - name: wait-for-nats + mountPath: /scripts + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + containers: + - name: api + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.44.0@sha256:b87218dcd2db7539b786ff479cde9620939274d4365721531dc6075b6fcc19ea + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-api + - secretRef: + name: ums-provisioning-api-credentials + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 7777 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 7777 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 7777 + ports: + - name: http + containerPort: 7777 + protocol: TCP + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + volumes: + - name: wait-for-nats + configMap: + name: ums-provisioning-api +--- +# Source: nubus/charts/nubusProvisioning/templates/deployment-prefill.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-provisioning-prefill + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-prefill + helm.sh/chart: nubusProvisioning-0.44.0 + annotations: + intents.otterize.com/service-name: ums-provisioning-prefill +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-provisioning-prefill + strategy: + type: Recreate + template: + metadata: + annotations: + checksum/configmap: 917567cd1bf78b07341165ced3d60f9dafa444131455805ae1605e064a9a10c7 + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-prefill + helm.sh/chart: nubusProvisioning-0.44.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-provisioning + terminationGracePeriodSeconds: 5 + initContainers: + - name: wait-for-udm + command: [/usr/bin/python3, /scripts/wait-for-udm.py] + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill:0.44.0@sha256:86201a277164ceb9a8df3fd4c7fc28b0185cadf7962a937d88d9feb576e77da2 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-prefill + - secretRef: + name: ums-provisioning-prefill-credentials + volumeMounts: + - name: wait-for-udm + mountPath: /scripts + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: wait-for-api-to-start + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-common + command: [bash, -c, 'set -euo pipefail; until curl -s http://${PROVISIONING_API_HOST}:${PROVISIONING_API_PORT}/v1/subscriptions + > /dev/null || [ $? -ne 0 ]; do echo Waiting for api; sleep 2; done;'] + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + containers: + - name: prefill + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill:0.44.0@sha256:86201a277164ceb9a8df3fd4c7fc28b0185cadf7962a937d88d9feb576e77da2 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-prefill + - secretRef: + name: ums-provisioning-prefill-credentials + livenessProbe: + exec: + command: + - sh + - -c + - | + exit 0 + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + exec: + command: + - sh + - -c + - | + exit 0 + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + startupProbe: + exec: + command: + - sh + - -c + - | + exit 0 + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + volumes: + - name: wait-for-udm + configMap: + name: ums-provisioning-prefill +--- +# Source: nubus/charts/nubusProvisioning/templates/deployment-udm-transformer.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-provisioning-udm-transformer + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-udm-transformer + helm.sh/chart: nubusProvisioning-0.44.0 + annotations: + intents.otterize.com/service-name: ums-provisioning-udm-transformer +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-provisioning-udm-transformer + strategy: + type: Recreate + template: + metadata: + annotations: + checksum/configmap: 917567cd1bf78b07341165ced3d60f9dafa444131455805ae1605e064a9a10c7 + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-udm-transformer + helm.sh/chart: nubusProvisioning-0.44.0 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-provisioning + terminationGracePeriodSeconds: 5 + initContainers: + - name: load-internal-plugins + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer:0.44.0@sha256:1aca5eaa575ab0ee7b9fa128de30050b748a182b53b7bcdc6293b58187f5416a + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + cp -av /usr/lib/python3/dist-packages/univention/udm/modules /target/udm-modules + cp -av /usr/lib/python3/dist-packages/univention/admin/hooks.d /target/udm-hooks.d + cp -av /usr/lib/python3/dist-packages/univention/admin/syntax.d /target/udm-syntax.d + cp -av /usr/lib/python3/dist-packages/univention/admin/handlers /target/udm-handlers + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: load-portal-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.38.0@sha256:aa6ec6b99810e05655d98fa1192bc2eabb855335f7a04aa4cd96ed5b5645d736 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: load-ox-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: load-opendesk-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.7.4@sha256:23976c92c1b9f366b04e5e17fb52912b624720e3a97f5fee0da43afe75a6645e + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: wait-for-nats + command: [poetry, run, python, /scripts/wait-for-nats.py] + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.44.0@sha256:b87218dcd2db7539b786ff479cde9620939274d4365721531dc6075b6fcc19ea + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-api + - secretRef: + name: ums-provisioning-api-credentials + volumeMounts: + - name: wait-for-nats + mountPath: /scripts + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + containers: + - name: udm-transformer + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer:0.44.0@sha256:1aca5eaa575ab0ee7b9fa128de30050b748a182b53b7bcdc6293b58187f5416a + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-udm-transformer + - secretRef: + name: ums-provisioning-udm-transformer-api-credentials + - secretRef: + name: ums-provisioning-udm-transformer-nats-credentials + - secretRef: + name: ums-provisioning-udm-transformer-ldap-credentials + livenessProbe: + exec: + command: + - sh + - -c + - | + exit 0 + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + exec: + command: + - sh + - -c + - | + exit 0 + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + startupProbe: + exec: + command: + - sh + - -c + - | + exit 0 + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + volumeMounts: + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/udm/modules + subPath: udm-modules + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/admin/hooks.d + subPath: udm-hooks.d + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/admin/syntax.d + subPath: udm-syntax.d + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/admin/handlers + subPath: udm-handlers + volumes: + - name: wait-for-nats + configMap: + name: ums-provisioning-api + - name: config-map-ucr + configMap: + name: ums-stack-data-ums-ucr + - name: plugin-targets + emptyDir: {} +--- +# Source: nubus/charts/nubusSelfServiceConsumer/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-selfservice-listener + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-selfservice-listener + app.kubernetes.io/version: 0.0.1 + helm.sh/chart: nubusSelfServiceConsumer-0.11.3 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-selfservice-listener + template: + metadata: + annotations: + checksum/configmap: 149a77de8a55badb9337f7adaacdebb5f5565968ddc379e7aebc1f60ef4ddbba + intents.otterize.com/service-name: ums-selfservice-listener + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-selfservice-listener + spec: + serviceAccountName: ums-selfservice-listener + terminationGracePeriodSeconds: 5 + initContainers: + - name: wait-for-provisioning-api + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + command: [/bin/bash, /scripts/wait-for-provisioning-api.sh] + resources: + volumeMounts: + - name: scripts + mountPath: /scripts + env: + - name: PROVISIONING_API_PASSWORD + valueFrom: + secretKeyRef: + name: ums-selfservice-listener-credentials + key: PROVISIONING_API_PASSWORD + envFrom: + - configMapRef: + name: ums-selfservice-listener-common + containers: + - name: selfservice-listener + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation:0.11.3@sha256:cd51246ae9436426bd7ee12bc85466cafc18a43ba05ab3ede35dfcf3a012656f + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - -c + - | + set -euxo pipefail + poetry run python3 -m invitation + env: + - name: PROVISIONING_API_PASSWORD + valueFrom: + secretKeyRef: + name: ums-selfservice-listener-credentials + key: PROVISIONING_API_PASSWORD + envFrom: + - configMapRef: + name: ums-selfservice-listener-common + livenessProbe: + readinessProbe: + startupProbe: + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + volumes: + - name: scripts + configMap: + defaultMode: 0555 + name: ums-selfservice-listener-scripts +--- +# Source: nubus/charts/nubusUdmRestApi/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-udm-rest-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.25.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.7 + annotations: + intents.otterize.com/service-name: ums-udm-rest-api +spec: + replicas: 1 + strategy: + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: udm-rest-api + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/configmap: f89d4c2bfc00dfccbd514228d03c0ff460b1bbaf3083c943840bacee06a13a44 + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.25.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.7 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + serviceAccountName: ums-udm-rest-api + terminationGracePeriodSeconds: 5 + initContainers: + - name: univention-compatibility + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.25.1@sha256:0078b16ecf5539e6f3c7e6d5a7ddb57937d3d2d143754fbd6d439a3a8741abe8 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - cp -a /etc/univention/* /target/etc/univention/; cp -a /usr/lib/python3/* + /target/usr/lib/python3/; + volumeMounts: + - name: etc-univention-volume + mountPath: /target/etc/univention + - name: usr-lib-python3-volume + mountPath: /target/usr/lib/python3 + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: ucr-commit + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.25.1@sha256:0078b16ecf5539e6f3c7e6d5a7ddb57937d3d2d143754fbd6d439a3a8741abe8 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - ucr commit /etc/univention/directory/reports/config.ini + volumeMounts: + - name: etc-univention-volume + mountPath: /etc/univention + - name: var-cache-univention-config-volume + mountPath: /var/cache/univention-config + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-internal-plugins + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.25.1@sha256:0078b16ecf5539e6f3c7e6d5a7ddb57937d3d2d143754fbd6d439a3a8741abe8 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + cp -av /usr/lib/python3/dist-packages/univention/udm/modules /target/udm-modules + cp -av /usr/lib/python3/dist-packages/univention/admin/hooks.d /target/udm-hooks.d + cp -av /usr/lib/python3/dist-packages/univention/admin/syntax.d /target/udm-syntax.d + cp -av /usr/lib/python3/dist-packages/univention/admin/handlers /target/udm-handlers + cp -av /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons /target/umc-icons + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-portal-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.38.0@sha256:aa6ec6b99810e05655d98fa1192bc2eabb855335f7a04aa4cd96ed5b5645d736 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-ox-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-opendesk-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.7.4@sha256:23976c92c1b9f366b04e5e17fb52912b624720e3a97f5fee0da43afe75a6645e + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + containers: + - name: udm-rest-api + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + command: + - sh + - -c + - | + python3 \ + -m "univention.admin.rest.server" \ + --debug "2" \ + --port "9979" \ + --interface "0.0.0.0" \ + --processes "1" + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.25.1@sha256:0078b16ecf5539e6f3c7e6d5a7ddb57937d3d2d143754fbd6d439a3a8741abe8 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-udm-rest-api + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 9979 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 9979 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 9979 + timeoutSeconds: 5 + ports: + - name: http + containerPort: 9979 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - name: usr-lib-python3-volume + mountPath: /usr/lib/python3 + - name: var-log-univention-volume + mountPath: /var/log/univention + - name: tmp-volume + mountPath: /tmp + - name: var-run-volume + mountPath: /var/run + - name: etc-ldap-volume + mountPath: /etc/ldap + - name: etc-univention-volume + mountPath: /etc/univention + - name: credentials-volume + mountPath: /etc/ldap.secret + subPath: ldap.secret + - name: credentials-volume + mountPath: /etc/machine.secret + subPath: machine.secret + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/udm/modules + subPath: udm-modules + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/admin/hooks.d + subPath: udm-hooks.d + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/admin/syntax.d + subPath: udm-syntax.d + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/admin/handlers + subPath: udm-handlers + - name: plugin-targets + mountPath: /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons/ + subPath: umc-icons + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + volumes: + - name: usr-lib-python3-volume + emptyDir: {} + - name: etc-ldap-volume + configMap: + name: ums-udm-rest-api-ldap-conf + - name: var-cache-univention-config-volume + emptyDir: {} + - name: tmp-volume + emptyDir: {} + - name: var-run-volume + emptyDir: {} + - name: var-log-univention-volume + emptyDir: {} + - name: etc-univention-volume + emptyDir: {} + - name: plugin-targets + emptyDir: {} + - name: credentials-volume + secret: + defaultMode: 420 + secretName: ums-udm-rest-api-credentials + - name: config-map-ucr + configMap: + name: ums-stack-data-ums-ucr +--- +# Source: nubus/charts/nubusUmcGateway/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-umc-gateway + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-gateway + helm.sh/chart: nubusUmcGateway-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 +spec: + replicas: 1 + strategy: + selector: + matchLabels: + app.kubernetes.io/name: umc-gateway + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: umc-gateway + helm.sh/chart: nubusUmcGateway-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + serviceAccountName: ums-umc-gateway + terminationGracePeriodSeconds: 5 + initContainers: + - name: copy-config + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.34.1@sha256:ab4ffccc182bae115dc8f264c051f1c23102b1416ac00709d95285218829ce39 + imagePullPolicy: IfNotPresent + command: + - bash + - -c + - | + cp -a /etc/univention/* /target/etc/univention/ + cp -a /etc/apache2/* /target/etc/apache2/ + cp -a /var/www/univention/* /target/var/www/univention/ + volumeMounts: + - name: etc-apache2 + mountPath: /target/etc/apache2 + - name: var-www-univention + mountPath: /target/var/www/univention + - name: etc-univention + mountPath: /target/etc/univention + - name: prepare-config + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.34.1@sha256:ab4ffccc182bae115dc8f264c051f1c23102b1416ac00709d95285218829ce39 + imagePullPolicy: IfNotPresent + command: + - bash + - -c + - | + /entrypoint.d/50-entrypoint.sh + echo "Listen 8080" > /etc/apache2/ports.conf + sed -e 's,,,g' -i /etc/apache2/sites-available/000-default.conf + cat /etc/apache2/sites-available/000-default.conf + volumeMounts: + - name: etc-apache2 + mountPath: /etc/apache2 + - name: var-www-univention + mountPath: /var/www/univention + - name: etc-univention + mountPath: /etc/univention + - name: config-cache + mountPath: /var/cache/univention-config + - name: univention-logs + mountPath: /var/log/univention + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + - name: load-internal-plugins + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.34.1@sha256:ab4ffccc182bae115dc8f264c051f1c23102b1416ac00709d95285218829ce39 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + cp -av /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons /target/umc-icons + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: load-portal-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.38.0@sha256:aa6ec6b99810e05655d98fa1192bc2eabb855335f7a04aa4cd96ed5b5645d736 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: load-ox-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: load-opendesk-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.7.4@sha256:23976c92c1b9f366b04e5e17fb52912b624720e3a97f5fee0da43afe75a6645e + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + + containers: + - name: umc-gateway + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.34.1@sha256:ab4ffccc182bae115dc8f264c051f1c23102b1416ac00709d95285218829ce39 + imagePullPolicy: IfNotPresent + command: + - bash + - -c + - | + apache2 -D FOREGROUND \ + -d /etc/apache2/ \ + -f /etc/apache2/apache2.conf + volumeMounts: + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + - name: plugin-targets + mountPath: /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons/ + subPath: umc-icons + readOnly: true + - name: apache2-logs + mountPath: /usr/local/apache2/logs + - name: etc-apache2 + mountPath: /etc/apache2 + readOnly: true + - name: var-www-univention + mountPath: /var/www/univention + readOnly: true + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + tcpSocket: + port: 8080 + initialDelaySeconds: 10 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + tcpSocket: + port: 8080 + initialDelaySeconds: 10 + timeoutSeconds: 3 + periodSeconds: 15 + failureThreshold: 30 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: config-map-ucr + configMap: + name: ums-stack-data-ums-ucr + - name: plugin-targets + emptyDir: {} + - name: apache2-logs + emptyDir: + medium: Memory + - name: etc-apache2 + emptyDir: + medium: Memory + - name: var-www-univention + emptyDir: + medium: Memory + - name: etc-univention + emptyDir: + medium: Memory + - name: config-cache + emptyDir: + medium: Memory + - name: univention-logs + emptyDir: + medium: Memory +--- +# Source: nubus/charts/nubusUmcServer/templates/deployment-load-balancer.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-umc-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-umc-server-proxy + app.kubernetes.io/version: 12.0.29 + helm.sh/chart: nubusUmcServer-0.34.1 + annotations: + intents.otterize.com/service-name: ums-umc-server +spec: + replicas: 1 + strategy: + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-umc-server-proxy + template: + metadata: + annotations: + checksum/configmap: d2a7ee1168c85919e07656ab6d51134351a784a292d7070db616ba07d73560f8 + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-umc-server-proxy + app.kubernetes.io/version: 12.0.29 + helm.sh/chart: nubusUmcServer-0.34.1 + spec: + securityContext: + fsGroup: 0 + fsGroupChangePolicy: Always + serviceAccountName: ums-umc-server + terminationGracePeriodSeconds: 5 + containers: + - name: proxy + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/library/traefik:3.0@sha256:a208c74fd80a566d4ea376053bff73d31616d7af3f1465a7747b8b89ee34d97e + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /var/secrets/ssl + name: certificates + - name: traefik + mountPath: /etc/traefik + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /ping + port: 8080 + initialDelaySeconds: 10 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: /ping + port: 8080 + initialDelaySeconds: 10 + timeoutSeconds: 3 + periodSeconds: 10 + failureThreshold: 30 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: certificates + secret: + secretName: ums-saml-tls + - name: traefik + configMap: + name: ums-umc-server-proxy + items: + - key: traefik.yaml + path: traefik.yaml + - key: dynamic.yaml + path: dynamic.yaml +--- +# Source: nubus/charts/keycloak/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: ums-keycloak + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: keycloak + helm.sh/chart: keycloak-0.5.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: keycloak + app.kubernetes.io/instance: ums + serviceName: ums-keycloak + podManagementPolicy: OrderedReady + updateStrategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: db962dd74a7188e361a884cc40c0d902baab69a4c6eb67874789f33fe3cc8d55 + intents.otterize.com/service-name: ums-keycloak + labels: + app.kubernetes.io/name: keycloak + helm.sh/chart: keycloak-0.5.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + serviceAccountName: ums-keycloak + terminationGracePeriodSeconds: 5 + containers: + - name: keycloak + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: false + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-keycloak:25.0.1-ucs1@sha256:61cb3e703672f6d8806af41bec8056ca84e295bbeb546fdb5349322d1174a43d + imagePullPolicy: IfNotPresent + args: + - start + - --features=admin-fine-grained-authz,token-exchange + - --metrics-enabled=true + # Find the available variables here: https://github.com/univention/univention-keycloak-app/blob/main/app/settings + envFrom: + - configMapRef: + name: ums-keycloak + + env: + - name: KEYCLOAK_ADMIN + value: kcadmin + - name: KEYCLOAK_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: ums-opendesk-keycloak-credentials + key: admin_password + - name: KC_DB_PASSWORD + valueFrom: + secretKeyRef: + name: ums-keycloak-postgresql-opendesk-credentials + key: keycloakDatabasePassword + - name: UNIVENTION_META_JSON + value: https://portal.opendesk.apps.digilab.network/univention/meta.json + ports: + - name: http + containerPort: 8080 + protocol: TCP + - name: https + containerPort: 8443 + protocol: TCP + - name: ispn + containerPort: 7800 + protocol: TCP + livenessProbe: + httpGet: + path: /realms/master + port: 8080 + initialDelaySeconds: 1 + periodSeconds: 5 + timeoutSeconds: 2 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: /realms/master + port: 8080 + initialDelaySeconds: 1 + periodSeconds: 1 + timeoutSeconds: 2 + failureThreshold: 5 + successThreshold: 1 + startupProbe: + httpGet: + path: /realms/master + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 30 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 512Mi +--- +# Source: nubus/charts/nubusLdapNotifier/templates/statefulset.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023-2024 Univention GmbH + +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: ums-ldap-notifier + labels: + app.kubernetes.io/name: ldap-notifier + helm.sh/chart: nubusLdapNotifier-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 14.0.4 +spec: + serviceName: ums-ldap-notifier + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: ldap-notifier + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/config: df27c37dc7344932f3ea420217d2771b2521185f9bfda51b0ef9727c1c777d51 + intents.otterize.com/service-name: ums-ldap-notifier + labels: + app.kubernetes.io/name: ldap-notifier + app.kubernetes.io/instance: ums + spec: + securityContext: + fsGroup: 102 + fsGroupChangePolicy: Always + containers: + - name: ldap-notifier + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier:0.25.2@sha256:9e29c7fb5c609d7e597f27e0384c4f932e6962cdf64012154d7b7c076755d86c + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-ldap-notifier + volumeMounts: + - name: shared-data + mountPath: /var/lib/univention-ldap + - name: shared-run + mountPath: /var/run/slapd + - name: run + mountPath: /run + ports: + - name: notifier + containerPort: 6669 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: run + emptyDir: + medium: Memory + + - name: shared-data + persistentVolumeClaim: + claimName: shared-data-ums-ldap-server-primary-0 + - name: shared-run + persistentVolumeClaim: + claimName: shared-run-ums-ldap-server-primary-0 + affinity: + podAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: ldap-server-type + operator: In + values: + - primary + topologyKey: kubernetes.io/hostname +--- +# Source: nubus/charts/nubusLdapServer/templates/statefulset-primary.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: ums-ldap-server-primary + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + ldap-server-type: primary + annotations: + intents.otterize.com/service-name: ums-ldap-server +spec: + serviceName: ums-ldap-server-primary + replicas: 1 + podManagementPolicy: OrderedReady + volumeClaimTemplates: + + - metadata: + name: shared-data + spec: + accessModes: [ReadWriteOnce] + storageClassName: managed + resources: + requests: + storage: 1Gi + - metadata: + name: shared-run + spec: + accessModes: [ReadWriteOnce] + storageClassName: managed + resources: + requests: + storage: 1Gi + selector: + matchLabels: + app.kubernetes.io/name: ldap-server + app.kubernetes.io/instance: ums + ldap-server-type: primary + updateStrategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: ed47017dc7e6ea55e9189d6d47ba463ed4f7df3872b4f025c8946b5f730f4689 + checksum/configmap-primary: 374833154a7e3c1730768cba717380fa3123d1fe5753de09d88171fe7b5ef26d + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + ldap-server-type: primary + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: ldap-server-type + operator: In + values: + - primary + topologyKey: kubernetes.io/hostname + weight: 100 + securityContext: + fsGroup: 102 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-ldap-server + terminationGracePeriodSeconds: 5 + initContainers: + - name: univention-compatibility + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - cp -a /usr/share/univention-ldap/* /target/usr/share/univention-ldap/; cp + -a /etc/ldap/* /target/etc/ldap/; cp -a /etc/univention/* /target/etc/univention/ + volumeMounts: + - name: usr-share-univention-ldap-volume + mountPath: /target/usr/share/univention-ldap + - name: etc-ldap-volume + mountPath: /target/etc/ldap + - name: etc-univention-volume + mountPath: /target/etc/univention + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: load-internal-plugins + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + cp -av /var/lib/univention-ldap-local/local-schema /target/ldap-schema + cp -av /etc/univention/templates/files/etc/ldap/slapd.conf.d /target/ldap-acls + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-portal-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.38.0@sha256:aa6ec6b99810e05655d98fa1192bc2eabb855335f7a04aa4cd96ed5b5645d736 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-ox-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-opendesk-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.7.4@sha256:23976c92c1b9f366b04e5e17fb52912b624720e3a97f5fee0da43afe75a6645e + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: wait-for-saml-metadata + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - /scripts/wait-for-saml-metadata.sh + envFrom: + - configMapRef: + name: ums-ldap-server + volumeMounts: + - name: scripts-volume + mountPath: /scripts + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + containers: + - name: openldap + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-ldap-server + - configMapRef: + name: ums-ldap-server-primary + env: + - name: SYNC_PASSWORD + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + - name: LDAP_CN_ADMIN_PW + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + readinessProbe: + exec: + command: + - /bin/bash + - -c + - | + /scripts/is_active_master.sh + failureThreshold: 1 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + ports: + - name: ldap + containerPort: 389 + protocol: TCP + - name: ldaps + containerPort: 636 + protocol: TCP + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + volumeMounts: + - name: slapd-overlay-unix-socket-volume + mountPath: /var/lib/univention-ldap/slapd-sock + - name: usr-share-univention-ldap-volume + mountPath: /usr/share/univention-ldap + - name: usr-share-saml-volume + mountPath: /usr/share/saml + - name: etc-ldap-volume + mountPath: /etc/ldap + - name: etc-univention-volume + mountPath: /etc/univention + - name: primary-config-templates-volume + mountPath: /config/templates + - name: primary-scripts-volume + mountPath: /entrypoint.d/90-append-slapd-conf.sh + subPath: append-slapd.conf.sh + - name: scripts-volume + mountPath: /entrypoint.d/91-init-internal-database.sh + subPath: init-internal-database.sh + - name: scripts-volume + mountPath: /scripts + - name: plugin-targets + mountPath: /var/lib/univention-ldap-local/local-schema + subPath: ldap-schema + - name: plugin-targets + mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d + subPath: ldap-acls + + - name: shared-run + mountPath: /var/run/slapd + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + + - name: shared-data + mountPath: /var/lib/univention-ldap + - mountPath: /entrypoint.d/30-purge.sh + name: migration-scripts + subPath: 30-purge.sh + - mountPath: /entrypoint.d/95-slapadd-24-ldiff.sh + name: migration-scripts + subPath: 95-slapadd-24-ldif.sh + volumes: + - name: slapd-overlay-unix-socket-volume + emptyDir: {} + - name: usr-share-univention-ldap-volume + emptyDir: {} + - name: usr-share-saml-volume + emptyDir: {} + - name: etc-ldap-volume + emptyDir: {} + - name: etc-univention-volume + emptyDir: {} + - name: primary-scripts-volume + configMap: + name: ums-ldap-server-primary-scripts + defaultMode: 0555 + - name: primary-config-templates-volume + configMap: + name: ums-ldap-server-primary-config-templates + - name: scripts-volume + configMap: + name: ums-ldap-server-scripts + defaultMode: 0555 + - name: plugin-targets + emptyDir: {} + - name: config-map-ucr + configMap: + name: ums-stack-data-ums-ucr + + - name: migration-scripts + secret: + defaultMode: 365 + secretName: ums-ldap-server-migration +--- +# Source: nubus/charts/nubusLdapServer/templates/statefulset-secondary.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: ums-ldap-server-secondary + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + ldap-server-type: secondary + annotations: + intents.otterize.com/service-name: ums-ldap-server +spec: + serviceName: ums-ldap-server-secondary + replicas: 0 + podManagementPolicy: OrderedReady + volumeClaimTemplates: + + - metadata: + name: shared-data + spec: + accessModes: [ReadWriteOnce] + storageClassName: managed + resources: + requests: + storage: 1Gi + - metadata: + name: shared-run + spec: + accessModes: [ReadWriteOnce] + storageClassName: managed + resources: + requests: + storage: 1Gi + selector: + matchLabels: + app.kubernetes.io/name: ldap-server + app.kubernetes.io/instance: ums + ldap-server-type: secondary + updateStrategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: ed47017dc7e6ea55e9189d6d47ba463ed4f7df3872b4f025c8946b5f730f4689 + checksum/configmap-secondary: cd3607462e65135c3b04ce316104c3955fd43dc12f2f9aaaeab00bef9c177f36 + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.25.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + ldap-server-type: secondary + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: ldap-server-type + operator: In + values: + - secondary + topologyKey: kubernetes.io/hostname + weight: 100 + securityContext: + fsGroup: 102 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-ldap-server + terminationGracePeriodSeconds: 5 + initContainers: + - name: univention-compatibility + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - cp -a /usr/share/univention-ldap/* /target/usr/share/univention-ldap/; cp + -a /etc/ldap/* /target/etc/ldap/; cp -a /etc/univention/* /target/etc/univention/ + volumeMounts: + - name: usr-share-univention-ldap-volume + mountPath: /target/usr/share/univention-ldap + - name: etc-ldap-volume + mountPath: /target/etc/ldap + - name: etc-univention-volume + mountPath: /target/etc/univention + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: load-internal-plugins + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + cp -av /var/lib/univention-ldap-local/local-schema /target/ldap-schema + cp -av /etc/univention/templates/files/etc/ldap/slapd.conf.d /target/ldap-acls + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-portal-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.38.0@sha256:aa6ec6b99810e05655d98fa1192bc2eabb855335f7a04aa4cd96ed5b5645d736 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-ox-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-opendesk-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.7.4@sha256:23976c92c1b9f366b04e5e17fb52912b624720e3a97f5fee0da43afe75a6645e + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: wait-for-saml-metadata + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - /scripts/wait-for-saml-metadata.sh + envFrom: + - configMapRef: + name: ums-ldap-server + volumeMounts: + - name: scripts-volume + mountPath: /scripts + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: wait-for-primary + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-ldap-server + - configMapRef: + name: ums-ldap-server-secondary + env: + - name: SYNC_PASSWORD + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + - name: LDAP_CN_ADMIN_PW + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + command: + - bash + - -c + - /scripts-secondary/wait-for-primary.sh + volumeMounts: + - name: secondary-scripts-volume + mountPath: /scripts-secondary + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + containers: + - name: openldap + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server:0.25.2@sha256:2b9d53f93a93d0f3a659c81c0e44596da8941bd83c8e1f7301a24e46ca06dba2 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-ldap-server + - configMapRef: + name: ums-ldap-server-secondary + env: + - name: SYNC_PASSWORD + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + - name: LDAP_CN_ADMIN_PW + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + ports: + - name: ldap + containerPort: 389 + protocol: TCP + - name: ldaps + containerPort: 636 + protocol: TCP + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + volumeMounts: + - name: usr-share-univention-ldap-volume + mountPath: /usr/share/univention-ldap + - name: usr-share-saml-volume + mountPath: /usr/share/saml + - name: etc-ldap-volume + mountPath: /etc/ldap + - name: etc-univention-volume + mountPath: /etc/univention + - name: secondary-config-templates-volume + mountPath: /config/templates + - name: secondary-scripts-volume + mountPath: /entrypoint.d/90-append-slapd-conf.sh + subPath: append-slapd.conf.sh + - name: scripts-volume + mountPath: /entrypoint.d/91-init-internal-database.sh + subPath: init-internal-database.sh + - name: plugin-targets + mountPath: /var/lib/univention-ldap-local/local-schema + subPath: ldap-schema + - name: plugin-targets + mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d + subPath: ldap-acls + + - name: shared-run + mountPath: /var/run/slapd + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + + - name: shared-data + mountPath: /var/lib/univention-ldap + - mountPath: /entrypoint.d/30-purge.sh + name: migration-scripts + subPath: 30-purge.sh + - mountPath: /entrypoint.d/95-slapadd-24-ldiff.sh + name: migration-scripts + subPath: 95-slapadd-24-ldif.sh + volumes: + - name: usr-share-univention-ldap-volume + emptyDir: {} + - name: usr-share-saml-volume + emptyDir: {} + - name: etc-ldap-volume + emptyDir: {} + - name: etc-univention-volume + emptyDir: {} + - name: secondary-scripts-volume + configMap: + name: ums-ldap-server-secondary-scripts + defaultMode: 0555 + - name: secondary-config-templates-volume + configMap: + name: ums-ldap-server-secondary-config-templates + - name: scripts-volume + configMap: + name: ums-ldap-server-scripts + defaultMode: 0555 + - name: plugin-targets + emptyDir: {} + - name: config-map-ucr + configMap: + name: ums-stack-data-ums-ucr + + - name: migration-scripts + secret: + defaultMode: 365 + secretName: ums-ldap-server-migration +--- +# Source: nubus/charts/nubusPortalConsumer/templates/statefulset.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023-2024 Univention GmbH + +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: ums-portal-consumer + labels: + app.kubernetes.io/name: portal-consumer + helm.sh/chart: nubusPortalConsumer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 +spec: + serviceName: ums-portal-consumer + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: portal-consumer + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/config: 1fb58f27944e2cb892c3bf25302a3bd0534f9dfcd854e81d9da5f9ce41f95808 + checksum/secret: cc0e74cd1e0f5ec42421d3f6947df220f75fc3048fba5a8e6831551ba98cc5de + intents.otterize.com/service-name: ums-portal-consumer + labels: + app.kubernetes.io/name: portal-consumer + app.kubernetes.io/instance: ums + spec: + securityContext: {} + terminationGracePeriodSeconds: 5 + initContainers: + - name: wait-for-ldap + command: [/bin/bash, /scripts/wait-for-ldap.sh] + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + env: + envFrom: + - configMapRef: + name: ums-portal-consumer-common + volumeMounts: + - name: scripts + mountPath: /scripts + + - name: ums-portal-consumer-ldap-credentials-volume + mountPath: /var/secrets/machine_secret + subPath: machine.secret + readOnly: true + - name: ums-portal-consumer-ldap-tls-volume + mountPath: /var/secrets/ca_cert + subPath: ca.crt + readOnly: true + - name: ums-portal-consumer-ldap-tls-volume + mountPath: /var/secrets/cert_pem + subPath: tls.crt + readOnly: true + - name: ums-portal-consumer-ldap-tls-volume + mountPath: /var/secrets/private_key + subPath: tls.key + readOnly: true + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: wait-for-udm + command: [/bin/bash, /scripts/wait-for-udm.sh] + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + env: + envFrom: + - configMapRef: + name: ums-portal-consumer-common + volumeMounts: + - name: scripts + mountPath: /scripts + + - name: ums-portal-consumer-ldap-credentials-volume + mountPath: /var/secrets/machine_secret + subPath: machine.secret + readOnly: true + - name: ums-portal-consumer-ldap-tls-volume + mountPath: /var/secrets/ca_cert + subPath: ca.crt + readOnly: true + - name: ums-portal-consumer-ldap-tls-volume + mountPath: /var/secrets/cert_pem + subPath: tls.crt + readOnly: true + - name: ums-portal-consumer-ldap-tls-volume + mountPath: /var/secrets/private_key + subPath: tls.key + readOnly: true + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: wait-for-object-storage + command: [/usr/bin/python3, /scripts/wait-for-object-store.py] + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.42.2@sha256:5afee47e4d3d5f8bf51ffca66578a98318f49ee41e8f4b306cb75826b66a1804 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-portal-consumer-common + env: + - name: OBJECT_STORAGE_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + name: ums-portal-consumer-minio-credentials + key: accessKey + - name: OBJECT_STORAGE_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + name: ums-portal-consumer-minio-credentials + key: secretKey + volumeMounts: + - name: scripts + mountPath: /scripts + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: wait-for-provisioning-api + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + command: [/bin/bash, /scripts/wait-for-provisioning-api.sh] + volumeMounts: + - name: scripts + mountPath: /scripts + env: + - name: PROVISIONING_API_PASSWORD + valueFrom: + secretKeyRef: + name: ums-portal-consumer-credentials + key: PROVISIONING_API_PASSWORD + envFrom: + - configMapRef: + name: ums-portal-consumer-common + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + containers: + - name: portal-consumer + securityContext: + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.42.2@sha256:5afee47e4d3d5f8bf51ffca66578a98318f49ee41e8f4b306cb75826b66a1804 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-portal-consumer-common + env: + - name: OBJECT_STORAGE_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + name: ums-portal-consumer-minio-credentials + key: accessKey + - name: OBJECT_STORAGE_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + name: ums-portal-consumer-minio-credentials + key: secretKey + - name: PROVISIONING_API_PASSWORD + valueFrom: + secretKeyRef: + name: ums-portal-consumer-credentials + key: PROVISIONING_API_PASSWORD + volumeMounts: + - name: group-membership-cache + mountPath: /usr/share/univention-group-membership-cache/caches + + - name: ums-portal-consumer-ldap-credentials-volume + mountPath: /var/secrets/machine_secret + subPath: machine.secret + readOnly: true + - name: ums-portal-consumer-ldap-tls-volume + mountPath: /var/secrets/ca_cert + subPath: ca.crt + readOnly: true + - name: ums-portal-consumer-ldap-tls-volume + mountPath: /var/secrets/cert_pem + subPath: tls.crt + readOnly: true + - name: ums-portal-consumer-ldap-tls-volume + mountPath: /var/secrets/private_key + subPath: tls.key + readOnly: true + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: scripts + configMap: + defaultMode: 0555 + name: ums-portal-consumer-scripts + - name: ums-portal-consumer-ldap-credentials-volume + secret: + secretName: ums-portal-consumer-ldap-credentials + - name: ums-portal-consumer-ldap-tls-volume + secret: + secretName: ums-portal-consumer-ldap-tls + volumeClaimTemplates: + - metadata: + name: group-membership-cache + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 100Mi +--- +# Source: nubus/charts/nubusProvisioning/charts/nats/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: ums-provisioning-nats + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.1.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-provisioning-nats +spec: + serviceName: ums-provisioning-nats-headless + replicas: 1 + podManagementPolicy: Parallel + volumeClaimTemplates: + - metadata: + name: nats-data + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 1Gi + selector: + matchLabels: + app.kubernetes.io/name: provisioning-nats + app.kubernetes.io/instance: ums + updateStrategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: e3f6dffb47e09edad8dad33fa1b831b3ec846bf2fb15cb908527d44a8e48a3b6 + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.1.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - nats + topologyKey: kubernetes.io/hostname + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: '1' + serviceAccountName: ums-provisioning-nats + containers: + - name: nats + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/library/nats:2.10.10@sha256:fa26beda8a3187ccefa47afcfe9ea6d0e2f40a57c8f64d70bd63c792d7973938 + imagePullPolicy: IfNotPresent + env: + - name: SERVER_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: CLUSTER_ADVERTISE + value: $(SERVER_NAME).nats.$(NAMESPACE).svc.cluster.local + - name: CLUSTER_NAME + value: ums-provisioning-nats + - name: NATS_USER + value: admin + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-nats-credentials + key: admin_password + - name: NATS_API_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: NATS_USER + - name: NATS_API_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: NATS_PASSWORD + - name: NATS_DISPATCHER_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-dispatcher-credentials + key: NATS_USER + - name: NATS_DISPATCHER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-dispatcher-credentials + key: NATS_PASSWORD + - name: NATS_UDM_TRANSFORMER_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-transformer-credentials + key: NATS_USER + - name: NATS_UDM_TRANSFORMER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-transformer-credentials + key: NATS_PASSWORD + - name: NATS_PREFILL_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-prefill-credentials + key: NATS_USER + - name: NATS_PREFILL_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-prefill-credentials + key: NATS_PASSWORD + - name: NATS_UDMLISTENER_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-listener-credentials + key: NATS_USER + - name: NATS_UDMLISTENER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-listener-credentials + key: NATS_PASSWORD + args: + - --config + - /etc/nats-config/nats.conf + livenessProbe: + failureThreshold: 3 + httpGet: + path: /healthz?js-enabled-only=true + port: monitor + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 3 + httpGet: + path: /healthz?js-enabled-only=true + port: monitor + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 90 + httpGet: + path: /healthz?js-enabled-only=true + port: monitor + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + ports: + - name: client + containerPort: 4222 + protocol: TCP + - name: cluster + containerPort: 6222 + protocol: TCP + - name: monitor + containerPort: 8222 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 128Mi + lifecycle: + preStop: + exec: + command: + - nats-server + - -sl=ldm=/var/run/nats.pid + volumeMounts: + - name: var-run-volume + mountPath: /var/run + - name: config-volume + mountPath: /etc/nats-config + - name: nats-data + mountPath: /data + - name: reloader + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/natsio/nats-server-config-reloader:0.14.1@sha256:77dd4c60001ffbf442c6b25592e73b4fca06ea9406c677607192788d80453783 + imagePullPolicy: IfNotPresent + env: + - name: SERVER_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + args: + - -pid + - /var/run/nats.pid + - -config + - /etc/nats-config/nats.conf + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + volumeMounts: + - name: config-volume + mountPath: /etc/nats-config + - name: var-run-volume + mountPath: /var/run + - name: nats-box + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/natsio/nats-box:0.14.2@sha256:c9b8ebaabb2ca4c227feb4f6b856dc72d4775ac3d71f80d2c65aa82303079011 + imagePullPolicy: IfNotPresent + workingDir: /home/nats + env: + - name: SERVER_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: NATS_USER + value: admin + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-nats-credentials + key: admin_password + - name: NATS_API_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: NATS_USER + - name: NATS_API_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: NATS_PASSWORD + - name: NATS_DISPATCHER_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-dispatcher-credentials + key: NATS_USER + - name: NATS_DISPATCHER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-dispatcher-credentials + key: NATS_PASSWORD + - name: NATS_UDM_TRANSFORMER_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-transformer-credentials + key: NATS_USER + - name: NATS_UDM_TRANSFORMER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-transformer-credentials + key: NATS_PASSWORD + - name: NATS_PREFILL_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-prefill-credentials + key: NATS_USER + - name: NATS_PREFILL_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-prefill-credentials + key: NATS_PASSWORD + - name: NATS_UDMLISTENER_USER + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-listener-credentials + key: NATS_USER + - name: NATS_UDMLISTENER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-listener-credentials + key: NATS_PASSWORD + - name: NATS_URL + value: + nats://$(SERVER_NAME).ums-provisioning-nats-headless.$(NAMESPACE).svc.cluster.local:4222 + args: + - sh + - -c + - trap true INT TERM; sleep infinity & wait + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + volumeMounts: + volumes: + - name: var-run-volume + emptyDir: {} + - name: config-volume + configMap: + name: ums-provisioning-nats-config + defaultMode: 420 +--- +# Source: nubus/charts/nubusUdmListener/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: ums-provisioning-listener + labels: + app.kubernetes.io/name: provisioning-listener + helm.sh/chart: nubusUdmListener-0.44.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 +spec: + serviceName: ums-provisioning-listener + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: provisioning-listener + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/config: fbca70d171c30a4df2e6316a63e4abcf4b830b523b81f7e907be932a85e6e7d4 + checksum/secret: b62cc2b618b70c5b69eaba4010994ba4af90f8aff1f6b8268f553a356a8b489b + labels: + app.kubernetes.io/name: provisioning-listener + app.kubernetes.io/instance: ums + spec: + securityContext: + fsGroup: 65534 + fsGroupChangePolicy: Always + sysctls: [] + serviceAccountName: ums-provisioning-listener + terminationGracePeriodSeconds: 5 + containers: + - name: udm-listener + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 102 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener:0.44.0@sha256:03c8f03ca0fab92ecd3234d1f3fad3293629feae0123134641dad243f3ca328c + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-listener + command: + - /bin/bash + - -c + - | + /usr/sbin/univention-directory-listener \ + -F \ + -x \ + -d "${DEBUG_LEVEL}" \ + -b "${LDAP_BASE_DN}" \ + -D "cn=admin,${LDAP_BASE_DN}" \ + -n "${NOTIFIER_SERVER}" \ + -m "/usr/lib/univention-directory-listener/system" \ + -c "/var/lib/univention-directory-listener" \ + -y "${LDAP_PASSWORD_FILE}" -Z + env: + - name: NATS_USER + value: udmlistener + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-listener-credentials + key: NATS_PASSWORD + - name: EVENTS_USERNAME_UDM + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-listener-credentials + key: EVENTS_USERNAME_UDM + - name: EVENTS_PASSWORD_UDM + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-listener-credentials + key: EVENTS_PASSWORD_UDM + ports: + - name: http + containerPort: 80 + protocol: TCP + volumeMounts: + - name: config-files + mountPath: /etc/univention + - name: config-files + mountPath: /etc/ldap/ldap.conf + subPath: ldap.conf + - name: ums-provisioning-udm-listener-ldap-credentials-volume + mountPath: /var/secrets/ldap_secret + subPath: ldap.secret + readOnly: true + - name: ums-provisioning-udm-listener-ldap-credentials-volume + mountPath: /var/secrets/machine_secret + subPath: machine.secret + readOnly: true + - name: ums-provisioning-udm-listener-ldap-tls-volume + mountPath: /var/secrets/ca_cert + subPath: ca.crt + readOnly: true + - name: data + mountPath: /var/lib/univention-directory-listener + - name: data + mountPath: /var/lib/univention-ldap/schema/id + - name: data + mountPath: /var/log/univention + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: config-files + configMap: + name: ums-provisioning-listener-files + - name: ums-provisioning-udm-listener-ldap-credentials-volume + secret: + secretName: ums-provisioning-udm-listener-ldap-credentials + - name: ums-provisioning-udm-listener-ldap-tls-volume + secret: + secretName: ums-provisioning-udm-listener-ldap-tls + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 1Gi + +--- +# Source: nubus/charts/nubusUmcServer/templates/statefulset-server.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: ums-umc-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + annotations: + intents.otterize.com/service-name: ums-umc-server +spec: + replicas: 1 + strategy: + selector: + matchLabels: + app.kubernetes.io/name: umc-server + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/configmap: 5abd26e5cc09d30a27276c0dee2d6d4eb52a815dc37e2fb41760560ae6bdb657 + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.29 + spec: + securityContext: + fsGroup: 0 + fsGroupChangePolicy: Always + serviceAccountName: ums-umc-server + terminationGracePeriodSeconds: 5 + initContainers: + - name: prepare-config + securityContext: + allowPrivilegeEscalation: false + capabilities: + add: + - DAC_OVERRIDE + - SETGID + - SETUID + - SYS_ADMIN + - NET_ADMIN + - AUDIT_CONTROL + - CHOWN + - FOWNER + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.34.1@sha256:4addb518b7b622f0e82dbdde30bbb8d8da6cc197528268d2ad856635f3bbe64a + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-umc-server + command: + - bash + - -c + - | + /entrypoint.d/50-entrypoint.sh + cp -a /var/lib/sss/* /target/var/lib/sss/ + if [[ ! -d /target/var/lib/sss/pipes/private ]]; then + mkdir -p /target/var/lib/sss/pipes/private + fi + chmod 750 /target/var/lib/sss/pipes/private/ + chown root:root -R /target/var/lib/sss/pipes /target/var/lib/sss/db /etc/sssd/sssd.conf + chmod 0600 /etc/sssd/sssd.conf + volumeMounts: + - name: etc-ldap + mountPath: /etc/ldap + - name: etc-pam + mountPath: /etc/pam.d + - name: etc-sssd + mountPath: /etc/sssd + - name: etc-univention-ssl + mountPath: /etc/univention/ssl + - name: etc-univention-reports + mountPath: /etc/univention/directory/reports + - name: acl-cache + mountPath: /var/cache/univention-management-console/acls + - name: config-cache + mountPath: /var/cache/univention-config + - name: univention-logs + mountPath: /var/log/univention + - name: var-lib-sss + mountPath: /target/var/lib/sss + - name: var-www-univention + mountPath: /var/www/univention + - name: run + mountPath: /run + - name: tmp + mountPath: /tmp + - name: usr-share-umc-saml-idp + mountPath: /usr/share/univention-management-console/saml/idp + - mountPath: /var/secrets/ssl + name: certificates + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + - name: ums-umc-server-ldap-credentials-volume + mountPath: /etc/ldap.secret + subPath: ldap.secret + readOnly: true + - name: ums-umc-server-ldap-credentials-volume + mountPath: /etc/machine.secret + subPath: machine.secret + readOnly: true + - name: ums-umc-server-smtp-credentials-custom-volume + mountPath: /var/secrets/smtp_secret + subPath: password + readOnly: true + - name: ums-umc-server-postgresql-opendesk-credentials-volume + mountPath: /var/secrets/db_password + subPath: umcServerDatabasePassword + readOnly: true + - name: ums-umc-server-memcached-opendesk-credentials-volume + mountPath: /var/secrets/memcached_password + subPath: umcServerMemcachedPassword + readOnly: true + - name: ums-umc-server-ldap-tls-volume + mountPath: /var/secrets/ca_cert + subPath: ca.crt + readOnly: true + - name: ums-umc-server-ldap-tls-volume + mountPath: /var/secrets/cert_pem + subPath: tls.crt + readOnly: true + - name: ums-umc-server-ldap-tls-volume + mountPath: /var/secrets/private_key + subPath: tls.key + readOnly: true + - name: load-internal-plugins + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.34.1@sha256:4addb518b7b622f0e82dbdde30bbb8d8da6cc197528268d2ad856635f3bbe64a + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + cp -Rv /usr/share/univention-management-console/modules/ /target/umc-modules + cp -Rv /usr/lib/python3/dist-packages/univention/udm/modules /target/udm-modules + cp -Rv /usr/lib/python3/dist-packages/univention/admin/hooks.d /target/udm-hooks.d + cp -Rv /usr/lib/python3/dist-packages/univention/admin/syntax.d /target/udm-syntax.d + cp -Rv /usr/lib/python3/dist-packages/univention/admin/handlers /target/udm-handlers + mkdir -p /target/udm-modules /target/udm-hooks.d /target/udm-syntax.d /target/udm-handlers /target/umc-modules /target/umc-icons + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-portal-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.38.0@sha256:aa6ec6b99810e05655d98fa1192bc2eabb855335f7a04aa4cd96ed5b5645d736 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-ox-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: load-opendesk-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.7.4@sha256:23976c92c1b9f366b04e5e17fb52912b624720e3a97f5fee0da43afe75a6645e + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + + containers: + - name: umc-server + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.34.1@sha256:4addb518b7b622f0e82dbdde30bbb8d8da6cc197528268d2ad856635f3bbe64a + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - -c + - | + /usr/sbin/univention-management-console-server \ + --no-daemonize-module-processes \ + --log-file stdout + env: + - name: SELF_SERVICE_DB_SECRET + valueFrom: + secretKeyRef: + name: ums-umc-server-postgresql-opendesk-credentials + key: umcServerDatabasePassword + - name: SELF_SERVICE_MEMCACHED_SECRET + valueFrom: + secretKeyRef: + name: ums-umc-server-memcached-opendesk-credentials + key: umcServerMemcachedPassword + - name: PYTHONDONTWRITEBYTECODE + value: '1' + envFrom: + - configMapRef: + name: ums-umc-server + volumeMounts: + - name: etc-ldap + mountPath: /etc/ldap + readOnly: true + - name: etc-pam + mountPath: /etc/pam.d + readOnly: true + - name: etc-sssd + mountPath: /etc/sssd + readOnly: true + - name: etc-univention-ssl + mountPath: /etc/univention/ssl + readOnly: true + - name: etc-univention-reports + mountPath: /etc/univention/directory/reports + readOnly: true + - name: acl-cache + mountPath: /var/cache/univention-management-console/acls + - name: config-cache + mountPath: /var/cache/univention-config + readOnly: true + - name: univention-logs + mountPath: /var/log/univention + - name: var-lib-sss + mountPath: /var/lib/sss + - name: var-www-univention + mountPath: /var/www/univention + readOnly: true + - name: run + mountPath: /run + - name: tmp + mountPath: /tmp + - name: usr-share-umc-saml-idp + mountPath: /usr/share/univention-management-console/saml/idp + readOnly: true + - mountPath: /var/secrets/ssl + name: certificates + - name: config-map-ucr + mountPath: /etc/univention/base.conf + subPath: base.conf + - name: config-map-ucr + mountPath: /etc/univention/base-defaults.conf + subPath: base-defaults.conf + - name: ums-umc-server-ldap-credentials-volume + mountPath: /etc/ldap.secret + subPath: ldap.secret + readOnly: true + - name: ums-umc-server-ldap-credentials-volume + mountPath: /etc/machine.secret + subPath: machine.secret + readOnly: true + - name: ums-umc-server-smtp-credentials-custom-volume + mountPath: /var/secrets/smtp_secret + subPath: password + readOnly: true + - name: ums-umc-server-postgresql-opendesk-credentials-volume + mountPath: /var/secrets/db_password + subPath: umcServerDatabasePassword + readOnly: true + - name: ums-umc-server-memcached-opendesk-credentials-volume + mountPath: /var/secrets/memcached_password + subPath: umcServerMemcachedPassword + readOnly: true + - name: ums-umc-server-ldap-tls-volume + mountPath: /var/secrets/ca_cert + subPath: ca.crt + readOnly: true + - name: ums-umc-server-ldap-tls-volume + mountPath: /var/secrets/cert_pem + subPath: tls.crt + readOnly: true + - name: ums-umc-server-ldap-tls-volume + mountPath: /var/secrets/private_key + subPath: tls.key + readOnly: true + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/udm/modules + subPath: udm-modules + readOnly: true + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/admin/hooks.d + subPath: udm-hooks.d + readOnly: true + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/admin/syntax.d + subPath: udm-syntax.d + readOnly: true + - name: plugin-targets + mountPath: /usr/lib/python3/dist-packages/univention/admin/handlers + subPath: udm-handlers + readOnly: true + - name: plugin-targets + mountPath: /usr/share/univention-management-console-frontend/js/dijit/themes/umc/icons/ + subPath: umc-icons + readOnly: true + - name: plugin-targets + mountPath: /usr/share/univention-management-console/modules/ + subPath: umc-modules + readOnly: true + - name: passwordreset-email-body + mountPath: /usr/share/univention-self-service/email_bodies + readOnly: true + ports: + - name: http + containerPort: 8090 + protocol: TCP + livenessProbe: + tcpSocket: + port: http + initialDelaySeconds: 10 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + tcpSocket: + port: http + initialDelaySeconds: 10 + timeoutSeconds: 3 + periodSeconds: 10 + failureThreshold: 30 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: sssd-sidecar + securityContext: + allowPrivilegeEscalation: true + capabilities: + add: + - DAC_OVERRIDE + - SETGID + - AUDIT_WRITE + - SETUID + - CHOWN + - SETPCAP + - FOWNER + - FSETID + - KILL + - MKNOD + - NET_BIND_SERVICE + - SYS_CHROOT + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.34.1@sha256:4addb518b7b622f0e82dbdde30bbb8d8da6cc197528268d2ad856635f3bbe64a + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + sssd -i --logger stderr --debug-level 2 + envFrom: + - configMapRef: + name: ums-umc-server + volumeMounts: + - name: etc-ldap + mountPath: /etc/ldap + readOnly: true + - name: etc-pam + mountPath: /etc/pam.d + readOnly: true + - name: etc-sssd + mountPath: /etc/sssd + readOnly: true + - name: etc-univention-ssl + mountPath: /etc/univention/ssl + readOnly: true + - name: run + mountPath: /run + - name: usr-share-umc-saml-idp + readOnly: true + mountPath: /usr/share/univention-management-console/saml/idp + - name: var-lib-sss + mountPath: /var/lib/sss + - name: sssd-db + mountPath: /var/lib/sss/db/ + - mountPath: /var/secrets/ssl + name: certificates + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: certificates + secret: + secretName: ums-saml-tls + - name: etc-ldap + emptyDir: + medium: Memory + - name: etc-pam + emptyDir: + medium: Memory + - name: etc-sssd + emptyDir: + medium: Memory + - name: etc-univention-ssl + emptyDir: + medium: Memory + - name: etc-univention-reports + emptyDir: + medium: Memory + - name: acl-cache + emptyDir: + medium: Memory + - name: config-cache + emptyDir: + medium: Memory + - name: univention-logs + emptyDir: + medium: Memory + - name: sssd-socket + emptyDir: + medium: Memory + - name: var-lib-sss + emptyDir: {} + - name: var-www-univention + emptyDir: + medium: Memory + - name: run + emptyDir: + medium: Memory + - name: tmp + emptyDir: + medium: Memory + - name: usr-share-umc-saml-idp + emptyDir: + medium: Memory + - name: sssd-db + emptyDir: + medium: Memory + - name: config-map-ucr + configMap: + name: ums-stack-data-ums-ucr + - name: ums-umc-server-ldap-credentials-volume + secret: + secretName: ums-umc-server-ldap-credentials + - name: ums-umc-server-smtp-credentials-custom-volume + secret: + secretName: ums-umc-server-smtp-credentials-custom + - name: ums-umc-server-postgresql-opendesk-credentials-volume + secret: + secretName: ums-umc-server-postgresql-opendesk-credentials + - name: ums-umc-server-memcached-opendesk-credentials-volume + secret: + secretName: ums-umc-server-memcached-opendesk-credentials + - name: ums-umc-server-ldap-tls-volume + secret: + secretName: ums-umc-server-ldap-tls + - name: passwordreset-email-body + configMap: + name: ums-umc-server-pw-reset-email-body + defaultMode: 0444 + - name: plugin-targets + emptyDir: {} +--- +# Source: nubus/charts/nubusProvisioning/templates/job-register-consumer.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: ums-provisioning-register-consumers + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-registerConsumers + helm.sh/chart: nubusProvisioning-0.44.0 + annotations: + intents.otterize.com/service-name: ums-provisioning-register-consumers +spec: + template: + metadata: + annotations: + checksum/configmap: 917567cd1bf78b07341165ced3d60f9dafa444131455805ae1605e064a9a10c7 + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-register-consumers + helm.sh/chart: nubusProvisioning-0.44.0 + spec: + restartPolicy: Never + volumes: + - name: consumer-secrets + secret: + secretName: ums-provisioning-register-consumers-json-secrets + - name: scripts-volume + configMap: + name: ums-provisioning-wait-for-api + defaultMode: 0555 + - name: wait-for-data-loader + configMap: + name: ums-provisioning-register-consumers + initContainers: + - name: wait-for-provisioning-api + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-register-consumers + command: [/bin/bash, -c, '/scripts/wait-for-api.sh ${PROVISIONING_API_BASE_URL}'] + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + volumeMounts: + - name: scripts-volume + mountPath: /scripts + - name: wait-for-data-loader + command: [/bin/bash, /scripts/wait-for-data-loader.sh] + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-provisioning-register-consumers + - secretRef: + name: ums-provisioning-register-consumers-credentials + volumeMounts: + - name: wait-for-data-loader + mountPath: /scripts + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + containers: + - name: consumer-registration + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + volumeMounts: + - name: consumer-secrets + mountPath: /secrets + envFrom: + - configMapRef: + name: ums-provisioning-register-consumers + - secretRef: + name: ums-provisioning-register-consumers-credentials + command: + - /bin/sh + - -c + args: + - | + for file in /secrets/*; do + filename=$(basename "${file}" .json) + response=$(set +x; curl -s -o response.txt -w "%{http_code}" -u "${ADMIN_USERNAME}":"${ADMIN_PASSWORD}" \ + -H 'Content-Type: application/json' \ + -d @"${file}" "${PROVISIONING_API_BASE_URL}") + + if [ "${response}" -eq 201 ]; then + echo "Successful registration of the consumer: "${filename}"" + elif [ "${response}" -eq 200 ]; then + echo "Consumer with the name '"${filename}"' is already registered with the same parameters" + else + echo "Failed to register the consumer: "${filename}" + Response code: "${response}" + Response body: $(cat response.txt)" + exit 1 + fi + echo ------------------------------------ + done + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi +--- +# Source: nubus/charts/nubusStackDataUms/templates/job-load-data-ums.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: ums-stack-data-ums-1 + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.73.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded + intents.otterize.com/service-name: ums-stack-data-ums +spec: + backoffLimit: 6 + template: + metadata: + name: stack-data-ums + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.73.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + checksum/config: 9c107d8825489848caf88309f47c3617ec193352ce68f609af3b2e53b737385c + checksum/config-data: 88d5a5ab400888cbd0e014b3ab40e3ec9aac7bb29985d4e681a8907ca34c9c8b + + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded + intents.otterize.com/service-name: ums-stack-data-ums + spec: + restartPolicy: Never + + initContainers: + - name: load-internal-plugins + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.73.0@sha256:9babbdd0879aed7da928bf5034bf5f311511a8d07c242d2b10d067cc5dc0fd41 + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + mkdir /target/udm-data-loader + cp -RLv --preserve=all /join-data/* /target/udm-data-loader + volumeMounts: + - name: plugin-targets + mountPath: /target + - name: data + mountPath: /join-data + resources: + - name: load-portal-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.38.0@sha256:aa6ec6b99810e05655d98fa1192bc2eabb855335f7a04aa4cd96ed5b5645d736 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: load-ox-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-extension:0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: load-opendesk-extension + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.7.4@sha256:23976c92c1b9f366b04e5e17fb52912b624720e3a97f5fee0da43afe75a6645e + imagePullPolicy: IfNotPresent + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + - name: wait-for-udm-rest-api + command: [/bin/sh, -c, /usr/local/bin/wait-for-udm-rest-api.py] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.73.0@sha256:9babbdd0879aed7da928bf5034bf5f311511a8d07c242d2b10d067cc5dc0fd41 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-stack-data-ums + volumeMounts: + - name: ums-udm-rest-api-credentials + mountPath: /run/secrets/univention.de/data-loader/udm_secret + subPath: machine.secret + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + + containers: + - name: load-data-ums + command: + - process-all.sh + - --template-context + - /template-context/context.yaml + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.73.0@sha256:9babbdd0879aed7da928bf5034bf5f311511a8d07c242d2b10d067cc5dc0fd41 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-stack-data-ums + env: + - name: SET_STATUS_FLAG + value: 'true' + volumeMounts: + - name: ums-udm-rest-api-credentials + mountPath: /run/secrets/univention.de/data-loader/udm_secret + subPath: machine.secret + - name: plugin-targets + mountPath: /join-data + subPath: udm-data-loader + readOnly: true + - name: context-config + mountPath: /template-context + readOnly: true + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: ums-udm-rest-api-credentials + secret: + secretName: ums-udm-rest-api-credentials + - name: data + configMap: + name: ums-stack-data-ums-data + - name: context-config + secret: + secretName: ums-stack-data-ums-context + - name: plugin-targets + emptyDir: {} + +--- +# Source: nubus/charts/nubusGuardian/templates/ingresses.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-guardian-management-ui + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: guardian + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 + annotations: +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: Prefix + path: /univention/guardian/management-ui + backend: + service: + name: ums-guardian-management-ui + port: + number: 80 +--- +# Source: nubus/charts/nubusGuardian/templates/ingresses.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-guardian-management-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: guardian + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 + annotations: +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: Prefix + path: /guardian/management + backend: + service: + name: ums-guardian-management-api + port: + number: 80 +--- +# Source: nubus/charts/nubusGuardian/templates/ingresses.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-guardian-authorization-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: guardian + app.kubernetes.io/version: 2.0.0 + helm.sh/chart: nubusGuardian-0.14.0 + annotations: +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: Prefix + path: /guardian/authorization + backend: + service: + name: ums-guardian-authorization-api + port: + number: 80 +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/ingress-proxy.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH--- + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-keycloak-extensions-proxy + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak-extensions-proxy + app.kubernetes.io/version: 21.0.1 + helm.sh/chart: nubusKeycloakExtensions-0.11.0 + annotations: + nginx.ingress.kubernetes.io/proxy-buffer-size: 8k + nginx.org/proxy-buffer-size: 8k +spec: + ingressClassName: nginx + tls: + - hosts: + - id.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: id.opendesk.apps.digilab.network + http: + paths: + - pathType: Prefix + path: /realms/ + backend: + service: + name: ums-keycloak-extensions-proxy + port: + name: http + - pathType: Prefix + path: /js/ + backend: + service: + name: ums-keycloak-extensions-proxy + port: + name: http + - pathType: Prefix + path: /resources/ + backend: + service: + name: ums-keycloak-extensions-proxy + port: + name: http + - pathType: Prefix + path: /fingerprintjs + backend: + service: + name: ums-keycloak-extensions-proxy + port: + name: http +--- +# Source: nubus/charts/nubusNotificationsApi/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-notifications-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: notifications-api + app.kubernetes.io/version: 1.16.0 + helm.sh/chart: nubusNotificationsApi-0.42.2 + annotations: + intents.otterize.com/service-name: ums-notifications-api + nginx.ingress.kubernetes.io/rewrite-target: /$2$3 + nginx.ingress.kubernetes.io/use-regex: 'true' +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: ImplementationSpecific + path: /(univention/portal/notifications-api/)(.*)$ + backend: + service: + name: ums-notifications-api + port: + name: http +--- +# Source: nubus/charts/nubusPortalFrontend/templates/ingresses.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-portal-frontend-rewrites + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: portal-frontend + app.kubernetes.io/version: 1.16.0 + helm.sh/chart: nubusPortalFrontend-0.42.2 + annotations: + intents.otterize.com/service-name: ums-portal-frontend + nginx.ingress.kubernetes.io/rewrite-target: /$2$3 + nginx.ingress.kubernetes.io/use-regex: 'true' +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: ImplementationSpecific + path: /univention/(portal|selfservice)/$ + backend: + service: + name: ums-portal-frontend + port: + name: http + - pathType: ImplementationSpecific + path: /univention/(portal|selfservice)/index.html$ + backend: + service: + name: ums-portal-frontend + port: + name: http + - pathType: ImplementationSpecific + path: /univention/(portal|selfservice)/(css|fonts|i18n|media|js|oidc|custom)(/.*)$ + backend: + service: + name: ums-portal-frontend + port: + name: http + - pathType: ImplementationSpecific + path: /univention/(portal)/(icons)(/.*)$ + backend: + service: + name: ums-portal-frontend + port: + name: http +--- +# Source: nubus/charts/nubusPortalFrontend/templates/ingresses.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-portal-frontend-redirects + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: portal-frontend + app.kubernetes.io/version: 1.16.0 + helm.sh/chart: nubusPortalFrontend-0.42.2 + annotations: + intents.otterize.com/service-name: ums-portal-frontend + nginx.ingress.kubernetes.io/permanent-redirect: /univention/portal/ +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: ImplementationSpecific + path: /$ + backend: + service: + name: ums-portal-frontend + port: + name: http + - pathType: ImplementationSpecific + path: /univention$ + backend: + service: + name: ums-portal-frontend + port: + name: http + - pathType: ImplementationSpecific + path: /univention/$ + backend: + service: + name: ums-portal-frontend + port: + name: http + - pathType: ImplementationSpecific + path: /univention/portal$ + backend: + service: + name: ums-portal-frontend + port: + name: http + - pathType: ImplementationSpecific + path: /univention/selfservice$ + backend: + service: + name: ums-portal-frontend + port: + name: http +--- +# Source: nubus/charts/nubusPortalServer/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-portal-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: portal-server + app.kubernetes.io/version: 1.16.0 + helm.sh/chart: nubusPortalServer-0.42.2 + annotations: + intents.otterize.com/service-name: ums-portal-server + nginx.ingress.kubernetes.io/rewrite-target: /$2$3 + nginx.ingress.kubernetes.io/use-regex: 'true' +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: ImplementationSpecific + path: /()(univention/portal/|univention/selfservice/)(portal.json|navigation.json)$ + backend: + service: + name: ums-portal-server + port: + name: http +--- +# Source: nubus/charts/nubusUdmRestApi/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-udm-rest-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: udm-rest-api + app.kubernetes.io/version: 12.0.7 + helm.sh/chart: nubusUdmRestApi-0.25.1 + annotations: + intents.otterize.com/service-name: ums-udm-rest-api + nginx.ingress.kubernetes.io/configuration-snippet-disabled: | + rewrite ^/univention(/udm/.*)$ $1 break; + nginx.ingress.kubernetes.io/proxy-buffer-size: 64k + nginx.ingress.kubernetes.io/rewrite-target: /$2$3 + nginx.ingress.kubernetes.io/use-regex: 'true' +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: ImplementationSpecific + path: /(univention/)(udm/.*)$ + backend: + service: + name: ums-udm-rest-api + port: + name: http +--- +# Source: nubus/charts/nubusUmcGateway/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-umc-gateway + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: umc-gateway + app.kubernetes.io/version: 12.0.29 + helm.sh/chart: nubusUmcGateway-0.34.1 + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /$2$3 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/enable-cors: 'true' + nginx.ingress.kubernetes.io/cors-allow-origin: https://portal.opendesk.apps.digilab.network, + https://id.opendesk.apps.digilab.network +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: ImplementationSpecific + path: /()(univention/)(languages.json|meta.json|theme.css)$ + backend: + service: + name: ums-umc-gateway + port: + name: http + - pathType: ImplementationSpecific + path: /()(univention/)((js|management|themes)/.*)$ + backend: + service: + name: ums-umc-gateway + port: + name: http + - pathType: ImplementationSpecific + path: /()(univention/login/)(dialog.js|main.js|LoginDialog.js|i18n/en/main.json)$ + backend: + service: + name: ums-umc-gateway + port: + name: http +--- +# Source: nubus/charts/nubusUmcServer/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-umc-server + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: umc-server + app.kubernetes.io/version: 12.0.29 + helm.sh/chart: nubusUmcServer-0.34.1 + annotations: + intents.otterize.com/service-name: ums-umc-server + nginx.ingress.kubernetes.io/configuration-snippet: | + proxy_set_header X-UMC-HTTPS 'on'; + nginx.ingress.kubernetes.io/rewrite-target: /$2$3 + nginx.ingress.kubernetes.io/use-regex: 'true' +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - pathType: ImplementationSpecific + path: /(univention)/(auth|logout|saml|get|set|command|upload)(.*)$ + backend: + service: + name: ums-umc-server + port: + name: http +--- +# Source: nubus/templates/ingresses.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-portal-customization + annotations: + + nginx.ingress.kubernetes.io/proxy-body-size: 128k + nginx.ingress.kubernetes.io/proxy-buffer-size: 64k + nginx.ingress.kubernetes.io/proxy-buffers-number: '4' + nginx.ingress.kubernetes.io/proxy-busy-buffers-size: 128k + nginx.ingress.kubernetes.io/proxy-http-version: '1.1' + nginx.ingress.kubernetes.io/proxy-set-headers: | + Host $http_host; + X-Forwarded-For $proxy_add_x_forwarded_for; + X-Forwarded-Host $http_x_forwarded_host; + X-Forwarded-Port $http_x_forwarded_port; + X-Forwarded-Proto $http_x_forwarded_proto; + nginx.ingress.kubernetes.io/use-regex: 'true' +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - path: /favicon.ico$ + pathType: ImplementationSpecific + backend: + service: + name: ums-portal-frontend + port: + number: 80 +--- +# Source: nubus/templates/ingresses.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-minio-rewrites + annotations: + + nginx.ingress.kubernetes.io/proxy-body-size: 128k + nginx.ingress.kubernetes.io/proxy-buffer-size: 64k + nginx.ingress.kubernetes.io/proxy-buffers-number: '4' + nginx.ingress.kubernetes.io/proxy-busy-buffers-size: 128k + nginx.ingress.kubernetes.io/proxy-http-version: '1.1' + nginx.ingress.kubernetes.io/proxy-set-headers: | + Host $http_host; + X-Forwarded-For $proxy_add_x_forwarded_for; + X-Forwarded-Host $http_x_forwarded_host; + X-Forwarded-Port $http_x_forwarded_port; + X-Forwarded-Proto $http_x_forwarded_proto; + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/rewrite-target: /ums/portal-assets/icons/$2/$3 +spec: + ingressClassName: nginx + tls: + - hosts: + - portal.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: portal.opendesk.apps.digilab.network + http: + paths: + - path: /univention/(portal|selfservice)/icons/(logos|entries)/(.*)$ + pathType: ImplementationSpecific + backend: + service: + name: minio + port: + number: 9000 +--- +# Source: nubus/templates/cert-manager.yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: ums-ecdsa-ca-cert +spec: + secretName: ums-ecdsa-ca-secret + duration: 87600h0m0s + renewBefore: 78840h0m0s + privateKey: + algorithm: ECDSA + size: 256 + isCA: true + issuerRef: + name: ums-ecdsa-ss-issuer + kind: Issuer + commonName: opendesk.apps.digilab.network + dnsNames: + - opendesk.apps.digilab.network +--- +# Source: nubus/templates/cert-manager.yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: ums-saml +spec: + secretName: ums-saml-tls + duration: 87600h0m0s + renewBefore: 78840h0m0s + subject: + organizations: + - opendesk.apps.digilab.network + privateKey: + algorithm: RSA + encoding: PKCS1 + size: 2048 + usages: + - digital signature + - key encipherment + - server auth + - client auth + dnsNames: + - ums-umc-server + - ums-umc-server.tn-openbsw-opendesk.svc.cluster.local + issuerRef: + name: ums-ca-issuer + kind: Issuer +--- +# Source: nubus/templates/cert-manager.yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: ums-ca-issuer +spec: + ca: + secretName: ums-ecdsa-ca-secret +--- +# Source: nubus/templates/cert-manager.yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: ums-ecdsa-ss-issuer +spec: + selfSigned: {} +--- +# Source: nubus/charts/nubusPortalServer/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: ums-portal-server-test-connection + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.42.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 1.16.0 + annotations: + helm.sh/hook: test +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: [ums-portal-server:80] + restartPolicy: Never +--- +# Source: nubus/charts/nubusUdmRestApi/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: ums-udm-rest-api-test-connection + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.25.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 12.0.7 + annotations: + helm.sh/hook: test +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: [ums-udm-rest-api:9979] + restartPolicy: Never +--- +# Source: nubus/charts/nubusKeycloakBootstrap/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: ums-keycloak-bootstrap-bootstrap-1 + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.3.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 0.0.1 + annotations: + helm.sh/hook: post-install,post-upgrade + argocd.argoproj.io/hook: Sync +spec: + template: + metadata: + annotations: + checksum/config: 7986021ccd89d8001098f64a91c340b922b60791e0c3db2b7c15e41bedc8cb9e + intents.otterize.com/service-name: ums-keycloak-bootstrap + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.3.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 0.0.1 + spec: + restartPolicy: Never + serviceAccountName: ums-keycloak-bootstrap + terminationGracePeriodSeconds: 5 + containers: + - name: univention-keycloak-bootstrap + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: false + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap:0.3.0@sha256:2911e8d5409f4e302b5c8c073cc6bf3f3622582e6eef43c63672ac4551712750 + imagePullPolicy: IfNotPresent + command: + - /app/entrypoint.sh + envFrom: + - configMapRef: + name: ums-keycloak-bootstrap + env: + - name: KEYCLOAK_PASSWORD + valueFrom: + secretKeyRef: + name: ums-opendesk-keycloak-credentials + key: admin_password + - name: LDAP_BIND_PW + valueFrom: + secretKeyRef: + name: ums-keycloak-bootstrap-ldap-opendesk-credentials + key: password + volumeMounts: + - mountPath: /bootstrap + name: bootstrap-volume + - mountPath: /credentials/ldapread.secret + name: ldap-credentials-volume + subPath: password + - mountPath: /credentials/keycloak.secret + name: keycloak-credentials-volume + subPath: admin_password + - mountPath: /tmp + name: temp-dir + resources: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: keycloak-credentials-volume + secret: + secretName: ums-opendesk-keycloak-credentials + - name: ldap-credentials-volume + secret: + secretName: ums-keycloak-bootstrap-ldap-opendesk-credentials + - name: bootstrap-volume + configMap: + name: ums-keycloak-bootstrap-bootstrap-data + - name: temp-dir + emptyDir: + sizeLimit: 20Mi +--- +# Source: intercom-service/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: intercom-service + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.4.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '1.4' + annotations: +automountServiceAccountToken: false +--- +# Source: intercom-service/templates/configmap-provisioning.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: intercom-service-provisioning-init + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.4.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '1.4' + +data: + KEYCLOAK_URL: http://ums-keycloak:8080/realms/opendesk/ + wait-for-keycloak.py: | + #!/usr/bin/python3 + import requests + import time + import sys + import os + + keycloak_url = os.environ.get('KEYCLOAK_URL') + max_retries = 60 + retries = 0 + + while True: + try: + response = requests.get(keycloak_url) + if response.status_code == 200: + print('Keycloak is available') + sys.exit(0) + elif response.status_code == 404: + print('Realm not ready') + pass + except requests.exceptions.ConnectionError: + print('Could not reach keycloak, retrying...') + pass + time.sleep(1) + +--- +# Source: intercom-service/templates/configmap-provisioning.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: intercom-service-provisioning-env + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.4.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '1.4' +data: + DEBUG: 'false' + DOMAIN: opendesk.apps.digilab.network + KEYCLOAK_USERNAME: kcadmin + KEYCLOAK_HOST: id.opendesk.apps.digilab.network + KEYCLOAK_REALM: opendesk + KEYCLOAK_URL: http://ums-keycloak:8080 + UNIVENTION_KEYCLOAK_BOOTSTRAP_TEMP_DIR: /tmp + UNIVENTION_KEYCLOAK_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START: '0' + KEYCLOAK_APP_BASE_URL: https://ics.opendesk.apps.digilab.network +--- +# Source: intercom-service/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: intercom-service + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.4.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '1.4' + annotations: +spec: + type: ClusterIP + ports: + - name: http + port: 8008 + targetPort: http + protocol: TCP + selector: + app.kubernetes.io/name: intercom-service + app.kubernetes.io/instance: intercom-service +--- +# Source: intercom-service/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: intercom-service + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.4.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '1.4' +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: intercom-service + app.kubernetes.io/instance: intercom-service + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/secret: b9d7a0eacc5f71517841432a23ae3ceac58309df8fe2a7a902301cdbf0d9fdb5 + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.4.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '1.4' + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + serviceAccountName: intercom-service + initContainers: + - name: wait-for-keycloak-container + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: intercom-service-provisioning-init + command: [/usr/bin/python3, /scripts/wait-for-keycloak.py] + volumeMounts: + - name: wait-for-keycloak + mountPath: /scripts + - name: keycloak-provisioning + securityContext: + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap:0.3.0@sha256:2911e8d5409f4e302b5c8c073cc6bf3f3622582e6eef43c63672ac4551712750 + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - -c + - | + univention-keycloak \ + --keycloak-url $KEYCLOAK_URL \ + --realm $KEYCLOAK_REALM \ + --binduser $KEYCLOAK_USERNAME \ + --bindpwdfile /credentials/keycloak.secret \ + oidc/rp create \ + opendesk-intercom \ + --direct-access-grants \ + --backchannel-logout-url $KEYCLOAK_APP_BASE_URL/backchannel-logout \ + --web-origins $KEYCLOAK_APP_BASE_URL \ + --client-secret $ICS_CLIENT_SECRET \ + --redirect-uri $KEYCLOAK_APP_BASE_URL/callback \ + --add-ics-mappers \ + --backchannel-logout-revoke-session \ + --pkce-code-challenge-method "" \ + --host-fqdn $KEYCLOAK_HOST + envFrom: + - configMapRef: + name: intercom-service-provisioning-env + env: + - name: KEYCLOAK_PASSWORD + valueFrom: + secretKeyRef: + name: ums-opendesk-keycloak-credentials + key: admin_password + - name: ICS_CLIENT_SECRET + value: 643c367e70e79a30f3db662d081eb2bd763e4d7c + volumeMounts: + - mountPath: /credentials/keycloak.secret + name: keycloak-credentials-volume + subPath: admin_password + - name: temp-dir + mountPath: /tmp + containers: + - name: intercom-service + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/intercom-service:2.4.0@sha256:df743b7ea30077dc941815ccc60198820d67bbba94853fa7a6f939c0f36af335 + imagePullPolicy: IfNotPresent + env: + envFrom: + - secretRef: + name: intercom-service + livenessProbe: + tcpSocket: + port: http + initialDelaySeconds: 15 + periodSeconds: 5 + timeoutSeconds: 2 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + tcpSocket: + port: http + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ports: + - name: http + containerPort: 8008 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 64Mi + volumeMounts: + volumes: + - name: wait-for-keycloak + configMap: + name: intercom-service-provisioning-init + - name: keycloak-credentials-volume + secret: + secretName: ums-opendesk-keycloak-credentials + - name: temp-dir + emptyDir: + sizeLimit: 20Mi + +--- +# Source: intercom-service/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: intercom-service + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.4.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '1.4' + annotations: +spec: + tls: + - hosts: + - ics.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: ics.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: intercom-service + port: + name: http +--- +# Source: opendesk-keycloak-bootstrap/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-keycloak-bootstrap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-keycloak-bootstrap + helm.sh/chart: opendesk-keycloak-bootstrap-2.1.3 + app.kubernetes.io/instance: opendesk-keycloak-bootstrap + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: opendesk-keycloak-bootstrap/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: opendesk-keycloak-bootstrap-ansible + labels: + app.kubernetes.io/name: opendesk-keycloak-bootstrap + helm.sh/chart: opendesk-keycloak-bootstrap-2.1.3 + app.kubernetes.io/instance: opendesk-keycloak-bootstrap + app.kubernetes.io/managed-by: Helm +data: + + configure_client_access_restriction.yml: | + # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + + - name: "Configuring client role/group based required scopes to restrict access based on group membership" + ansible.builtin.include_tasks: "configure_client_access_restriction_loop.yml" + loop: "{{ client_access_restriction_details }}" + loop_control: + loop_var: "client_access_config" + + ... + configure_client_access_restriction_loop.yml: | + # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + + # + # create client role + # 1. get client_uuid + # 2. POST https://keycloak/admin/realms/opendesk/clients//roles + # + - name: "Fetch client info" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "clientqueryresult" + + - name: "Set fact for client_uuid of {{ client_access_config.client }}" + ansible.builtin.set_fact: + client_uuid: "{{ clientqueryresult['json'] | json_query('[?clientId==`'+client_access_config.client+'`].id') | first }}" + + - name: "Create client role" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ client_uuid }}/roles" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "POST" + body_format: "json" + body: | + { + "name":"{{ client_access_config.role }}", + "description":"", + "attributes":{} + } + status_code: [201, 409] + + # + # create client role <> scope mapping + # 1. get clientscope_uuid + # 2. get clientrole_uuid + # 3. POST https://keycloak/admin/realms/opendesk/client-scopes//scope-mappings/clients/ + # [{"id":"","name":"","description":""}] + # + - name: "Fetch clientscope info" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/client-scopes" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "clientscopequeryresult" + + - name: "Set fact for clientscope_uuid of {{ client_access_config.scope }}" + ansible.builtin.set_fact: + clientscope_uuid: "{{ clientscopequeryresult['json'] | json_query('[?name==`'+client_access_config.scope+'`].id') | first }}" + + - name: "Fetch clientroles info" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ client_uuid }}/roles" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "clientrolesqueryresult" + + - name: "Set fact for clientrole_uuid of {{ client_access_config.role }}" + ansible.builtin.set_fact: + clientrole_uuid: "{{ clientrolesqueryresult['json'] | json_query('[?name==`'+client_access_config.role+'`].id') | first }}" + + - name: "Create client role <> scope mapping" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/client-scopes/{{ clientscope_uuid }}/scope-mappings/clients/{{ client_uuid }}" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "POST" + body_format: "json" + body: | + [ + { + "id":"{{ clientrole_uuid }}", + "name":"{{ client_access_config.role }}", + "description":"" + } + ] + status_code: [204, 409] + + # + # map client role to (ldap) group + # 1. create group or accept if it already exists (as we cannot force Keycloak to just get the groups from LDAP without users being sync'd) + # 2. get group_uuid + # 3. POST https://keycloak/admin/realms/opendesk/groups/9357d539-a2a3-48db-8345-e689a7bc2cda/role-mappings/clients/8432f49d-d820-4419-960d-b496dfbdc76c + # [{"id":"6bc7c56f-739f-415d-98e8-6222f7ffb5d3","name":"opendesk-matrix-access-control","description":""}] + # + - name: "Create group {{ client_access_config.group }} (accept if it already exists)" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "POST" + body: | + { "name": "{{ client_access_config.group }}" } + status_code: [201, 409] + + - name: "Fetch groups info" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "groupsqueryresult" + + - name: "Set fact for group_uuid of group {{ client_access_config.group }}" + ansible.builtin.set_fact: + group_uuid: "{{ groupsqueryresult['json'] | json_query('[?name==`'+client_access_config.group+'`].id') | first }}" + + - name: "Map client role {{ client_access_config.role }} to group {{ client_access_config.group }}" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups/{{ group_uuid }}/role-mappings/clients/{{ client_uuid }}" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "POST" + body_format: "json" + body: | + [ + { + "id":"{{ clientrole_uuid }}", + "name":"{{ client_access_config.role }}", + "description":"" + } + ] + status_code: [204, 409] + + ... + configure_clientpermissions.yml: | + # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "Ensure IntercomService is up and running with retries." + ansible.builtin.uri: + url: "{{ global_intercom_url }}" + method: "GET" + register: "ics_alive_response" + until: "ics_alive_response.status == 200" + retries: 60 + delay: 10 + + - name: "Fetch client info" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "clientqueryresult" + + - name: "Set clientids" + ansible.builtin.set_fact: + clientid_realmmanagement: "{{ clientqueryresult['json'] | json_query('[?clientId==`realm-management`].id') + | first }}" + clientid_intercom: "{{ clientqueryresult['json'] | json_query('[?clientId==`opendesk-intercom`].id') + | first }}" + clientid_nextcloud: "{{ clientqueryresult['json'] | json_query('[?clientId==`opendesk-nextcloud`].id') + | first }}" + clientid_oxappsuite: "{{ clientqueryresult['json'] | json_query('[?clientId==`opendesk-oxappsuite`].id') + | first }}" + clientid_matrix: "{{ clientqueryresult['json'] | json_query('[?clientId==`opendesk-matrix`].id') + | first }}" + + # Enable permissions on the given clients + - name: "Enable permissions on client opendesk-intercom" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_intercom }}\ + /management/permissions" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "PUT" + body: "{ \"enabled\": true }" + status_code: [200] + - name: "Enable permissions on client opendesk-nextcloud" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_nextcloud }}\ + /management/permissions" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "PUT" + body: "{ \"enabled\": true }" + status_code: [200] + - name: "Enable permissions on client opendesk-oxappsuite" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_oxappsuite }}\ + /management/permissions" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "PUT" + body: "{ \"enabled\": true }" + status_code: [200] + - name: "Enable permissions on client opendesk-matrix" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_matrix }}\ + /management/permissions" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "PUT" + body: "{ \"enabled\": true }" + status_code: [200] + + - name: "Add intercom policy to management client" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_realmmanagement }}\ + /authz/resource-server/policy" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "POST" + body: | + { + "name": "opendesk-intercom", + "type": "client", + "logic": "POSITIVE", + "decisionStrategy": "UNANIMOUS", + "config": { + "clients": "[\"opendesk-intercom\"]" + } + } + status_code: [201, 409] + + - name: "Fetch policy info" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_realmmanagement }}\ + /authz/resource-server/policy" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "policyqueryresult" + + - name: "set intercom_policy_id" + ansible.builtin.set_fact: + intercom_policy_id: "{{ policyqueryresult['json'] | json_query('[?name==`opendesk-intercom`].id') | first }}" + + # We also set the intercom client on create, but when re-creating clients the assignment to the policy gets lost and + # just assigning the client on create does not add the client when the policy already exists. + - name: "Update the intercom policy to be sure it includes the intercom client" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_realmmanagement }}\ + /authz/resource-server/policy/{{ intercom_policy_id }}" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "PUT" + body: | + { + "name": "opendesk-intercom", + "type": "client", + "logic": "POSITIVE", + "decisionStrategy": "UNANIMOUS", + "config": { + "clients": "[\"opendesk-intercom\"]" + } + } + status_code: [201, 409] + + - name: "Fetch scope info" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_realmmanagement }}\ + /authz/resource-server/scope" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "scopequeryresult" + + - name: "set tokenexchange_scope_id" + ansible.builtin.set_fact: + tokenexchange_scope_id: "{{ scopequeryresult['json'] | json_query('[?name==`token-exchange`].id') | first }}" + + - name: "Fetch permission scope info" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_realmmanagement }}\ + /authz/resource-server/permission/scope" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "permissionscopequeryresult" + + - name: "Will loop over" + ansible.builtin.debug: + # cannot use json_query's start with due to https://github.com/ansible/ansible/issues/27299 + msg: "{{ permissionscopequeryresult['json'] | selectattr('name', 'contains', 'token-exchange.permission.client.') + | list | json_query('[*].name') }}" + + - name: "Looping now" + ansible.builtin.include_tasks: "configure_clientpermissions_loop.yml" + loop: "{{ permissionscopequeryresult['json'] | selectattr('name', 'contains', 'token-exchange.permission.client.') + | list | json_query('[*].name') }}" + loop_control: + loop_var: "loop_client_string" + ... + configure_clientpermissions_loop.yml: | + # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "get loop_client_id from loop_client_string" + ansible.builtin.set_fact: + loop_client_id: "{{ loop_client_string.split('.')[-1] }}" + + - name: "Get tokenExchange_permission_scope_id_for_loop_client" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_realmmanagement }}\ + /authz/resource-server/permission/scope" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "result" + + - name: "Set tokenExchange_permission_scope_id_for_loop_client" + ansible.builtin.set_fact: + tokenExchange_permission_scope_id_for_loop_client: "{{ result['json'] | + json_query('[?name==`token-exchange.permission.client.'+loop_client_id+'`].id') | first }}" + + - name: "Get resource_id_for_loop_client" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_realmmanagement }}\ + /authz/resource-server/resource" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "result" + + - name: "Set resource_id_for_loop_client" + ansible.builtin.set_fact: + resource_id_for_loop_client: "{{ result['json'] | json_query('[?name==`client.resource.'+loop_client_id+'`]._id') + | first }}" + + - name: "Set body for request" + ansible.builtin.set_fact: + request_body: | + { + "name":"token-exchange.permission.client.{{ loop_client_id }}", + "type":"scope", + "logic":"POSITIVE", + "decisionStrategy":"UNANIMOUS", + "resources":[ + "{{ resource_id_for_loop_client }}" + ], + "scopes":[ + "{{ tokenexchange_scope_id }}" + ], + "policies":[ + "{{ intercom_policy_id }}" + ] + } + + - name: "set the policy (realm_management > authorization > permissions > token-xchange.permission.client." + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ clientid_realmmanagement }}\ + /authz/resource-server/permission/scope/{{ tokenExchange_permission_scope_id_for_loop_client }}" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "PUT" + body_format: "json" + body: "{{ request_body }}" + status_code: [200, 201] + ... + configure_realmsettings.yml: | + # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "Configure rememberMe options" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "PUT" + body_format: "json" + body: | + { + "accessTokenLifespan": {{ global_cfgobj.config.realmSettings.accessTokenLifespan }}, + "ssoSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.ssoSessionIdleTimeout }}, + "ssoSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.ssoSessionMaxLifespan }}, + "rememberMe": {{ global_cfgobj.config.realmSettings.rememberMe }}, + "ssoSessionIdleTimeoutRememberMe": + {{ global_cfgobj.config.realmSettings.ssoSessionIdleTimeoutRememberMe }}, + "ssoSessionMaxLifespanRememberMe": + {{ global_cfgobj.config.realmSettings.ssoSessionMaxLifespanRememberMe }} + } + status_code: [204] + + - name: "Enable login with email" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "PUT" + body_format: "json" + body: | + { + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false + } + status_code: [204] + + - name: "Enable 'save events' required for Keycloak Extensions Brute Force Protection" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "PUT" + body_format: "json" + body: | + { + "eventsEnabled": true + } + status_code: [204] + + - name: "Explicitly set HTTP headers" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "PUT" + body_format: "json" + body: | + { + "browserSecurityHeaders": { + "contentSecurityPolicyReportOnly": "", + "xContentTypeOptions": "nosniff", + "referrerPolicy": "no-referrer", + "xRobotsTag": "noindex", + "xFrameOptions": "SAMEORIGIN", + "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self' {{ global_portal_url }} ; object-src 'none';", + "xXSSProtection": "1; mode=block", + "strictTransportSecurity": "max-age=31536000; includeSubDomains" + } + } + status_code: [204] + + ... + configure_set_2fa_groups.yml: | + # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "Get 2FA role" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/roles" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "rolesqueryresult" + + - name: "Set role id for 2FA role" + ansible.builtin.set_fact: + two_factor_role_id: "{{ rolesqueryresult['json'] | json_query('[?name==`'+two_factor_role_name+'`].id') | first }}" + + - name: "Adding groups now to 2FA role" + ansible.builtin.include_tasks: "configure_set_2fa_groups_loop.yml" + loop: "{{ two_factor_additional_groups }}" + loop_control: + loop_var: "loop_group_name" + ... + configure_set_2fa_groups_loop.yml: | + # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "Create group {{ loop_group_name }} (and accept if it already exists)" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "POST" + body: | + { "name": "{{ loop_group_name }}" } + status_code: [201, 409] + + - name: "Get groups" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "groupsqueryresult" + + - name: "Set group id for group {{ loop_group_name }} that should be 2FA enabled" + ansible.builtin.set_fact: + loop_group_id: "{{ groupsqueryresult['json'] | json_query('[?name==`'+loop_group_name+'`].id') | first }}" + + - name: "Add mapping for group {{ loop_group_name }} / {{ loop_group_id }} to 2FA role {{ two_factor_role_name }} / {{ two_factor_role_id }}" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/groups/{{ loop_group_id }}/role-mappings/realm" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "POST" + body: | + [ + { + "id": "{{ two_factor_role_id }}", + "containerId": "{{ global_opendesk_realm }}", + "clientRole": false, + "composite": false, + "name": "{{ two_factor_role_name }}" + } + ] + status_code: [204, 409] + ... + main.yml: | + # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + # SPDX-License-Identifier: Apache-2.0 + --- + - hosts: "localhost" + tasks: + + - ansible.builtin.include_tasks: "./set_global_facts.yml" + - name: "Debug output" + ansible.builtin.debug: + var: "global_cfgobj" + when: "global_cfgobj.config.debug.enabled|bool" + + # To get the access token the Keycloak must be up and running, + # we do some loops in order to wait for the service in + # `set_global_accesstoken.yml` + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + - ansible.builtin.include_tasks: "./configure_realmsettings.yml" + + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + # To configure the client permissions we require the intercomservice + # deployment to be completed as it creates the related OIDC client + # that is required for the client permission setup. + - ansible.builtin.include_tasks: "./configure_clientpermissions.yml" + + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + - ansible.builtin.include_tasks: "./configure_set_2fa_groups.yml" + + # In the following case we request the access token on every loop, not upfront. + - ansible.builtin.include_tasks: "./configure_client_access_restriction.yml" + + ... + set_global_accesstoken.yml: | + # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "get authentication token" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/realms/master/protocol/openid-connect/token" + method: "POST" + body_format: "form-urlencoded" + body: + client_id: "admin-cli" + username: "{{ global_admin_username }}" + password: "{{ global_admin_password }}" + grant_type: "password" + register: "access_token_response" + # Keycloak is required to be up and running, so we allow some retries + until: "access_token_response.status == 200" + retries: 30 + delay: 10 + + - name: "Set fact global_accesstoken" + ansible.builtin.set_fact: + global_accesstoken: "{{ access_token_response['json']['access_token'] }}" + ... + set_global_facts.yml: | + # SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS" + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "Global: Read and parse config.yaml" + ansible.builtin.set_fact: + global_cfgobj: "{{ lookup('file', '/app/values.yaml') | from_yaml }}" + + - name: "Global: Set variables" + ansible.builtin.set_fact: + global_admin_username: "{{ global_cfgobj.config.keycloak.adminUser }}" + global_admin_password: "{{ global_cfgobj.config.keycloak.adminPassword }}" + global_keycloak_host: "{{ global_cfgobj.global.hosts.keycloak }}.{{ global_cfgobj.global.domain }}" + global_portal_url: "https://{{ global_cfgobj.global.hosts.portal }}.{{ global_cfgobj.global.domain }}" + global_intercom_url: "https://{{ global_cfgobj.global.hosts.intercomService }}.{{ global_cfgobj.global.domain }}" + global_opendesk_realm: "{{ global_cfgobj.config.keycloak.realm }}" + two_factor_role_name: "{{ global_cfgobj.config.twoFactorSettings.roleName }}" + two_factor_additional_groups: "{{ [] + global_cfgobj.config.twoFactorSettings.additionalGroups }}" + client_access_restriction_details: + - client: "opendesk-matrix" + scope: "opendesk-matrix-scope" + role: "opendesk-matrix-access-control" + group: "managed-by-attribute-Livecollaboration" + - client: "opendesk-jitsi" + scope: "opendesk-jitsi-scope" + role: "opendesk-jitsi-access-control" + group: "managed-by-attribute-Videoconference" + - client: "opendesk-xwiki" + scope: "opendesk-xwiki-scope" + role: "opendesk-xwiki-access-control" + group: "managed-by-attribute-Knowledgemanagement" + - client: "opendesk-openproject" + scope: "opendesk-openproject-scope" + role: "opendesk-openproject-access-control" + group: "managed-by-attribute-Projectmanagement" + - client: "opendesk-nextcloud" + scope: "opendesk-nextcloud-scope" + role: "opendesk-nextcloud-access-control" + group: "managed-by-attribute-Fileshare" + - client: "opendesk-oxappsuite" + scope: "opendesk-oxappsuite-scope" + role: "opendesk-oxappsuite-access-control" + group: "managed-by-attribute-Groupware" + - client: "opendesk-dovecot" + scope: "opendesk-dovecot-scope" + role: "opendesk-dovecot-access-control" + group: "managed-by-attribute-Groupware" + + - name: "Global: Set Keycloak URL for external connection" + ansible.builtin.set_fact: + global_keycloak_url: "https://{{ global_keycloak_host }}" + when: "not global_cfgobj.config.keycloak.intraCluster.enabled" + + - name: "Global: Set Keycloak URL for internal connection" + ansible.builtin.set_fact: + global_keycloak_url: "{{ global_cfgobj.config.keycloak.intraCluster.internalBaseUrl }}" + when: "global_cfgobj.config.keycloak.intraCluster.enabled" + + ... +--- +# Source: opendesk-keycloak-bootstrap/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: opendesk-keycloak-bootstrap-bootstrap-1 + labels: + app.kubernetes.io/name: opendesk-keycloak-bootstrap + helm.sh/chart: opendesk-keycloak-bootstrap-2.1.3 + app.kubernetes.io/instance: opendesk-keycloak-bootstrap + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation +spec: + ttlSecondsAfterFinished: 1800 + template: + metadata: + annotations: + checksum/configmap: bae3ae12548a82e4696400e620ef96653ed31639fd13f35d0ef21f7a53288917 + intents.otterize.com/service-name: ums-keycloak-bootstrap + labels: + app.kubernetes.io/name: opendesk-keycloak-bootstrap + helm.sh/chart: opendesk-keycloak-bootstrap-2.1.3 + app.kubernetes.io/instance: opendesk-keycloak-bootstrap + app.kubernetes.io/managed-by: Helm + spec: + restartPolicy: Never + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + serviceAccountName: opendesk-keycloak-bootstrap + containers: + - name: opendesk-keycloak-bootstrap + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap:1.2.1@sha256:f5ce0be27580c6347c5e700c4fa271a811d45d8a0e4b40ffe8a4d0e3d47e670f + imagePullPolicy: IfNotPresent + command: + - /app/entrypoint.sh + volumeMounts: + - mountPath: /app/values.yaml + name: secrets-volume + subPath: values.yaml + - mountPath: /app/ansible + name: ansible-directory-volume + - mountPath: /tmp + name: temp-dir + resources: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 256Mi + env: + - name: OPENDESK_KEYCLOAK_BOOTSTRAP_TEMP_DIR + value: /tmp + - name: OPENDESK_KEYCLOAK_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START + value: '0' + volumes: + - name: secrets-volume + secret: + secretName: opendesk-keycloak-bootstrap + - name: temp-dir + emptyDir: + sizeLimit: 20Mi + - name: ansible-directory-volume + configMap: + name: opendesk-keycloak-bootstrap-ansible diff --git a/manifests/open-xchange-secrets.yaml b/manifests/open-xchange-secrets.yaml new file mode 100644 index 0000000..0cde40f --- /dev/null +++ b/manifests/open-xchange-secrets.yaml @@ -0,0 +1,414 @@ +# Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/envvars.yaml +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-documentconverter-envvars + namespace: tn-openbsw-opendesk + annotations: + helm.sh/resource-policy: keep + labels: + helm.sh/chart: core-documentconverter-2.26.2 +type: Opaque +data: + MASTER_ADMIN_USER: ENC[AES256_GCM,data:Ixyd/Onc4v8=,iv:QWtkMsqPyTR7XQxH9jG1PCAOgtvOSSf1/QqnCFIgamI=,tag:ZmqpBm7+ZW12fi6KnqKqDw==,type:str] + MASTER_ADMIN_PW: ENC[AES256_GCM,data:UNROp5iVTezaXMFbZbZAqlwiGuLsLcMxHus2ynh8R8YhHpivb7YdAPQZfTveYm2nuJuEaCHBOmA=,iv:sfkYJinxMM5jz5GBNk3I94iZ3OG4stisV9brYZhEL8Q=,tag:xlmg9pQ4HF2bHKmiAaO0Kw==,type:str] + OX_BASIC_AUTH_LOGIN: ENC[AES256_GCM,data:ev+5odYopD19egs4,iv:rnIOcsULJ8+zYoMkxbuPIJ04/6BzwnDI97aS5yIHN/c=,tag:+kHxr8kioBZyB4JP0v5kaA==,type:str] + OX_BASIC_AUTH_PASSWORD: ENC[AES256_GCM,data:FPvbGlN9rFnbwPbiMycxAVRCbn1VELfvLg8pys9Bn4VpHlqt6qVxYLXRdEctB9tpHbxJBXYlnoU=,iv:WhXKyfjan/EY9o6FTfNnTQDjNr/DRY5iwiUzidjqY0M=,tag:IV5gwjbVAGy3dUxJit9txg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/envvars.yaml +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-imageconverter-envvars + namespace: tn-openbsw-opendesk + annotations: + helm.sh/resource-policy: keep + labels: + helm.sh/chart: core-imageconverter-2.27.4 +type: Opaque +data: + MASTER_ADMIN_USER: ENC[AES256_GCM,data:c3jMs7BvHBY=,iv:PnBpqV1RZwYGugk5RBA1DLwKaMTXnkij4G7oEnowUuY=,tag:x/OSZY7QqBMD/xJNdoUzmg==,type:str] + MASTER_ADMIN_PW: ENC[AES256_GCM,data:hIkPRMtTivT5wKBGWpf1tI16PkyG/woSVXXzHa3Etrj6Xfo0wKyrQ1uWFb0pToiffSFqOXcmvxE=,iv:tCbzvGUhLuX2ZnhnEAnpgVullLTkWFX3Rl50TsafJRk=,tag:2MKrqi4IXV0k/Gb5vqfWzQ==,type:str] + OX_BASIC_AUTH_LOGIN: ENC[AES256_GCM,data:TU1yq7yuVfa3rJ4V,iv:AtXWz97GTRkLrYGMpds4HVnagyE5OHc/yARqOZIDUdQ=,tag:CzcDWTo9KLe7i6MJxEXYyw==,type:str] + OX_BASIC_AUTH_PASSWORD: ENC[AES256_GCM,data:SBqFkI3Iuo7wJqcP2wYw78+1IsaQnj+/u0AJ4XV7+g6XG4JDkQycvv7pXkbmJtSsO8f0YUkML4Q=,iv:vAbzjfoqCNOYFyv1QZwi8URaSYX3HZlJLpY8Z0uC/ww=,tag:X8biDRKH2WcdjFcnYTSpPA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# contextsets-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-contextsets-secret +data: + context-sets-secret-overrides.yaml: ENC[AES256_GCM,data:BZ1h1A==,iv:7y5/vAWQ7F1Gmh89jwnSKWYR/3icjMQVQR78+fMWkdk=,tag:dIPPd2YZd6ltrnEhxzJDOQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# etc-secrets-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-etc-secrets-secret +data: + oxguardpass: ENC[AES256_GCM,data:RdvCZ1v+KLyYT+xVY1yf9WXQ3S36wp8dYVmRXU7+AhqqWUa2pH+VNVzqGaEE9xCeeuyHc1Q8DhYjKC58SFqW0XyWAzFTmQeOhqOvLP7CSeykG5Hj,iv:HjnNpcnRp4kGo4eBegru46oA+KVfZopKwMc+vIjTLfI=,tag:Is/61uecgsB0UfJUKGN40w==,type:str] +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# mysql-secret +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-mysql + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +type: Opaque +stringData: + MYSQL_WRITE_HOST: ENC[AES256_GCM,data:+uTpPfhs0Q==,iv:weTz78MC6XGiOL6K2hO9v4zkpX/uELzivwuIklzLAyg=,tag:MS+wc7eLdBGsQD1kFMX6OQ==,type:str] + MYSQL_WRITE_PORT: ENC[AES256_GCM,data:6DyVKw==,iv:AJef+IHsGIGxr9lVnJFnTh8M+AhC3orLUj+KsOATpgY=,tag:HjCh7DL6t0DzvItz9zXNEg==,type:str] + MYSQL_WRITE_DATABASE: ENC[AES256_GCM,data:XHzUG44E3lk=,iv:vVolcusZMSY/uinUuQYO2rRtC0FzOrrcVvndmNfysCs=,tag:23UPr+dMvhX92HoHZzRIqQ==,type:str] + MYSQL_WRITE_USER: ENC[AES256_GCM,data:ukJ3ug==,iv:hUER6ZTGmub7jnqwRfPYbpnvvYH9an+5iuet6mjtOfI=,tag:JlWa+uvFmuyTWkPghzS8Tw==,type:str] + MYSQL_WRITE_PASSWORD: ENC[AES256_GCM,data:NWl3D2IsrasBV/9NGPf8U06Fzw3MS+UZ4cdVs0ek6/wN7Qi8vN4E/Q==,iv:ID2ffGGZVBlNh3w83Ol7cpb4z569gg9hm0aEO42Nv8Q=,tag:B/gKSY5ork8iOSMBteH6Tg==,type:str] + MYSQL_READ_HOST: ENC[AES256_GCM,data:mSko3vOpww==,iv:aDgHLaHq743Zd+HSvHywTtkH0YWQNYWgeubLp2jXN+M=,tag:7gVwWP2z0lk0RKtLFdb3tg==,type:str] + MYSQL_READ_PORT: ENC[AES256_GCM,data:olaKMg==,iv:hVxE3K2LxVWZA3UI75Gf4GzysNWAASJkkVjLv8+6aLA=,tag:4XCcNRZ8nKFUWTb4mgFoSA==,type:str] + MYSQL_READ_DATABASE: ENC[AES256_GCM,data:bZhAD9D25ro=,iv:EZUP4xrcfhr0WCFpwFQmctESMqb4jaioHVb4hRU2wa8=,tag:AZi46AckQ+XRSkmhP/ynUQ==,type:str] + MYSQL_READ_USER: ENC[AES256_GCM,data:R++Q0w==,iv:s8qcSmFNbmkIqI3S19yKhJ8+nKVWQb08qoIFvluAEjg=,tag:U+WAtX/gIu6mWnYTlNnZ8w==,type:str] + MYSQL_READ_PASSWORD: ENC[AES256_GCM,data:xCcmNWmNg1W88vP2CVm6gArb5wtWxDBPbam01Zi9F1YHQVfE5Deh/Q==,iv:yKneXYcNhaf9QA15D0v5Gdp3UPmMLpBU6C7/ToiWwZg=,tag:1NGqptWRvN6WmSkLhX6Q5g==,type:str] + MYSQL_HOST: ENC[AES256_GCM,data:zjni8l5XSw==,iv:aGE8tmgLP4yyG6Y6yG8Ip3mwYrbK8Xo/mUyzb/p6cfE=,tag:mPKwS3Hdw4LBUvp2VcW/GQ==,type:str] + MYSQL_PORT: ENC[AES256_GCM,data:R9c+KA==,iv:HyPoe6aW3ttRSA3mnUgPwO2fMdSU2w9j4xeXXAuPPEA=,tag:u/xvyGZDkhccRXEBg+bU5A==,type:str] + MYSQL_DATABASE: ENC[AES256_GCM,data:8XFn/nPXuok=,iv:SDwQ8mrTugkAQRH5lAEyEpoB3Vcfz4pHUKZ6NEsetaA=,tag:R37Hr1osPeftDtPJMZFDiw==,type:str] + MYSQL_USER: ENC[AES256_GCM,data:lxVkfQ==,iv:ciCVK0QfGqF8/VKkSWCvmcdgXC6xUbeQtNKS1Z9Km60=,tag:Vd1blVNx25gkV5HzoqEeTw==,type:str] + MYSQL_PASSWORD: ENC[AES256_GCM,data:z4GyrDqZJtMbYZzTsYcJTterVL4YEerBAuLuJmdLpQP0fCdxQgFabg==,iv:y83i36vvJiq+DlJtZH357FaU9fPxhaqwc92RiH0t2NA=,tag:ARSMJcTwWWZBFC+vxFJVug==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# properties-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-properties-secret +data: + 1000_secret-overrides.yaml: ENC[AES256_GCM,data:PSEVQ6BTr3dgaXDIpg9cuQUWidDLIAF73oZ/ysC+GjaGRzQo5gPc14NDR2ty3eyn0eILqrykKTgCIUcXzatH2y2SOqIMUldsjEvNnL03F5sOZqWmJU43nRCD4oE+GIsvf8f4GhidMiJRn0AQ02Uby1ecp/dujsME9NM6+dNgR3cqTHpHZ/+8fGSteMi/kX8zRda/lmXRCI9WNXgJGSNcf+NwVafPKT4ktqWERZx+sZtukjT3qna9rFCZILHAGsmd78Z1KLbs/albRxNofyPMw2ifF6Ir07Nm/bH7AdeSzjZAJxjNfASITOq5NOUbjRoFpypLq5bnM99wiboFnv/60qLp9lWlv4tZ4ZvmacDOlFIxj4fEw1Tiaq6o1xnvxVBhPUnNpvyfQMJbqP6GUFicl3bf5kV7zb+3MJU4jP4M4BnFqetDGKfXCHikkYHeqvly5/NyjeJfI3Hr7+x7TsuJLbOdbg9XCe4rGzOHm6+yCqe+OTyPMi280aLAFoo1+zF/3CTug9aizt/uiH4rMp/dc/KzPkJcox4mx5A5jIFznuQNBiYG5nnIXu1AehLKk/Qxhrz6YJK6kzTyoiT9QhK1zzrURMdCj7+j0DnSMw==,iv:dOhyYLt17NSdWPUDnUUImp9u7aRgULFD031vQkGO9V8=,tag:jF77mzBvjM6KDpx7U9aguQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# secret-envvars +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-secret-envvars + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +type: Opaque +data: + CREDSTORAGE_PASSCRYPT: ENC[AES256_GCM,data:2h6Ap2WX5eEabmTKGSK9i6XVB5k5Fw7zguwc8AQhDIeED1p7W0XjST20xHM=,iv:b9H19Hw6mHXFo66oUXnzKoLInMoCi65Q23lzFV8FhUE=,tag:8fsbXHbAb9OIOp6u3nOuNA==,type:str] + MASTER_ADMIN_USER: ENC[AES256_GCM,data:YWU2yixJLjI=,iv:Kqv7vjr0SB31aDpLS7PpawEbDd+DiJGsQHCqVRdYyBQ=,tag:Q0wH6iYweTeY7I9fHMWCOA==,type:str] + MASTER_ADMIN_PW: ENC[AES256_GCM,data:W/JYoZwYi3+wsmvHZz6FDbKFDh0IwzoeNNRMsFKLL5laE85uzkGnnG/1GI5awROjU2c3zN/p4eA=,iv:q5XCiFRjnhWsimzb7/EV/ByWPiX3yI+7TGeWR8OjaKI=,tag:tRCVh5OtZGgUqHr4UvLmUQ==,type:str] + HZ_GROUP_NAME: ENC[AES256_GCM,data:TAKvH9LqKovO+kia,iv:KbWglUCs+gJS3Corf0FLkicctVP+lUmmTOu4I6tTOY8=,tag:jhW7q/asEl3F09UKW46N5Q==,type:str] + HZ_GROUP_PASSWORD: ENC[AES256_GCM,data:Dio7FwNyN0ResWOO7pRFyEFvKRuix/XaRDDlLBatDQpZGdbpfUK8q5hmcm53FgeB/KqX4Mjfj10=,iv:CHJaMgLoL/FaA2v1mIrbiL99k0xVg2drkTXr9M4DP8o=,tag:8f1ESFUwx4PiNu+n/RZQEQ==,type:str] + OX_BASIC_AUTH_LOGIN: ENC[AES256_GCM,data:sNYnYQgHOOvZwAkm,iv:NnFBCuu54WCK8Wsofg80PmnLqbTLpXMzZdjW5lvHc4M=,tag:z6+2CvzZo+58Ox1e2vvG6A==,type:str] + OX_BASIC_AUTH_PASSWORD: ENC[AES256_GCM,data:dS/OJVtt5Zdbz2UBf7IBOi0Lu2p9Nvy8QTEhiU8F9LH2jYNw7j+JbZlWqfzvL0PQr6e4d/vX7C4=,iv:Hfl8z2Q/ZSc0Hbv6bWQCFayB7bWgj77fWICFbe5FquU=,tag:VdPV+oCnak5pG87d+QySqQ==,type:str] + JOLOKIA_LOGIN: ENC[AES256_GCM,data:Hza8h9I9HXL1mqBY,iv:mlUEaazsVM5wNn45S6mn5ixtQNYk3Dg7IC7kotiMizg=,tag:B8Wdl+oAGZGRiH9SJoR8Hg==,type:str] + JOLOKIA_PASSWORD: ENC[AES256_GCM,data:dmky/yMKTC5lLj3Huj/hudQZwcONEB6wp756l2R1KnOagCuOwWqvH7KpaVtI1MFqfV0IpkYZt3A=,iv:BS1aq2u+/KpY8qwtOJfi9sxM8PjjT3gBA64EqXqAVlw=,tag:OtidoJTxYuxDgyyPA5AsiA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# ui-settings-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-ui-settings-secret +data: + 2000_secret-ui-overrides.yaml: ENC[AES256_GCM,data:anyWDScfMzpIBGYRKnGZVMitMxCIE9wNXiMDlKWsexvChs6XwEbq0SDysKWDo5EJqAA9Sy6piJe0xrjJMx8K30hIjs1GkbnsbiS8NY6Uz9C1ifct,iv:42SIcOtJYtchEQxDmgxvyztAP88aygxF0+IvcdiLIWc=,tag:QAZ9x+gGQTiMk5+Q0BdbQA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# yaml-secrets-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-yaml-secrets-secret +data: + ldap-client-config.yml: ENC[AES256_GCM,data:qWF+8zCCBJe269Bqg1BSH1K77wa4wPsxAT80eYX/XMjMKuoBzDqCOIk9neERwxf7hCsiKxZRDFq/oRWiqto1zTJF2uf4ERPK9oN8Lehk9HG/EUc5N0cViLU71h5nseEGY0ZHGEMQdrPpMKVLpwYBBUw2HTV7tBskA4Tlb97xbbVQuaQa+VJv9AoPWDVHjfMygNGuFwXpBPEbV5sfQJOiAsjVYk4K5HdLyat+tNAAnALwGFc4M/DvW90EDXlKPGroYIIAmUgZpDhvyYE4TcZbXjd459D/KjsV7vZ/BuZ3CCQu4gGcuhERZG2mSXOL7IYv3rAaDyglnCuLijkt6XT4dDNaG9z7WptNmZ2s44D440AnIjTOeruRUQRssAALJO2gbkcFbE2eZArMRPyMbOhzxi8tjbdvuwjAc1j+w6b2vFytcj2EjuBOzb3EVEtaUXhaNb/B6P9x6G8=,iv:wUO/XqLZ7Vg/M+1HTGx/NDRu2QgLBtHqOUL5vvDDsIU=,tag:eW+aLVdxaIMkAzEf0z1fyQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/redis-secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-ui-middleware-redis +type: Opaque +data: + username: "" + password: ENC[AES256_GCM,data:6d6Q/OVHmWFrGYmWmcDSz6vfRrFMTxg0AWHU/QBuy/fNli9i9HP0A5Oha5eUbqPziI6cZOo6GpM=,iv:qaGI4ftdE5F/V5eV7e4D7SHQH4u164y58OSLu8sYNMA=,tag:6KBi/UpjFWJlpuFV57XXkw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/common-env-secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-common-env + namespace: tn-openbsw-opendesk + annotations: + helm.sh/resource-policy: keep + labels: + helm.sh/chart: appsuite-8.28.436 +data: + COOKIE_HASH_SALT: ENC[AES256_GCM,data:OjlhvnKpq/8hogDp/aoUxZS3nRUrSw0SKuMMfkyB1eXaK3njBZHBjLIDHWMLkMC7lgK3E/Qn76g=,iv:VV32FBBXVOcnMD/VvNeTkz1ik0MYs7FeX1mCmHFWKNU=,tag:r3yb73Kn0/2bp+ab+Bicjg==,type:str] + SHARE_CRYPT_KEY: ENC[AES256_GCM,data:TFU+wBt8bOo0AEnLH4JSY729R505rHJA78xilK7M77aFXzxzS6fdxsaN56WsxqPj4qvILWXb8fc=,iv:TRRjSbQGt3NZEE/vyQOqtcd59mMbefaJomPBQ6vpisA=,tag:l2iOtslQ2SpP5+iBKrM0cQ==,type:str] + SESSIOND_ENCRYPTION_KEY: ENC[AES256_GCM,data:5sND2MFr8vntAMILGRf6H9V7bIG3FKGb/rH9G7x30+rXuJRnOrusLOV+ef2c2s03KJ5wlwdJTPY=,iv:2uAQECjm/MP62gETMTzPJk3RmYXxjANG31W4mLZnwfE=,tag:2NFB11bl+PvR6MXk+bK7EA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: ox-connector/templates/secret.yaml +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: ox-connector + labels: + app.kubernetes.io/name: ox-connector + helm.sh/chart: ox-connector-0.14.5 + app.kubernetes.io/instance: ox-connector + app.kubernetes.io/managed-by: Helm +data: + provisioning_api_password: ENC[AES256_GCM,data:TpwwNPtFK4pSNl6E6wYB6ZezDk9UsqOZLSYabW9bqp5DfPGN1UHqfoIqL7Cq+H5NdKyy/O5xvVM=,iv:aNSVhqp5iZs5lw1MSwC9Au3e9pb3cUwSqfXutWJG6V0=,tag:PyetM+APkWBPtZH+Rj2Ukg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYY2tJOWdtaU5kQ0d2a21H + SnJxTmE1TWZFS0l2UTIwYjduaUQ0d1ZEQ21rCmFpQnBwbzJ0TU41MXFrN2FkOU1z + V0Jaa0ZuaGoyRE5QZ2hoZXhzUGZSaGMKLS0tIHpHWm4xYnhEbU1jaWYrMFlJNmdh + bnh2MVFFaVBBK2dibXVBdHdpQWVaeTQKuVCXEXpZbyGEriKJU0Vco3hm9evPWBVU + 1XvIU9LvZ0octKV9sanhnEhespIBDMS1Q2jtWIXZZ/778Fl6dGX+yQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:13Z" + mac: ENC[AES256_GCM,data:s94s+PqfnaW7mpmBu0g5Vw7P7Aq9kunQQ7mjhRuIxlX/iAYQKd5yytP7qTOuLVhoZJwgTt24AzTCzn8Lh5yEKRFBtNzjNHZwUn0OuFjrWmG7trD4z40f8OyQMPBy94PdUbSPxLezHufuDLNAABZFjmzqlyu4b/IvKA+62yN9yAI=,iv:SEL/3zI0cGDRPZqbDk/W4ot63s0fwjVaDCqaIdTZ/iY=,tag:LwszE0CSG9nCm8RfOGi9jQ==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/open-xchange.yaml b/manifests/open-xchange.yaml new file mode 100644 index 0000000..381760e --- /dev/null +++ b/manifests/open-xchange.yaml @@ -0,0 +1,5111 @@ +# Source: dovecot/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: dovecot + labels: + app.kubernetes.io/name: dovecot + helm.sh/chart: dovecot-1.4.0 + app.kubernetes.io/instance: dovecot + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +--- +# Source: dovecot/templates/configmap-virtual.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: dovecot-virtual + labels: + app.kubernetes.io/name: dovecot + helm.sh/chart: dovecot-1.4.0 + app.kubernetes.io/instance: dovecot + app.kubernetes.io/managed-by: Helm +data: + dovecot-virtual: | + * + -INBOX/Trash + -INBOX/Trash/* + -INBOX/Spam + -INBOX/Spam/* +--- +# Source: dovecot/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: dovecot + labels: + app.kubernetes.io/name: dovecot + helm.sh/chart: dovecot-1.4.0 + app.kubernetes.io/instance: dovecot + app.kubernetes.io/managed-by: Helm +data: + dovecot.conf: |2 + + + auth_master_user_separator = * + auth_mechanisms = xoauth2 oauthbearer plain login + auth_realms = souvap + auth_verbose = no + first_valid_uid = 1000 + listen = * + mail_debug = no + mail_location = mdbox:~/mdbox + mail_plugins = acl notify push_notification welcome zlib quota virtual + mail_uid=vmail + mail_gid=vmail + login_trusted_networks = 10.0.0.0/8 + doveadm_password = "84d23be6710d8a9a36945c40f789865c75a3c8fc" + managesieve_notify_capability = mailto + managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext + mbox_write_locks = fcntl + + # Search inside attachments + # https://documentation.open-xchange.com/latest/middleware/mail/dovecot/attachment_marker.html + # https://doc.dovecot.org/settings/core/#core_setting-mail_attachment_detection_options + mail_attachment_detection_options = add-flags + + # Submission settings + submission_ssl = "no" + submission_host = "postfix.tn-openbsw-opendesk.svc.cluster.local:25" + submission_host = "postfix.tn-openbsw-opendesk.svc.cluster.local:25" + + namespace { # FIXME namespaces auslagern? + list = children + location = mdbox:%%h/mdbox:INDEXPVT=%h/shared/%%u + prefix = Freigaben/%%n/ + separator = / + subscriptions = yes + type = shared + } + + namespace inbox { + inbox = yes + location = + mailbox Drafts { + special_use = \Drafts + } + mailbox Junk { + special_use = \Junk + } + mailbox Sent { + special_use = \Sent + } + mailbox "Sent Messages" { + special_use = \Sent + } + mailbox Trash { + special_use = \Trash + } + prefix = + } + + # Primary accounts with OAuth2 + passdb { + driver = oauth2 + args = /etc/dovecot/oauth2-primary.conf.ext + mechanisms = xoauth2 oauthbearer + + # Primary accounts from OX have at least one @ in the login name + username_filter = *@* + + # If successful, do not bother with secondary accounts + result_success = return-ok + + result_failure = return-fail + result_internalfail = return-fail + } + + # Primary accounts with password use LDAP auth bind + passdb { + driver = ldap + args = /etc/dovecot/ldap-primary.conf.ext + mechanisms = plain login + + # Primary accounts from external clients have at most one @ in the login name + username_filter = !*@*@* + + # If successful, do not bother with secondary accounts + result_success = return-ok + + result_failure = return-fail + result_internalfail = return-fail + } + + # OAuth2 authentication + # Step 1: authenticate and extract user's UUID from the token + passdb { + driver = oauth2 + args = /etc/dovecot/oauth2-secondary.conf.ext + mechanisms = xoauth2 oauthbearer + + # If authentication successful, continue with fetching user's DN + result_success = continue-ok + + result_failure = return-fail + result_internalfail = return-fail + } + # Step 2: Retrieve user's DN + passdb { + driver = ldap + args = /etc/dovecot/ldap-userdn.conf.ext + mechanisms = xoauth2 oauthbearer + + # If DN was found, continue with authorization + result_success = continue-ok + + result_failure = return-fail + result_internalfail = return-fail + } + + # Password authentication via LDAP auth bind + passdb { + driver = ldap + args = /etc/dovecot/ldap-secondary.conf.ext + mechanisms = plain login + + # If authentication successful, continue with authorization + result_success = continue-ok + + result_failure = return-fail + result_internalfail = return-fail + } + + # Authorization for secondary accounts via LDAP + passdb { + driver = ldap + args = /etc/dovecot/ldap-authz.conf.ext + + # After authorization we're done + result_success = return-ok + + result_failure = return-fail + result_internalfail = return-fail + } + + # Fixme: Enabled but commented files don't exist on ox-gwb + plugin { + acl = vfile + # acl_shared_dict = file:/data/usr/local/dovecot/db/shared-mailboxes.db + sieve_before = /etc/dovecot/global-spam-script.sieve + # sieve_default = /data/usr/local/dovecot/sieve/default_scripts + # welcome_script = welcome %u + } + + protocols = imap pop3 lmtp sieve + service auth { + inet_listener { + port = 3659 + } + unix_listener auth-userdb { + group = vmail + mode = 0666 + user = vmail + } + } + service doveadm { + inet_listener { + port = 9000 + } + inet_listener http { + port = 8080 + } + } + service stats { + inet_listener http { + port = 9900 + } + } + service imap-login { + process_limit = 300 + inet_listener imap { + port = 143 + } + } + service lmtp { + inet_listener lmtp { + port = 24 + } + } + + # Fixme: script does not exist on ox-gwb + service welcome { + executable = script /etc/devecot/welcome.sh + unix_listener welcome { + user = vmail + } + user = vmail + } + + service managesieve-login { + inet_listener sieve { + port = 4190 + } + } + + # SSL / TLS + ssl=yes + disable_plaintext_auth = no + ssl_cert= + + + + + + + + + + + + + + false + + yyyy-MM-dd'T'HH:mm:ss.SSSZ + Etc/UTC + false + false + true + + + + + + 2048 + 0 + true + + + + + + + + + + + + + + + + /var/log/open-xchange/documentconverter/documentconverter.log.0 + + /var/log/open-xchange/documentconverter/documentconverter.log.%i + 1 + 5 + + + 2MB + + + %date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ"} %-5level [%thread] %class.%method\(%class{0}.java:%line\)%n%sanitisedMessage%n%lmdc%exception{full} + + + + + 2048 + 0 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dcconfig.properties: | + SERVER_NAME=oxserver + + com.openexchange.cookie.hash.salt={{ COOKIE_HASH_SALT }} + com.openexchange.sessiond.encryptionKey={{ SHARE_CRYPT_KEY }} + com.openexchange.share.cryptKey={{ SESSIOND_ENCRYPTION_KEY }} + + com.openexchange.rest.services.basic-auth.login={{ OX_BASIC_AUTH_LOGIN }} + com.openexchange.rest.services.basic-auth.password={{ OX_BASIC_AUTH_PASSWORD }} + + com.openexchange.connector.networkListenerHost=0.0.0.0 + com.openexchange.connector.networkListenerPort=8008 + com.openexchange.connector.networkSslListenerPort=8011 + com.openexchange.connector.livenessPort=8017 + JMXPort=9998 + + com.openexchange.hazelcast.enabled=false + + com.openexchange.redis.hosts=redis-master:6379 + com.openexchange.redis.username= + com.openexchange.redis.password=9d50d5fc28caacbce89e81b9d88d78e23da19c08 + com.openexchange.redis.mode=standalone + com.openexchange.redis.ssl=false + + com.openexchange.documentconverter.cacheDir=/var/spool/open-xchange/documentconverter/cache + com.openexchange.documentconverter.scratchDir=/var/spool/open-xchange/documentconverter/scratch + + com.openexchange.documentconverter.blacklistFile=/opt/open-xchange/etc/readerengine.blacklist + com.openexchange.documentconverter.whitelistFile=/opt/open-xchange/etc/readerengine.whitelist + com.openexchange.documentconverter.useCool=false + com.openexchange.documentconverter.coolUrl=http://open-xchange-collabora-online.tn-openbsw-opendesk.svc.cluster.local:9980 + + com.openexchange.documentconverter.jobProcessorCount=3 + com.openexchange.documentconverter.jobExecutionTimeoutMilliseconds=60000 + com.openexchange.documentconverter.jobQueueCountLimitHigh=40 + com.openexchange.documentconverter.jobQueueCountLimitLow=30 + com.openexchange.documentconverter.jobQueueTimeoutSeconds=300 + com.openexchange.documentconverter.jobAsyncQueueCountLimitHigh=2048 + + com.openexchange.documentconverter.maxCacheEntries=4000000 + com.openexchange.documentconverter.maxCacheSizeMB=-1 + com.openexchange.documentconverter.cacheEntryTimeoutSeconds=2592000 + com.openexchange.documentconverter.minFreeVolumeSizeMB=1024 + com.openexchange.documentconverter.cacheCleanupPeriodSeconds=300 + + com.openexchange.documentconverter.probe.liveness.periodSeconds=10 + com.openexchange.documentconverter.probe.readiness.periodSeconds=5 + com.openexchange.documentconverter.probe.readiness.downAfterUsedServiceUnavailabilitySeconds=300 + com.openexchange.documentconverter.probe.liveness.downAfterReadinessDownSeconds=15 + com.openexchange.documentconverter.probe.readiness.upRecoveryPeriodSeconds=20 + readerengine.blacklist: | + .* + readerengine.whitelist: | + file:///opt/readerengine/share/gallery/.* +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-imageconverter-ic-configmap +data: + configdb.properties: | + readDriverClass=com.mysql.cj.jdbc.Driver + readUrl=jdbc:mysql://mariadb:3306/configdb + readProperty.1=user=root + readProperty.2=password=6c3e5177d1196ce1c7e94a3ed70d4536916bc46b + + writeDriverClass=com.mysql.cj.jdbc.Driver + writeUrl=jdbc:mysql://mariadb:3306/configdb + writeProperty.1=user=root + writeProperty.2=password=6c3e5177d1196ce1c7e94a3ed70d4536916bc46b + + cleanerInterval=10000 + maxIdle=-1 + maxIdleTime=60000 + maxActive=100 + maxWait=10000 + maxLifeTime=600000 + exhaustedAction=BLOCK + testOnActivate=false + testOnDeactivate=true + testOnIdle=false + testThreads=false + com.openexchange.database.replicationMonitor=true + com.openexchange.database.checkWriteCons=false + logback.xml: | + + + + + + + + + + + + + + + false + + yyyy-MM-dd'T'HH:mm:ss.SSSZ + Etc/UTC + false + false + true + + + + + + 2048 + 0 + true + + + + + + + + + + + + + + + + /var/log/open-xchange/imageconverter/imageconverter.log.0 + + /var/log/open-xchange/imageconverter/imageconverter.log.%i + 1 + 5 + + + 2MB + + + %date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ"} %-5level [%thread] %class.%method\(%class{0}.java:%line\)%n%sanitisedMessage%n%lmdc%exception{full} + + + + + 2048 + 0 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + icconfig.properties: | + SERVER_NAME=oxserver + + com.openexchange.cookie.hash.salt={{ COOKIE_HASH_SALT }} + com.openexchange.sessiond.encryptionKey={{ SESSIOND_ENCRYPTION_KEY }} + com.openexchange.share.cryptKey={{ SHARE_CRYPT_KEY }} + + com.openexchange.rest.services.basic-auth.login={{ OX_BASIC_AUTH_LOGIN }} + com.openexchange.rest.services.basic-auth.password={{ OX_BASIC_AUTH_PASSWORD }} + + com.openexchange.connector.networkListenerHost=0.0.0.0 + com.openexchange.connector.networkListenerPort=8005 + com.openexchange.connector.networkSslListenerPort=8014 + com.openexchange.connector.livenessPort=8018 + com.openexchange.rmi.port=1095 + JMXPort=9995 + + com.openexchange.hazelcast.enabled=false + + com.openexchange.redis.hosts=redis-master:6379 + com.openexchange.redis.username= + com.openexchange.redis.password=9d50d5fc28caacbce89e81b9d88d78e23da19c08 + com.openexchange.redis.mode=standalone + com.openexchange.redis.ssl=false + + com.openexchange.objectcache.database.host=mariadb + com.openexchange.objectcache.database.port=3306 + com.openexchange.objectcache.database.schema=configdb + com.openexchange.objectcache.database.user=root + com.openexchange.objectcache.database.password=6c3e5177d1196ce1c7e94a3ed70d4536916bc46b + + com.openexchange.objectcache.objectstore.s3.-1.endpoint=. + com.openexchange.objectcache.objectstore.s3.-1.region=eu-central-1 + com.openexchange.objectcache.objectstore.s3.-1.bucketName=objectcache + com.openexchange.objectcache.objectstore.s3.-1.accessKey=. + com.openexchange.objectcache.objectstore.s3.-1.secretKey=. + + com.openexchange.objectcache.objectStoreIds={{ OXENV_OBJECTSTOREID }}, s3:-1, + + com.openexchange.imageconverter.convertTimeoutMillis=20000 + com.openexchange.imageconverter.queueLength=512 + com.openexchange.imageconverter.asyncQueueLength=486 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# as-config-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-as-config-configmap +data: + as-config.yml: | + default: + host: all + oidcLogin: true + oidcPath: /oidc + pageHeaderPrefix: as8.souvap App Suite +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# contextsets-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-contextsets-configmap +data: + context-sets-overrides.yaml: | + {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# etc-files-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-etc-files-configmap +data: {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# hook-before-apply-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-hook-before-apply-configmap +data: {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# hook-before-appsuite-start-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-hook-before-appsuite-start-configmap +data: + create-guard-dir.sh: | + mkdir -p /opt/open-xchange/guard-files + chown open-xchange:open-xchange /opt/open-xchange/guard-files +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# hook-start-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-hook-start-configmap +data: {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# meta-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-meta-configmap +data: + meta-overrides.yaml: | + {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# properties-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-default-properties-configmap +data: + 998_properties.yaml: | + anywhere: + ENABLE_INTERNAL_USER_EDIT: "false" + com.openexchange.IPCheck: "false" + com.openexchange.UIWebPath: /appsuite/ + com.openexchange.admin.bypassAccessCombinationChecks: "true" + com.openexchange.authentication.oauth.clientId: opendesk-oxappsuite + com.openexchange.authentication.oauth.clientSecret: adaccb19f9bde8c0a161b522e3a22c0f8788f7ce + com.openexchange.authentication.oauth.tokenEndpoint: https://id.opendesk.apps.digilab.network/realms/opendesk/protocol/openid-connect/token + com.openexchange.capability.client-onboarding: "true" + com.openexchange.capability.document_preview: "true" + com.openexchange.capability.dynamic-theme: "true" + com.openexchange.capability.filestorage_nextcloud: "true" + com.openexchange.capability.filestorage_nextcloud_oauth: "true" + com.openexchange.capability.guard: "true" + com.openexchange.capability.guard-mail: "true" + com.openexchange.capability.invite_guests: "false" + com.openexchange.capability.mail_export_pdf: "true" + com.openexchange.capability.public-sector: "true" + com.openexchange.capability.public-sector-element: "true" + com.openexchange.capability.public-sector-navigation: "true" + com.openexchange.capability.share_links: "false" + com.openexchange.capability.smime: "true" + com.openexchange.conference.element.enabled: "true" + com.openexchange.conference.element.matrixLoginUrl: http://opendesk-synapse-web:8008/_matrix/client/v3/login + com.openexchange.conference.element.matrixUuidClaimName: opendesk_useruuid + com.openexchange.conference.element.meetingHostUrl: http://matrix-neodatefix-bot + com.openexchange.connector.networkListenerHost: '*' + com.openexchange.contacts.ldap.accounts: opendesk,other,functional + com.openexchange.cookie.hash: remember + com.openexchange.file.storage.nextcloud.oauth.url: http://opendesk-nextcloud-aio/ + com.openexchange.file.storage.nextcloud.oauth.webdav.username.strategy: user + com.openexchange.folderstorage.database.preferDisplayName: "false" + com.openexchange.gdpr.dataexport.active: "false" + com.openexchange.gdpr.dataexport.enabled: "false" + com.openexchange.guard.guestSMTPServer: postfix + com.openexchange.guard.storage.file.fileStorageType: file + com.openexchange.guard.storage.file.uploadDirectory: /opt/open-xchange/guard-files/ + com.openexchange.imap.attachmentMarker.enabled: "true" + com.openexchange.jolokia.start: "true" + com.openexchange.mail.authType: xoauth2 + com.openexchange.mail.exportpdf.collabora.enabled: "true" + com.openexchange.mail.exportpdf.collabora.url: http://collabora:9980 + com.openexchange.mail.exportpdf.gotenberg.enabled: "true" + com.openexchange.mail.exportpdf.gotenberg.url: http://open-xchange-gotenberg:3000 + com.openexchange.mail.exportpdf.pdfa.collabora.enabled: "true" + com.openexchange.mail.filter.credentialSource: mail + com.openexchange.mail.filter.loginType: global + com.openexchange.mail.filter.preferredSaslMech: XOAUTH2 + com.openexchange.mail.filter.server: dovecot + com.openexchange.mail.loginSource: mail + com.openexchange.mail.mailServer: dovecot + com.openexchange.mail.mailServerSource: global + com.openexchange.mail.secondary.authType: XOAUTH2 + com.openexchange.mail.transport.authType: xoauth2 + com.openexchange.mail.transport.secondary.authType: xoauth2 + com.openexchange.mail.transportServer: postfix + com.openexchange.mail.transportServerSource: global + com.openexchange.nextcloud.filepicker.includeAccessToken: "false" + com.openexchange.oauth.provider.allowedIssuer: https://id.opendesk.apps.digilab.network/realms/opendesk + com.openexchange.oauth.provider.contextLookupClaim: context + com.openexchange.oauth.provider.contextLookupNamePart: full + com.openexchange.oauth.provider.enabled: "true" + com.openexchange.oauth.provider.jwt.jwksUri: https://id.opendesk.apps.digilab.network/realms/opendesk/protocol/openid-connect/certs + com.openexchange.oauth.provider.mode: expect_jwt + com.openexchange.oauth.provider.userLookupClaim: opendesk_username + com.openexchange.oauth.provider.userLookupNamePart: full + com.openexchange.oidc.autologinCookieMode: ox_direct + com.openexchange.oidc.backchannelLogoutEnabled: "true" + com.openexchange.oidc.clientId: opendesk-oxappsuite + com.openexchange.oidc.clientSecret: adaccb19f9bde8c0a161b522e3a22c0f8788f7ce + com.openexchange.oidc.contextLookupClaim: context + com.openexchange.oidc.contextLookupNamePart: full + com.openexchange.oidc.enabled: "true" + com.openexchange.oidc.opAuthorizationEndpoint: https://id.opendesk.apps.digilab.network/realms/opendesk/protocol/openid-connect/auth + com.openexchange.oidc.opIssuer: https://id.opendesk.apps.digilab.network/realms/opendesk + com.openexchange.oidc.opJwkSetEndpoint: https://id.opendesk.apps.digilab.network/realms/opendesk/protocol/openid-connect/certs + com.openexchange.oidc.opLogoutEndpoint: https://id.opendesk.apps.digilab.network/realms/opendesk/protocol/openid-connect/logout + com.openexchange.oidc.opTokenEndpoint: https://id.opendesk.apps.digilab.network/realms/opendesk/protocol/openid-connect/token + com.openexchange.oidc.rpRedirectURIAuth: https://webmail.opendesk.apps.digilab.network/appsuite/api/oidc/auth + com.openexchange.oidc.rpRedirectURILogout: https://portal.opendesk.apps.digilab.network + com.openexchange.oidc.rpRedirectURIPostSSOLogout: https://webmail.opendesk.apps.digilab.network/appsuite/api/oidc/logout + com.openexchange.oidc.ssoLogout: "true" + com.openexchange.oidc.startDefaultBackend: "true" + com.openexchange.oidc.userLookupClaim: opendesk_username + com.openexchange.oidc.userLookupNamePart: full + com.openexchange.secret.secretSource: '" + ''@'' + + ''/'' + + "' + com.openexchange.showAdmin: "false" + com.openexchange.smime.test: "true" + com.openexchange.user.enforceUniqueDisplayName: "false" + com.openexchange.usm.ox.url: http://localhost:8009/appsuite/api/ + /opt/open-xchange/etc/AdminDaemon.properties: + MASTER_ACCOUNT_OVERRIDE: "true" + /opt/open-xchange/etc/AdminUser.properties: + USERNAME_CHANGEABLE: "true" + /opt/open-xchange/etc/antivirus.properties: + com.openexchange.antivirus.enabled: "true" + com.openexchange.antivirus.maxFileSize: "1024" + com.openexchange.antivirus.port: "1344" + com.openexchange.antivirus.server: clamav-simple + /opt/open-xchange/etc/ldapauth.properties: + bindDN: uid=ldapsearch_ox,cn=users,dc=swp-ldap,dc=internal + bindDNPassword: 7de9d8c513e6e1b619b910722f2b32b2e8836902 + bindOnly: "false" + java.naming.provider.url: ldap://ums-ldap-server:389/dc=swp-ldap,dc=internal + /opt/open-xchange/etc/masterpassword-authentication.properties: + com.openexchange.authentication.masterpassword.password: 363f07b04db03ce6dd867da311c720f18d44ca95 + /opt/open-xchange/etc/system.properties: + SERVER_NAME: oxserver +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# properties-lean-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-properties-lean-configmap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +data: + logback.xml: | + + + + + + + + + + + + + + + false + + yyyy-MM-dd'T'HH:mm:ss.SSSZ + Etc/UTC + false + false + true + + + + + + 2048 + 0 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + languages.properties: |2- + + io.ox/appsuite/languages/de_DE=Deutsch + io.ox/appsuite/languages/en_US=English (US) + io.ox/appsuite/languages/es_ES=Español + io.ox/appsuite/languages/fr_FR=Français + io.ox/appsuite/languages/it_IT=Italiano + properties-lean-config.properties: |- + ### This file was generated by Helm (core-mw) + + # config/redis.properties + com.openexchange.redis.hosts=redis-master:6379 + com.openexchange.redis.username= + com.openexchange.redis.password=9d50d5fc28caacbce89e81b9d88d78e23da19c08 + com.openexchange.redis.mode=standalone +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# properties-overwrite-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-default-properties-overwrite-configmap +data: + 999_properties_overwrite.yaml: | + anywhere: {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# ui-settings-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-ui-settings-configmap +data: + 1999_ui-overrides.yaml: | + /opt/open-xchange/etc/settings/overrides.properties: + io.ox.nextcloud//server: https://ics.opendesk.apps.digilab.network/fs/ + io.ox.public-sector//ics/url: https://ics.opendesk.apps.digilab.network/ + io.ox.public-sector//navigation/oxtabname: tab_groupware + io.ox/core//apps/quickLaunchCount: "0" + io.ox/core//categories/predefined: | + [{ "name": "Predefined", "color": "orange", "icon": "bi/exclamation-circle.svg" }] + io.ox/core//coloredIcons: "false" + io.ox/core//features/categories: "true" + io.ox/core//features/enterprisePicker/enabled: "true" + io.ox/core//features/enterprisePicker/showLauncher: "false" + io.ox/core//features/enterprisePicker/showTopRightLauncher: "true" + io.ox/core//features/managedResources: "true" + io.ox/core//features/resourceCalendars: "true" + io.ox/core//features/templates: "true" + io.ox/dynamic-theme//folderBackground: '#ffffff' + io.ox/dynamic-theme//folderHover: '#f5f5f5' + io.ox/dynamic-theme//folderSelected: '#87fa94' + io.ox/dynamic-theme//listHover: '#f5f5f5' + io.ox/dynamic-theme//listSelected: '#87fa94' + io.ox/dynamic-theme//logoURL: https://portal.opendesk.apps.digilab.network/univention/portal/icons/logos/domain.svg + io.ox/dynamic-theme//logoWidth: "82" + io.ox/dynamic-theme//mainColor: '#6af56a' + io.ox/dynamic-theme//topbarBackground: '#ffffff' + io.ox/dynamic-theme//topbarColor: '#000000' + io.ox/dynamic-theme//topbarHover: rgba(0, 0, 0, 0.1) + io.ox/mail//contactCollectOnMailTransport: "true" +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/type-scoped-resources.yaml +# yaml-files-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-yaml-files-configmap +data: + contacts-provider-ldap-mappings.yml: |2 + + functional: + displayname: oxPersonal,cn,mailPrimaryAddress + email1: mailPrimaryAddress + file_as: oxPersonal,cn,mailPrimaryAddress + objectid: mailPrimaryAddress + ucs: + anniversary: oxAnniversary + birthday: oxBirthday + branches: oxBranches + cellular_telephone1: mobile + city_business: l + city_home: oxCityHome + city_other: oxCityOther + commercial_register: oxCommercialRegister + company: oxCompany,o + contextid: oxContextIDNum + country_business: oxCountryBusiness,country + country_home: oxCountryHome + country_other: oxCountryOther + creationdate: createTimestamp + department: oxDepartment,department + displayname: oxDisplayName,displayName,name + distributionlist: memberUid + email1: mailPrimaryAddress + email2: oxEmail2 + email3: oxEmail3 + employeetype: employeeType + fax_business: oxFaxBusiness,facsimileTelehoneNumber + fax_home: oxFaxHome + fax_other: oxFaxOther + file_as: oxDisplayName,displayName,name + givenname: givenName + image1: jpegPhoto + instant_messenger1: oxInstantMessenger1 + instant_messenger2: oxInstantMessenger2 + internal_userid: uid;logininfo + lastmodified: modifyTimestamp + manager_name: secretary,oxManagerName + marital_status: oxMaritalStatus + markasdistributionlist: objectClass=posixGroup + middle_name: oxMiddleName,middleName + nickname: oxNickName + note: oxNote,description + number_of_children: oxNumOfChildren + number_of_employee: employeeNumber + number_of_images: jpegPhoto=* + objectid: uidNumber,gidNumber + position: oxPosition + postal_code_business: postalCode + postal_code_home: oxPostalCodeHome + postal_code_other: oxPostalCodeOther + profession: oxProfession + room_number: roomNumber + sales_volume: oxSalesVolume + spouse_name: oxSpouseName + state_business: oxStateBusiness,st + state_home: oxStateHome + state_other: oxStateOther + street_business: streetAddress + street_home: oxStreetHome + street_other: oxStreetOther + suffix: oxSuffix + surname: sn + tax_id: oxTaxId + telephone_assistant: oxTelephoneAssistant + telephone_business1: oxTelephoneBusiness1,telephoneNumber + telephone_business2: oxTelephoneBusiness2 + telephone_car: oxTelephoneCar + telephone_company: oxTelephoneCompany + telephone_home1: oxTelephoneHome1,homePhone + telephone_home2: oxTelephoneHome2 + telephone_ip: oxTelephoneIp + telephone_isdn: internationaliSDNNumber + telephone_other: oxTelephoneOther + telephone_pager: oxTelephonePager,pager + telephone_telex: oxTelephoneTelex,telexNumber + telephone_ttytdd: oxTelephoneTtydd + title: title + url: oxUrl,wWWHome + userfield01: oxUserfiels01 + userfield02: oxUserfiels02 + userfield03: oxUserfiels03 + userfield04: oxUserfiels04 + userfield05: oxUserfiels05 + userfield06: oxUserfiels06 + userfield07: oxUserfiels07 + userfield08: oxUserfiels08 + userfield09: oxUserfiels09 + userfield10: oxUserfiels10 + userfield11: oxUserfiels11 + userfield12: oxUserfiels12 + userfield13: oxUserfiels13 + userfield14: oxUserfiels14 + userfield15: oxUserfiels15 + userfield16: oxUserfiels16 + userfield17: oxUserfiels17 + userfield18: oxUserfiels18 + userfield19: oxUserfiels19 + userfield20: oxUserfiels20 + + contacts-provider-ldap.yml: |2 + + functional: + folders: + mode: static + shownInTree: + defaultValue: true + protected: false + static: + commonContactFilter: (univentionObjectType=oxmail/functional_account) + folders: + - contactFilter: (univentionObjectType=oxmail/functional_account) + name: Funktionale Postfächer + usedForSync: + defaultValue: false + protected: true + usedInPicker: + defaultValue: true + protected: false + ldapClientId: contactsLdapClient + mappings: functional + name: Functional mailboxes + opendesk: + cache: + useCache: false + folders: + dynamicAttributes: + attributeName: o + contactFilterTemplate: (&(univentionObjectType=users/user)(isOxUser=OK)(o=[value])) + contactSearchScope: sub + refreshInterval: 5m + sortOrder: ascending + fixedAttributes: + attributeValues: + - Janitorial + - Product Development + - Management + - Human Resources + contactFilterTemplate: (&(|(objectClass=person)(objectClass=groupOfNames))(ou=[value])) + contactSearchScope: sub + mode: dynamicAttributes + shownInTree: + defaultValue: true + protected: false + static: + commonContactFilter: (|(objectClass=person)(objectClass=groupOfNames)) + commonContactSearchScope: sub + folders: + - contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=Cupertino)) + contactSearchScope: sub + name: Cupertino + - contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=San Mateo)) + contactSearchScope: sub + name: San Mateo + - contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=Redwood + Shores)) + contactSearchScope: sub + name: Redwood Shores + - contactFilter: (&(|(objectClass=person)(objectClass=groupOfNames))(l=Armonk)) + contactSearchScope: sub + name: Armonk + usedForSync: + defaultValue: false + protected: true + usedInPicker: + defaultValue: true + protected: false + isDeletedSupport: false + ldapClientId: contactsLdapClient + mappings: ucs + maxPageSize: 500 + name: Example Address Lists + other: + folders: + mode: static + shownInTree: + defaultValue: true + protected: false + static: + commonContactFilter: (&(univentionObjectType=users/user)(isOxUser=OK)(!(o=*))) + folders: + - contactFilter: (&(univentionObjectType=users/user)(isOxUser=OK)(!(o=*))) + name: Ohne Organisation + usedForSync: + defaultValue: false + protected: true + usedInPicker: + defaultValue: true + protected: false + ldapClientId: contactsLdapClient + mappings: ucs + name: Other contacts +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ui-middleware-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-ui-middleware +data: + config.yaml: | + baseUrls: + - http://open-xchange-core-ui/manifest.json + - http://open-xchange-core-guidedtours/manifest.json + - http://open-xchange-guard-ui/manifest.json + - http://open-xchange-nextcloud-integration-ui/manifest.json + - http://open-xchange-public-sector-ui/manifest.json +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: open-xchange-core-mw + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +rules: +- apiGroups: + - '' + resources: + - pods + - secrets + - services + verbs: + - get + - list +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: open-xchange-core-mw + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: open-xchange-core-mw +subjects: +- kind: ServiceAccount + name: open-xchange-core-mw + namespace: tn-openbsw-opendesk +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-documentconverter + labels: + app.kubernetes.io/name: core-documentconverter + helm.sh/chart: core-documentconverter-2.26.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-documentconverter + version: 8.28.0 +spec: + type: ClusterIP + ports: + - port: 8008 + targetPort: 8008 + protocol: TCP + name: http + - port: 8011 + targetPort: 8011 + protocol: TCP + name: https + - port: 8017 + targetPort: 8017 + protocol: TCP + name: http-live + selector: + app.kubernetes.io/name: core-documentconverter + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-guidedtours/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-guidedtours + labels: + app.kubernetes.io/name: core-guidedtours + helm.sh/chart: core-guidedtours-2.6.7 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-guidedtours + version: 8.6.6 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8080 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: core-guidedtours + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-imageconverter + labels: + app.kubernetes.io/name: core-imageconverter + helm.sh/chart: core-imageconverter-2.27.4 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-imageconverter + version: 8.28.0 +spec: + type: ClusterIP + ports: + - port: 8005 + targetPort: 8005 + protocol: TCP + name: http + - port: 8014 + targetPort: 8014 + protocol: TCP + name: https + - port: 8018 + targetPort: 8018 + protocol: TCP + name: http-live + + selector: + app.kubernetes.io/name: core-imageconverter + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/charts/gotenberg/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-gotenberg + labels: + helm.sh/chart: gotenberg-1.1.0 + app.kubernetes.io/name: gotenberg + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: 8.1.0 + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: gotenberg + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-mw-hazelcast-headless + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +spec: + type: ClusterIP + clusterIP: None + ports: + - name: tcp-hazelcast + port: 5701 + selector: + app.kubernetes.io/name: core-mw + app.kubernetes.io/instance: open-xchange + roles.middleware.open-xchange.com/hazelcast-data-holding: 'true' +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-mw-http-api + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +spec: + type: ClusterIP + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/name: core-mw + app.kubernetes.io/instance: open-xchange + roles.middleware.open-xchange.com/http-api: 'true' +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-mw-sync + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +spec: + type: ClusterIP + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/name: core-mw + app.kubernetes.io/instance: open-xchange + roles.middleware.open-xchange.com/sync: 'true' +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-mw-admin + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +spec: + type: ClusterIP + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/name: core-mw + app.kubernetes.io/instance: open-xchange + roles.middleware.open-xchange.com/admin: 'true' +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-mw-businessmobility + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +spec: + type: ClusterIP + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/name: core-mw + app.kubernetes.io/instance: open-xchange + roles.middleware.open-xchange.com/businessmobility: 'true' +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-mw-request-analyzer + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 +spec: + type: ClusterIP + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app.kubernetes.io/name: core-mw + app.kubernetes.io/instance: open-xchange + roles.middleware.open-xchange.com/request-analyzer: 'true' +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-ui-middleware + labels: + grafana.ox.io/service-monitor-implementation: default + app.kubernetes.io/name: core-ui-middleware + helm.sh/chart: core-ui-middleware-3.0.10 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui-middleware + version: 2.0.4 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + - port: 9090 + targetPort: tcp-monitoring + protocol: TCP + name: monitoring + selector: + app.kubernetes.io/name: core-ui-middleware + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-ui/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-ui + labels: + app.kubernetes.io/name: core-ui + helm.sh/chart: core-ui-2.30.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui + version: 8.28.0 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8080 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: core-ui + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-user-guide/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-core-user-guide + labels: + app.kubernetes.io/name: core-user-guide + helm.sh/chart: core-user-guide-2.28.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-user-guide + version: 8.28.0 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8080 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: core-user-guide + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/appsuite/charts/guard-ui/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-guard-ui + labels: + app.kubernetes.io/name: guard-ui + helm.sh/chart: guard-ui-2.5.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: guard-ui + version: 8.28.0 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: guard-ui + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/nextcloud-integration-ui/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-nextcloud-integration-ui + labels: + app.kubernetes.io/name: nextcloud-integration-ui + helm.sh/chart: nextcloud-integration-ui-1.2.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: nextcloud-integration-ui + version: 1.2.0 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8080 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: nextcloud-integration-ui + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/public-sector-ui/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: open-xchange-public-sector-ui + labels: + app.kubernetes.io/name: public-sector-ui + helm.sh/chart: public-sector-ui-2.3.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: public-sector-ui + version: 2.3.0 +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8080 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: public-sector-ui + app.kubernetes.io/instance: open-xchange +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-core-documentconverter + labels: + app.kubernetes.io/name: core-documentconverter + helm.sh/chart: core-documentconverter-2.26.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-documentconverter + version: 8.28.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-documentconverter + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/backend: 8e83ad228c912acbdb927f7a0aced02cc6ec7a39 + commit.open-xchange.com/documentconverter: b6b2cf3606537205c59a1d245067212ccffb3426 + commit.open-xchange.com/documentconverter-api: eac2c9cf393a5e33f1a13c5b8544c207226f86a6 + logging.open-xchange.com/format: appsuite-json + checksum/commonEnv: 6a6e279f6d52a7570f0f7adad6cb64b0c20eed94472865dad4a1803d138b5a60 + labels: + app.kubernetes.io/name: core-documentconverter + app.kubernetes.io/instance: open-xchange + app: core-documentconverter + version: 8.28.0 + spec: + imagePullSecrets: [] + serviceAccountName: default + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: main + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 987 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter:8.28.49@sha256:0b45243cb2b6453b4073f4b80f205873fff49d8ed93f05c55971d728aa957e07 + imagePullPolicy: IfNotPresent + env: + - name: CONSOLELOG + value: /dev/tty + - name: DC_JVM_HEAP_SIZE_MB + value: '768' + - name: DC_JVM_HEAP_MIN_RAM_PERCENTAGE + value: + - name: DC_JVM_HEAP_MAX_RAM_PERCENTAGE + value: + - name: RELEASE_NAMESPACE + value: open-xchange + - name: OX_BLACKLISTED_PACKAGES + value: none + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + envFrom: + - secretRef: + name: open-xchange-common-env + - secretRef: + name: open-xchange-core-documentconverter-envvars + ports: + - name: http + containerPort: 8008 + protocol: TCP + - name: https + containerPort: 8011 + protocol: TCP + - name: http-live + containerPort: 8017 + protocol: TCP + livenessProbe: + httpGet: + path: /live + port: http-live + failureThreshold: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: /documentconverterws + port: http + failureThreshold: 2 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 5 + startupProbe: + httpGet: + path: /live + port: http-live + failureThreshold: 30 + initialDelaySeconds: 30 + periodSeconds: 10 + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.25 + memory: 1.25Gi + volumeMounts: + - name: db-config + mountPath: /opt/open-xchange/etc/configdb.properties + subPath: configdb.properties + - name: log-config + mountPath: /opt/open-xchange/etc/logback.xml + subPath: logback.xml + - name: dc-config + mountPath: /opt/open-xchange/etc2/dcconfig.properties + subPath: dcconfig.properties + - name: dc-logs + mountPath: /var/log/open-xchange/documentconverter + - name: dc-spool + mountPath: /var/spool/open-xchange + - name: dc-urlallow + mountPath: /opt/open-xchange/etc/readerengine.whitelist + subPath: readerengine.whitelist + - name: dc-urldeny + mountPath: /opt/open-xchange/etc/readerengine.blacklist + subPath: readerengine.blacklist + volumes: + - name: db-config + configMap: + name: open-xchange-core-documentconverter-dc-configmap + items: + - key: configdb.properties + path: configdb.properties + - name: log-config + configMap: + name: open-xchange-core-documentconverter-dc-configmap + items: + - key: logback.xml + path: logback.xml + - name: dc-config + configMap: + name: open-xchange-core-documentconverter-dc-configmap + items: + - key: dcconfig.properties + path: dcconfig.properties + - name: dc-logs + emptyDir: {} + - name: dc-spool + emptyDir: {} + - name: dc-urlallow + configMap: + name: open-xchange-core-documentconverter-dc-configmap + items: + - key: readerengine.whitelist + path: readerengine.whitelist + - name: dc-urldeny + configMap: + name: open-xchange-core-documentconverter-dc-configmap + items: + - key: readerengine.blacklist + path: readerengine.blacklist +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-guidedtours/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-core-guidedtours + labels: + app.kubernetes.io/name: core-guidedtours + helm.sh/chart: core-guidedtours-2.6.7 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-guidedtours + version: 8.6.6 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-guidedtours + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/core-guidedtours: ae6b84c50b8de374b3b61033c26047d82a25d7fb + labels: + app.kubernetes.io/name: core-guidedtours + helm.sh/chart: core-guidedtours-2.6.7 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-guidedtours + version: 8.6.6 + spec: + imagePullSecrets: [] + serviceAccountName: default + securityContext: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: main + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours:8.6.6@sha256:3082f3259a03025c03f6b9b77fafcd5b9e391ae5ac4a47b47d5f546d4f1534ee + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: 8080 + failureThreshold: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: / + port: 8080 + failureThreshold: 2 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 5 + resources: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + volumeMounts: + - mountPath: /tmp + name: tmp + volumes: + - name: tmp + emptyDir: {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-core-imageconverter + labels: + app.kubernetes.io/name: core-imageconverter + helm.sh/chart: core-imageconverter-2.27.4 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-imageconverter + version: 8.28.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-imageconverter + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/backend: 8e83ad228c912acbdb927f7a0aced02cc6ec7a39 + commit.open-xchange.com/imageconverter: cdaef07dec56eb2762baac82dc7a9e7ed0d05e29 + logging.open-xchange.com/format: appsuite-json + checksum/commonEnv: ce5f68442ff7e4d6508b346db82ab342b351cbdef35982c9e6429a9d231af4e7 + labels: + app.kubernetes.io/name: core-imageconverter + app.kubernetes.io/instance: open-xchange + app: core-imageconverter + version: 8.28.0 + spec: + imagePullSecrets: [] + serviceAccountName: default + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: main + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 987 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter:8.28.49@sha256:90d2f7defae974d115654986acb2035e38bb16a9daa9b2bf15078d48c0c24366 + imagePullPolicy: IfNotPresent + env: + - name: CONSOLELOG + value: /dev/tty + - name: IC_JVM_HEAP_SIZE_MB + value: '1024' + - name: RELEASE_NAMESPACE + value: open-xchange + - name: OX_BLACKLISTED_PACKAGES + value: none + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: OXENV_OBJECTSTOREID + value: + envFrom: + - secretRef: + name: open-xchange-common-env + - secretRef: + name: open-xchange-core-imageconverter-envvars + ports: + - name: http + containerPort: 8005 + protocol: TCP + - name: https + containerPort: 8014 + protocol: TCP + - name: http-live + containerPort: 8018 + protocol: TCP + startupProbe: + httpGet: + path: /live + port: http-live + failureThreshold: 30 + initialDelaySeconds: 30 + periodSeconds: 10 + livenessProbe: + httpGet: + path: /live + port: http-live + failureThreshold: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: /imageconverter + port: http + failureThreshold: 2 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 5 + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.5 + memory: 1.25Gi + volumeMounts: + - name: db-config + mountPath: /opt/open-xchange/etc/configdb.properties + subPath: configdb.properties + - name: log-config + mountPath: /opt/open-xchange/etc/logback.xml + subPath: logback.xml + - name: ic-config + mountPath: /opt/open-xchange/etc2/icconfig.properties + subPath: icconfig.properties + - name: ic-logs + mountPath: /var/log/open-xchange/imageconverter + - name: ic-spool + mountPath: /var/spool/open-xchange + volumes: + - name: db-config + configMap: + name: open-xchange-core-imageconverter-ic-configmap + items: + - key: configdb.properties + path: configdb.properties + - name: log-config + configMap: + name: open-xchange-core-imageconverter-ic-configmap + items: + - key: logback.xml + path: logback.xml + - name: ic-config + configMap: + name: open-xchange-core-imageconverter-ic-configmap + items: + - key: icconfig.properties + path: icconfig.properties + - name: ic-logs + emptyDir: {} + - name: ic-spool + emptyDir: {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/charts/gotenberg/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-gotenberg + labels: + helm.sh/chart: gotenberg-1.1.0 + app.kubernetes.io/name: gotenberg + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: 8.1.0 + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: gotenberg + app.kubernetes.io/instance: open-xchange + template: + metadata: + labels: + app.kubernetes.io/name: gotenberg + app.kubernetes.io/instance: open-xchange + spec: + serviceAccountName: default + securityContext: {} + containers: + - name: gotenberg + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg:8.2.0@sha256:ec5afe8eea496d3bef6c42291fde9c203c20e8a68189a2314ef876e9c0e67680 + imagePullPolicy: IfNotPresent + args: + - gotenberg + - --api-port=3000 + - --chromium-disable-javascript + - --gotenberg-graceful-shutdown-duration=30s + ports: + - name: http + containerPort: 3000 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: http + readinessProbe: + httpGet: + path: /health + port: http + resources: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.05 + memory: 32Mi + volumeMounts: + - mountPath: /tmp + name: tmp-volume + terminationGracePeriodSeconds: 30 + volumes: + - emptyDir: + medium: Memory + sizeLimit: 256Mi + name: tmp-volume +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-core-ui-middleware + labels: + app.kubernetes.io/name: core-ui-middleware + helm.sh/chart: core-ui-middleware-3.0.10 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui-middleware + version: 2.0.4 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-ui-middleware + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/core-ui-middleware: 630571ae69f657f8eef6218c5aa2204c33540c32 + logging.open-xchange.com/format: appsuite-json + labels: + app.kubernetes.io/name: core-ui-middleware + app.kubernetes.io/instance: open-xchange + app: core-ui-middleware + version: 2.0.4 + spec: + imagePullSecrets: [] + serviceAccountName: default + securityContext: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: main + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware:2.0.4@sha256:e1d647cca13e7c433a9d643aa1a350197511274b239ead100aa1682ffe2fa116 + imagePullPolicy: IfNotPresent + env: + - name: CACHE_TTL + value: '30000' + - name: LOG_LEVEL + value: info + - name: APP_ROOT + value: /appsuite/ + - name: COMPRESS_FILE_SIZE + value: '600' + - name: COMPRESS_FILE_TYPES + value: application/javascript application/json application/x-javascript + application/xml application/xml+rss text/css text/html text/javascript + text/plain text/xml image/svg+xml + - name: SLOW_REQUEST_THRESHOLD + value: '4000' + - name: REDIS_MODE + value: standalone + - name: REDIS_HOSTS + value: redis-master:6379 + - name: REDIS_DB + value: '0' + - name: REDIS_USERNAME + valueFrom: + secretKeyRef: + name: open-xchange-core-ui-middleware-redis + key: username + - name: REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: open-xchange-core-ui-middleware-redis + key: password + - name: REDIS_PREFIX + value: ui-middleware + - name: REDIS_TLS_ENABLED + value: 'false' + ports: + - name: http + containerPort: 8080 + protocol: TCP + - name: tcp-monitoring + containerPort: 9090 + protocol: TCP + livenessProbe: + httpGet: + path: /live + port: 9000 + failureThreshold: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: /ready + port: 9000 + failureThreshold: 2 + initialDelaySeconds: 1 + periodSeconds: 5 + timeoutSeconds: 5 + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.5 + memory: 192Mi + volumeMounts: + - name: manifest-config + mountPath: /app/config/ + volumes: + - name: manifest-config + configMap: + name: open-xchange-core-ui-middleware +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-ui-middleware/templates/updater.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-core-ui-middleware-updater + labels: + app.kubernetes.io/name: core-ui-middleware + helm.sh/chart: core-ui-middleware-3.0.10 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui-middleware + version: 2.0.4 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-ui-middleware + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/core-ui-middleware: 630571ae69f657f8eef6218c5aa2204c33540c32 + logging.open-xchange.com/format: appsuite-json + labels: + app.kubernetes.io/name: core-ui-middleware + app.kubernetes.io/instance: open-xchange + app: core-ui-middleware + version: 2.0.4 + spec: + imagePullSecrets: [] + serviceAccountName: default + securityContext: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: main + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware:2.0.4@sha256:e1d647cca13e7c433a9d643aa1a350197511274b239ead100aa1682ffe2fa116 + command: [/nodejs/bin/node, src/updater.js] + imagePullPolicy: IfNotPresent + env: + - name: CACHE_TTL + value: '30000' + - name: LOG_LEVEL + value: info + - name: APP_ROOT + value: /appsuite/ + - name: COMPRESS_FILE_SIZE + value: '600' + - name: COMPRESS_FILE_TYPES + value: application/javascript application/json application/x-javascript + application/xml application/xml+rss text/css text/html text/javascript + text/plain text/xml image/svg+xml + - name: SLOW_REQUEST_THRESHOLD + value: '4000' + - name: REDIS_MODE + value: standalone + - name: REDIS_HOSTS + value: redis-master:6379 + - name: REDIS_DB + value: '0' + - name: REDIS_USERNAME + valueFrom: + secretKeyRef: + name: open-xchange-core-ui-middleware-redis + key: username + - name: REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: open-xchange-core-ui-middleware-redis + key: password + - name: REDIS_PREFIX + value: ui-middleware + - name: REDIS_TLS_ENABLED + value: 'false' + ports: + - name: tcp-monitoring + containerPort: 9090 + protocol: TCP + livenessProbe: + httpGet: + path: /live + port: 9000 + failureThreshold: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: /ready + port: 9000 + failureThreshold: 2 + initialDelaySeconds: 1 + periodSeconds: 5 + timeoutSeconds: 5 + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.5 + memory: 192Mi + volumeMounts: + - name: manifest-config + mountPath: /app/config/ + volumes: + - name: manifest-config + configMap: + name: open-xchange-core-ui-middleware +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-ui/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-core-ui + labels: + app.kubernetes.io/name: core-ui + helm.sh/chart: core-ui-2.30.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui + version: 8.28.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-ui + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/core-ui: 15e1f6d46e3a13af9712fc0d3cf2ad8b49b9aa73 + labels: + app.kubernetes.io/name: core-ui + app.kubernetes.io/instance: open-xchange + app: core-ui + version: 8.28.0 + spec: + imagePullSecrets: [] + serviceAccountName: default + securityContext: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: main + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui:8.28.1@sha256:be9cfb5a1d9389a151b057884857ddebba982cfde621e432c55a17c03fff28d0 + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + volumeMounts: + - mountPath: /tmp + name: tmp + volumes: + - name: tmp + emptyDir: {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-user-guide/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-core-user-guide + labels: + app.kubernetes.io/name: core-user-guide + helm.sh/chart: core-user-guide-2.28.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-user-guide + version: 8.28.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-user-guide + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/core-user-guide: fb5de4583d386e1d1f2dc79d247037a67cefa943 + labels: + app.kubernetes.io/name: core-user-guide + app.kubernetes.io/instance: open-xchange + spec: + imagePullSecrets: [] + serviceAccountName: default + securityContext: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: main + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide:8.28.1107609@sha256:96a700ef71b4c723146ed0a274482422e09f5a9ccd035c351e192ea4de81eb9f + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: 8080 + failureThreshold: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: / + port: 8080 + failureThreshold: 2 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 5 + resources: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.02 + memory: 32Mi + volumeMounts: + - mountPath: /tmp + name: tmp + volumes: + - name: tmp + emptyDir: {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/guard-ui/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-guard-ui + labels: + app.kubernetes.io/name: guard-ui + helm.sh/chart: guard-ui-2.5.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: guard-ui + version: 8.28.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: guard-ui + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/guard-ui: 8adc97b8a855554a4a069ebe43be0c42d5da5acf + labels: + app.kubernetes.io/name: guard-ui + helm.sh/chart: guard-ui-2.5.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: guard-ui + version: 8.28.0 + spec: + imagePullSecrets: [] + serviceAccountName: default + securityContext: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: guard-ui + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui:8.28.0@sha256:950dd4ec4633fb920502392e8e93d9f497eaf920ae4fe79629b53a835f129741 + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + volumeMounts: + - mountPath: /tmp + name: tmp + volumes: + - name: tmp + emptyDir: {} +--- +# Source: appsuite-public-sector/charts/nextcloud-integration-ui/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-nextcloud-integration-ui + labels: + app.kubernetes.io/name: nextcloud-integration-ui + helm.sh/chart: nextcloud-integration-ui-1.2.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: nextcloud-integration-ui + version: 1.2.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: nextcloud-integration-ui + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/nextcloud-integration-ui: e1cdf2b55247bf7933b796480b7774298e58e622 + labels: + app.kubernetes.io/name: nextcloud-integration-ui + helm.sh/chart: nextcloud-integration-ui-1.2.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: nextcloud-integration-ui + version: 1.2.0 + spec: + imagePullSecrets: [] + serviceAccountName: default + securityContext: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: main + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui:1.2.0@sha256:3d0ef11196f7544a01539e6790e4402ad69e2a501312eb7c7bb128c6563d0a8d + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: 8080 + failureThreshold: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: / + port: 8080 + failureThreshold: 2 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 5 + resources: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + volumeMounts: + - mountPath: /tmp + name: tmp + volumes: + - name: tmp + emptyDir: {} +--- +# Source: appsuite-public-sector/charts/public-sector-ui/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: open-xchange-public-sector-ui + labels: + app.kubernetes.io/name: public-sector-ui + helm.sh/chart: public-sector-ui-2.3.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: public-sector-ui + version: 2.3.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: public-sector-ui + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + commit.open-xchange.com/public-sector-ui: f63b081469eddede5f35c9d05eb2528f41d89d50 + labels: + app.kubernetes.io/name: public-sector-ui + helm.sh/chart: public-sector-ui-2.3.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: public-sector-ui + version: 2.3.0 + spec: + imagePullSecrets: [] + serviceAccountName: default + securityContext: + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + nodeSelector: {} + affinity: {} + tolerations: [] + containers: + - name: main + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui:2.3.0@sha256:a557816ee55500ecc3b46b60f0440ea66c7f0d90e888ce3b0df8a9acdd72acbe + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: 8080 + failureThreshold: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: / + port: 8080 + failureThreshold: 2 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 5 + resources: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + volumeMounts: + - mountPath: /tmp + name: tmp + volumes: + - name: tmp + emptyDir: {} +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/deployment.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: open-xchange-core-mw-default + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-5.9.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.28.5 + roles.middleware.open-xchange.com/hazelcast-data-holding: 'true' + roles.middleware.open-xchange.com/http-api: 'true' + roles.middleware.open-xchange.com/sync: 'true' + roles.middleware.open-xchange.com/admin: 'true' + roles.middleware.open-xchange.com/businessmobility: 'true' + roles.middleware.open-xchange.com/request-analyzer: 'true' + +spec: + serviceName: open-xchange-core-mw-hazelcast-headless + podManagementPolicy: OrderedReady + volumeClaimTemplates: [] + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-mw + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + + commit.open-xchange.com/backend: 8e83ad228c912acbdb927f7a0aced02cc6ec7a39 + commit.open-xchange.com/documentconverter-api: eac2c9cf393a5e33f1a13c5b8544c207226f86a6 + commit.open-xchange.com/exchange-interop: b67d1ab1ddc782452678873f9fd2a432529e8bda + commit.open-xchange.com/guard: 9625a840ff9ef8a2a262fbfcdf6b390d11f1c55e + commit.open-xchange.com/imageconverter: cdaef07dec56eb2762baac82dc7a9e7ed0d05e29 + commit.open-xchange.com/nextcloud-integration: b1980e5fccade85528d740889971d9cf1120052f + commit.open-xchange.com/office: dfa0e72788dcfb6f3327bc655159406bae4d3b62 + commit.open-xchange.com/public-sector: 5bbe7fd702fbda60bdcb367ec2abf358833cbd7b + commit.open-xchange.com/weakforced: d05c7b48f8a3fd2b87ec2074651aa0508d7bfacf + logging.open-xchange.com/format: appsuite-json + checksum/allConfig: baa789697b1dd10320a0bc7f0c96c81ab21c3b67764da0d092e847ba8e51b31 + checksum/commonEnv: 0b469be00f5e25cb1605a0c21246d64cd63fa2c7d07a01c5d83b839183663aec + labels: + app.kubernetes.io/name: core-mw + app.kubernetes.io/instance: open-xchange + app: core-mw + version: 8.28.5 + roles.middleware.open-xchange.com/hazelcast-data-holding: 'true' + roles.middleware.open-xchange.com/http-api: 'true' + roles.middleware.open-xchange.com/sync: 'true' + roles.middleware.open-xchange.com/admin: 'true' + roles.middleware.open-xchange.com/businessmobility: 'true' + roles.middleware.open-xchange.com/request-analyzer: 'true' + + spec: + imagePullSecrets: [] + serviceAccountName: open-xchange-core-mw + nodeSelector: {} + affinity: {} + tolerations: [] + terminationGracePeriodSeconds: 120 + initContainers: + - name: init-middleware + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector:8.28.50@sha256:38447bd607c497977a5ba9189d957eebe7f82f09fa329ebc38c0785c70b04558 + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + command: + - /bin/bash + - -c + - |2 + + echo -e "Checking for the availability of MySQL Server deployment" + while ! nc -z -w 5 "${MYSQL_HOST}" "${MYSQL_PORT}"; do + printf "-" + done + echo -e " >> MySQL Server is up & running" + env: + - name: MYSQL_ROOT_PASSWORD + value: '' + - name: HZ_LITE_MEMBER + value: 'false' + - name: SERVER_NAME + value: server + - name: RELEASE_NAMESPACE + value: tn-openbsw-opendesk + - name: OX_LOG_TO_CONSOLE + value: 'true' + - name: OX_BLACKLISTED_PACKAGES + value: open-xchange-admin-autocontextid open-xchange-admin-reseller open-xchange-admin-soap-reseller + open-xchange-authentication-database open-xchange-authentication-imap + open-xchange-authentication-ldap open-xchange-authentication-masterpassword + open-xchange-cassandra open-xchange-dataretention-csv open-xchange-documents-backend + open-xchange-eas-provisioning open-xchange-eas-provisioning-mail open-xchange-eas-provisioning-sms + open-xchange-hostname-config-cascade open-xchange-hostname-ldap open-xchange-multifactor + open-xchange-omf-source open-xchange-omf-source-dualprovisioning open-xchange-omf-source-dualprovisioning-cloudplugins + open-xchange-omf-source-guard open-xchange-omf-source-mailfilter open-xchange-parallels + open-xchange-passwordchange-script open-xchange-plugins-antiphishing open-xchange-plugins-antiphishing-vadesecure + open-xchange-plugins-blackwhitelist open-xchange-plugins-blackwhitelist-sieve + open-xchange-plugins-contact-storage-group open-xchange-plugins-contact-whitelist-sync + open-xchange-plugins-mx-checker open-xchange-plugins-onboarding-maillogin + open-xchange-plugins-trustedidentity open-xchange-plugins-unsubscribe + open-xchange-plugins-unsubscribe-vadesecure open-xchange-saml-core open-xchange-sms-sipgate + open-xchange-sms-twilio open-xchange-spamhandler-parallels open-xchange-sso + open-xchange-weakforced + - name: OX_APPSUITE_APPROOT + value: /appsuite + - name: HZ_SERVICE_DNS + value: open-xchange-core-mw-hazelcast-headless.tn-openbsw-opendesk.svc.cluster.local + - name: DCS_SERVICENAME + value: open-xchange-core-documents-collaboration + - name: DC_SERVER_URL + value: + http://open-xchange-core-documentconverter.tn-openbsw-opendesk.svc.cluster.local:8008/documentconverterws + - name: IC_SERVER_URL + value: + http://open-xchange-core-imageconverter.tn-openbsw-opendesk.svc.cluster.local:8005/imageconverter + - name: SPELLCHECK_SERVER_URL + value: http://open-xchange-core-spellcheck.tn-openbsw-opendesk.svc.cluster.local:8003 + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: HELM_RELEASE_NAME + value: open-xchange + - name: JAVA_OPTS_MEMORY_MAXHEAP + value: -XX:MaxHeapSize=2048M + envFrom: + - secretRef: + name: open-xchange-core-mw-mysql + - secretRef: + name: open-xchange-common-env + - secretRef: + name: open-xchange-core-mw-secret-envvars + volumeMounts: + + - name: logs-default + mountPath: /var/log/open-xchange + - name: spool-default + mountPath: /var/spool/open-xchange/ + - name: properties-lean-default + mountPath: /opt/open-xchange/etc/logback.xml + subPath: logback.xml + - name: properties-lean-default + mountPath: /opt/open-xchange/etc/languages/appsuite/languages.properties + subPath: languages.properties + - name: properties-lean-default + mountPath: /opt/open-xchange/etc/properties-lean-config.properties + subPath: properties-lean-config.properties + - name: properties-default + mountPath: /injections/configuration/properties + - name: properties-overwrite-default + mountPath: /injections/configuration/properties-overwrite + - name: ui-settings-default + mountPath: /injections/configuration/ui-settings + - name: meta-default + mountPath: /injections/etc/meta/meta + - name: etc-files-default + mountPath: /injections/etc/etc + - name: etc-secrets-default + mountPath: /injections/etc/secretEtc + - name: yaml-files-default + mountPath: /injections/etc/yaml + - name: yaml-secrets-default + mountPath: /injections/etc/secretYaml + - name: as-config-default + mountPath: /injections/etc/as-config + - name: context-sets-default + mountPath: /injections/etc/context-sets/contextSets + - name: start-hooks-default + mountPath: /hooks/start/helm/ + - name: before-apply-hooks-default + mountPath: /hooks/beforeApply/helm/ + - name: before-appsuite-start-hooks-default + mountPath: /hooks/beforeAppsuiteStart/helm/ + + containers: + - name: core-mw + image: + registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector:8.28.50@sha256:38447bd607c497977a5ba9189d957eebe7f82f09fa329ebc38c0785c70b04558 + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + ports: + - containerPort: 8009 + name: http + livenessProbe: + initialDelaySeconds: + periodSeconds: 10 + failureThreshold: 15 + timeoutSeconds: + httpGet: + path: /live + port: 8016 + scheme: HTTP + startupProbe: + initialDelaySeconds: 30 + periodSeconds: 10 + failureThreshold: 30 + timeoutSeconds: + httpGet: + path: /health + port: 8009 + scheme: HTTP + readinessProbe: + initialDelaySeconds: 30 + periodSeconds: 5 + failureThreshold: 2 + timeoutSeconds: 5 + httpGet: + path: /ready + port: 8009 + scheme: HTTP + env: + - name: MYSQL_ROOT_PASSWORD + value: '' + - name: SERVER_NAME + value: server + - name: RELEASE_NAMESPACE + value: tn-openbsw-opendesk + - name: OX_LOG_TO_CONSOLE + value: 'true' + - name: OX_BLACKLISTED_PACKAGES + value: open-xchange-admin-autocontextid open-xchange-admin-reseller open-xchange-admin-soap-reseller + open-xchange-authentication-database open-xchange-authentication-imap + open-xchange-authentication-ldap open-xchange-authentication-masterpassword + open-xchange-cassandra open-xchange-dataretention-csv open-xchange-documents-backend + open-xchange-eas-provisioning open-xchange-eas-provisioning-mail open-xchange-eas-provisioning-sms + open-xchange-hostname-config-cascade open-xchange-hostname-ldap open-xchange-multifactor + open-xchange-omf-source open-xchange-omf-source-dualprovisioning open-xchange-omf-source-dualprovisioning-cloudplugins + open-xchange-omf-source-guard open-xchange-omf-source-mailfilter open-xchange-parallels + open-xchange-passwordchange-script open-xchange-plugins-antiphishing open-xchange-plugins-antiphishing-vadesecure + open-xchange-plugins-blackwhitelist open-xchange-plugins-blackwhitelist-sieve + open-xchange-plugins-contact-storage-group open-xchange-plugins-contact-whitelist-sync + open-xchange-plugins-mx-checker open-xchange-plugins-onboarding-maillogin + open-xchange-plugins-trustedidentity open-xchange-plugins-unsubscribe + open-xchange-plugins-unsubscribe-vadesecure open-xchange-saml-core open-xchange-sms-sipgate + open-xchange-sms-twilio open-xchange-spamhandler-parallels open-xchange-sso + open-xchange-weakforced + - name: OX_APPSUITE_APPROOT + value: /appsuite + - name: HZ_SERVICE_DNS + value: open-xchange-core-mw-hazelcast-headless.tn-openbsw-opendesk.svc.cluster.local + - name: DCS_SERVICENAME + value: open-xchange-core-documents-collaboration + - name: DC_SERVER_URL + value: + http://open-xchange-core-documentconverter.tn-openbsw-opendesk.svc.cluster.local:8008/documentconverterws + - name: IC_SERVER_URL + value: + http://open-xchange-core-imageconverter.tn-openbsw-opendesk.svc.cluster.local:8005/imageconverter + - name: SPELLCHECK_SERVER_URL + value: http://open-xchange-core-spellcheck.tn-openbsw-opendesk.svc.cluster.local:8003 + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: HELM_RELEASE_NAME + value: open-xchange + - name: HZ_LITE_MEMBER + value: 'false' + - name: JAVA_OPTS_MEMORY_MAXHEAP + value: -XX:MaxHeapSize=2048M + envFrom: + - secretRef: + name: open-xchange-core-mw-mysql + - secretRef: + name: open-xchange-common-env + - secretRef: + name: open-xchange-core-mw-secret-envvars + resources: + limits: + cpu: 99 + memory: 8Gi + requests: + cpu: 1 + memory: 1.25Gi + volumeMounts: + + - name: logs-default + mountPath: /var/log/open-xchange + - name: spool-default + mountPath: /var/spool/open-xchange/ + - name: properties-lean-default + mountPath: /opt/open-xchange/etc/logback.xml + subPath: logback.xml + - name: properties-lean-default + mountPath: /opt/open-xchange/etc/languages/appsuite/languages.properties + subPath: languages.properties + - name: properties-lean-default + mountPath: /opt/open-xchange/etc/properties-lean-config.properties + subPath: properties-lean-config.properties + - name: properties-default + mountPath: /injections/configuration/properties + - name: properties-overwrite-default + mountPath: /injections/configuration/properties-overwrite + - name: ui-settings-default + mountPath: /injections/configuration/ui-settings + - name: meta-default + mountPath: /injections/etc/meta/meta + - name: etc-files-default + mountPath: /injections/etc/etc + - name: etc-secrets-default + mountPath: /injections/etc/secretEtc + - name: yaml-files-default + mountPath: /injections/etc/yaml + - name: yaml-secrets-default + mountPath: /injections/etc/secretYaml + - name: as-config-default + mountPath: /injections/etc/as-config + - name: context-sets-default + mountPath: /injections/etc/context-sets/contextSets + - name: start-hooks-default + mountPath: /hooks/start/helm/ + - name: before-apply-hooks-default + mountPath: /hooks/beforeApply/helm/ + - name: before-appsuite-start-hooks-default + mountPath: /hooks/beforeAppsuiteStart/helm/ + + - name: drive-restricted-config + mountPath: /opt/open-xchange/etc/pushClientConfig/drive-restricted-config.yaml + readOnly: true + - name: drive-restricted-fcm-keystore + mountPath: /opt/open-xchange/etc/pushClientConfig/drive-mobile-android + readOnly: true + - name: mobile-api-facade-restricted-config + mountPath: /opt/open-xchange/etc/pushClientConfig/mobile-api-facade-restricted-config.yaml + readOnly: true + + + volumes: + + - name: shared-default + emptyDir: {} + - name: properties-lean-default + configMap: + name: open-xchange-core-mw-properties-lean-configmap + items: + - key: logback.xml + path: logback.xml + - key: languages.properties + path: languages.properties + - key: properties-lean-config.properties + path: properties-lean-config.properties + - name: disabled-bundles-default + emptyDir: {} + - name: logs-default + emptyDir: {} + - name: spool-default + emptyDir: {} + - name: properties-default + projected: + sources: + - secret: + name: open-xchange-core-mw-properties-secret + - configMap: + name: open-xchange-core-mw-default-properties-configmap + - name: properties-overwrite-default + projected: + sources: + - configMap: + name: open-xchange-core-mw-default-properties-overwrite-configmap + - name: ui-settings-default + projected: + sources: + - secret: + name: open-xchange-core-mw-ui-settings-secret + - configMap: + name: open-xchange-core-mw-ui-settings-configmap + - name: meta-default + projected: + sources: + - configMap: + name: open-xchange-core-mw-meta-configmap + - name: etc-files-default + projected: + sources: + - configMap: + name: open-xchange-core-mw-etc-files-configmap + + - name: etc-secrets-default + projected: + sources: + - secret: + name: open-xchange-core-mw-etc-secrets-secret + + - name: yaml-files-default + projected: + sources: + - configMap: + name: open-xchange-core-mw-yaml-files-configmap + items: + + - key: contacts-provider-ldap-mappings.yml + path: contacts-provider-ldap-mappings.yml + + - key: contacts-provider-ldap.yml + path: contacts-provider-ldap.yml + + - name: yaml-secrets-default + projected: + sources: + - secret: + name: open-xchange-core-mw-yaml-secrets-secret + items: + + - key: ldap-client-config.yml + path: ldap-client-config.yml + + - name: context-sets-default + projected: + sources: + - secret: + name: open-xchange-core-mw-contextsets-secret + - configMap: + name: open-xchange-core-mw-contextsets-configmap + - name: as-config-default + projected: + sources: + - configMap: + name: open-xchange-core-mw-as-config-configmap + - name: start-hooks-default + configMap: + name: open-xchange-core-mw-hook-start-configmap + - name: before-apply-hooks-default + configMap: + name: open-xchange-core-mw-hook-before-apply-configmap + - name: before-appsuite-start-hooks-default + configMap: + name: open-xchange-core-mw-hook-before-appsuite-start-configmap + + - name: drive-restricted-config + secret: + secretName: drive-restricted-config + optional: true + - name: drive-restricted-fcm-keystore + secret: + secretName: drive-restricted-fcm-keystore + optional: true + - name: mobile-api-facade-restricted-config + secret: + secretName: mobile-api-facade-restricted-config + optional: true +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-appsuite-base +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /appsuite/ + pathType: Prefix + backend: + service: + name: open-xchange-core-ui-middleware + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-rootredirect + annotations: + nginx.ingress.kubernetes.io/app-root: /appsuite/ +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-ui-middleware + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-rest-routes-admin + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /admin + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-rest-routes-advertisement + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /advertisement + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-rest-routes-chronos + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /chronos + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-rest-routes-preliminary + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /preliminary + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-rest-routes-userfeedback + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /userfeedback + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-static-routes-servlet + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /servlet + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-static-routes-realtime + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /realtime + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-static-routes-infostore + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /infostore + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-static-routes-socket-io + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /socket.io + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-static-routes-webservices + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: appsuite-core-mw-http-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /webservices + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-drive-client-windows-ox-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: //$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: drive-client-windows-ox-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /api/drive/client/windows/ox/install/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-drive-client-windows-ox + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-guard-api-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /oxguard/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: guard-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /appsuite/api/oxguard/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-guard-support-api-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /guardsupport/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: guard-support-api-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /appsuite/api/guardsupport/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-guard-pgp-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /pgp/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: guard-pgp-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /pks/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-http-api-routes-api + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /appsuite/api/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: http-api-routes-api + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /api/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-http-api-routes-ajax + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /appsuite/api/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: http-api-routes-ajax + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /ajax/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-http-api-routes-appsuite-api + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /appsuite/api/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: http-api-routes-appsuite-api + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' + nginx.ingress.kubernetes.io/proxy-body-size: 100M + nginx.ingress.kubernetes.io/proxy-read-timeout: '60' + nginx.ingress.kubernetes.io/proxy-send-timeout: '60' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /appsuite/api/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-rt2-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /rt2/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: rt2-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /appsuite/rt2/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-http-api + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-documents-help-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /help-documents/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: documents-help-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /appsuite/help-documents/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-office-user-guide + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-drive-help-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /help/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: drive-help-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /appsuite/help-drive/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-drive-help + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-core-help-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /help/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: core-help-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /appsuite/help/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-user-guide + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-office-web-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /appsuite/$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: office-web-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /appsuite/office/(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-ui-middleware + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-caldav-well-known-redirect + annotations: + nginx.ingress.kubernetes.io/temporal-redirect: /caldav/ +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /.well-known/caldav + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-ui-middleware + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-carddav-well-known-redirect + annotations: + nginx.ingress.kubernetes.io/temporal-redirect: /carddav/ +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /.well-known/carddav + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-ui-middleware + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-dav-infostore-route + annotations: + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: authorization + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: /servlet/webdav.infostore/ + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-sync + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: open-xchange-appsuite-dav-root-route + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /servlet/dav//$1 + nginx.ingress.kubernetes.io/use-regex: 'true' + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/session-cookie-name: dav-root-route + nginx.ingress.kubernetes.io/session-cookie-change-on-failure: 'true' +spec: + + tls: + - hosts: + - webmail.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: webmail.opendesk.apps.digilab.network + http: + paths: + - path: //(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-sync + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-guidedtours/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: open-xchange-core-guidedtours-test-connection + labels: + helm.sh/chart: core-guidedtours-2.6.7 + app.kubernetes.io/name: core-guidedtours + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: 8.6.6 + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: test +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: [open-xchange-core-guidedtours:80] + restartPolicy: Never +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-ui/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: open-xchange-core-ui-test-connection + labels: + helm.sh/chart: core-ui-2.30.0 + app.kubernetes.io/name: core-ui + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: 8.28.0 + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: test +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: [open-xchange-core-ui:80] + restartPolicy: Never +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-user-guide/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: open-xchange-core-user-guide-test-connection + labels: + helm.sh/chart: core-user-guide-2.28.0 + app.kubernetes.io/name: core-user-guide + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: 8.28.0 + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: test +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: [open-xchange-core-user-guide:80] + restartPolicy: Never +--- +# Source: appsuite-public-sector/charts/nextcloud-integration-ui/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: open-xchange-nextcloud-integration-ui-test-connection + labels: + app.kubernetes.io/name: nextcloud-integration-ui + helm.sh/chart: nextcloud-integration-ui-1.2.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: nextcloud-integration-ui + version: 1.2.0 + annotations: + helm.sh/hook: test +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: [open-xchange-nextcloud-integration-ui:80] + restartPolicy: Never +--- +# Source: appsuite-public-sector/charts/public-sector-ui/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: open-xchange-public-sector-ui-test-connection + labels: + app.kubernetes.io/name: public-sector-ui + helm.sh/chart: public-sector-ui-2.3.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: public-sector-ui + version: 2.3.0 + annotations: + helm.sh/hook: test +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: [open-xchange-public-sector-ui:80] + restartPolicy: Never +--- +# Source: opendesk-open-xchange-bootstrap/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-open-xchange-bootstrap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: opendesk-open-xchange-bootstrap + helm.sh/chart: opendesk-open-xchange-bootstrap-2.1.2 + app.kubernetes.io/instance: opendesk-open-xchange-bootstrap + app.kubernetes.io/managed-by: Helm +--- +# Source: opendesk-open-xchange-bootstrap/templates/role.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + namespace: tn-openbsw-opendesk + name: opendesk-open-xchange-bootstrap +rules: + # needed to execute commands inside pod +- apiGroups: [''] + resources: + - pods + resourceNames: [open-xchange-core-mw-default-0] + verbs: [get] +- apiGroups: [''] + resources: + - pods/exec + resourceNames: [open-xchange-core-mw-default-0] + verbs: [create] + # needed to restart stateful set +- apiGroups: [apps] + resources: + - statefulsets + resourceNames: [open-xchange-core-mw-default] + verbs: [get, patch] +--- +# Source: opendesk-open-xchange-bootstrap/templates/rolebinding.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: opendesk-open-xchange-bootstrap + namespace: tn-openbsw-opendesk +roleRef: # points to the ClusterRole + apiGroup: rbac.authorization.k8s.io + kind: Role + name: opendesk-open-xchange-bootstrap +subjects: # points to the ServiceAccount +- kind: ServiceAccount + name: opendesk-open-xchange-bootstrap + namespace: tn-openbsw-opendesk # ns of service account +--- +# Source: opendesk-open-xchange-bootstrap/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: opendesk-open-xchange-bootstrap + labels: + app.kubernetes.io/name: opendesk-open-xchange-bootstrap + helm.sh/chart: opendesk-open-xchange-bootstrap-2.1.2 + app.kubernetes.io/instance: opendesk-open-xchange-bootstrap + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + ttlSecondsAfterFinished: 60 + template: + metadata: + labels: + app.kubernetes.io/name: opendesk-open-xchange-bootstrap + helm.sh/chart: opendesk-open-xchange-bootstrap-2.1.2 + app.kubernetes.io/instance: opendesk-open-xchange-bootstrap + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded + spec: + serviceAccountName: opendesk-open-xchange-bootstrap + containers: + - name: opendesk-open-xchange-bootstrap + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/alpine/k8s:1.26.8@sha256:acde24d2a8ebaafda76f464591a5ddc7d0acd08bb38b12560961c1b1c4fc85ec + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + env: + - name: NAMESPACE + value: tn-openbsw-opendesk + - name: CORE_MIDDLEWARE_STATEFULSET + value: open-xchange-core-mw-default + - name: CORE_MIDDLEWARE_POD + value: open-xchange-core-mw-default-0 + command: + - /bin/bash + - -c + - > + until kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c + core-mw + -- bash -c 'echo core-mw running...'; + do + echo "waiting for container core-mw to be alive..." + sleep 1 + done + + kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw + -- bash -c + "mkdir -p /opt/open-xchange/ox-filestore" + + kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw + -- bash -c + '/opt/open-xchange/sbin/initconfigdb + --configdb-user "${MYSQL_USER}" + --configdb-pass "${MYSQL_PASSWORD}" + --configdb-host "${MYSQL_HOST}" + --mysql-root-passwd "${MYSQL_PASSWORD}" + --configdb-dbname "${MYSQL_DATABASE}"' + || echo "error initconfigdb" + + kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw + -- bash -c + 'until nc -z localhost 8009; do echo "waiting for port 8009"; sleep 5; done' + + kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw + -- bash -c + '/opt/open-xchange/sbin/registerfilestore + -A "${MASTER_ADMIN_USER}" -P "${MASTER_ADMIN_PW}" + -t /opt/open-xchange/ox-filestore + -s "100000"' + || echo "error: registerfilestore" + + kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw + -- bash -c + '/opt/open-xchange/sbin/registerserver + -A "${MASTER_ADMIN_USER}" -P "${MASTER_ADMIN_PW}" + -n oxserver' + || echo "error: registerserver" + + kubectl exec --namespace="${NAMESPACE}" ${CORE_MIDDLEWARE_POD} -c core-mw + -- bash -c + '/opt/open-xchange/sbin/registerdatabase + -A "${MASTER_ADMIN_USER}" -P "${MASTER_ADMIN_PW}" + --name "PRIMARYDB" + --hostname "${MYSQL_HOST}" + --dbuser "${MYSQL_USER}" + --dbpasswd "${MYSQL_PASSWORD}" + --master true' + || echo "error: registerdatabase" + + kubectl --namespace="${NAMESPACE}" rollout restart statefulset ${CORE_MIDDLEWARE_STATEFULSET} + restartPolicy: Never + backoffLimit: 4 +--- +# Source: ox-connector/templates/serviceaccount.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023 Univention GmbH--- + +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ox-connector + labels: + app.kubernetes.io/name: ox-connector + helm.sh/chart: ox-connector-0.14.5 + app.kubernetes.io/instance: ox-connector + app.kubernetes.io/managed-by: Helm +--- +# Source: ox-connector/templates/configmap.yaml +apiVersion: v1 +data: + DEFAULT_CONTEXT: '1' + DOMAINNAME: opendesk.apps.digilab.network + LOCAL_TIMEZONE: Europe/Berlin + LOG_LEVEL: INFO + MAX_ACKNOWLEDGEMENT_RETRIES: '3' + OX_IMAP_SERVER: imap://127.0.0.1:143 + OX_LANGUAGE: de_DE + OX_MASTER_ADMIN: admin + OX_MASTER_PASSWORD: a668fd4876523acbfb62b5bd5ff0b6ff5dac6d28 + OX_SMTP_SERVER: smtp://127.0.0.1:587 + OX_SOAP_SERVER: https://webmail.opendesk.apps.digilab.network + PROVISIONING_API_BASE_URL: http://ums-provisioning-api + PROVISIONING_API_USERNAME: ox-connector + wait-for-api.sh: |- + #!/bin/bash + until curl -s ${PROVISIONING_API_BASE_URL} > /dev/null; do + echo "Waiting for API" + sleep 2 + done + + echo "Success, the Provisioning API is available" +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/instance: ox-connector + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ox-connector + helm.sh/chart: ox-connector-0.14.5 + name: ox-connector +--- +# Source: ox-connector/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: ox-connector + labels: + app.kubernetes.io/name: ox-connector + helm.sh/chart: ox-connector-0.14.5 + app.kubernetes.io/instance: ox-connector + app.kubernetes.io/managed-by: Helm +spec: + serviceName: ox-connector + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: ox-connector + app.kubernetes.io/instance: ox-connector + template: + metadata: + annotations: + checksum/config: a47aaa992203ca9dde0525c543d73c6215c3d794a91016319363a8f957657057 + checksum/secret: 107fada84d654a45b51e8255a7763dcb4233672a9a049adfc7d18a1c81787d54 + labels: + app.kubernetes.io/name: ox-connector + app.kubernetes.io/instance: ox-connector + spec: + serviceAccountName: ox-connector + securityContext: {} + initContainers: + - name: wait-for-api + command: [/bin/bash, /scripts/wait-for-api.sh] + + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.26.0@sha256:a31fde86bf21c597a31356fe492ab7e7a03a89282ca215eb7100763d6eb96b6b + imagePullPolicy: IfNotPresent + + envFrom: + - configMapRef: + name: ox-connector + volumeMounts: + - name: wait-for-api + mountPath: /scripts + resources: {} + containers: + - name: ox-connector + securityContext: + allowPrivilegeEscalation: false + capabilities: + add: + - CHOWN + - DAC_OVERRIDE + - FOWNER + - FSETID + - KILL + - SETGID + - SETUID + - SETPCAP + - NET_BIND_SERVICE + - SYS_CHROOT + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone:0.14.5@sha256:0b7816e3c8eca1949d3adc8c19d64394a862cbe478a3c51c6d18e546f02aea3d + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ox-connector + - secretRef: + name: ox-connector + volumeMounts: + - name: ox-connector-ox-contexts + mountPath: /etc/ox-secrets + - name: ox-connector-appcenter + mountPath: /var/lib/univention-appcenter/apps/ox-connector + resources: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 64Mi + volumes: + - name: wait-for-api + configMap: + name: ox-connector + volumeClaimTemplates: + - metadata: + name: ox-connector-ox-contexts + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 1Gi + - metadata: + name: ox-connector-appcenter + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 1Gi diff --git a/manifests/openproject-bootstrap-secrets.yaml b/manifests/openproject-bootstrap-secrets.yaml new file mode 100644 index 0000000..22d2df1 --- /dev/null +++ b/manifests/openproject-bootstrap-secrets.yaml @@ -0,0 +1,34 @@ +# Source: opendesk-openproject-bootstrap/templates/secrect.yaml +kind: Secret +apiVersion: v1 +metadata: + name: opendesk-openproject-bootstrap + labels: + app.kubernetes.io/name: opendesk-openproject-bootstrap + helm.sh/chart: opendesk-openproject-bootstrap-2.1.1 + app.kubernetes.io/instance: opendesk-openproject-bootstrap + app.kubernetes.io/managed-by: Helm +stringData: + openprojectAdminUsername: ENC[AES256_GCM,data:M8q0jF/UV4NjGtaXcZa61FweCnMYRPfBFT41YLpmoYa+qOJ1ka1PoQ==,iv:AABw/eoUntIa1igsHex9Ap5ySN00s/kTFH/DCSqAfUo=,tag:gVHP++rgvY0qHwcWBOOt6A==,type:str] + openprojectAdminPassword: ENC[AES256_GCM,data:P3Qn7O/DED3Xn0sf/ZYILRqOP2XUKOBKlAJM1lufKwUNqTjShLk1Vw==,iv:w48m2skElwCjmBommLkfBV2UrR1eau2B9zjc7mjZUDM=,tag:HuZTtExHQMFHManQdI/7FA==,type:str] + nextcloudAdminPassword: ENC[AES256_GCM,data:ue+5uKkU6ISe4i5lKx0OJtphpfSynsz5zopabnMa+OyGEyISpaHq6Q==,iv:W9oWz6ChNk3kn9FqC46H2OcFQ2SVtCvGxiuqOG4usFI=,tag:Z6UsKd8ACYNq9aH25qYvXQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaWGpJcnkzVU1PKzc5Vmdi + ei9ZRXNLQTJEMmdsOEtJMkIvVGROVEYvRWtBClFZOW1jWSs0Vk44dnprcnBnSEE0 + RGxqaVZnNEI2T252aGNrZkUxNVh1MlUKLS0tIFJEMTYxM21XRmFNdHVmdTVvUHhK + SGJ5VE5HSW9rMUNucHp5TVFjeWpFQjgKHwI8d0HCdIoyGl1SyNptdxx2TiSwhixG + 3NLnU5zQS8uzdrLMHxWZKnNsj+YGKA0aIs08DhkyBHjNdQayooOglw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:24Z" + mac: ENC[AES256_GCM,data:s7Rsfttd3uvKMQSl7/aidZvy7CtBbypjWQVP1R5Kj9a/BGEFuSXsnkxDhGwvK6zRjqH5WWLSHPP2GMvDdZ05xKg5ALQtKVSYxQiW8+vgauWL1xc/Og/o44VK45bX/tGUUHewvIdQyNNi1TbRpc/mnS5N4syCEVBoqPh7hRbfDlI=,iv:JRupotJToGD0yTl2PWNokbWrllCJt9L//8L5w0p49J4=,tag:m1xsvQ/aPjcUxCOh1XUk2A==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/openproject-bootstrap.yaml b/manifests/openproject-bootstrap.yaml new file mode 100644 index 0000000..b119568 --- /dev/null +++ b/manifests/openproject-bootstrap.yaml @@ -0,0 +1,111 @@ +# Source: opendesk-openproject-bootstrap/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: opendesk-openproject-bootstrap + labels: + app.kubernetes.io/name: opendesk-openproject-bootstrap + helm.sh/chart: opendesk-openproject-bootstrap-2.1.1 + app.kubernetes.io/instance: opendesk-openproject-bootstrap + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +--- +# Source: opendesk-openproject-bootstrap/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: opendesk-openproject-bootstrap-bootstrap-1 + labels: + app.kubernetes.io/name: opendesk-openproject-bootstrap + helm.sh/chart: opendesk-openproject-bootstrap-2.1.1 + app.kubernetes.io/instance: opendesk-openproject-bootstrap + app.kubernetes.io/managed-by: Helm + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded +spec: + ttlSecondsAfterFinished: 1800 + template: + metadata: + labels: + app.kubernetes.io/name: opendesk-openproject-bootstrap + helm.sh/chart: opendesk-openproject-bootstrap-2.1.1 + app.kubernetes.io/instance: opendesk-openproject-bootstrap + app.kubernetes.io/managed-by: Helm + annotations: + spec: + restartPolicy: Never + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + serviceAccountName: opendesk-openproject-bootstrap + containers: + - name: opendesk-openproject-bootstrap + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + resources: + limits: + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-openproject-bootstrap:1.1.4@sha256:2fd97a316114428849aaeef87fb8755274e675830088a93afcafac91bb048d1d + imagePullPolicy: IfNotPresent + command: + - /app/entrypoint.sh + + volumeMounts: + - mountPath: /app/temp + name: temp-dir + env: + - name: OPENPROJECT_HOST + value: https://projects.opendesk.apps.digilab.network + - name: OPENPROJECT_STORAGE_NAME + value: Nextcloud at opendesk.apps.digilab.network + - name: OP_ADMIN_USERNAME + valueFrom: + secretKeyRef: + key: openprojectAdminUsername + name: opendesk-openproject-bootstrap + - name: OP_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + key: openprojectAdminPassword + name: opendesk-openproject-bootstrap + + - name: NEXTCLOUD_HOST + value: https://files.opendesk.apps.digilab.network + - name: NC_ADMIN_USERNAME + value: nextcloud + - name: SETUP_PROJECT_FOLDER + value: 'true' + - name: NC_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + key: nextcloudAdminPassword + name: opendesk-openproject-bootstrap + + - name: OD_OP_BOOTSTRAP_TEMP_DIR + value: /app/temp + - name: OD_OP_BOOTSTRAP_DEBUG_ENABLED + value: 'false' + - name: OD_OP_BOOTSTRAP_DEBUG_PAUSE_BEFORE_SCRIPT_START + value: '0' + + volumes: + - name: temp-dir + emptyDir: + sizeLimit: 20Mi diff --git a/manifests/openproject-secrets.yaml b/manifests/openproject-secrets.yaml new file mode 100644 index 0000000..31a499d --- /dev/null +++ b/manifests/openproject-secrets.yaml @@ -0,0 +1,255 @@ +# Source: openproject/templates/secret_core.yaml +apiVersion: v1 +kind: Secret +metadata: + name: openproject-core + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "14" +stringData: + DATABASE_HOST: ENC[AES256_GCM,data:UpRmDQQM5/lfzA==,iv:x/YrPg5owHJFla7/JC4SXkGa/fYD+PJsIamy76B4nUM=,tag:U9AFxaC3NEmLYkgjd8Caiw==,type:str] + DATABASE_PORT: ENC[AES256_GCM,data:4QVovw==,iv:/XL/vAXUTLzKDQmamOqf6VmcypnYHNW3G9PvYrHMrJ4=,tag:fMVNPZzpWZhdB7bv4NHaAQ==,type:str] + DATABASE_URL: ENC[AES256_GCM,data:QdH4eXL5f/p99BwcE4Nksw1mCNCTIXCUs+Wkq78ZdY+Et8sykRvMntT2OEac2NRurS4KTHyGc8w6,iv:4os6YQIyb4kMt0/5uu5EGBQAvzzD8772URbv54oAdtk=,tag:XFRzEeKmldmvid23yw6itg==,type:str] + OPENPROJECT_SEED_ADMIN_USER_PASSWORD: ENC[AES256_GCM,data:HzizLWLSsE2PvJk42G+p2UpfPmzA9jaar/1zRc01tOPXTRtllwT6aw==,iv:C3FrLPEzUZ7FolnX+EJOGLrCEvnIO9w5/R2M8dAAl+E=,tag:ht16EWlg76KI/evzUERoiQ==,type:str] + OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET: ENC[AES256_GCM,data:rnJqlyA=,iv:W5BhudZb+uLzESGGKyNVEnD1FVi4ZbMR91iCamkOfj8=,tag:eWBL3VubJOcdLKZGZxpHaw==,type:str] + OPENPROJECT_SEED_ADMIN_USER_NAME: ENC[AES256_GCM,data:bCwXEqa+ntdy5L99VWPMKwMliwWXGbk6tao=,iv:wYH8cEp4NkDCu4CHd2fBWk3R9Ko/QJh7XZLgUpDeRq4=,tag:R38r+iIt9oKUBN7Hz0fpkA==,type:str] + OPENPROJECT_SEED_ADMIN_USER_MAIL: ENC[AES256_GCM,data:U2GBTSe+xoE48npglfGhx6qzl2FzvvqbVThbzue6K59kn68d1w==,iv:EGzwhIKdFu/Pu5eq8+mfjvv7g89D2RGwV8RXhnvTUb8=,tag:dzdb5I2Q/vSVe72wYe4EuA==,type:str] + OPENPROJECT_HTTPS: ENC[AES256_GCM,data:T/ayVw==,iv:T01mRxTvX3mjiO2MbHxhyl6hnu33CFEzXBrsgsmlJ+0=,tag:v7dsQHt0j9o3S4qe8nahhA==,type:str] + OPENPROJECT_SEED_LOCALE: ENC[AES256_GCM,data:iSg=,iv:jweykx2QlVr7bRk9u+Y9T1cbMM52nB2qJpqwJoc99JU=,tag:MS8ZWytLvnPgyQW2yX/wUw==,type:str] + OPENPROJECT_HOST__NAME: ENC[AES256_GCM,data:vP6PpyUnY5iKSs6LlZnDE/gmWyXHLVOhUelBCfEhbrnWlqQ7UdU=,iv:uX6onrraDYZqmwAUAqLj9YYAmQAzXUzNcmoRwHhpVXQ=,tag:iDjyst3RQS6uCItvhYA/Vw==,type:str] + OPENPROJECT_HSTS: ENC[AES256_GCM,data:CK0o4A==,iv:ekSxHITKEb7cEHh0OolxAHQRKmMZUNKe7wxJyqLF0vw=,tag:WLYuIS/N2XXr+VhBQQY17w==,type:str] + OPENPROJECT_RAILS__CACHE__STORE: ENC[AES256_GCM,data:+AYzv3AxVPg=,iv:M4v2sbarfZRT/J52qEp/hwMskPBvxFJuafKZmnHNWO8=,tag:YgzSFYbemaOLByaqJN86PQ==,type:str] + OPENPROJECT_RAILS__RELATIVE__URL__ROOT: "" + POSTGRES_STATEMENT_TIMEOUT: ENC[AES256_GCM,data:dtP4Ug==,iv:cttDHFTkKCsBNngLS1DtXjwCxNRKNOsdIXyjguq3U/I=,tag:D9vddL3GOo2CbJLpanv5wQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaSXp3d0V0aEVYbVphc0tr + bm9VTWNPaVlKL3FuN2lxTGxmOGUySFAveFMwCko3ejhtQytWd2V1UTVDUDE3WEdK + aDhNYkQxSVJaZjYwc3NzbWg0T0c4eGMKLS0tIFNTcU5IeGFVQkY5Rk5nN2RQS2xY + NlZkcFZaR29KN1A4Wm5XRlVWZXFiU2cK/yJpalTTqdPUuJwOwelvKeDI7bCwKM/i + PcaA6BvXpoVuH1XQrb8g7SFTyz8uPSJdviPzwkNqEfAs+0GfNMbvXQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:27Z" + mac: ENC[AES256_GCM,data:lLortZ5qG7DF/ZLxM632MOm8gRZeN2FUQg6h8G2uE+xrsxFpd2oFGzmM5olxIKst/tex774p+N92hxqDDa5WK5zj2gt/uMziZax8AzLJeK8I/XcMnwxD0GLJwh51NeULvIiNsFaNx9+glHvMsZ+XUMWTwpbe/5Eos6yujiz0bV8=,iv:M7Ac2LA6kXNlv5yGKNZ6XVCVakE5/sc3lFnbNGlHytk=,tag:ezkqOGJwlNtk8Pw1OMD5Fw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: openproject/templates/secret_environment.yaml +apiVersion: v1 +kind: Secret +metadata: + name: openproject-environment + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "14" +# reset data to make sure only keys defined below remain +data: null +stringData: + #ENC[AES256_GCM,data:8k5al0P3BR6Q5v+rK8gvmVaWm56kCqf3iwRLW9FW9ejK,iv:XeShMfzMHsL9ST+bqp4dbsWQQ3Nl4fZyfjfR9n+mLH0=,tag:56p9DKMBAK7ugWqbJX7h3A==,type:comment] + OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_PASSWORD: ENC[AES256_GCM,data:gDQ//QmqE8TWLKynEzltbL2SWPcEQ+SdaVQXnkHqKrS5NOWebqsCpw==,iv:/LSg+slRiK8b/HMisSgyyJnk5EnzOQyeTunIP5swGQM=,tag:JjkpguybJYt/gE4oLkppPQ==,type:str] + OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_USER: ENC[AES256_GCM,data:UryV1bRAUvfPIyvS7rdS2Hf9W6Vvjai8zlqL1IojSszexMelAvYgCA==,iv:LN6a6tD6o1utHx78+dc2qI2pW1Z43d3aXy88PYQ/hic=,tag:L4q8sVj9cv01j1zWshYDAw==,type:str] + OPENPROJECT_DEFAULT__COMMENT__SORT__ORDER: ENC[AES256_GCM,data:UTd3AA==,iv:MLEw8zGp32ajChP4TNlkscf4xPx/ueaXhhg0hyFeOwA=,tag:2bdP/MXtJVOSdhjWPdvYfg==,type:str] + OPENPROJECT_EMAIL__DELIVERY__METHOD: ENC[AES256_GCM,data:Wn1JzA==,iv:X/AXN/040WDtQG3CtSWEz8WETSbeqSLiCXgjasWq7SM=,tag:oW+3wTtGede/ELHV9npwvw==,type:str] + OPENPROJECT_HOME__URL: ENC[AES256_GCM,data:0pVn647pf2/IX9HBIv8V/CMGa2JID++HGoiM6fY1s2tyfP4EqTpwwJ6IAsma,iv:Xc5wE0PnmHW7F0GiKJVSg7hRMu2o0dxrTmOBu0EHAcI=,tag:AHjVUJeayGWALYrmlnLTWg==,type:str] + OPENPROJECT_LOGIN__REQUIRED: ENC[AES256_GCM,data:jC/Jng==,iv:v99wxHGJtdHqYNhvmmwGnzrLOhaBdTi6tS8uzfpJmsE=,tag:nm9mVAb86/uhrykerxyqGw==,type:str] + OPENPROJECT_LOG__LEVEL: ENC[AES256_GCM,data:7mBYHg==,iv:GL6b41P4odvEHGqHeKzTkv3SRGhrAy8mqgeMxH3hATA=,tag:Tq41qafLbbhkQHPQmhnjGQ==,type:str] + OPENPROJECT_MAIL__FROM: ENC[AES256_GCM,data:etYUvQPL+qlnrgEUeqBv7P1YSCeK02X9RticOK3NlElAWjuKdPI=,iv:HF/h0io3Dr7JaYXfZayDjyaj7PxBItPDnJqQExG+BKk=,tag:N+z5eqh/lD49SJY3RlAltw==,type:str] + OPENPROJECT_OAUTH__ALLOW__REMAPPING__OF__EXISTING__USERS: ENC[AES256_GCM,data:xkBAuA==,iv:bBb6SFJ0z+RwJv5zqfy3vnLAt6I29LMC9E4uVhwvVpI=,tag:xAR1gwkN971fExxBtF5qzw==,type:str] + OPENPROJECT_OMNIAUTH__DIRECT__LOGIN__PROVIDER: ENC[AES256_GCM,data:Ejk2tRn67nE=,iv:w8up2EanAPwwClU8abBVBJi+3VjwSR2zVjecUmrlCYI=,tag:titQ9voALE2wAOZKAAS/Qw==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ISSUER: ENC[AES256_GCM,data:jkUW5K5r7WCDmTNiMRNd1DPwDEDubfcbCU5TIdA8wB+HQh5xLqb16g/kcFXQsSBd8BTFxLvFt3Y=,iv:N25jkchBIZVbL0Aa/WXmcDDsuDa+qLJ/XjaYm3CA9u4=,tag:NoL9NdYIT0O+913WeIAHxg==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_POST__LOGOUT__REDIRECT__URI: ENC[AES256_GCM,data:F3gIpNMTXYpDFZ1csyjPIFAi1ATOTeRoLZXuYJE7b5syTm3OafguQxWmHgFvsA4=,iv:zXOGLzJLOQKGC3/XjIibWOiI9O18n1jsObgPFjjE8so=,tag:5kFQ8qYt2dcDf6BUI/on5A==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_ADMIN__MAPPING: ENC[AES256_GCM,data:DDioqZgbtxSCwLsCrQ8AH2eC5hoEyqJmvAC5v0bz,iv:2RNQ1bVTjZaSjj8ZoqDrjyYAszSkELppHYKDMG2jJ6w=,tag:/0VBYCoTzSewmBcafXbJnA==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_BASEDN: ENC[AES256_GCM,data:SubJz1z8f2Z0LX2yZUSTW0l3Z36vOw8=,iv:QCy2dY+cEAQMw2blFjAiRmNicuPNw8VIPIbsdv1gSp0=,tag:Lx0QxMVO75qBfp/meFKrIg==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_BINDPASSWORD: ENC[AES256_GCM,data:TNiectsGG4ajMXptlflVYhildEA2ysfBMoPACGXOevTlgUSNNzIIIQ==,iv:iEUtz1YoSJlq6Re76393zl4m8xf/KdHEO8qEGDUn5ZU=,tag:hIV3Jn1+YUBne0eLkNj6UA==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_BINDUSER: ENC[AES256_GCM,data:tNyMntKdcnpNjCIneFvNv+uxXXL6zTqoTsy1Uja0Nuq/JdOoO6Q+a8Qm4Mczbptm5WTJJ/3ORwhxL8M=,iv:HimCGsoSNayqJeNY/6Y2sgDR+V7XfYkDcLcTLfiYDiI=,tag:/JOQtGwblK1cBEIH/aLQuw==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_FILTER: ENC[AES256_GCM,data:CoGavm6cbCjnNFpqIjxn6iDo38gKL8a+5eTT0+E/XZsgfC+bNwHANm+o+MEYY6CJ+ouA9eAU4yGhSwByvPGBpzN3v98l/RCMBrltVARjwvL71VbanQ==,iv:95xwisrKQj/9UE8dV+VX6s5uHCdU6VstGuOV5rZGd/I=,tag:2Cxxp7+H7rYrORfku2gn1Q==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_FIRSTNAME__MAPPING: ENC[AES256_GCM,data:1KozJCqhkIpK,iv:KN9htL3YG+RmnhBzBnzsMEh8M42PuK/joyga5Md1jgQ=,tag:NXMuvhPBswfPNbmMouRF6Q==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_BASE: ENC[AES256_GCM,data:l8iruUMSaSSap8nPRItxWSf5RydZDBE=,iv:otyKyz5aEW9AAkT5V0DTF06dmTjjJ53y0YjHpp97j5M=,tag:hc1TzRD0Nvvt6WWZDqRSDw==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_FILTER: ENC[AES256_GCM,data:Xi+CtUeK4fEUhjj2G34OpjxDelAYuWOi8YIw+k6E/fcDRspK2lNzFIsKBRYIteakbAFtWcXqCYz+yk4eIsEjlFWZHCfunndN8O/s/qEhBmTje58VCSY=,iv:/0K0NN3bC7KhGkrUtSek/CuvpXNvD/Cojh1F+tUb8eQ=,tag:xbGVLG0B35EiH5/FO9xI3Q==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_GROUP__ATTRIBUTE: ENC[AES256_GCM,data:sIA=,iv:NBDgBmvMPvZoPR9HQeAhoI1ttBYUb9p8v9jqc+Axb4c=,tag:gB01DY1xX885cKwago/sKg==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_SYNC__USERS: ENC[AES256_GCM,data:8HgLQw==,iv:E656R9Ctl46f3kdIf0Bh2U9oX1PcvtIwm+GMlweiszI=,tag:tNL2gpeous0Ekyi4C6IoYA==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_HOST: ENC[AES256_GCM,data:LaoZS+QP2u6YNLiG467G,iv:XK/gFv7Z/6cJLeaDMOZ0Vk99RDKZkzao1y6+wsvz/H8=,tag:3AmFF0rUwfExB7wO6x8oKg==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_LASTNAME__MAPPING: ENC[AES256_GCM,data:Uaw=,iv:g/7+Y6Wbl750lxsb9KObgDHSxS88WzTFluFtCe1lAOo=,tag:DWaRrzjisDe/XslsBejdJg==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_LOGIN__MAPPING: ENC[AES256_GCM,data:EI4m,iv:hTvwFKT5HMtx0rIfoXNx9Bbe1SnH2kTqTTVlHGta1gc=,tag:MwZQM+TFridGd833eVc7kw==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_MAIL__MAPPING: ENC[AES256_GCM,data:Sj6/oaJdFrJnKRblY8wmI4p4,iv:96D0J2nrRUCocGu382EYsmhRoRxucvQTYdByMI9Q5bc=,tag:7d+JhpjO+gd4ysqgOs6eXQ==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_PORT: ENC[AES256_GCM,data:GU/x,iv:ZpvpnHco8fvMRKXFFrwPC8bXLjgobYGqW2nMRW1jz78=,tag:IK49tqAmDLJ2HxSGHMNRJA==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_SECURITY: ENC[AES256_GCM,data:IoqKhpOt/S2chw==,iv:+EnbMAwDNZlzgyM4zqKxwSSbdf4BfBSOoZCp+BZOmyg=,tag:YkoFJX6V6BJIQNBNo/jhfQ==,type:str] + OPENPROJECT_SEED_LDAP_OPENDESK_SYNC__USERS: ENC[AES256_GCM,data:rGiioA==,iv:eKRdMXegbdkybEHZg8hCWaEXuHeQS9QESV+4nq7vdgs=,tag:y3cVzZUgWmTVZvfLwEmjCA==,type:str] + OPENPROJECT_SMTP__ADDRESS: ENC[AES256_GCM,data:ze+kWcTB+bIxFy0Hi/ZMr+snCqDZikHHKPg=,iv:A0XLqKl+nFxwY/nFmml799Ar33Ev+Qt8z+oq+LRcbO4=,tag:fEEOz3g9hxfTsE8VKwG9FQ==,type:str] + OPENPROJECT_SMTP__AUTHENTICATION: ENC[AES256_GCM,data:Y1sN/w==,iv:1qkfy7UaqoKvakxXmq5w9JSiYy9VQqBjpwuS012SeJg=,tag:7IIVvReebxZIr9YtXkKB9g==,type:str] + OPENPROJECT_SMTP__DOMAIN: ENC[AES256_GCM,data:s6MEB6vYgggwQi1jI+UbTy+IM+WOHvVpTa6DQGo=,iv:D2XFAKWR4FKSAvvD2XoZq+8Qw9nByg1fJGgGYUtKX/s=,tag:Su6uStzH/w/Ji8sigyGDKg==,type:str] + OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: ENC[AES256_GCM,data:C2DbZTU=,iv:HK0vJRk89pVuxBokMjkUb346WHj2NhRhJQtTkTXIubk=,tag:LJ+85RJXDUKzneAeRbNtog==,type:str] + OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE: ENC[AES256_GCM,data:gteUrw==,iv:qwNZRNEvRyaqAHO29YQTME75uHof6CpS0TLlMMQ77Cc=,tag:zvMTsTlJGnV3UMntmqmzZA==,type:str] + OPENPROJECT_SMTP__PASSWORD: "" + OPENPROJECT_SMTP__PORT: ENC[AES256_GCM,data:F+E=,iv:x6F9y4t2cBq9s9ZenV5PiMasn/b+0/hzZ6soAlVjqag=,tag:rEeYr9V/Siwkoj4ay3qKYw==,type:str] + OPENPROJECT_SMTP__SSL: ENC[AES256_GCM,data:lHilwQc=,iv:wnKgrIP/+s5DHCj7H6ZNO4TqF3DMDl/ljXGNTSFI8Jw=,tag:qMzQU+65uPcVjy6NJ6N2Ew==,type:str] + OPENPROJECT_SMTP__USER__NAME: "" + OPENPROJECT_SOUVAP__NAVIGATION__SECRET: ENC[AES256_GCM,data:EEobq9i64hlgLaG1JWVDS057l+3nKFhnfYENcjbCR5eQUJY8Jx5msQ==,iv:lZADC5oc/4oCo5/qdB0MQ45F/2aY5TLGKerux2KfxcE=,tag:OBtwVhwUr8K8rn+Pd3ULNg==,type:str] + OPENPROJECT_SOUVAP__NAVIGATION__URL: ENC[AES256_GCM,data:mdk5Ai8oC6jqrQrJgSGxnuRPiNJUf3e50HZ2Sb21GQlaKfrak2DVreEKaWt9G3fX9f0DwP1qqmXwuCypqzor+XKPbq3k1k/mRs6SxjphmNUzWnKh0zgRONZ9SYhyDbPz/IIWLyc3d0zlOCbUu2RYMCAt4gF2rhCRAql3wkpoh+xQlQ==,iv:ofU0bYom79EYYxNzfNTbHRPhjOmj7upzmoUvg71qbFY=,tag:OpD14b4IPHiLo5HYNxKRfw==,type:str] + OPENPROJECT_USER__DEFAULT__TIMEZONE: ENC[AES256_GCM,data:rmyP2bCX5ebLXrAkJw==,iv:7x8Mg73f1y3ecWjFjgDyeLIT2iFUheJSNGT4XwVuFFw=,tag:PC6LwRovqwoxSBLsGn5HQg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaSXp3d0V0aEVYbVphc0tr + bm9VTWNPaVlKL3FuN2lxTGxmOGUySFAveFMwCko3ejhtQytWd2V1UTVDUDE3WEdK + aDhNYkQxSVJaZjYwc3NzbWg0T0c4eGMKLS0tIFNTcU5IeGFVQkY5Rk5nN2RQS2xY + NlZkcFZaR29KN1A4Wm5XRlVWZXFiU2cK/yJpalTTqdPUuJwOwelvKeDI7bCwKM/i + PcaA6BvXpoVuH1XQrb8g7SFTyz8uPSJdviPzwkNqEfAs+0GfNMbvXQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:27Z" + mac: ENC[AES256_GCM,data:lLortZ5qG7DF/ZLxM632MOm8gRZeN2FUQg6h8G2uE+xrsxFpd2oFGzmM5olxIKst/tex774p+N92hxqDDa5WK5zj2gt/uMziZax8AzLJeK8I/XcMnwxD0GLJwh51NeULvIiNsFaNx9+glHvMsZ+XUMWTwpbe/5Eos6yujiz0bV8=,iv:M7Ac2LA6kXNlv5yGKNZ6XVCVakE5/sc3lFnbNGlHytk=,tag:ezkqOGJwlNtk8Pw1OMD5Fw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: openproject/templates/secret_memcached.yaml +apiVersion: v1 +kind: Secret +metadata: + name: openproject-memcached + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "14" +# reset data to make sure only keys defined below remain +data: null +stringData: + OPENPROJECT_CACHE__MEMCACHE__SERVER: ENC[AES256_GCM,data:Fm3XPM9IXjhK3dEa29kW,iv:bbU5kOFpyYtYZIoqqYPaBKChcYwfSTAOdng13I8ryrU=,tag:e6llhRnJd+r8vZCWGS3Beg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaSXp3d0V0aEVYbVphc0tr + bm9VTWNPaVlKL3FuN2lxTGxmOGUySFAveFMwCko3ejhtQytWd2V1UTVDUDE3WEdK + aDhNYkQxSVJaZjYwc3NzbWg0T0c4eGMKLS0tIFNTcU5IeGFVQkY5Rk5nN2RQS2xY + NlZkcFZaR29KN1A4Wm5XRlVWZXFiU2cK/yJpalTTqdPUuJwOwelvKeDI7bCwKM/i + PcaA6BvXpoVuH1XQrb8g7SFTyz8uPSJdviPzwkNqEfAs+0GfNMbvXQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:27Z" + mac: ENC[AES256_GCM,data:lLortZ5qG7DF/ZLxM632MOm8gRZeN2FUQg6h8G2uE+xrsxFpd2oFGzmM5olxIKst/tex774p+N92hxqDDa5WK5zj2gt/uMziZax8AzLJeK8I/XcMnwxD0GLJwh51NeULvIiNsFaNx9+glHvMsZ+XUMWTwpbe/5Eos6yujiz0bV8=,iv:M7Ac2LA6kXNlv5yGKNZ6XVCVakE5/sc3lFnbNGlHytk=,tag:ezkqOGJwlNtk8Pw1OMD5Fw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: openproject/templates/secret_oidc.yaml +apiVersion: v1 +kind: Secret +metadata: + name: openproject-oidc + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "14" +# reset data to make sure only keys defined below remain +data: null +stringData: + #ENC[AES256_GCM,data:7tSpUwrrxtWlsr+HdGUSCRs0+xg8eYYt,iv:sURjr554JGYiyHFOKs26ogV9eucqeuE/jvNqr0P4yfk=,tag:V5zrGe8YwHRGRcp6fhlb+A==,type:comment] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_DISPLAY__NAME: ENC[AES256_GCM,data:lFD0peoJZZw=,iv:6yxswpcktC+VvsocrIJFb3sGOGnDCy4+q1svXY6OFnE=,tag:TeUAYRv865ofD8mhDUfjlg==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_HOST: ENC[AES256_GCM,data:kLNPpHnU//p+IYVWNOu7+rhPcYjYNGWosOm1pVLJJjg=,iv:x3S7uEQlicMnxRBDUaaPRYmht+ouku5PJIhEnpHDb38=,tag:3X2ONqTEn5nNDky0eOvvEQ==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_IDENTIFIER: ENC[AES256_GCM,data:Jba6BRg4XpzIX+LOi7fguuJXHBs=,iv:uummKFuBhJxK1YAmBo6JwPtPa5l2LmRihUBoxlxuHOA=,tag:SFPV6PGrEl5HCqK7a5yUXg==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SECRET: ENC[AES256_GCM,data:c7pWvK47ZjkR7PrWmrHFiRWN2uYDJqdjjq2Ij48a2fJDzcaO7WbaxA==,iv:69uGENytz3MtK80207mJCK7mnWj7NHf0HVdUDoBkeAI=,tag:Q7sHoOMlyjdfDyJ7rqF2qQ==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_AUTHORIZATION__ENDPOINT: ENC[AES256_GCM,data:DtbqNUdg+xrxfQ4FLcjp7nU5Jf2Nxrn6+LXk29pnh3bLW/wxGXmYk4dimw3v,iv:I3dp1NvTkfBVRXls9/Ilw4GcxYgdIlTULgs8yJBnS7M=,tag:nzRGNGPaflTizDwQReCIZA==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_TOKEN__ENDPOINT: ENC[AES256_GCM,data:yFpRTx09GyGVcngUwonJUq0/7E3dYcyAHymvc5kwIReWJYZOm5E9Xm1E3zBV7g==,iv:KS706idxbJanc4aMXBbxY6znyg3YDSLy83QywXBZTmU=,tag:YkfixTK+S83fKs5KyNvJMQ==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_USERINFO__ENDPOINT: ENC[AES256_GCM,data:CuLIb2P1Tr3eKzgsQwnO4YcJsXw4IJ96UaSIw0ahhIR9FAuPimtQK+q5rpgy5oaS+A==,iv:sZQw3DWeQSWWvM8CjuPO7aK3K2kwAudZrsbDtVCWwsQ=,tag:IA2c6ozWSNJfPNlbW5f/6A==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_END__SESSION__ENDPOINT: ENC[AES256_GCM,data:pBIvcjGZ16zgX8QOuowGyEoUddgkbM4w26zSJ9DfWEHRBu4dVBexZOBa+aypb128MYKQvo50ArBhAYjS5LMJjdrHb69PF7FFkm9s8GMHFlRdEN6Ri80h,iv:aosARVou03WaeW5NtRBGW9+D+tyXDsF0izEDL+k8ras=,tag:J7ubqK7B3MKDhVYvfsQ8ig==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SCOPE: ENC[AES256_GCM,data:X2pAKdwjwBlYBGB5S+atChflmrF1OlG13c48ZKfpK9MmXU0=,iv:L+a8IpwcJpNzDNxoZOAjqf7v9luNZRyUtH8ws3lHi5U=,tag:7aGXM+2lF/9lYB+7xBUWlg==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ATTRIBUTE__MAP_ADMIN: ENC[AES256_GCM,data:maNhGiFIUItSJyHz+Fuf8qE=,iv:xZPOCQIsEm/aY9DvEkUFddKeJIqyYTtIv3ol590/T/k=,tag:hyuASqmtdTTd8V91YeIrrw==,type:str] + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ATTRIBUTE__MAP_LOGIN: ENC[AES256_GCM,data:yccCzspK9VDDG39UJfdvG4s=,iv:rQlaySJ7kQlxqFYgIPtwzuwAN3ZgE0UW8y+drBHcsBM=,tag:yrtsSeDy3XLfRfMr4WH/hQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaSXp3d0V0aEVYbVphc0tr + bm9VTWNPaVlKL3FuN2lxTGxmOGUySFAveFMwCko3ejhtQytWd2V1UTVDUDE3WEdK + aDhNYkQxSVJaZjYwc3NzbWg0T0c4eGMKLS0tIFNTcU5IeGFVQkY5Rk5nN2RQS2xY + NlZkcFZaR29KN1A4Wm5XRlVWZXFiU2cK/yJpalTTqdPUuJwOwelvKeDI7bCwKM/i + PcaA6BvXpoVuH1XQrb8g7SFTyz8uPSJdviPzwkNqEfAs+0GfNMbvXQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:27Z" + mac: ENC[AES256_GCM,data:lLortZ5qG7DF/ZLxM632MOm8gRZeN2FUQg6h8G2uE+xrsxFpd2oFGzmM5olxIKst/tex774p+N92hxqDDa5WK5zj2gt/uMziZax8AzLJeK8I/XcMnwxD0GLJwh51NeULvIiNsFaNx9+glHvMsZ+XUMWTwpbe/5Eos6yujiz0bV8=,iv:M7Ac2LA6kXNlv5yGKNZ6XVCVakE5/sc3lFnbNGlHytk=,tag:ezkqOGJwlNtk8Pw1OMD5Fw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: openproject/templates/secret_s3.yaml +apiVersion: v1 +kind: Secret +metadata: + name: openproject-s3 + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "14" +# reset data to make sure only keys defined below remain +data: null +stringData: + OPENPROJECT_ATTACHMENTS__STORAGE: ENC[AES256_GCM,data:ZKmL,iv:MgL9ulD5DH1HBJnvleDLo9Fy6GUmt6j8Su0lHrIbFZI=,tag:xzCV9QwBqi45EYfilk78SA==,type:str] + OPENPROJECT_FOG_CREDENTIALS_PROVIDER: ENC[AES256_GCM,data:IudX,iv:I/HbYGhCdiPhPttANT7GXRgKVQIEvVYFnfrGc5TbODQ=,tag:2ME1tAMItke3cnc/y/UZ0w==,type:str] + OPENPROJECT_FOG_CREDENTIALS_AWS__ACCESS__KEY__ID: ENC[AES256_GCM,data:rScgziteJS5YHfQCoLBZZA==,iv:ras/HwhARMSf9lM73/zERUsgkZLWVY/fsP50ivQlMpA=,tag:aUYjHqdRxdlGYN1n9E1W1w==,type:str] + OPENPROJECT_FOG_CREDENTIALS_AWS__SECRET__ACCESS__KEY: ENC[AES256_GCM,data:eCTO3vLfggBBITG57fp9I6z4DFmfe0EgSQuFOOOO9hmFp0dmw32FLg==,iv:0Da1qqrOETWmYCN/04Z/z2DORUf2LCnIxyn7d38LFeo=,tag:FNxhkJQr3OskOYC7UX98jA==,type:str] + OPENPROJECT_FOG_CREDENTIALS_ENDPOINT: ENC[AES256_GCM,data:R6KM3vJLMEzwMfQ6c1x5uN9ei1k0XycpqjgSNlp6kkuqmeCA9YRAQDnZmwTW9To/wg==,iv:y+Fj44R6ahuq21gE3a8287IfpyQXagAFBJF0XXQWJYo=,tag:vFhLH17hHVYnP28CqgtzDA==,type:str] + OPENPROJECT_FOG_CREDENTIALS_HOST: ENC[AES256_GCM,data:rEH5ALczVnJD5j1ohD+Cmttqw1Mf2BHYVC4PXaW+sEd1q2Hemex/3ip7vzv51nLkmA==,iv:PJrDqZCqo+5TqAusxnLnZxhgkX3NNF2tWbb/tCUMnt0=,tag:6yFJpS5vJ/Qqakw4ysiOxg==,type:str] + OPENPROJECT_FOG_DIRECTORY: ENC[AES256_GCM,data:JGBmT+gsPnoWnQw=,iv:MdCCdreCBzdmwWavJCtl9HfMzHtxJMhPkQOehDzyx4M=,tag:whibUOmKXjfnSgc6n0CtUw==,type:str] + OPENPROJECT_FOG_CREDENTIALS_REGION: ENC[AES256_GCM,data:Cfy2YQ4VxEU4,iv:Gr8sVrNptbKEqu9qnW6e7Ey+Uel8YQ0DhY1k+jW5ghc=,tag:c4zlBg+gb3PtgeHgUbTkUw==,type:str] + OPENPROJECT_FOG_CREDENTIALS_PATH__STYLE: ENC[AES256_GCM,data:N1RMCw==,iv:TNV7AOGb3GvCIE+2X2SGsSuX2psVfSFosOylmB72OAE=,tag:eU/+of1eFlNIPfXhj5UhVg==,type:str] + OPENPROJECT_FOG_CREDENTIALS_AWS__SIGNATURE__VERSION: ENC[AES256_GCM,data:4A==,iv:eVD3JkWhJRSGzFON0XQzI0cFqx5lP2mkss2R22Ck7PE=,tag:aaddt4Tl7uMK5Zl/2QYQpQ==,type:str] + #ENC[AES256_GCM,data:kiPmR45zFimDqRLqp/ola/0ny4ePwT37ViOpWwoAzs1dB5xWwxU5NMRctDDVG+49dQ==,iv:qtgKoHZwTyjNwXVcNoY0IbmzGukmeIibRiX+y5bMKEc=,tag:Mjz5EqzO0zqJBAi0LiMV6Q==,type:comment] + OPENPROJECT_FOG_CREDENTIALS_USE__IAM__PROFILE: ENC[AES256_GCM,data:Wd/cOiA=,iv:rHrCsMyl4h6McdLHXhods91dkJ6PQXwk1YlF92lsNro=,tag:rCp8raUuEns9va7sPj+tsg==,type:str] + OPENPROJECT_FOG_CREDENTIALS_ENABLE__SIGNATURE__V4__STREAMING: ENC[AES256_GCM,data:wmTRYQ==,iv:hLhxkECBwAh3dYK0pDxtvdIzNjYaqfjruTy3qUVXI3M=,tag:E020bF7mWD8VOUXOsfOZ0A==,type:str] + OPENPROJECT_DIRECT__UPLOADS: ENC[AES256_GCM,data:TZDcSg==,iv:nnqCyMcWpBIVNCnAiuX1VUOJfWHzE7HURkSlgGGVTbQ=,tag:hfAtp8h6nSOyKAC0iaVmFQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaSXp3d0V0aEVYbVphc0tr + bm9VTWNPaVlKL3FuN2lxTGxmOGUySFAveFMwCko3ejhtQytWd2V1UTVDUDE3WEdK + aDhNYkQxSVJaZjYwc3NzbWg0T0c4eGMKLS0tIFNTcU5IeGFVQkY5Rk5nN2RQS2xY + NlZkcFZaR29KN1A4Wm5XRlVWZXFiU2cK/yJpalTTqdPUuJwOwelvKeDI7bCwKM/i + PcaA6BvXpoVuH1XQrb8g7SFTyz8uPSJdviPzwkNqEfAs+0GfNMbvXQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:27Z" + mac: ENC[AES256_GCM,data:lLortZ5qG7DF/ZLxM632MOm8gRZeN2FUQg6h8G2uE+xrsxFpd2oFGzmM5olxIKst/tex774p+N92hxqDDa5WK5zj2gt/uMziZax8AzLJeK8I/XcMnwxD0GLJwh51NeULvIiNsFaNx9+glHvMsZ+XUMWTwpbe/5Eos6yujiz0bV8=,iv:M7Ac2LA6kXNlv5yGKNZ6XVCVakE5/sc3lFnbNGlHytk=,tag:ezkqOGJwlNtk8Pw1OMD5Fw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/openproject.yaml b/manifests/openproject.yaml new file mode 100644 index 0000000..16b4427 --- /dev/null +++ b/manifests/openproject.yaml @@ -0,0 +1,587 @@ +# Source: openproject/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: openproject + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' +--- +# Source: openproject/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: openproject + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' +spec: + type: ClusterIP + ports: + - port: 8080 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: openproject + app.kubernetes.io/instance: openproject + openproject/process: web +--- +# Source: openproject/templates/web-deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: openproject-web + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' + openproject/process: web +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: openproject + app.kubernetes.io/instance: openproject + openproject/process: web + template: + metadata: + annotations: + # annotate pods with env value checksums so changes trigger re-deployments + checksum/env-core: b21b819a4fe16e45ec4c4ff1bef74ad89e7b4ba3f0d2a6599f7dcab57fbbaf08 + checksum/env-memcached: 2108ee378b9475c3091a258d8277b81271c0c61b1107ab9ae9dee9f1103cbf69 + checksum/env-oidc: 45febd990f4103c64b53ad279da64f4e9be1d3472ba1dcdf35c700e970fbb8f7 + checksum/env-s3: 75b8573637845a4834f21919121ded141467669083c4e3fd5e6a1716c48884f6 + checksum/env-environment: 7dfae8244e268296401d617770ebc477b01f691a226150bc9e19946bdf37ea26 + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' + openproject/process: web + spec: + securityContext: + fsGroup: 1000 + serviceAccountName: openproject + volumes: + - name: tmp + # we can't use emptyDir due to the sticky bit issue + # see: https://github.com/kubernetes/kubernetes/issues/110835 + ephemeral: + volumeClaimTemplate: + metadata: + creationTimestamp: + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 5Gi + - name: app-tmp + # we can't use emptyDir due to the sticky bit / world writable issue + # see: https://github.com/kubernetes/kubernetes/issues/110835 + ephemeral: + volumeClaimTemplate: + metadata: + creationTimestamp: + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 5Gi + initContainers: + - name: wait-for-db + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:14.6.1@sha256:3c9828b1ab4dc91f2b3887f9bfddda8ba79b92a2f335dd2db2295d14a98deab0 + imagePullPolicy: IfNotPresent + envFrom: + - secretRef: + name: openproject-core + - secretRef: + name: openproject-oidc + - secretRef: + name: openproject-s3 + - secretRef: + name: openproject-memcached + - secretRef: + name: openproject-environment + env: + - name: OPENPROJECT_DB_PASSWORD + value: 5baeeb8674fca48695591fdbdb0591cac48afc94 + command: + - bash + - /app/docker/prod/wait-for-db + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + containers: + - name: openproject + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:14.6.1@sha256:3c9828b1ab4dc91f2b3887f9bfddda8ba79b92a2f335dd2db2295d14a98deab0 + imagePullPolicy: IfNotPresent + envFrom: + - secretRef: + name: openproject-core + - secretRef: + name: openproject-oidc + - secretRef: + name: openproject-s3 + - secretRef: + name: openproject-memcached + - secretRef: + name: openproject-environment + env: + - name: OPENPROJECT_DB_PASSWORD + value: 5baeeb8674fca48695591fdbdb0591cac48afc94 + command: + - bash + - /app/docker/prod/web + volumeMounts: + - mountPath: /tmp + name: tmp + - mountPath: /app/tmp + name: app-tmp + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: /health_checks/default + port: 8080 + httpHeaders: + # required otherwise health check will return 404 because health check is done using the Pod IP, which may cause issues with downstream variants + - name: Host + value: localhost + initialDelaySeconds: 300 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 30 + successThreshold: 1 + readinessProbe: + httpGet: + path: /health_checks/default + port: 8080 + httpHeaders: + # required otherwise health check will return 404 because health check is done using the Pod IP, which may cause issues with downstream variants + - name: Host + value: localhost + initialDelaySeconds: 150 + timeoutSeconds: 3 + periodSeconds: 15 + failureThreshold: 30 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 768Mi +--- +# Source: openproject/templates/worker-deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: openproject-worker-default + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' + openproject/process: worker-default +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: openproject + app.kubernetes.io/instance: openproject + openproject/process: worker-default + template: + metadata: + annotations: + # annotate pods with env value checksums so changes trigger re-deployments + checksum/env-core: b21b819a4fe16e45ec4c4ff1bef74ad89e7b4ba3f0d2a6599f7dcab57fbbaf08 + checksum/env-memcached: 2108ee378b9475c3091a258d8277b81271c0c61b1107ab9ae9dee9f1103cbf69 + checksum/env-oidc: 45febd990f4103c64b53ad279da64f4e9be1d3472ba1dcdf35c700e970fbb8f7 + checksum/env-s3: 75b8573637845a4834f21919121ded141467669083c4e3fd5e6a1716c48884f6 + checksum/env-environment: 7dfae8244e268296401d617770ebc477b01f691a226150bc9e19946bdf37ea26 + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' + openproject/process: worker-default + spec: + securityContext: + fsGroup: 1000 + serviceAccountName: openproject + volumes: + - name: tmp + # we can't use emptyDir due to the sticky bit issue + # see: https://github.com/kubernetes/kubernetes/issues/110835 + ephemeral: + volumeClaimTemplate: + metadata: + creationTimestamp: + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 5Gi + - name: app-tmp + # we can't use emptyDir due to the sticky bit / world writable issue + # see: https://github.com/kubernetes/kubernetes/issues/110835 + ephemeral: + volumeClaimTemplate: + metadata: + creationTimestamp: + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 5Gi + initContainers: + - name: wait-for-db + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:14.6.1@sha256:3c9828b1ab4dc91f2b3887f9bfddda8ba79b92a2f335dd2db2295d14a98deab0 + imagePullPolicy: IfNotPresent + envFrom: + - secretRef: + name: openproject-core + - secretRef: + name: openproject-oidc + - secretRef: + name: openproject-s3 + - secretRef: + name: openproject-memcached + - secretRef: + name: openproject-environment + env: + - name: OPENPROJECT_DB_PASSWORD + value: 5baeeb8674fca48695591fdbdb0591cac48afc94 + command: + - bash + - /app/docker/prod/wait-for-db + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + containers: + - name: openproject + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:14.6.1@sha256:3c9828b1ab4dc91f2b3887f9bfddda8ba79b92a2f335dd2db2295d14a98deab0 + imagePullPolicy: IfNotPresent + envFrom: + - secretRef: + name: openproject-core + - secretRef: + name: openproject-oidc + - secretRef: + name: openproject-s3 + - secretRef: + name: openproject-memcached + - secretRef: + name: openproject-environment + command: + - bash + - /app/docker/prod/worker + env: + - name: OPENPROJECT_DB_PASSWORD + value: 5baeeb8674fca48695591fdbdb0591cac48afc94 + - name: QUEUE + value: '' + volumeMounts: + - mountPath: /tmp + name: tmp + - mountPath: /app/tmp + name: app-tmp + resources: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.25 + memory: 512Mi +--- +# Source: openproject/templates/seeder-job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: openproject-seeder-1 + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded + intents.otterize.com/service-name: openproject-seeder +spec: + ttlSecondsAfterFinished: 6000 + template: + metadata: + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' + openproject/process: seeder + annotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded + intents.otterize.com/service-name: openproject-seeder + spec: + securityContext: + fsGroup: 1000 + volumes: + - name: tmp + # we can't use emptyDir due to the sticky bit issue + # see: https://github.com/kubernetes/kubernetes/issues/110835 + ephemeral: + volumeClaimTemplate: + metadata: + creationTimestamp: + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 5Gi + - name: app-tmp + # we can't use emptyDir due to the sticky bit / world writable issue + # see: https://github.com/kubernetes/kubernetes/issues/110835 + ephemeral: + volumeClaimTemplate: + metadata: + creationTimestamp: + spec: + accessModes: [ReadWriteOnce] + resources: + requests: + storage: 5Gi + initContainers: + - name: check-db-ready + image: + registry-1.docker.io/library/postgres:16.3-alpine3.20@sha256:de3d7b6e4b5b3fe899e997579d6dfe95a99539d154abe03f0b6839133ed05065 + imagePullPolicy: IfNotPresent + command: [sh, -c, until pg_isready -h $DATABASE_HOST -p $DATABASE_PORT -U + openproject_user; do echo "waiting for database $DATABASE_HOST:$DATABASE_PORT"; + sleep 2; done;] + envFrom: + - secretRef: + name: openproject-core + - secretRef: + name: openproject-oidc + - secretRef: + name: openproject-s3 + - secretRef: + name: openproject-memcached + - secretRef: + name: openproject-environment + env: + - name: OPENPROJECT_DB_PASSWORD + value: 5baeeb8674fca48695591fdbdb0591cac48afc94 + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + containers: + - name: seeder + image: + registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:14.6.1@sha256:3c9828b1ab4dc91f2b3887f9bfddda8ba79b92a2f335dd2db2295d14a98deab0 + imagePullPolicy: IfNotPresent + args: + - bash + - /app/docker/prod/seeder + envFrom: + - secretRef: + name: openproject-core + - secretRef: + name: openproject-oidc + - secretRef: + name: openproject-s3 + - secretRef: + name: openproject-memcached + - secretRef: + name: openproject-environment + env: + - name: OPENPROJECT_DB_PASSWORD + value: 5baeeb8674fca48695591fdbdb0591cac48afc94 + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - mountPath: /tmp + name: tmp + - mountPath: /app/tmp + name: app-tmp + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + restartPolicy: OnFailure +--- +# Source: openproject/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: openproject + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: 100M + nginx.ingress.kubernetes.io/proxy-read-timeout: '60' + nginx.ingress.kubernetes.io/proxy-send-timeout: '60' + nginx.org/client-max-body-size: 100M + nginx.org/proxy-read-timeout: 60s + nginx.org/proxy-send-timeout: 60s +spec: + tls: + - hosts: + - projects.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: projects.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: openproject + port: + name: http +--- +# Source: openproject/templates/tests/test-connection.yaml +apiVersion: v1 +kind: Pod +metadata: + name: openproject-test-connection + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-8.0.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: '14' + annotations: + helm.sh/hook: test +spec: + containers: + - name: wget + image: busybox + command: [wget] + args: + - --no-verbose + - --tries=1 + - --spider + - openproject:8080/health_check + restartPolicy: Never diff --git a/manifests/services-secrets.yaml b/manifests/services-secrets.yaml new file mode 100644 index 0000000..6153dab --- /dev/null +++ b/manifests/services-secrets.yaml @@ -0,0 +1,145 @@ +# Source: redis/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: redis + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + app.kubernetes.io/version: 7.2.3 + helm.sh/chart: redis-18.6.1 +type: Opaque +data: + redis-password: ENC[AES256_GCM,data:YwdnbHZJ9TBW5Dhmn0mKKLMyFGfcxel9icpDO1UHqwzxjKq4hAtnXcqSBTw0Xso49SPbCzubz2I=,iv:6k8pd5dU3MZSB5Ov/gFUx3aEb/Xe7vGs7gz9302Tpss=,tag:Zy4FldIx8pd76qh+aqjx3Q==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1cHV5emJNRlJmVFNlQ29E + ejErbWtXZkFnOGJOL0tlL0Ftb0pFN296a2dzCkExbElIQVJ0dnBocVAxTENvSEkv + WGh3dXFvZHdDTTdpT3Zub0NxemtDbXMKLS0tIGJCTHRDSWI4YlZjVlZpS1phem5t + cEdTUVd5TUdPYjZTU1lIcHZPd2J2dEkK709EwDc78mCBSPtnulXVIrQNGmEOM4TK + iSPcKyKrN7zH7V9H9LQOGB3kOuAiWCxRZAtAvgJ3sMAXxWbnp2FdCA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:33Z" + mac: ENC[AES256_GCM,data:C4LwL91HbXlZBuMsaB48ueMT8dXkdJFsy7JvG/Yf2vWtTq/q5N40VSGL2ZeX8mTp+/6A3AKEfYknQ6Nk9LqpyNF9ow2+I914vsbcD05LjiWWOo9yYRUZ7+ktFJbcyreibeSKNp8YJHqEeniuGBUcMJvCfYVADSABRsNANqgJcJ4=,iv:C3GvnbfkApc1n11DWy+clnQp+CLDifQoBDgSfMqPmkc=,tag:bdC6Dt6LJF9jaifwdE0TXw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: postgresql/templates/secret-job.yaml +apiVersion: v1 +kind: Secret +metadata: + name: postgresql-job + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.1 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm +stringData: + init-wait.sh: ENC[AES256_GCM,data:Q/JPDMnEstbAcpE+6ekvUrOkf28Paelo8YW9T5lx1pAD6xIHXcqREUkUCsyUTZ7wXvg+nxpDPZ75mHcvdie/MruK4NG4vvsDJu09GcMB0cP6hkBYO/FILQlJnmE6e/RCZhQrpeBScVGF2NBOIG5MO8p72OYZF/b7pS4TyXtatT+rbyh+BSnlPeOX7uQaQAsOnpVNJ+25+PUJJKj4DoCA24y7oNr05Z8JpQohkFDOy1Z+lv4f8ONAiDMOHuUPn6QYxoaRNHg9JZcSBUm1dlEoJvhU2KBu69YnewWYYea9zyfQVrNhxaxYvOS9SrOd8+HWA/q0HwWYdOZhEWR/Yj1ODhuT60kOJArBAK6tvF6j,iv:5qXVu7vh9CQM1jnXcoKur5A9fsn6HWgHOXLYPbDoO5I=,tag:Vy7grvU+RinYlWfOcf5/2g==,type:str] + init-user.sh: ENC[AES256_GCM,data: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,iv:u6I6mTdok+gMxJ7qJg2o5fKcjWnuUMa4YnjBXwXJDaU=,tag:ZqOlQGSnQoDozGmHlLFePw==,type:str] + init-db.sh: ENC[AES256_GCM,data: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,iv:KgNSMgEqp4yEv5eaRO1oz/3FQU/cmVKt88rPzfjXWow=,tag:y5Ulz9tNPGo0BU1rPxfGVg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1cHV5emJNRlJmVFNlQ29E + ejErbWtXZkFnOGJOL0tlL0Ftb0pFN296a2dzCkExbElIQVJ0dnBocVAxTENvSEkv + WGh3dXFvZHdDTTdpT3Zub0NxemtDbXMKLS0tIGJCTHRDSWI4YlZjVlZpS1phem5t + cEdTUVd5TUdPYjZTU1lIcHZPd2J2dEkK709EwDc78mCBSPtnulXVIrQNGmEOM4TK + iSPcKyKrN7zH7V9H9LQOGB3kOuAiWCxRZAtAvgJ3sMAXxWbnp2FdCA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:33Z" + mac: ENC[AES256_GCM,data:C4LwL91HbXlZBuMsaB48ueMT8dXkdJFsy7JvG/Yf2vWtTq/q5N40VSGL2ZeX8mTp+/6A3AKEfYknQ6Nk9LqpyNF9ow2+I914vsbcD05LjiWWOo9yYRUZ7+ktFJbcyreibeSKNp8YJHqEeniuGBUcMJvCfYVADSABRsNANqgJcJ4=,iv:C3GvnbfkApc1n11DWy+clnQp+CLDifQoBDgSfMqPmkc=,tag:bdC6Dt6LJF9jaifwdE0TXw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: mariadb/templates/secret-job.yaml +apiVersion: v1 +kind: Secret +metadata: + name: mariadb-job + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-2.3.1 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm +stringData: + init-wait.sh: ENC[AES256_GCM,data:A/VthWh/sX134ZXrUArOqt5ivbp/MUtcRtydwkbrlKbuOUIGRWIHyQt+vBJYc84I3K4lYbezqrgdb7Ku6+35MoQtTa5TR443Rke7aRb7d8oLyy6fq3SeNyTSUtw3j2p0qBMmiQnFSE4ub6CFxyLjSEkJe4Jtmu+h5vH/tBCsU6d4enQRzTI/Vh8IcgYLLI+EFSPzmgAM9hDWK9UzL0Hf9L4bLQSE+nR8Dgfy+crgqjamvwN7dXo6ER6vMH5E3+phvxqio3z2rFnnQwViXYRxDDZ6BRStL3HuIpmRZ77r/6EC8MpM7xwmdta1xMfdCyNTl9wV62iY+OQ3d43QpnmeZTOu5rtQGQyiZoMYWRJ+fuYsmwh5bOhhEM4/w18ioCK0OUhje/TkdoPxjS2NA0TBUBqNikEyQeASOe4Pi62Z4FlZ7/ICruRFZvyf+1G71g==,iv:zZZdmcS6UHgHkrZXPo4ZGmfoT43mb6dgyH3jTIUOY5A=,tag:ArY4mq/xRnyxmgXCUsZsvw==,type:str] + init-user-data.sql: ENC[AES256_GCM,data:fQiJRcdN4fLZvYyAzqdnm+8ZN2+bWqFwYYiRd4bqFwMwdvb8BFbn/6WE9cgnCT5xn9tj5jcCcm1PEl6NBw3JcR9E9+BnzeBE33iOGYEYShA2P9HWxBxb5Ea/mkUKpmr9tKML2ofI5ee3YQQzgW6Fx7tDs82dKoDF6299tR17e6NFm9NApyV8/ukmu/aoWfZ3VxtZTlX1njsU/9N37m+lJsdddEgkYDNJFmU4uztKHwA9YRuED1y4NPMmU7rjPMjmv8PSzBbHmDdwzky/GQUW14wCOizinlJDBEV/jPp6JJQwNfyZ5HOIzQgwNRrsHrnccG8SMYVy6zbTVdUdkoxvHr6MYBt/KWkbnM5AjL9psYb9BOp96jjR6oBN3x/EXVnCwz0YCchrgFbwdaHCbi9OPBgkhgfPOehOnAfqKcyc9iRI/9+wuZf6P82978CjjygXoaRC39CBGQ1tF/oqzefkhma7viNqEG0hW+KxDYPBrJo4KF9hOZHTrJATyjYOxZ1DIhGz/OYXkp4idm3hdl0jKk04J++BBn9byfRAjPs4LEJ5Jpaogp9gAUJKNQJsb2OSs2f09Pv7INuyja1hAC4ctMcWyabmDUH/ZpBz3Du+YJ9SOteI0ldaKv92/EZO9XaPAO7s/ltzqXgLgq24u1TYH5MiuDvBVw5pUrJwfjXQJfaYAC9CKg2g9vlXDVArUN5EJZrBK7aX20PIc1GUHXvmNLRQWFKjtvhiU8Xfs90BK1RvduIOQXj3YtCUMFGinpCFbUsm+gy1iVaywnMdBVhhW0ioICe4fcZuud13NdQsqv8S3aAWDjVSUc6y7YmkFfRhFJGGszQcVTuDe4VT6vJBuysUNz7si5iHd7wFX1IQS5Hz2dTOsr5nfb+lya2aJ0yqziZHlU66wPzJ0qzlcVLbhxFB4LNid0bV93C8anfVm+TZtyA2QblJnYwe0ZFNI0tPzwNecbdTAcyeg8NztQaGv+XdgyPluIbUgZdkZt82mcTEqKSRxcbgfJSz6vaEJJuz,iv:Nh63dhwp5rnpsdevd1/riz9n3muMo4TI6nvPbkJvZF4=,tag:B38Igdz+T4U+i4S6wYZSag==,type:str] + init-user.sh: ENC[AES256_GCM,data:mYI49Rvd1MLg7lk9yfKm+BpZ2QAMC8/moSP80vAItOc7NjTRRMetXaX+nrvuYQ/0cySMoH2PSxT4lLnFkpUcqmkuat3/uvg=,iv:xVDrJ5xZE8z5HWZnUvk8cKPX6dG6uAC8dOLz1VpZE4w=,tag:ftR9iQ8dwecT4FmFVZx74w==,type:str] + init-db.sh: ENC[AES256_GCM,data:ci5TXU9nyZQrQq7pBWsIS8e1UBdXJSKvN4aE/I3Omr0RjPmgTler109OwqnRygUvnCqaS0SxhJv9SBEOSD6rsrIXZrF5hYwhhsmNqEJ0PWEbrqvS1AK7XEaakPk79eLjMN/E+oCT4W7omPrxGeAiRvWTUmGiCmQr7deY5GQ5avx0xkVL6G+q5Kx2V5/8W2xWqNZI84xWeihTy0q1V+jrQvyXC+sEB3TCbggkmyG0Y7L2dM+RUta6f0eXGvfRnYZEUevzdH4lFCo/Ye+QNZu5xpz5Tw34SYp+ciJh80WsdS0aav5UAeYuPqr/XI6QoMpGdqV0uhHmoVp/G6LcwBJT41KzrHV7nxC4F+U+uxCy+YOHMh2QOY6+NagMn1RrZn73DGQYKDlxKCrYUGzj8dKVLcyX+VsdB6Dx8ZwfuYxOLlqpsfWY3vg2eK8iPBx0GGkLFYbf6Wi+MsW0fpndUfJLvjpPv7cq6K7OndFzEjYY9jzSO99K45G/q3D+dsiaZ1/6KPoyFuJ8u1NEV4YjHzbGaDTyDxyJtWdIVkEKXanjijpFaKnmNIsQcIbQGix667ILRhB5jJWY95DncUtefzHD92Bnm+w2gZPKOXPXQ1ke70DMi3tnlC1dQyAYxzWGXcuw6gmpi8RAQbwI9Wl+xtRSI9hVeXXzQ0skmfFBD1bqtILLA/ToGaXLO4HvGZPcVwlR/jXZfn6tBd2NLSwKPOyOJKZHhf12fgOmucixSOGgv5zFRIqsTEjv7SM0WHtgQe1uNWuCd1nGZeJipsLIEesSkPBrJFHdEqEDWu3DwaNp33FtEhbf0C0JhhwDPxDPHFYo25NEoSBb4AfckWxDPZ43rl8EDSwkdlyOH2xM4zhjNlHqtCk8BUm8n8AbOJygIu4m2zo6DAEocusn6ny7sqN6VBk3QgjlGyEVVrJJl7GkXO11/6oVDWABJXsdDTbYrCjA9zQqzzUujWg8HanndaxWIOcfGV8qwSdaugLO1x+IkM+uV+HeGBAk4NI7vu3o5UskQjfZtwRiQL4S7Kuvm7FKbD2iihkSaUs7B7ERNWHjl6cbwWVp1cR2LKSbvuvyofs4REJyWUS+nc2Y0cBShCau8aw1JZhkMi+pEPNewHBHTcvGFPO0E3BRX/d+Ph+zGA51U1Z7Ckt+Eb2ew2pTCgfD3HTZUjoPpvkN2aiaiMYnprBeSkhX5ZMhaNFnzK5vXcsD7XPs0pz/Pz5w8f6BHD09yIKt7SwvBvEx0Uo5pcKMT0MSSRZzd2Z1OMeF/PVt5WdMW7TpKNqCvFkPkG2onY0hSnZgLvV0iVy7t8BqaNpoDH1e8h21xU0KIAWyvjbSInVTEFkg1lknQKj4I400TiwE+CedXYPmUiJXQJ9+2OzT,iv:36bGa4z79lWG0qi8Il+v7ywJdFlgzzUDw3z1nysJdvU=,tag:veq8iRSdFAWsXruQ61rlcw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1cHV5emJNRlJmVFNlQ29E + ejErbWtXZkFnOGJOL0tlL0Ftb0pFN296a2dzCkExbElIQVJ0dnBocVAxTENvSEkv + WGh3dXFvZHdDTTdpT3Zub0NxemtDbXMKLS0tIGJCTHRDSWI4YlZjVlZpS1phem5t + cEdTUVd5TUdPYjZTU1lIcHZPd2J2dEkK709EwDc78mCBSPtnulXVIrQNGmEOM4TK + iSPcKyKrN7zH7V9H9LQOGB3kOuAiWCxRZAtAvgJ3sMAXxWbnp2FdCA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:33Z" + mac: ENC[AES256_GCM,data:C4LwL91HbXlZBuMsaB48ueMT8dXkdJFsy7JvG/Yf2vWtTq/q5N40VSGL2ZeX8mTp+/6A3AKEfYknQ6Nk9LqpyNF9ow2+I914vsbcD05LjiWWOo9yYRUZ7+ktFJbcyreibeSKNp8YJHqEeniuGBUcMJvCfYVADSABRsNANqgJcJ4=,iv:C3GvnbfkApc1n11DWy+clnQp+CLDifQoBDgSfMqPmkc=,tag:bdC6Dt6LJF9jaifwdE0TXw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 +--- +# Source: minio/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: minio + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 +type: Opaque +data: + root-user: ENC[AES256_GCM,data:pkV8l6QFZ0Y=,iv:9enfAC28krS8kD9ZObj7pIC7E2GsRHnYrG/bbsywJao=,tag:CIH/n3qZJRdlEEKdGBiPZQ==,type:str] + root-password: ENC[AES256_GCM,data:WW4GmXHma0kQRBmPp9tjzIzWWSoonnGaF+mce3+mbmALEFENoSmDaxlWIaYjU6TnCNeyFwfsKvY=,iv:M4YHCdD58RwH/1fyZMD4yB2r1Lm69jVurP0koQi3Uu0=,tag:qpjqW2pTbJSvCEaxaNxecQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1cHV5emJNRlJmVFNlQ29E + ejErbWtXZkFnOGJOL0tlL0Ftb0pFN296a2dzCkExbElIQVJ0dnBocVAxTENvSEkv + WGh3dXFvZHdDTTdpT3Zub0NxemtDbXMKLS0tIGJCTHRDSWI4YlZjVlZpS1phem5t + cEdTUVd5TUdPYjZTU1lIcHZPd2J2dEkK709EwDc78mCBSPtnulXVIrQNGmEOM4TK + iSPcKyKrN7zH7V9H9LQOGB3kOuAiWCxRZAtAvgJ3sMAXxWbnp2FdCA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:33Z" + mac: ENC[AES256_GCM,data:C4LwL91HbXlZBuMsaB48ueMT8dXkdJFsy7JvG/Yf2vWtTq/q5N40VSGL2ZeX8mTp+/6A3AKEfYknQ6Nk9LqpyNF9ow2+I914vsbcD05LjiWWOo9yYRUZ7+ktFJbcyreibeSKNp8YJHqEeniuGBUcMJvCfYVADSABRsNANqgJcJ4=,iv:C3GvnbfkApc1n11DWy+clnQp+CLDifQoBDgSfMqPmkc=,tag:bdC6Dt6LJF9jaifwdE0TXw==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/services.yaml b/manifests/services.yaml new file mode 100644 index 0000000..be575ac --- /dev/null +++ b/manifests/services.yaml @@ -0,0 +1,2517 @@ +# Source: opendesk-home/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: opendesk-home + labels: + app.kubernetes.io/name: opendesk-home + helm.sh/chart: opendesk-home-1.0.2 + app.kubernetes.io/instance: opendesk-home + app.kubernetes.io/managed-by: Helm + annotations: + nginx.ingress.kubernetes.io/server-snippet: | + location ~* "^/$" { + return 302 https://portal.opendesk.apps.digilab.network; + } + nginx.org/server-snippets: | + location ~* "^/$" { + return 302 https://portal.opendesk.apps.digilab.network; + } + haproxy.org/request-redirect: https://portal.opendesk.apps.digilab.network + haproxy-ingress.github.io/redirect-to: https://portal.opendesk.apps.digilab.network +spec: + tls: + - hosts: + - opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: opendesk.apps.digilab.network +--- +# Source: opendesk-certificates/templates/certificate.yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: opendesk-certificates + annotations: + helm.sh/resource-policy: keep + labels: + app.kubernetes.io/name: opendesk-certificates + helm.sh/chart: opendesk-certificates-2.1.3 + app.kubernetes.io/instance: opendesk-certificates + app.kubernetes.io/managed-by: Helm +spec: + dnsNames: + - opendesk.apps.digilab.network + - office.opendesk.apps.digilab.network + - pad.opendesk.apps.digilab.network + - chat.opendesk.apps.digilab.network + - ics.opendesk.apps.digilab.network + - meet.opendesk.apps.digilab.network + - id.opendesk.apps.digilab.network + - matrix-neoboard-widget.opendesk.apps.digilab.network + - matrix-neochoice-widget.opendesk.apps.digilab.network + - matrix-neodatefix-bot.opendesk.apps.digilab.network + - matrix-neodatefix-widget.opendesk.apps.digilab.network + - objectstore.opendesk.apps.digilab.network + - objectstore-ui.opendesk.apps.digilab.network + - files.opendesk.apps.digilab.network + - portal.opendesk.apps.digilab.network + - projects.opendesk.apps.digilab.network + - webmail.opendesk.apps.digilab.network + - matrix.opendesk.apps.digilab.network + - matrix-federation.opendesk.apps.digilab.network + - whiteboard.opendesk.apps.digilab.network + - wiki.opendesk.apps.digilab.network + issuerRef: + kind: ClusterIssuer + name: letsencrypt-prod + secretName: opendesk-certificates-tls +--- +# Source: redis/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +automountServiceAccountToken: true +metadata: + name: redis + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + app.kubernetes.io/version: 7.2.3 + helm.sh/chart: redis-18.6.1 +--- +# Source: redis/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: redis-configuration + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + app.kubernetes.io/version: 7.2.3 + helm.sh/chart: redis-18.6.1 +data: + redis.conf: |- + # User-supplied common configuration: + # Enable AOF https://redis.io/topics/persistence#append-only-file + appendonly yes + # Disable RDB persistence, AOF persistence already enabled. + save "" + # End of common configuration + master.conf: |- + dir /data + # User-supplied master configuration: + rename-command FLUSHDB "" + rename-command FLUSHALL "" + # End of master configuration + replica.conf: |- + dir /data + # User-supplied replica configuration: + rename-command FLUSHDB "" + rename-command FLUSHALL "" + # End of replica configuration +--- +# Source: redis/templates/health-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: redis-health + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + app.kubernetes.io/version: 7.2.3 + helm.sh/chart: redis-18.6.1 +data: + ping_readiness_local.sh: |- + #!/bin/bash + + [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" + [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD" + response=$( + timeout -s 15 $1 \ + redis-cli \ + -h localhost \ + -p $REDIS_PORT \ + ping + ) + if [ "$?" -eq "124" ]; then + echo "Timed out" + exit 1 + fi + if [ "$response" != "PONG" ]; then + echo "$response" + exit 1 + fi + ping_liveness_local.sh: |- + #!/bin/bash + + [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" + [[ -n "$REDIS_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_PASSWORD" + response=$( + timeout -s 15 $1 \ + redis-cli \ + -h localhost \ + -p $REDIS_PORT \ + ping + ) + if [ "$?" -eq "124" ]; then + echo "Timed out" + exit 1 + fi + responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}') + if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ] && [ "$responseFirstWord" != "MASTERDOWN" ]; then + echo "$response" + exit 1 + fi + ping_readiness_master.sh: |- + #!/bin/bash + + [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" + [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD" + response=$( + timeout -s 15 $1 \ + redis-cli \ + -h $REDIS_MASTER_HOST \ + -p $REDIS_MASTER_PORT_NUMBER \ + ping + ) + if [ "$?" -eq "124" ]; then + echo "Timed out" + exit 1 + fi + if [ "$response" != "PONG" ]; then + echo "$response" + exit 1 + fi + ping_liveness_master.sh: |- + #!/bin/bash + + [[ -f $REDIS_MASTER_PASSWORD_FILE ]] && export REDIS_MASTER_PASSWORD="$(< "${REDIS_MASTER_PASSWORD_FILE}")" + [[ -n "$REDIS_MASTER_PASSWORD" ]] && export REDISCLI_AUTH="$REDIS_MASTER_PASSWORD" + response=$( + timeout -s 15 $1 \ + redis-cli \ + -h $REDIS_MASTER_HOST \ + -p $REDIS_MASTER_PORT_NUMBER \ + ping + ) + if [ "$?" -eq "124" ]; then + echo "Timed out" + exit 1 + fi + responseFirstWord=$(echo $response | head -n1 | awk '{print $1;}') + if [ "$response" != "PONG" ] && [ "$responseFirstWord" != "LOADING" ]; then + echo "$response" + exit 1 + fi + ping_readiness_local_and_master.sh: |- + script_dir="$(dirname "$0")" + exit_status=0 + "$script_dir/ping_readiness_local.sh" $1 || exit_status=$? + "$script_dir/ping_readiness_master.sh" $1 || exit_status=$? + exit $exit_status + ping_liveness_local_and_master.sh: |- + script_dir="$(dirname "$0")" + exit_status=0 + "$script_dir/ping_liveness_local.sh" $1 || exit_status=$? + "$script_dir/ping_liveness_master.sh" $1 || exit_status=$? + exit $exit_status +--- +# Source: redis/templates/scripts-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: redis-scripts + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + app.kubernetes.io/version: 7.2.3 + helm.sh/chart: redis-18.6.1 +data: + start-master.sh: | + #!/bin/bash + + [[ -f $REDIS_PASSWORD_FILE ]] && export REDIS_PASSWORD="$(< "${REDIS_PASSWORD_FILE}")" + if [[ -f /opt/bitnami/redis/mounted-etc/master.conf ]];then + cp /opt/bitnami/redis/mounted-etc/master.conf /opt/bitnami/redis/etc/master.conf + fi + if [[ -f /opt/bitnami/redis/mounted-etc/redis.conf ]];then + cp /opt/bitnami/redis/mounted-etc/redis.conf /opt/bitnami/redis/etc/redis.conf + fi + ARGS=("--port" "${REDIS_PORT}") + ARGS+=("--requirepass" "${REDIS_PASSWORD}") + ARGS+=("--masterauth" "${REDIS_PASSWORD}") + ARGS+=("--include" "/opt/bitnami/redis/etc/redis.conf") + ARGS+=("--include" "/opt/bitnami/redis/etc/master.conf") + exec redis-server "${ARGS[@]}" +--- +# Source: redis/templates/headless-svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: redis-headless + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + app.kubernetes.io/version: 7.2.3 + helm.sh/chart: redis-18.6.1 + annotations: +spec: + type: ClusterIP + clusterIP: None + ports: + - name: tcp-redis + port: 6379 + targetPort: redis + selector: + app.kubernetes.io/instance: redis + app.kubernetes.io/name: redis +--- +# Source: redis/templates/master/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: redis-master + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + app.kubernetes.io/version: 7.2.3 + helm.sh/chart: redis-18.6.1 + app.kubernetes.io/component: master +spec: + type: ClusterIP + internalTrafficPolicy: Cluster + sessionAffinity: None + ports: + - name: tcp-redis + port: 6379 + targetPort: redis + nodePort: + selector: + app.kubernetes.io/instance: redis + app.kubernetes.io/name: redis + app.kubernetes.io/component: master +--- +# Source: redis/templates/master/application.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: redis-master + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + app.kubernetes.io/version: 7.2.3 + helm.sh/chart: redis-18.6.1 + app.kubernetes.io/component: master +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: redis + app.kubernetes.io/name: redis + app.kubernetes.io/component: master + serviceName: redis-headless + updateStrategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: redis + app.kubernetes.io/version: 7.2.3 + helm.sh/chart: redis-18.6.1 + app.kubernetes.io/component: master + annotations: + checksum/configmap: 86bcc953bb473748a3d3dc60b7c11f34e60c93519234d4c37f42e22ada559d47 + checksum/health: aff24913d801436ea469d8d374b2ddb3ec4c43ee7ab24663d5f8ff1a1b6991a9 + checksum/scripts: 560c33ff34d845009b51830c332aa05fa211444d1877d3526d3599be7543aaa5 + checksum/secret: 299c15f62056fd8c3029c700bbfac2d627b8b2972dfe528172e9cd02e8f3b77f + spec: + securityContext: + fsGroup: 1001 + serviceAccountName: redis + automountServiceAccountToken: true + affinity: + podAffinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/instance: redis + app.kubernetes.io/name: redis + app.kubernetes.io/component: master + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + enableServiceLinks: true + terminationGracePeriodSeconds: 30 + containers: + - name: redis + image: + registry-1.docker.io/bitnami/redis:7.2.3-debian-11-r2@sha256:9ac3bbf7740969d32689e360ddcfa5f672538c47f6f6cf296173c3078de0edf2 + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + command: + - /bin/bash + args: + - -c + - /opt/bitnami/scripts/start-scripts/start-master.sh + env: + - name: BITNAMI_DEBUG + value: 'false' + - name: REDIS_REPLICATION_MODE + value: master + - name: ALLOW_EMPTY_PASSWORD + value: no + - name: REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: redis + key: redis-password + - name: REDIS_TLS_ENABLED + value: no + - name: REDIS_PORT + value: '6379' + ports: + - name: redis + containerPort: 6379 + livenessProbe: + initialDelaySeconds: 20 + periodSeconds: 5 + # One second longer than command timeout should prevent generation of zombie processes. + timeoutSeconds: 6 + successThreshold: 1 + failureThreshold: 5 + exec: + command: + - sh + - -c + - /health/ping_liveness_local.sh 5 + readinessProbe: + initialDelaySeconds: 20 + periodSeconds: 5 + timeoutSeconds: 2 + successThreshold: 1 + failureThreshold: 5 + exec: + command: + - sh + - -c + - /health/ping_readiness_local.sh 1 + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: start-scripts + mountPath: /opt/bitnami/scripts/start-scripts + - name: health + mountPath: /health + - name: redis-data + mountPath: /data + - name: config + mountPath: /opt/bitnami/redis/mounted-etc + - name: redis-tmp-conf + mountPath: /opt/bitnami/redis/etc/ + - name: tmp + mountPath: /tmp + volumes: + - name: start-scripts + configMap: + name: redis-scripts + defaultMode: 0755 + - name: health + configMap: + name: redis-health + defaultMode: 0755 + - name: config + configMap: + name: redis-configuration + - name: redis-tmp-conf + emptyDir: {} + - name: tmp + emptyDir: {} + volumeClaimTemplates: + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: redis-data + labels: + app.kubernetes.io/instance: redis + app.kubernetes.io/name: redis + app.kubernetes.io/component: master + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: managed +--- +# Source: memcached/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +automountServiceAccountToken: true +metadata: + name: memcached + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: memcached + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: memcached + app.kubernetes.io/version: 1.6.22 + helm.sh/chart: memcached-6.7.1 +--- +# Source: memcached/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: memcached + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: memcached + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: memcached + app.kubernetes.io/version: 1.6.22 + helm.sh/chart: memcached-6.7.1 +spec: + type: ClusterIP + ports: + - name: memcache + port: 11211 + targetPort: memcache + nodePort: + selector: + app.kubernetes.io/instance: memcached + app.kubernetes.io/name: memcached +--- +# Source: memcached/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: memcached + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: memcached + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: memcached + app.kubernetes.io/version: 1.6.22 + helm.sh/chart: memcached-6.7.1 +spec: + selector: + matchLabels: + app.kubernetes.io/instance: memcached + app.kubernetes.io/name: memcached + replicas: 1 + strategy: + rollingUpdate: {} + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/instance: memcached + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: memcached + app.kubernetes.io/version: 1.6.22 + helm.sh/chart: memcached-6.7.1 + annotations: + spec: + affinity: + podAffinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/instance: memcached + app.kubernetes.io/name: memcached + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + securityContext: + fsGroup: 1001 + serviceAccountName: memcached + containers: + - name: memcached + image: + registry-1.docker.io/bitnami/memcached:1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + env: + - name: BITNAMI_DEBUG + value: 'false' + - name: MEMCACHED_PORT_NUMBER + value: '11211' + ports: + - name: memcache + containerPort: 11211 + livenessProbe: + failureThreshold: 6 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + tcpSocket: + port: memcache + readinessProbe: + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 3 + tcpSocket: + port: memcache + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: tmp + mountPath: /tmp + volumes: + - name: tmp + emptyDir: {} + +--- +# Source: postgresql/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: postgresql + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.1 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +--- +# Source: postgresql/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: postgresql + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.1 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm +data: +--- +# Source: postgresql/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: postgresql + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.1 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: postgresql + port: 5432 + targetPort: postgresql + protocol: TCP + selector: + app.kubernetes.io/name: postgresql + app.kubernetes.io/instance: postgresql +--- +# Source: postgresql/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: postgresql + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.1 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + serviceName: postgresql + updateStrategy: + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: postgresql + app.kubernetes.io/instance: postgresql + template: + metadata: + annotations: + argocd.argoproj.io/hook: PostSync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.1 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + serviceAccountName: postgresql + terminationGracePeriodSeconds: 120 + hostNetwork: false + hostIPC: false + containers: + - name: postgresql + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/library/postgres:15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b + imagePullPolicy: IfNotPresent + env: + - name: POSTGRES_PASSWORD + value: a826fedc7de54b7b51fef95697c7161a6cbb223a + - name: POSTGRES_USER + value: postgres + - name: PGPORT + value: '5432' + - name: PGDATA + value: /mnt/postgresql/data + ports: + - name: postgresql + containerPort: 5432 + protocol: TCP + startupProbe: + failureThreshold: 15 + initialDelaySeconds: 15 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + exec: + command: + - /bin/sh + - -c + - exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 + livenessProbe: + failureThreshold: 6 + initialDelaySeconds: 15 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + exec: + command: + - /bin/sh + - -c + - exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 + readinessProbe: + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + exec: + command: + - /bin/sh + - -c + - exec pg_isready -U "postgres" -h 127.0.0.1 -p 5432 + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - name: tmp + mountPath: /tmp + - name: var-run-postgresql + mountPath: /var/run/postgresql + - name: data + mountPath: /mnt/postgresql + volumes: + - name: tmp + emptyDir: {} + - name: var-run-postgresql + emptyDir: {} + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: managed +--- +# Source: postgresql/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: postgresql-bootstrap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.1 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: post-install,post-upgrade + helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded +spec: + ttlSecondsAfterFinished: 60 + template: + metadata: + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.1 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm + annotations: + spec: + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + serviceAccountName: postgresql + containers: + - name: psql + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/library/postgres:15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - /mnt/bootstrap/init-wait.sh && /mnt/bootstrap/init-user.sh && /mnt/bootstrap/init-db.sh + volumeMounts: + - mountPath: /mnt/bootstrap/ + name: bootstrap + readOnly: true + env: + - name: PGHOST + value: postgresql + - name: PGPORT + value: '5432' + - name: PGUSER + value: postgres + - name: PGPASSWORD + value: a826fedc7de54b7b51fef95697c7161a6cbb223a + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumes: + - name: bootstrap + secret: + secretName: postgresql-job + defaultMode: 0550 + restartPolicy: Never + backoffLimit: 4 +--- +# Source: mariadb/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: mariadb + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-2.3.1 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +--- +# Source: mariadb/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: mariadb + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-2.3.1 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm +data: +--- +# Source: mariadb/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: mariadb + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-2.3.1 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: mariadb + port: 3306 + targetPort: mariadb + protocol: TCP + selector: + app.kubernetes.io/name: mariadb + app.kubernetes.io/instance: mariadb +--- +# Source: mariadb/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: mariadb + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-2.3.1 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + serviceName: mariadb + updateStrategy: + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: mariadb + app.kubernetes.io/instance: mariadb + template: + metadata: + annotations: + argocd.argoproj.io/hook: PostSync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-2.3.1 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + serviceAccountName: mariadb + terminationGracePeriodSeconds: 120 + hostNetwork: false + hostIPC: false + containers: + - name: mariadb + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/library/mariadb:10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f + imagePullPolicy: IfNotPresent + env: + - name: MARIADB_ROOT_PASSWORD + value: 6c3e5177d1196ce1c7e94a3ed70d4536916bc46b + ports: + - name: mariadb + containerPort: 3306 + protocol: TCP + startupProbe: + failureThreshold: 15 + initialDelaySeconds: 15 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + exec: + command: + - /bin/sh + - -ec + - mariadb-admin status -uroot -p"${MARIADB_ROOT_PASSWORD}" + livenessProbe: + failureThreshold: 6 + initialDelaySeconds: 15 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + exec: + command: + - /bin/sh + - -ec + - mariadb-admin status -uroot -p"${MARIADB_ROOT_PASSWORD}" + readinessProbe: + failureThreshold: 6 + initialDelaySeconds: 5 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + exec: + command: + - /bin/sh + - -ec + - mariadb-admin status -uroot -p"${MARIADB_ROOT_PASSWORD}" + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 384Mi + volumeMounts: + - name: tmp + mountPath: /tmp + - name: run-mysqld + mountPath: /run/mysqld + - name: data + mountPath: /var/lib/mysql + volumes: + - name: tmp + emptyDir: {} + - name: run-mysqld + emptyDir: {} + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: managed +--- +# Source: mariadb/templates/job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: mariadb-bootstrap + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-2.3.1 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm + annotations: + helm.sh/hook: post-install,post-upgrade + helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded +spec: + ttlSecondsAfterFinished: 60 + template: + metadata: + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-2.3.1 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm + annotations: + spec: + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + serviceAccountName: mariadb + containers: + - name: mariadb + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/library/mariadb:10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - -c + - /mnt/bootstrap/init-wait.sh && /mnt/bootstrap/init-user.sh < /mnt/bootstrap/init-user-data.sql + && /mnt/bootstrap/init-db.sh + volumeMounts: + - mountPath: /mnt/bootstrap/ + name: bootstrap + readOnly: true + env: + - name: MARIADB_HOST + value: mariadb + - name: MARIADB_ROOT_PASSWORD + value: 6c3e5177d1196ce1c7e94a3ed70d4536916bc46b + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 384Mi + volumes: + - name: bootstrap + secret: + secretName: mariadb-job + defaultMode: 0550 + restartPolicy: Never + backoffLimit: 4 +--- +# Source: postfix/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: postfix + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-2.3.0 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +--- +# Source: postfix/templates/configmap-overrides.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: postfix-overrides + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-2.3.0 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: postfix +data: + sasl_passwd.map: | + : +--- +# Source: postfix/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: postfix-config + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-2.3.0 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: postfix +data: + master.cf: | + # service type private unpriv chroot wakeup maxproc command + args + smtp inet n - n - 200 smtpd + -o smtpd_client_connection_count_limit=15 + -o smtpd_proxy_options=speed_adjust + -o smtpd_recipient_restrictions= + -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination + -o smtpd_sender_restrictions= + -o smtpd_client_restrictions= + + submission inet n - n - - smtpd + -o syslog_name=postfix/submission + -o smtpd_tls_security_level=encrypt + -o smtpd_sasl_auth_enable=yes + -o smtpd_reject_unlisted_recipient=no + -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject + -o smtpd_client_connection_count_limit=15 + -o smtpd_proxy_options=speed_adjust + + pickup unix n - n 60 1 pickup + cleanup unix n - n - 0 cleanup + qmgr unix n - n 300 1 qmgr + tlsmgr unix - - n 1000? 1 tlsmgr + rewrite unix - - n - - trivial-rewrite + bounce unix - - n - 0 bounce + defer unix - - n - 0 bounce + trace unix - - n - 0 bounce + verify unix - - n - 1 verify + flush unix n - n 1000? 0 flush + proxymap unix - - n - - proxymap + proxywrite unix - - n - 1 proxymap + smtp unix - - n - - smtp + relay unix - - n - - smtp + showq unix n - n - - showq + error unix - - n - - error + retry unix - - n - - error + discard unix - - n - - discard + local unix - n n - - local + virtual unix - n n - - virtual + lmtp unix - - n - - lmtp + anvil unix - - n - 1 anvil + scache unix - - n - 1 scache + postlog unix-dgram n - n - 1 postlogd + + lmtps unix - - n - - lmtp + -o lmtp_use_tls=yes + -o lmtp_enforce_tls=yes + -o lmtp_tls_mandatory_protocols=!SSLv2,!SSLv3 + -o lmtp_tls_protocols=!SSLv2,!SSLv3 + -o lmtp_tls_mandatory_ciphers=high + -o lmtp_tls_ciphers=high + -o lmtp_send_xforward_command=yes + -o lmtp_tls_security_level=encrypt + -o lmtp_tls_note_starttls_offer=yes + main.cf: | + mydomain = opendesk.apps.digilab.network + myhostname = postfix + myorigin = $mydomain + inet_protocols = ipv4 + + # Message size limit + message_size_limit = 50000000 + + # Relayed networks + mynetworks = 127.0.0.1/32 [::1]/128 10.0.0.0/8 + + # Empty alias list to override the configuration variable and disable NIS + alias_maps = + + # Only accept virtual emails + mydestination = $myhostname, localhost.$mydomain, localhost + + # What mechanisms the Postfix lmtp/smtp client uses to look up a host's IP address + lmtp_host_lookup = native + smtp_host_lookup = native + + # Relayhost if any is configured + relayhost = + + content_filter = + + smtp_sasl_auth_enable = yes + smtp_sasl_password_maps = lmdb:/etc/postfix/sasl_passwd.map + smtp_sasl_security_options = + smtp_use_tls = yes + smtp_tls_CAfile = + smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 + smtp_tls_session_cache_database = lmdb:/var/lib/postfix/smtp_scache + + virtual_mailbox_domains = opendesk.apps.digilab.network + virtual_transport = lmtps:dovecot:24 + transport_maps = + + ############### + # Restrictions + ############### + + # Delay all rejects until all information can be logged + smtpd_delay_reject = yes + + # Allowed senders are: the user or one of the alias destinations + smtpd_sender_login_maps = $virtual_alias_maps + + # Helo restrictions are specified for smtp only in master.cf + smtpd_helo_required = yes + + # Sender restrictions + smtpd_sender_restrictions = + permit_mynetworks, + reject_non_fqdn_sender, + reject_unknown_sender_domain, + reject_unlisted_sender, + reject_sender_login_mismatch, + permit + + # Recipient restrictions: + smtpd_recipient_restrictions = + reject_unauth_pipelining, + reject_non_fqdn_recipient, + reject_unknown_recipient_domain, + permit_mynetworks, + permit + + # Relay restrictions + smtpd_relay_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + + smtpd_sasl_auth_enable = no + smtpd_sasl_path = inet:dovecot:3659 + smtpd_sasl_security_options = noanonymous + smtpd_sasl_type = dovecot + smtpd_use_tls = yes + smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 + smtpd_tls_cert_file = /etc/tls/tls.crt + smtpd_tls_key_file = /etc/tls/tls.key + smtpd_tls_session_cache_database = lmdb:/var/lib/postfix/smtpd_scache + + smtpd_milters = inet:clamav-simple:7357 + milter_default_action = accept + + ############### + # Extra Settings + ############### + maillog_file = /dev/stdout +--- +# Source: postfix/templates/persistentvolumeclaim.yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: postfix +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: managed +--- +# Source: postfix/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: postfix + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-2.3.0 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: postfix +spec: + type: ClusterIP + ports: + - port: 25 + targetPort: 25 + protocol: TCP + name: smtp + - port: 587 + targetPort: 587 + protocol: TCP + name: smtps + selector: + app.kubernetes.io/name: postfix + app.kubernetes.io/instance: postfix +--- +# Source: postfix/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postfix + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-2.3.0 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: postfix +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: postfix + app.kubernetes.io/instance: postfix + strategy: + type: Recreate + template: + metadata: + annotations: + checksum/configmapoverrides: 7e1257ac47b8fe7c551018f2467f85b520ce7a226f73bcf5eb7764899f29cd5b + checksum/configmapnamespacewatcherbin: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-2.3.0 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm + spec: + imagePullSecrets: + securityContext: + fsGroup: 101 + serviceAccountName: postfix + volumes: + - name: tls + secret: + secretName: opendesk-certificates-tls + - name: spool-postfix + persistentVolumeClaim: + claimName: postfix + - name: config-master + configMap: + name: postfix-config + items: + - key: master.cf + path: master.cf + - name: config-main + configMap: + name: postfix-config + items: + - key: main.cf + path: main.cf + - name: overrides + configMap: + name: postfix-overrides + containers: + - name: postfix + securityContext: + allowPrivilegeEscalation: true + capabilities: {} + privileged: true + readOnlyRootFilesystem: false + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:2.0.0@sha256:5b2432dc09318db172a593bca860887ee9d713b9987db64f8b265f3e08a1d374 + imagePullPolicy: IfNotPresent + # for debugging use: + #command: ["tail", "-f", "/dev/null"] + env: + ports: + - name: smtp + containerPort: 25 + protocol: TCP + - name: smtps + containerPort: 587 + protocol: TCP + readinessProbe: + tcpSocket: + port: 25 + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + livenessProbe: + tcpSocket: + port: 25 + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 16Mi + volumeMounts: + - name: config-master + mountPath: /etc/postfix/master.cf + subPath: master.cf + - name: config-main + mountPath: /etc/postfix/main.cf + subPath: main.cf + - name: tls + mountPath: /etc/tls + - name: spool-postfix + mountPath: /var/spool/postfix + - name: overrides + mountPath: /overrides +--- +# Source: clamav-simple/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: clamav-simple + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: clamav-simple + helm.sh/chart: clamav-simple-4.0.6 + app.kubernetes.io/instance: clamav-simple + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +--- +# Source: clamav-simple/templates/configmap.yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: clamav-simple + labels: + app.kubernetes.io/name: clamav-simple + helm.sh/chart: clamav-simple-4.0.6 + app.kubernetes.io/instance: clamav-simple + app.kubernetes.io/managed-by: Helm +data: + clamd.conf: | + DatabaseDirectory /var/lib/clamav + LogFileUnlock no + LogFileMaxSize 1M + LogTime no + LogVerbose no + LogSyslog yes + LogFacility LOG_LOCAL6 + LogRotate no + LogClean no + PreludeEnable no + PreludeAnalyzerName ClamAV + ExtendedDetectionInfo yes + PidFile /tmp/clamd.pid + TemporaryDirectory /var/tmp + OfficialDatabaseOnly no + LocalSocket /tmp/clamd.sock + LocalSocketMode 660 + FixStaleSocket yes + TCPSocket 3310 + TCPAddr 0.0.0.0 + MaxConnectionQueueLength 200 + StreamMaxLength 100M + StreamMinPort 1024 + StreamMaxPort 2048 + MaxThreads 10 + ReadTimeout 120 + CommandReadTimeout 30 + SendBufTimeout 500 + MaxQueue 100 + IdleTimeout 30 + MaxDirectoryRecursion 15 + FollowDirectorySymlinks no + FollowFileSymlinks no + CrossFilesystems yes + SelfCheck 120 + ConcurrentDatabaseReload yes + VirusEvent no + User clamav + ExitOnOOM yes + Foreground yes + Debug no + LeaveTemporaryFiles no + GenerateMetadataJson yes + AllowAllMatchScan yes + DetectPUA no + ForceToDisk yes + DisableCache no + HeuristicAlerts yes + HeuristicScanPrecedence no + AlertBrokenExecutables yes + AlertBrokenMedia yes + AlertEncrypted no + AlertEncryptedArchive no + AlertEncryptedDoc no + AlertOLE2Macros no + AlertPhishingSSLMismatch no + AlertPhishingCloak no + AlertPartitionIntersection no + ScanPE yes + DisableCertCheck no + ScanELF yes + ScanOLE2 yes + ScanPDF yes + ScanSWF yes + ScanXMLDOCS yes + ScanHWP3 yes + ScanMail yes + ScanPartialMessages no + PhishingSignatures yes + PhishingScanURLs yes + StructuredDataDetection no + StructuredMinCreditCardCount 3 + StructuredCCOnly no + StructuredMinSSNCount 3 + StructuredSSNFormatNormal yes + StructuredSSNFormatStripped no + ScanHTML yes + ScanArchive yes + MaxScanTime 120000 + MaxScanSize 400M + MaxFileSize 100M + MaxRecursion 17 + MaxFiles 10000 + MaxEmbeddedPE 40M + MaxHTMLNormalize 40M + MaxHTMLNoTags 8M + MaxScriptNormalize 20M + MaxZipTypeRcg 1M + MaxPartitions 50 + MaxIconsPE 100 + MaxRecHWP3 16 + PCREMatchLimit 100000 + PCRERecMatchLimit 2000 + PCREMaxFileSize 100M + AlertExceedsMax no + OnAccessMaxFileSize 5M + OnAccessMaxThreads 5 + OnAccessCurlTimeout 5000 + OnAccessDisableDDD no + OnAccessPrevention no + OnAccessDenyOnError no + OnAccessExtraScanning no + OnAccessExcludeRootUID no + OnAccessExcludeUname no + Bytecode yes + BytecodeSecurity TrustSigned + BytecodeUnsigned no + BytecodeTimeout 10000 + + freshclam.conf: | + DatabaseDirectory /var/lib/clamav + LogFileMaxSize 1M + LogTime no + LogVerbose no + LogSyslog yes + LogFacility LOG_LOCAL6 + LogRotate no + DatabaseOwner clamav + MaxAttempts 3 + ScriptedUpdates yes + CompressLocalDatabase no + NotifyClamd no + Foreground yes + Debug no + ConnectTimeout 30 + ReceiveTimeout 60 + Bytecode yes + Checks 12 + DatabaseMirror https://clamavdb.c3sl.ufpr.br + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/badmacro.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/blurl.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_js.cdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_js.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/hackingteam.hsb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/junk.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/jurlbl.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/jurlbla.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/lott.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/malwarehash.hsb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/phish.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/phishtank.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/porcupine.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/rogue.hdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/scam.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/shelter.ldb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spamattach.hdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spamimg.hdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spear.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spearl.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_malware.hdb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb + DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb + DatabaseCustomURL https://urlhaus.abuse.ch/downloads/urlhaus.ndb + + clamav-milter.conf: | + MilterSocket inet:7357 + FixStaleSocket yes + User clamav + ReadTimeout 120 + Foreground yes + TemporaryDirectory /tmp + ClamdSocket unix:/tmp/clamd.sock + MaxFileSize 25M + OnClean Accept + OnInfected Quarantine + OnFail Defer + AddHeader no + LogFileUnlock no + LogFileMaxSize 1M + LogTime no + LogVerbose no + LogSyslog yes + LogFacility LOG_LOCAL6 + LogRotate no + SupportMultipleRecipients yes + c-icap.conf: | + PidFile /run/c-icap/c-icap.pid + acl all src 0.0.0.0/0.0.0.0 + icap_access allow all + client_access allow all + Port 1344 + Timeout 300 + MaxKeepAliveRequests 100 + KeepAliveTimeout 600 + StartServers 1 + MaxServers 4 + MinSpareThreads 10 + MaxSpareThreads 20 + ThreadsPerChild 10 + ServerAdmin c-icap-admin + ServerName c-icap + TmpDir /var/tmp + MaxMemObject 131072 + DebugLevel 1 + Pipelining on + SupportBuggyClients off + RemoteProxyUsers off + ServerLog /dev/stdout + AccessLog /dev/stdout + ModulesDir /var/lib/clamav/lib/c_icap + ServicesDir /var/lib/clamav/lib/c_icap + TemplateDir /var/lib/clamav/share/c_icap/templates/ + TemplateDefaultLanguage en + LoadMagicFile /var/lib/clamav/etc/c-icap.magic + RemoteProxyUsers off + RemoteProxyUserHeader X-Authenticated-User + RemoteProxyUserHeaderEncoded on + Service echo srv_echo.so + Include virus_scan.conf + virus_scan.conf: | + Service antivirus_module virus_scan.so + ServiceAlias avscan virus_scan?allow204=on&sizelimit=off&mode=simple + virus_scan.Allow204Responces on + virus_scan.ScanFileTypes TEXT DATA EXECUTABLE ARCHIVE GIF JPEG MSOFFICE + virus_scan.SendPercentData 5 + virus_scan.StartSendPercentDataAfter 2M + virus_scan.MaxObjectSize 500M + Include clamd_mod.conf + clamd_mod.conf: | + Module common clamd_mod.so + clamd_mod.ClamdSocket /tmp/clamd.sock +--- +# Source: clamav-simple/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: clamav-simple + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: clamav-simple + helm.sh/chart: clamav-simple-4.0.6 + app.kubernetes.io/instance: clamav-simple + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - name: clamd + port: 3310 + targetPort: 3310 + protocol: TCP + - name: icap + port: 1344 + targetPort: 1344 + protocol: TCP + - name: milter + port: 7357 + targetPort: 7357 + protocol: TCP + selector: + app.kubernetes.io/name: clamav-simple + app.kubernetes.io/instance: clamav-simple +--- +# Source: clamav-simple/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: clamav-simple + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/name: clamav-simple + helm.sh/chart: clamav-simple-4.0.6 + app.kubernetes.io/instance: clamav-simple + app.kubernetes.io/managed-by: Helm +spec: + serviceName: clamav-simple + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: clamav-simple + app.kubernetes.io/instance: clamav-simple + updateStrategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: f140466c45580b59c5bb65ebdbc7126f93642bb7e6c6406adf40e003032a3586 + labels: + app.kubernetes.io/name: clamav-simple + helm.sh/chart: clamav-simple-4.0.6 + app.kubernetes.io/instance: clamav-simple + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: clamav-simple + initContainers: + - name: chown + image: + registry-1.docker.io/clamav/clamav:1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + runAsNonRoot: false + seccompProfile: + type: RuntimeDefault + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - chown -R clamav:clamav /var/lib/clamav + volumeMounts: + - name: clamav-database + mountPath: /var/lib/clamav/ + resources: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.1 + memory: 1.5Gi + containers: + - name: clamav + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 100 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry-1.docker.io/clamav/clamav:1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f + imagePullPolicy: IfNotPresent + env: + - name: CLAMAV_NO_CLAMD + value: 'false' + - name: CLAMAV_NO_FRESHCLAMD + value: 'false' + - name: CLAMAV_NO_MILTERD + value: 'false' + ports: + - name: clamd + containerPort: 3310 + protocol: TCP + - name: milter + containerPort: 7357 + protocol: TCP + livenessProbe: + tcpSocket: + port: clamd + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + tcpSocket: + port: clamd + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.1 + memory: 1.5Gi + volumeMounts: + - name: config + mountPath: /etc/clamav + - name: clamav-database + mountPath: /var/lib/clamav/ + - name: tmpfs-run-clamav + mountPath: /run/clamav + - name: tmpfs-run-lock + mountPath: /run/lock + - name: tmpfs-var-lock + mountPath: /var/lock + - name: tmpfs-var-log-clamav-log + mountPath: /var/log/clamav/ + - name: tmpfs-tmp-dir + mountPath: /var/tmp + - name: tmpfs-tmp + mountPath: /tmp + - name: icap + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 100 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + image: + registry.opencode.de/bmi/opendesk/components/platform-development/images/clamav-icap:0.5.10@sha256:891f267a6b2a304616854ad2f013dc5d23f6f6c84d535c8b46e76d124fe39b6a + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - | + while ! nc -z 127.0.0.1 3310; do + echo 'Clamd not responding, please check if clamd is running'; + sleep 5; + done; + /var/lib/clamav/bin/c-icap -N -D; + env: + ports: + - name: icap + containerPort: 1344 + protocol: TCP + livenessProbe: + tcpSocket: + port: icap + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + tcpSocket: + port: icap + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.1 + memory: 1.5Gi + volumeMounts: + - name: c-icap + mountPath: /var/lib/clamav/etc/c-icap.conf + subPath: c-icap.conf + - name: virus-scan + mountPath: /var/lib/clamav/etc/virus_scan.conf + subPath: virus_scan.conf + - name: clamd-mod + mountPath: /var/lib/clamav/etc/clamd_mod.conf + subPath: clamd_mod.conf + - name: tmpfs-var-run + mountPath: /var/run/c-icap + - name: tmpfs-tmp + mountPath: /tmp + - name: tmpfs-tmp-dir + mountPath: /var/tmp + volumes: + - name: config + configMap: + name: clamav-simple + - name: c-icap + configMap: + name: clamav-simple + items: + - key: c-icap.conf + path: c-icap.conf + - name: virus-scan + configMap: + name: clamav-simple + items: + - key: virus_scan.conf + path: virus_scan.conf + - name: clamd-mod + configMap: + name: clamav-simple + items: + - key: clamd_mod.conf + path: clamd_mod.conf + - name: tmpfs-run-clamav + emptyDir: {} + - name: tmpfs-run-lock + emptyDir: {} + - name: tmpfs-var-lock + emptyDir: {} + - name: tmpfs-var-log-clamav-log + emptyDir: {} + - name: tmpfs-var-run + emptyDir: + - name: tmpfs-tmp + emptyDir: + - name: tmpfs-tmp-dir + emptyDir: + sizeLimit: 1Gi + volumeClaimTemplates: + - metadata: + name: clamav-database + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: managed +--- +# Source: minio/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: minio + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 +automountServiceAccountToken: true +secrets: +- name: minio +--- +# Source: minio/templates/provisioning-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: minio-provisioning + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 + app.kubernetes.io/component: minio-provisioning +data: + policy-migrations-bucket-policy.json: | + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::migrations"] + }, + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::migrations/*"] + } + ] + } + policy-nextcloud-bucket-policy.json: | + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::nextcloud"] + }, + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::nextcloud/*"] + } + ] + } + policy-openproject-bucket-policy.json: | + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::openproject"] + }, + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::openproject/*"] + } + ] + } + policy-ums-bucket-policy.json: | + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::ums"] + }, + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::ums/*"] + } + ] + } +--- +# Source: minio/templates/pvc.yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: minio + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: managed +--- +# Source: minio/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: minio + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 +spec: + type: ClusterIP + ports: + - name: minio-api + port: 9000 + targetPort: minio-api + nodePort: + - name: minio-console + port: 9001 + targetPort: minio-console + nodePort: + selector: + app.kubernetes.io/instance: minio + app.kubernetes.io/name: minio +--- +# Source: minio/templates/standalone/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: minio + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 +spec: + selector: + matchLabels: + app.kubernetes.io/instance: minio + app.kubernetes.io/name: minio + strategy: + type: Recreate + template: + metadata: + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 + annotations: + checksum/credentials-secret: ec25b05261cecae27fc418c9d23b0552f02758d5156bf4adac90a1e7476e8792 + spec: + serviceAccountName: minio + affinity: + podAffinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/instance: minio + app.kubernetes.io/name: minio + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + containers: + - name: minio + image: + registry-1.docker.io/bitnami/minio:2023@sha256:bced4f2f9fc48b755ebb3e1b35e76195a978d4331bf2d0c6699dab412d3c0be7 + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 0 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + env: + - name: BITNAMI_DEBUG + value: 'false' + - name: MINIO_SCHEME + value: http + - name: MINIO_FORCE_NEW_KEYS + value: no + - name: MINIO_ROOT_USER + valueFrom: + secretKeyRef: + name: minio + key: root-user + - name: MINIO_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: minio + key: root-password + - name: MINIO_DEFAULT_BUCKETS + value: openproject,openxchange,ums,nextcloud + - name: MINIO_BROWSER + value: on + - name: MINIO_PROMETHEUS_AUTH_TYPE + value: public + - name: MINIO_CONSOLE_PORT_NUMBER + value: '9001' + envFrom: + ports: + - name: minio-api + containerPort: 9000 + protocol: TCP + - name: minio-console + containerPort: 9001 + protocol: TCP + livenessProbe: + httpGet: + path: /minio/health/live + port: minio-api + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 5 + readinessProbe: + tcpSocket: + port: minio-api + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 5 + startupProbe: + tcpSocket: + port: minio-console + initialDelaySeconds: 0 + periodSeconds: 10 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 60 + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.25 + memory: 256Mi + volumeMounts: + - name: data + mountPath: /bitnami/minio/data + volumes: + - name: data + persistentVolumeClaim: + claimName: minio +--- +# Source: minio/templates/api-ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: minio-api + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: 4G + nginx.org/client-max-body-size: 4G +spec: + rules: + - host: objectstore.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: minio + port: + name: minio-api + tls: + - hosts: + - objectstore.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls +--- +# Source: minio/templates/provisioning-job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: minio-provisioning + namespace: tn-openbsw-opendesk + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 + app.kubernetes.io/component: minio-provisioning + annotations: + helm.sh/hook: post-install,post-upgrade + helm.sh/hook-delete-policy: before-hook-creation +spec: + ttlSecondsAfterFinished: 60 + parallelism: 1 + template: + metadata: + labels: + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: 2023.12.20 + helm.sh/chart: minio-12.10.11 + app.kubernetes.io/component: minio-provisioning + spec: + restartPolicy: OnFailure + terminationGracePeriodSeconds: 0 + securityContext: + fsGroup: 1001 + serviceAccountName: minio + initContainers: + - name: wait-for-available-minio + image: + registry-1.docker.io/bitnami/minio:2023@sha256:bced4f2f9fc48b755ebb3e1b35e76195a978d4331bf2d0c6699dab412d3c0be7 + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsNonRoot: true + runAsUser: 1001 + seccompProfile: + type: RuntimeDefault + command: + - /bin/bash + - -c + - |- + set -e; + echo "Waiting for Minio"; + wait-for-port \ + --host=minio \ + --state=inuse \ + --timeout=120 \ + 9000; + echo "Minio is available"; + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.25 + memory: 256Mi + containers: + - name: minio + image: + registry-1.docker.io/bitnami/minio:2023@sha256:bced4f2f9fc48b755ebb3e1b35e76195a978d4331bf2d0c6699dab412d3c0be7 + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsNonRoot: true + runAsUser: 1001 + seccompProfile: + type: RuntimeDefault + command: + - /bin/bash + - -c + - >- + set -e; + echo "Start Minio provisioning"; + + function attachPolicy() { + local tmp=$(mc admin $1 info provisioning $2 | sed -n -e 's/^Policy.*: + \(.*\)$/\1/p'); + IFS=',' read -r -a CURRENT_POLICIES <<< "$tmp"; + if [[ ! "${CURRENT_POLICIES[*]}" =~ "$3" ]]; then + mc admin policy attach provisioning $3 --$1=$2; + fi; + }; + + function detachDanglingPolicies() { + local tmp=$(mc admin $1 info provisioning $2 | sed -n -e 's/^Policy.*: + \(.*\)$/\1/p'); + IFS=',' read -r -a CURRENT_POLICIES <<< "$tmp"; + IFS=',' read -r -a DESIRED_POLICIES <<< "$3"; + for current in "${CURRENT_POLICIES[@]}"; do + if [[ ! "${DESIRED_POLICIES[*]}" =~ "${current}" ]]; then + mc admin policy detach provisioning $current --$1=$2; + fi; + done; + } + + function addUsersFromFile() { + local username=$(grep -oP '^username=\K.+' $1); + local password=$(grep -oP '^password=\K.+' $1); + local disabled=$(grep -oP '^disabled=\K.+' $1); + local policies_list=$(grep -oP '^policies=\K.+' $1); + local set_policies=$(grep -oP '^setPolicies=\K.+' $1); + + mc admin user add provisioning "${username}" "${password}"; + + IFS=',' read -r -a POLICIES <<< "${policies_list}"; + for policy in "${POLICIES[@]}"; do + attachPolicy user "${username}" "${policy}"; + done; + if [ "${set_policies}" == "true" ]; then + detachDanglingPolicies user "${username}" "${policies_list}"; + fi; + + local user_status="enable"; + if [[ "${disabled}" != "" && "${disabled,,}" == "true" ]]; then + user_status="disable"; + fi; + + mc admin user "${user_status}" provisioning "${username}"; + }; + mc alias set provisioning $MINIO_SCHEME://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD; + + mc admin service restart provisioning; + mc admin policy create provisioning migrations-bucket-policy /etc/ilm/policy-migrations-bucket-policy.json; + mc admin policy create provisioning nextcloud-bucket-policy /etc/ilm/policy-nextcloud-bucket-policy.json; + mc admin policy create provisioning openproject-bucket-policy /etc/ilm/policy-openproject-bucket-policy.json; + mc admin policy create provisioning ums-bucket-policy /etc/ilm/policy-ums-bucket-policy.json; + mc admin user add provisioning migration_user 1ec1787c2808bfe372500d7baf02a6f22d818c30; + attachPolicy user migration_user migrations-bucket-policy; + detachDanglingPolicies user migration_user "migrations-bucket-policy"; + mc admin user enable provisioning migration_user; + mc admin user add provisioning nextcloud_user b2f7bbbbf78ace98fb9499e1ff1ca3067e72deca; + attachPolicy user nextcloud_user nextcloud-bucket-policy; + detachDanglingPolicies user nextcloud_user "nextcloud-bucket-policy"; + mc admin user enable provisioning nextcloud_user; + mc admin user add provisioning openproject_user 72c7ef3354e43700c2890d6d53cff57e7371e968; + attachPolicy user openproject_user openproject-bucket-policy; + detachDanglingPolicies user openproject_user "openproject-bucket-policy"; + mc admin user enable provisioning openproject_user; + mc admin user add provisioning ums_user ad54fe032f857f96b22a1546105235881fddafb0; + attachPolicy user ums_user ums-bucket-policy; + detachDanglingPolicies user ums_user "ums-bucket-policy"; + mc admin user enable provisioning ums_user; + mc mb provisioning/migrations --ignore-existing ; + mc mb provisioning/nextcloud --ignore-existing ; + mc mb provisioning/openproject --ignore-existing ; + mc mb provisioning/ums --ignore-existing ; + + mc anonymous set download provisioning/ums/portal-assets; + + echo "End Minio provisioning"; + env: + - name: MINIO_SCHEME + value: http + - name: MINIO_ROOT_USER + valueFrom: + secretKeyRef: + name: minio + key: root-user + - name: MINIO_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: minio + key: root-password + envFrom: + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.25 + memory: 256Mi + volumeMounts: + - name: minio-provisioning + mountPath: /etc/ilm + volumes: + - name: minio-provisioning + configMap: + name: minio-provisioning + diff --git a/manifests/xwiki-secrets.yaml b/manifests/xwiki-secrets.yaml new file mode 100644 index 0000000..e7f16c1 --- /dev/null +++ b/manifests/xwiki-secrets.yaml @@ -0,0 +1,33 @@ +# Source: xwiki/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: xwiki + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.0 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm +type: Opaque +data: + DB_PASSWORD: ENC[AES256_GCM,data:qS23ijD+xUWIoorGP7HoFDJyKnslxknhVeVAfVLnHwKT+qMdS6eyh1PXYAt6qbZdFGCzod94EG4=,iv:OsSX/LLBgb0yzTb14fuUOX1JlAixJtHr1cOiUSiopAc=,tag:jGfT1pVdu4jIG+fWR6osHg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1l0ly6j6p08tqwr0p2zp9899597cdqh9m27wa3lapy60nlvyx2gvqq5azhn + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQaERzRitOcUVNei9OTHJ3 + aWI4a09EejQyVURKbDErbGNKbUhYd2ZsTzJFCmcvd2xHd1hKNUdOcDcwcUtpSXA4 + S1RpYzR4VDloaTNKOWZ6SWNsZ3ZNRTAKLS0tIG5wNDVldDVzTVR6aVpqR2JqSzRF + UXN5N2JXcFltWnJFNVg1RC9OcmtzMDQKMEXh1vSRdBrJorHg2Y/vOjDwQbUj6uDF + xuSpGB6JauuRrTZtuiQhGdz+dQhNCoI8JLe2LqBJpAzji3HNr/0zAA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-12-06T22:14:39Z" + mac: ENC[AES256_GCM,data:kyG6/wrrLOFYMOGpQ6naZKF+Z7eZH10yp4D9O9P30LSGIyyqTI+DEba2HiuzDYXGbn58DgXc9kH3tLS8BOaVj/FLwkSvfsfAnj5sENuR3wqvq1MUSruxMpRPKu1quEIHFPlfh8CjF0PTbVDHg6J6SJNHyVmmuuktjLHsngSTJew=,iv:3b+9vMHhRhnCE8i3YH4R1T5XJS2cEZiNVeUK9G9iOwE=,tag:XVGa3maOjwVHRs7wdC8akg==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.8.1 diff --git a/manifests/xwiki.yaml b/manifests/xwiki.yaml new file mode 100644 index 0000000..1d0171a --- /dev/null +++ b/manifests/xwiki.yaml @@ -0,0 +1,499 @@ +# Source: xwiki/templates/xwiki-sa.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: xwiki-sa +--- +# Source: xwiki/templates/configmaps.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: xwiki + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.0 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm +data: + DB_USER: root + DB_HOST: mariadb + DB_DATABASE: xwiki +# +--- +# Source: xwiki/templates/initialization-configmaps.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: xwiki-init-scripts + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.0 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm +data: + entrypoint: | + #!/bin/bash + ## + # *Experimental* solution for custom properties. + # With time we are looking other alternatives to setup this custom values. + ## + # Always execute "first_start" in order to get all new values keys from future versions. + rm -f /usr/local/xwiki/data/xwiki.cfg + rm -f /usr/local/xwiki/data/xwiki.properties + rm -f /usr/local/xwiki/data/hibernate.cfg.xml + + # Reuse commands/resources from default entrypoint. + source /usr/local/bin/docker-entrypoint.sh + file_env 'CONTEXT_PATH' 'ROOT' + if [ -d "/usr/local/tomcat" ]; then + export AS_PATH=/usr/local/tomcat + else + export AS_PATH=/var/lib/jetty + fi + echo "Path: ${AS_PATH}" + # Setup all default actions from first start + first_start + ## + # On future versions, when LTS start have this method we can remove this from this script. + # This method was requested on: https://github.com/xwiki/xwiki-docker/pull/36 + ## + function xwiki_replace_or_add() { + local file_path="$1" + local setting="$2" + local new_value="$3" + + # Check if the setting exists in the file + if grep -Eq "^ *#? *$setting=" "$file_path"; then + # If the setting exists, replace the occurrence with the new value + sed -i 's|^\( *#\? *\)'"$setting"'=.*$|'"$setting"'='"$new_value"'|g' "$file_path" + else + # If the setting doesn't exist, add it at the end of the file + echo "$setting=$new_value" >> "$file_path" + fi + } + + # Add URL for Solr Remote instance + # Backward compatibility for old image + + # Replace all values from keys defineded on customConfigs + # If we detect extension, we loop over the array and add them + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.UID_attr' 'uid' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.base_DN' 'dc=swp-ldap,dc=internal' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.bind_DN' 'uid=ldapsearch_xwiki,cn=users,dc=swp-ldap,dc=internal' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.bind_pass' '18b512a7fb08645d87035c85088b6959b5e39b66' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.fields_mapping' 'last_name=sn,first_name=givenName,email=mailPrimaryAddress' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.groupcache_expiration' '300' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.photo_attribute' 'jpegPhoto' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.port' '389' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.server' 'ums-ldap-server' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.authentication.ldap.update_photo' '1' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.superadminpassword' 'c1f7d21430d4a6c279863c0e10fed44aa89009cb' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.cfg" 'xwiki.url.protocol' 'https' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'notifications.emails.live.graceTime' '5' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.clientid' 'opendesk-xwiki' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.endpoint.token.auth_method' 'client_secret_basic' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.endpoint.userinfo.method' 'GET' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.logoutMechanism' 'rpInitiated' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.provider' 'https://id.opendesk.apps.digilab.network/realms/opendesk' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.scope' 'openid,opendesk-xwiki-scope' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.secret' '44d47b82369fce1e6113a486ce3966775c3f85bc' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.skipped' 'false' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.user.nameFormater' '${oidc.user.opendesk_username._clean._lowerCase}' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.user.subjectFormater' '${oidc.user.opendesk_username._lowerCase}' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'oidc.userinfoclaims' 'xwiki_user_accessibility,xwiki_user_company,xwiki_user_displayHiddenDocuments,xwiki_user_editor,xwiki_user_usertype' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'openoffice.autoStart' 'false' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'openoffice.homePath' '/tmp' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'openoffice.serverType' '0' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'url.trustedDomains' 'id.opendesk.apps.digilab.network' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.contextPath' '/' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.remoteAddress' 'wiki.opendesk.apps.digilab.network' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.url' 'https://wiki.opendesk.apps.digilab.network/distribution/' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.base' 'https://portal.opendesk.apps.digilab.network' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.navigationEndpoint' 'https://portal.opendesk.apps.digilab.network/univention/portal/navigation.json' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.portalSecret' 'cae3bc9cf223dd0947855197082fb2b99d00ed5e' + + # Replace the platform provenance to keep track of the image + sed -i 's/org.xwiki.platform:xwiki-platform-distribution-war/org.xwiki.contrib:xwiki-platform-distribution-helm-docker/' \ + $AS_PATH/webapps/ROOT/META-INF/extension.xed + sed -i 's/org.xwiki.platform:xwiki-platform-distribution-docker/org.xwiki.contrib:xwiki-platform-distribution-helm-docker/' \ + $AS_PATH/webapps/ROOT/META-INF/extension.xed + + if [ -d "/var/lib/jetty" ]; then + echo "" > start.d/xwiki.ini + echo '-Dattachment:xwiki:FlamingoThemes.Iceberg@logo.svg=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==' >> start.d/xwiki.ini + echo '-Dattachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon.svg=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik04My4xLDk3LjI2djIuMTJjMCw4Ljk3LTcuMywxNi4yNy0xNi4yNywxNi4yN0gyOC42MmMtOC45NywwLTE2LjI3LTcuMy0xNi4yNy0xNi4yN3YtMzguMmMwLTguOTcsNy4zLTE2LjI3LDE2LjI3LTE2LjI3aDIuMTJ2NTIuMzVoNTIuMzVaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODMuODEsODQuNTJoLTQwLjMzdi00NC41N2MwLTE1LjIyLDEyLjM4LTI3LjU5LDI3LjU5LTI3LjU5aDEyLjc0YzE3LjU2LDAsMzEuODQsMTQuMjgsMzEuODQsMzEuODR2OC40OWMwLDE3LjU2LTE0LjI4LDMxLjg0LTMxLjg0LDMxLjg0Wk02MS44OCw2Ni4xMmgyMS45M2M3LjQxLDAsMTMuNDQtNi4wMywxMy40NC0xMy40NHYtOC40OWMwLTcuNDEtNi4wMy0xMy40NC0xMy40NC0xMy40NGgtMTIuNzRjLTUuMDcsMC05LjIsNC4xMy05LjIsOS4ydjI2LjE4WiIvPgo8L3N2Zz4=' >> start.d/xwiki.ini + echo '-Dattachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon144.png=data:image/png;base64,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' >> start.d/xwiki.ini + echo '-Dattachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon16.png=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAHYAAAB2AH6XKZyAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAY5JREFUOI2lksFKW0EUhr8zudeLVhAqQQu1kQS6LUiRrroSKVbXjfQRpGA3QqvLQHfiogo+QaM7m6KI9AGEWLdFVGKKK6UUhUQZ7xwX3qQ2uYlg/9Xwzznf+ecwoqr8j7x2l29Tl2mn5iUifapYRPZ6konN5SK2ViOtEkwO2ilV5oGO277Ajqp7ky8HBy0B2bR9RkgxSvgb+IPiITwGDPCjJ+m/WC5iTdx0CeVV1FyqXPkD+SM/ky/7KVUZAxQYOjsNR4loACzN0L/4MRwHUPRRZO9/PaZSq1kpe5tACQDnnhJNYWmuOhD63i5wAolvsUv5K3czRKSewOFNAL13NDL5xD4HBgEwrlRPoCoPbp7WpKFsym5F5wBhGEgg7LmwY6MOaKOHwEiDVxLIrv6i2hKguO8gF42+QQ4rnf6XtZ+c17xYwMpRUAAKd6S7BRCtRivIfJ61B7GpxE2/ywVNUA8gDN16wphPQLdCOqb/1PeD7Thw/SsvfLhMG2NeC9L1T4HoueVq7X2u87gt4L66BhVQi4kGcML1AAAAAElFTkSuQmCC' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary=#6af56a' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.btn-primary-bg=@brand-primary' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.lessCode=li#tmWorkplaceServices { padding-left: 16px; padding-top: 5px; } .navbar-right { padding-top: 8px; } .navbar { border-bottom: 1px solid #ddd !important; height: 64px;} div#companylogo { width: 90px; height: auto; padding-top: 7px; padding-left: 9px; }' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.link-color=@brand-primary' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-bg=#ffffff' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-color=@brand-primary' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-active-color=@brand-primary' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-color=@brand-primary' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-bg=#f5f5f5' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-color=@brand-primary' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer=https://id.opendesk.apps.digilab.network/realms/opendesk' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject=1' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.forceXWikiUsersGroupMembershipUpdate=1' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchDN=dc=swp-ldap,dc=internal' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter=(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes=sn,givenname,uid,mailPrimaryAddress' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupImport=1' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupsUpdate=1' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport=globalAdmin' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from=no-reply@opendesk.apps.digilab.network' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host=postfix.tn-openbsw-opendesk.svc.cluster.local' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port=25' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties=mail.smtp.starttls.enable=false' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService=oidc' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.colorTheme=FlamingoThemes.Iceberg' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.default_language=de_DE' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.languages=de_DE' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping=xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.timezone=Europe/Berlin' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title=MijnBureau Wissen - $!tdoc.displayTitle' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port=443' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure=1' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server=wiki.opendesk.apps.digilab.network' >> start.d/xwiki.ini + export JAVA_OPTIONS="${JAVA_OPTS}" + else + if (/usr/local/tomcat/bin/version.sh | grep -q 'Tomcat/8'); then + echo "Old Tomcat don't support java_opts file... Using normal props." + export JAVA_OPTS="${JAVA_OPTS} -Dattachment:xwiki:FlamingoThemes.Iceberg@logo.svg=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==" + export JAVA_OPTS="${JAVA_OPTS} -Dattachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon.svg=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik04My4xLDk3LjI2djIuMTJjMCw4Ljk3LTcuMywxNi4yNy0xNi4yNywxNi4yN0gyOC42MmMtOC45NywwLTE2LjI3LTcuMy0xNi4yNy0xNi4yN3YtMzguMmMwLTguOTcsNy4zLTE2LjI3LDE2LjI3LTE2LjI3aDIuMTJ2NTIuMzVoNTIuMzVaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODMuODEsODQuNTJoLTQwLjMzdi00NC41N2MwLTE1LjIyLDEyLjM4LTI3LjU5LDI3LjU5LTI3LjU5aDEyLjc0YzE3LjU2LDAsMzEuODQsMTQuMjgsMzEuODQsMzEuODR2OC40OWMwLDE3LjU2LTE0LjI4LDMxLjg0LTMxLjg0LDMxLjg0Wk02MS44OCw2Ni4xMmgyMS45M2M3LjQxLDAsMTMuNDQtNi4wMywxMy40NC0xMy40NHYtOC40OWMwLTcuNDEtNi4wMy0xMy40NC0xMy40NC0xMy40NGgtMTIuNzRjLTUuMDcsMC05LjIsNC4xMy05LjIsOS4ydjI2LjE4WiIvPgo8L3N2Zz4=" + export JAVA_OPTS="${JAVA_OPTS} -Dattachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon144.png=data:image/png;base64,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" + export JAVA_OPTS="${JAVA_OPTS} -Dattachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon16.png=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAHYAAAB2AH6XKZyAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAY5JREFUOI2lksFKW0EUhr8zudeLVhAqQQu1kQS6LUiRrroSKVbXjfQRpGA3QqvLQHfiogo+QaM7m6KI9AGEWLdFVGKKK6UUhUQZ7xwX3qQ2uYlg/9Xwzznf+ecwoqr8j7x2l29Tl2mn5iUifapYRPZ6konN5SK2ViOtEkwO2ilV5oGO277Ajqp7ky8HBy0B2bR9RkgxSvgb+IPiITwGDPCjJ+m/WC5iTdx0CeVV1FyqXPkD+SM/ky/7KVUZAxQYOjsNR4loACzN0L/4MRwHUPRRZO9/PaZSq1kpe5tACQDnnhJNYWmuOhD63i5wAolvsUv5K3czRKSewOFNAL13NDL5xD4HBgEwrlRPoCoPbp7WpKFsym5F5wBhGEgg7LmwY6MOaKOHwEiDVxLIrv6i2hKguO8gF42+QQ4rnf6XtZ+c17xYwMpRUAAKd6S7BRCtRivIfJ61B7GpxE2/ywVNUA8gDN16wphPQLdCOqb/1PeD7Thw/SsvfLhMG2NeC9L1T4HoueVq7X2u87gt4L66BhVQi4kGcML1AAAAAElFTkSuQmCC" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary=#6af56a" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.btn-primary-bg=@brand-primary" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.lessCode=li#tmWorkplaceServices { padding-left: 16px; padding-top: 5px; } .navbar-right { padding-top: 8px; } .navbar { border-bottom: 1px solid #ddd !important; height: 64px;} div#companylogo { width: 90px; height: auto; padding-top: 7px; padding-left: 9px; }" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.link-color=@brand-primary" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-bg=#ffffff" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-color=@brand-primary" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-active-color=@brand-primary" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-color=@brand-primary" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-bg=#f5f5f5" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-color=@brand-primary" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer=https://id.opendesk.apps.digilab.network/realms/opendesk" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject=1" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.forceXWikiUsersGroupMembershipUpdate=1" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchDN=dc=swp-ldap,dc=internal" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter=(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes=sn,givenname,uid,mailPrimaryAddress" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupImport=1" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupsUpdate=1" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport=globalAdmin" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from=no-reply@opendesk.apps.digilab.network" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host=postfix.tn-openbsw-opendesk.svc.cluster.local" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port=25" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties=mail.smtp.starttls.enable=false" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService=oidc" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.colorTheme=FlamingoThemes.Iceberg" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.default_language=de_DE" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.languages=de_DE" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping=xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.timezone=Europe/Berlin" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title=MijnBureau Wissen - $!tdoc.displayTitle" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port=443" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure=1" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server=wiki.opendesk.apps.digilab.network" + else + ## Clear contents of /tmp/java_opts.txt so that we don't add extra arguments at each pod restart. + echo "" > /tmp/java_opts.txt + echo '-Dattachment:xwiki:FlamingoThemes.Iceberg@logo.svg="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg=="' >> /tmp/java_opts.txt + echo '-Dattachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon.svg="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik04My4xLDk3LjI2djIuMTJjMCw4Ljk3LTcuMywxNi4yNy0xNi4yNywxNi4yN0gyOC42MmMtOC45NywwLTE2LjI3LTcuMy0xNi4yNy0xNi4yN3YtMzguMmMwLTguOTcsNy4zLTE2LjI3LDE2LjI3LTE2LjI3aDIuMTJ2NTIuMzVoNTIuMzVaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODMuODEsODQuNTJoLTQwLjMzdi00NC41N2MwLTE1LjIyLDEyLjM4LTI3LjU5LDI3LjU5LTI3LjU5aDEyLjc0YzE3LjU2LDAsMzEuODQsMTQuMjgsMzEuODQsMzEuODR2OC40OWMwLDE3LjU2LTE0LjI4LDMxLjg0LTMxLjg0LDMxLjg0Wk02MS44OCw2Ni4xMmgyMS45M2M3LjQxLDAsMTMuNDQtNi4wMywxMy40NC0xMy40NHYtOC40OWMwLTcuNDEtNi4wMy0xMy40NC0xMy40NC0xMy40NGgtMTIuNzRjLTUuMDcsMC05LjIsNC4xMy05LjIsOS4ydjI2LjE4WiIvPgo8L3N2Zz4="' >> /tmp/java_opts.txt + echo '-Dattachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon144.png="data:image/png;base64,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"' >> /tmp/java_opts.txt + echo '-Dattachment:xwiki:XWiki.DefaultSkin@icons.xwiki.favicon16.png="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAHYAAAB2AH6XKZyAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAY5JREFUOI2lksFKW0EUhr8zudeLVhAqQQu1kQS6LUiRrroSKVbXjfQRpGA3QqvLQHfiogo+QaM7m6KI9AGEWLdFVGKKK6UUhUQZ7xwX3qQ2uYlg/9Xwzznf+ecwoqr8j7x2l29Tl2mn5iUifapYRPZ6konN5SK2ViOtEkwO2ilV5oGO277Ajqp7ky8HBy0B2bR9RkgxSvgb+IPiITwGDPCjJ+m/WC5iTdx0CeVV1FyqXPkD+SM/ky/7KVUZAxQYOjsNR4loACzN0L/4MRwHUPRRZO9/PaZSq1kpe5tACQDnnhJNYWmuOhD63i5wAolvsUv5K3czRKSewOFNAL13NDL5xD4HBgEwrlRPoCoPbp7WpKFsym5F5wBhGEgg7LmwY6MOaKOHwEiDVxLIrv6i2hKguO8gF42+QQ4rnf6XtZ+c17xYwMpRUAAKd6S7BRCtRivIfJ61B7GpxE2/ywVNUA8gDN16wphPQLdCOqb/1PeD7Thw/SsvfLhMG2NeC9L1T4HoueVq7X2u87gt4L66BhVQi4kGcML1AAAAAElFTkSuQmCC"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary="#6af56a"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.btn-primary-bg="@brand-primary"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.lessCode="li#tmWorkplaceServices { padding-left: 16px; padding-top: 5px; } .navbar-right { padding-top: 8px; } .navbar { border-bottom: 1px solid #ddd !important; height: 64px;} div#companylogo { width: 90px; height: auto; padding-top: 7px; padding-left: 9px; }"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.link-color="@brand-primary"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-bg="#ffffff"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-color="@brand-primary"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-active-color="@brand-primary"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-color="@brand-primary"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-bg="#f5f5f5"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.navbar-default-link-hover-color="@brand-primary"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.OIDCIssuer="https://id.opendesk.apps.digilab.network/realms/opendesk"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.addOIDCObject="1"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.forceXWikiUsersGroupMembershipUpdate="1"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchDN="dc=swp-ldap,dc=internal"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapGroupImportSearchFilter="(&(objectClass=opendeskKnowledgemanagementGroup)(opendeskKnowledgemanagementEnabled=TRUE))"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.ldapUserAttributes="sn,givenname,uid,mailPrimaryAddress"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupImport="1"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.triggerGroupsUpdate="1"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:LDAPUserImport.WebHome^LDAPUserImport.LDAPUserImportConfigClass.usersAllowedToImport="globalAdmin"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from="no-reply@opendesk.apps.digilab.network"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host="postfix.tn-openbsw-opendesk.svc.cluster.local"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port="25"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties="mail.smtp.starttls.enable=false"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService="oidc"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.colorTheme="FlamingoThemes.Iceberg"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.default_language="de_DE"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.languages="de_DE"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping="xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.timezone="Europe/Berlin"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.title="MijnBureau Wissen - $!tdoc.displayTitle"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.port="443"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.secure="1"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.XWikiServerXwiki^XWiki.XWikiServerClass.server="wiki.opendesk.apps.digilab.network"' >> /tmp/java_opts.txt + export JAVA_OPTS="${JAVA_OPTS} @/tmp/java_opts.txt" + fi + fi + + exec /usr/local/bin/docker-entrypoint.sh xwiki + + glowroot.properties: | + data.dir=/usr/local/xwiki/data/glowroot/data + log.dir=/usr/local/xwiki/data/glowroot/log + tmp.dir=/usr/local/xwiki/data/glowroot/tmp +--- +# Source: xwiki/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: xwiki + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.0 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8080 + protocol: TCP + name: http + sessionAffinity: ClientIP + selector: + app.kubernetes.io/name: xwiki + app.kubernetes.io/instance: xwiki +--- +# Source: xwiki/templates/xwiki.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: xwiki + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.0 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + serviceName: xwiki + selector: + matchLabels: + app.kubernetes.io/name: xwiki + app.kubernetes.io/instance: xwiki + template: + metadata: + annotations: + # Annotations to rollout changes on configs on workload + checksum/configmap: a80f42ceef17d396f89599e109b1554d5356f2a4c4523aa2a063efdf1ddb07cd + checksum/initialization-configmaps: 611a3452a8aa0a47f59f1fdb1fffc2a214024e92a08846843390f5f0fb1cfad7 + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.0 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm + spec: + serviceAccountName: xwiki-sa + initContainers: + - name: xwiki-data-permissions + image: + registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki:0.22-mariadb-jetty-alpine@sha256:ba29f44befc558c4a4d969f103b216c13a55194dbc532adc43567bee4943d65f + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -ec + - chown -R "100:101" /usr/local/xwiki/data + securityContext: + runAsUser: 0 + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 8Gi + requests: + cpu: 0.1 + memory: 1.5Gi + volumeMounts: + - name: xwiki-data + mountPath: /usr/local/xwiki/data + containers: + - name: xwiki + image: + registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki:0.22-mariadb-jetty-alpine@sha256:ba29f44befc558c4a4d969f103b216c13a55194dbc532adc43567bee4943d65f + imagePullPolicy: IfNotPresent + command: [/bin/bash, /configmaps/entrypoint] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 100 + seLinuxOptions: + seccompProfile: + type: RuntimeDefault + ports: + - containerPort: 8080 + env: + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: xwiki + key: DB_PASSWORD + - name: DB_HOST + valueFrom: + configMapKeyRef: + name: xwiki + key: DB_HOST + - name: DB_USER + valueFrom: + configMapKeyRef: + name: xwiki + key: DB_USER + - name: DB_DATABASE + valueFrom: + configMapKeyRef: + name: xwiki + key: DB_DATABASE + startupProbe: + tcpSocket: + port: 8080 + initialDelaySeconds: 120 + timeoutSeconds: 60 + periodSeconds: 30 + failureThreshold: 5 + successThreshold: 1 + livenessProbe: + httpGet: + path: /rest + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + httpGet: + path: /rest/wikis/xwiki/spaces + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + periodSeconds: 30 + failureThreshold: 10 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 8Gi + requests: + cpu: 0.1 + memory: 1.5Gi + volumeMounts: + - name: xwiki-data + mountPath: /usr/local/xwiki/data + - name: configmaps + mountPath: /configmaps + securityContext: + fsGroup: 101 + volumes: + - name: configmaps + configMap: + name: xwiki-init-scripts + - name: xwiki-data + volumeClaimTemplates: + - metadata: + name: xwiki-data + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: managed +--- +# Source: xwiki/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: xwiki + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.0 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm + annotations: + haproxy-ingress.github.io/headers: X-Forwarded-Host wiki.opendesk.apps.digilab.network + kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/affinity: cookie + nginx.ingress.kubernetes.io/force-ssl-redirect: 'true' + nginx.ingress.kubernetes.io/proxy-body-size: 100M + nginx.ingress.kubernetes.io/proxy-read-timeout: '60' + nginx.ingress.kubernetes.io/proxy-send-timeout: '60' + nginx.ingress.kubernetes.io/session-cookie-expires: '1800' + nginx.ingress.kubernetes.io/session-cookie-name: XNGINX + nginx.ingress.kubernetes.io/ssl-redirect: 'true' + nginx.org/client-max-body-size: 100M + nginx.org/proxy-read-timeout: 60s + nginx.org/proxy-send-timeout: 60s +spec: + tls: + - hosts: + - wiki.opendesk.apps.digilab.network + secretName: opendesk-certificates-tls + rules: + - host: wiki.opendesk.apps.digilab.network + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: xwiki + port: + number: 80 +