From d3cb0b7dd8f9cd7887e1091100fe52f27ccc7679 Mon Sep 17 00:00:00 2001 From: sheppy Date: Sat, 10 May 2025 21:34:09 +0200 Subject: [PATCH] initial: --- argo.yaml | 39156 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 39156 insertions(+) create mode 100644 argo.yaml diff --git a/argo.yaml b/argo.yaml new file mode 100644 index 0000000..d350401 --- /dev/null +++ b/argo.yaml @@ -0,0 +1,39156 @@ +--- +# Source: opendesk-migrations/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: "opendesk-migrations-pre" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.6.0 + app.kubernetes.io/instance: opendesk-migrations-pre + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +... +--- +# Source: opendesk-migrations/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-migrations-pre-environmentdetails" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.6.0 + 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: | + + ai: + apiKey: "" + endpoint: "" + model: "" + annotations: + cassandra: + ingress: null + pod: null + serviceAccount: null + coco: + ingress: null + pod: null + serviceAccount: null + collabora: + ingress: null + pod: null + service: null + serviceAccount: null + cryptpad: + ingress: null + pod: null + serviceAccount: null + element: + common: null + ingress: null + pod: null + service: null + serviceAccount: null + elementMatrixNeoboardWidget: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + elementMatrixNeochoiceWidget: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + elementMatrixNeodatefixBot: + additional: null + ingress: null + persistence: null + pod: null + service: null + serviceAccount: null + elementMatrixNeodatefixBotBootstrap: + pod: null + serviceAccount: null + elementMatrixNeodatefixWidget: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + elementMatrixUserVerificationService: + additional: null + pod: null + service: null + serviceAccount: null + elementMatrixUserVerificationServiceBootstrap: + pod: null + serviceAccount: null + elementSynapse: + common: null + federationIngress: null + persistence: null + pod: null + service: null + serviceAccount: null + elementSynapseWeb: + common: null + ingress: null + pod: null + service: null + serviceAccount: null + elementWellKnown: + common: null + ingress: null + pod: null + service: null + serviceAccount: null + jitsi: + pod: null + serviceAccount: null + jitsiGlobal: + pod: null + jitsiJibri: + pod: null + jitsiJicofo: + pod: null + jitsiJigasi: + pod: null + jitsiJitsiPatchJVB: + serviceAccount: null + jitsiJvb: + metricsGrafana: null + metricsPrometheus: null + pod: null + service: null + jitsiProsody: + pod: null + jitsiWeb: + ingress: null + pod: null + nextcloudAio: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + nextcloudExporter: + additional: null + ingress: null + pod: null + serviceAccount: null + nextcloudNextcloudMgmt: + additional: null + pod: null + serviceAccount: null + notes: + ingressAdmin: null + ingressCollaborationAPI: null + ingressCollaborationWS: null + ingressMedia: null + serviceMedia: null + notesBackend: + migrateJob: null + pod: null + service: null + notesFrontend: + pod: null + service: null + notesYProvider: + pod: null + service: null + nubus: + additional: null + ingress: null + nubusGuardian: + authorizationApiPod: null + globalPod: null + ingressAuthorizationApi: null + ingressIngress: null + ingressManagementApi: null + ingressManagementUi: null + managementApiPod: null + managementUiPod: null + serviceAccount: null + nubusIntercomService: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + nubusKeycloak: + common: null + pod: null + service: null + serviceAccount: null + nubusKeycloakBootstrap: + additional: null + pod: null + service: null + serviceAccount: null + nubusKeycloakBootstrapNubus: + additional: null + pod: null + serviceAccount: null + nubusKeycloakExtensions: + handlerAdditional: null + handlerPod: null + handlerService: null + handlerServiceAccount: null + proxyAdditional: null + proxyIngress: null + proxyPod: null + proxyService: null + proxyServiceAccount: null + nubusLdapNotifier: + additional: null + pod: null + service: null + serviceAccount: null + nubusLdapServer: + additional: null + pod: null + service: null + serviceAccount: null + nubusNginxS3Gateway: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + nubusNotificationsApi: + additional: null + ingress: null + persistence: null + pod: null + service: null + serviceAccount: null + nubusOxConnector: + pod: null + serviceAccount: null + nubusPortalConsumer: + pod: null + nubusPortalFrontend: + additional: null + ingressIngress: null + ingressRedirects: null + ingressRewrites: null + persistence: null + pod: null + service: null + serviceAccount: null + nubusPortalServer: + additional: null + ingress: null + persistence: null + pod: null + service: null + serviceAccount: null + nubusProvisioning: + additional: null + apiAdditional: null + apiPod: null + dispatcherAdditional: null + dispatcherPod: null + natsAdditional: null + natsPod: null + pod: null + prefillAdditional: null + prefillPod: null + registerConsumersAdditional: null + registerConsumersPod: null + service: null + serviceAccount: null + udmTransformerAdditional: null + udmTransformerPod: null + nubusSelfserviceConsumer: + pod: null + serviceAccount: null + nubusStackDataUms: + additional: null + pod: null + serviceAccount: null + nubusUdmListener: + pod: null + serviceAccount: null + nubusUdmRestApi: + additional: null + ingress: null + persistence: null + pod: null + service: null + serviceAccount: null + nubusUmcGateway: + ingress: null + pod: null + serviceAccount: null + nubusUmcServer: + additional: null + ingress: null + pod: null + serviceAccount: null + opendeskMigrationsPost: + additional: null + pod: null + serviceAccount: null + opendeskMigrationsPre: + additional: null + pod: null + serviceAccount: null + opendeskServicesHome: + additional: null + ingress: null + opendeskServicesOtterize: + additional: null + opendeskServicesStaticFiles: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + openproject: + ingress: null + openprojectTempVolumes: null + pod: null + seederJob: null + serviceAccount: null + openprojectBootstrap: + additional: null + pod: null + openxchangeAppsuiteCoreDocumentconverter: + pod: null + openxchangeAppsuiteCoreGuidedtours: + pod: null + openxchangeAppsuiteCoreImageconverter: + pod: null + openxchangeAppsuiteCoreMw: + gotenbergPod: null + pod: null + serviceAccount: null + updatePod: null + openxchangeAppsuiteCoreUi: + pod: null + openxchangeAppsuiteCoreUiMiddleware: + pod: null + openxchangeAppsuiteCoreUserGuide: + pod: null + openxchangeAppsuiteIngress: + appsuitebase: null + caldavWellKnownRedirect: null + carddavWellKnownRedirect: null + coreHelpRoute: null + davInfostoreRoute: null + davRootRoute: null + documentsHelpRoute: null + driveClientWindowsOxRoute: null + driveHelpRoute: null + guardApiRoute: null + guardPgpRoute: null + guardSupportApiRoute: null + httpApiRoutesAjax: null + httpApiRoutesApi: null + httpApiRoutesAppRootApi: null + httpApiRoutesAppsuiteApi: null + ingress: null + officeWebRoute: null + restRoutesAdmin: null + restRoutesAdvertisement: null + restRoutesChronos: null + restRoutesPreliminary: null + restRoutesUserfeedback: null + rootredirect: null + rt2Route: null + staticRoutesInfostore: null + staticRoutesRealtime: null + staticRoutesServlet: null + staticRoutesWebservices: null + trailslash: null + wopiServerRoute: null + openxchangeBootstrap: + additional: null + serviceAccount: null + openxchangeDovecot: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + openxchangeEnterpriseContactPicker: + appsuiteCoreMw: null + appsuiteCoreMwPod: null + appsuiteCoreMwServiceAccount: null + openxchangeNextcloudIntegrationUi: + pod: null + openxchangePostfix: + pod: null + service: null + openxchangePublicSectorUi: + pod: null + servicesExternalClamavDistributed: + clamdCommon: null + clamdPod: null + clamdService: null + clamdServiceAccount: null + freshclamCommon: null + freshclamService: null + freshclamServiceAccount: null + milterCommon: null + milterPod: null + milterService: null + milterServiceAccount: null + persistence: null + servicesExternalClamavSimple: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + servicesExternalDkimpy: + additional: null + pod: null + service: null + serviceAccount: null + servicesExternalMariadb: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + servicesExternalMemcached: + common: null + pod: null + service: null + serviceAccount: null + servicesExternalMinio: + apiIngress: null + common: null + ingress: null + persistence: null + pod: null + provisioningPod: null + serviceAccount: null + serviceHeadless: null + serviceService: null + servicesExternalPostfix: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + servicesExternalPostgresql: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + servicesExternalRedis: + common: null + masterMaster: null + masterPersistence: null + masterPod: null + masterService: null + masterServiceAccount: null + replicaPersistence: null + replicaPod: null + replicaReplica: null + replicaService: null + replicaServiceAccount: null + secret: null + xwiki: + common: null + ingress: null + persistence: null + service: null + serviceAccount: null + antivirus: + icap: + host: null + port: 1344 + milter: + host: null + port: 7357 + apps: + cassandra: + enabled: false + namespace: null + certificates: + enabled: true + namespace: null + clamavDistributed: + enabled: false + namespace: null + clamavSimple: + enabled: true + namespace: null + collabora: + enabled: true + namespace: null + collaboraController: + enabled: false + namespace: null + cryptpad: + enabled: true + namespace: null + dkimpy: + enabled: false + namespace: null + dovecot: + enabled: true + namespace: null + element: + enabled: true + namespace: null + elementAdmin: + enabled: false + namespace: null + elementGroupsync: + enabled: false + namespace: null + home: + enabled: true + namespace: null + jitsi: + enabled: false + namespace: null + mariadb: + enabled: true + namespace: null + memcached: + enabled: true + namespace: null + migrations: + enabled: true + namespace: null + minio: + enabled: true + namespace: null + nextcloud: + enabled: true + namespace: null + notes: + enabled: true + namespace: null + nubus: + enabled: true + namespace: null + openproject: + enabled: true + namespace: null + oxAppSuite: + enabled: true + namespace: null + postfix: + enabled: true + namespace: null + postgresql: + enabled: true + namespace: null + redis: + enabled: true + namespace: null + staticFiles: + enabled: true + namespace: null + xwiki: + enabled: true + namespace: null + cache: + intercomService: + host: redis-headless + password: "" + port: 6379 + username: default + nextcloud: + host: redis-headless + password: "" + port: 6379 + tls: false + username: default + notes: + host: redis-headless + password: "" + port: 6379 + openproject: + host: memcached + port: 11211 + oxAppSuite: + host: redis-headless + password: "" + port: 6379 + username: default + umsSelfservice: + host: memcached + port: 11211 + certificate: + issuerRef: + kind: ClusterIssuer + name: letsencrypt-prod + selfSigned: false + wildcard: "false" + charts: + cassandra: + name: cassandra + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 12.0.4 + certificates: + name: opendesk-certificates + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-certificates + verify: true + version: 3.1.1 + clamav: + name: opendesk-clamav + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav + verify: true + version: 4.0.6 + clamavSimple: + name: clamav-simple + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav + verify: true + version: 4.0.6 + collabora: + name: collabora-online + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/collabora/charts-mirror + verify: true + version: 1.1.37 + collaboraController: + name: cool-controller + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/collabora/charts-mirror + verify: false + version: 1.1.2 + cryptpad: + name: cryptpad + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/charts-mirror + verify: true + version: 0.0.20 + dkimpy: + name: opendesk-dkimpy-milter + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-dkimpy-milter + verify: true + version: 1.0.0 + dovecot: + name: dovecot + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-dovecot + verify: true + version: 2.0.0 + element: + name: opendesk-element + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + elementWellKnown: + name: opendesk-well-known + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + home: + name: opendesk-home + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-home + verify: true + version: 1.0.2 + intercomService: + name: intercom-service + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/charts-mirror + verify: true + version: 2.12.0 + jitsi: + name: opendesk-jitsi + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-jitsi + verify: true + version: 3.1.0 + mariadb: + name: mariadb + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-mariadb + verify: true + version: 3.0.3 + matrixNeoboardWidget: + name: matrix-neoboard-widget + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets + verify: true + version: 3.5.1 + matrixNeochoiceWidget: + name: matrix-neochoice-widget + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets + verify: true + version: 3.5.1 + matrixNeodatefixBot: + name: matrix-neodatefix-bot + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets + verify: true + version: 3.5.1 + matrixNeodatefixWidget: + name: matrix-neodatefix-widget + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets + verify: true + version: 3.5.1 + matrixUserVerificationService: + name: opendesk-matrix-user-verification-service + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + memcached: + name: memcached + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 6.7.1 + migrations: + name: opendesk-migrations + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-migrations + verify: true + version: 1.6.0 + minio: + name: minio + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 14.10.1 + nextcloud: + name: opendesk-nextcloud + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud + verify: true + version: 4.0.3 + nextcloudManagement: + name: opendesk-nextcloud-management + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud + verify: true + version: 4.0.3 + nginx: + name: nginx + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 15.9.3 + nginxS3Gateway: + name: nginx-s3-gateway + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/nginx-s3-gateway + verify: true + version: 1.0.1 + notes: + name: impress + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/dinum/charts/notes + verify: true + version: 2.0.0 + nubus: + name: nubus + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/charts-mirror + verify: true + version: 1.8.0 + opendeskAlerts: + name: opendesk-alerts + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-alerts + verify: true + version: 1.1.1 + opendeskDashboards: + name: opendesk-dashboards + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-dashboards + verify: true + version: 1.1.1 + opendeskKeycloakBootstrap: + name: opendesk-keycloak-bootstrap + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap + verify: true + version: 2.6.0 + opendeskStaticFiles: + name: opendesk-static-files + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-static-files + verify: true + version: 4.0.1 + openproject: + name: openproject + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/openproject/charts-mirror + verify: true + version: 9.9.0 + openprojectBootstrap: + name: opendesk-openproject-bootstrap + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-openproject-bootstrap + verify: true + version: 2.2.0 + otterize: + name: opendesk-otterize + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-otterize + verify: true + version: 2.1.3 + oxAppSuite: + name: appsuite-public-sector + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/charts-mirror + verify: false + version: 2.17.164 + oxAppSuiteBootstrap: + name: opendesk-open-xchange-bootstrap + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap + verify: true + version: 2.1.2 + oxConnector: + name: ox-connector + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/charts-mirror + verify: true + version: 0.19.0 + postfix: + name: postfix + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-postfix + verify: true + version: 3.0.1 + postgresql: + name: postgresql + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-postgresql + verify: true + version: 2.1.2 + redis: + name: redis + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 18.6.1 + synapse: + name: opendesk-synapse + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + synapseAdmin: + name: opendesk-synapse-admin + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 5.0.1 + synapseAdminbotWeb: + name: opendesk-synapse-adminbot-web + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 5.0.1 + synapseCreateAccount: + name: opendesk-synapse-create-account + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + synapseGroupsync: + name: opendesk-synapse-groupsync + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 5.0.1 + synapsePipe: + name: opendesk-synapse-pipe + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 5.0.1 + synapseWeb: + name: opendesk-synapse-web + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + xwiki: + name: xwiki + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/charts-mirror + verify: false + version: 1.4.4 + cluster: + container: + engine: cri-o + networking: + cidr: + - 10.0.0.0/8 + domain: cluster.local + incomingCIDR: [] + ingressGatewayIP: "" + ipFamilies: DualStack + loadBalancerStatusField: ip + persistence: + readWriteMany: + enabled: false + service: + type: LoadBalancer + customization: + release: + cassandra: {} + clamav: {} + clamavSimple: {} + collaboraController: {} + collaboraOnline: {} + cryptpad: {} + dovecot: {} + intercomService: {} + jitsi: {} + mariadb: {} + matrixNeoboardWidget: {} + matrixNeochoiceWidget: {} + matrixNeodatefixBot: {} + matrixNeodatefixBotBootstrap: {} + matrixNeodatefixWidget: {} + matrixUserVerificationService: {} + matrixUserVerificationServiceBootstrap: {} + memcached: {} + migrationsPost: {} + migrationsPre: {} + minio: {} + nginxS3Gateway: {} + notes: {} + opendeskAlerts: {} + opendeskCertificates: {} + opendeskDashboards: {} + opendeskDkimpyMilter: {} + opendeskElement: {} + opendeskHome: {} + opendeskKeycloakBootstrap: {} + opendeskNextcloud: {} + opendeskNextcloudManagement: {} + opendeskOpenprojectBootstrap: {} + opendeskOpenxchangeBootstrap: {} + opendeskOtterize: {} + opendeskStaticFiles: {} + opendeskSynapse: {} + opendeskSynapseAdmin: {} + opendeskSynapseAdminbotBootstrap: {} + opendeskSynapseAdminbotPipe: {} + opendeskSynapseAdminbotWeb: {} + opendeskSynapseAuditbotBootstrap: {} + opendeskSynapseAuditbotPipe: {} + opendeskSynapseGroupsync: {} + opendeskSynapseWeb: {} + opendeskWellKnown: {} + openproject: {} + openxchange: {} + oxConnector: {} + postfix: {} + postgresql: {} + redis: {} + ums: {} + xwiki: {} + databases: + defaults: + userConnectionLimit: 100 + dovecotACL: + connectionLimit: null + host: cassandra + name: dovecot_acl + password: "" + port: 9042 + type: cassandra + username: dovecot_acl_user + dovecotDictmap: + connectionLimit: null + host: cassandra + name: dovecot_dictmap + password: "" + port: 9042 + type: cassandra + username: dovecot_dictmap_user + keycloak: + connectionLimit: null + host: postgresql + name: keycloak + password: "" + port: 5432 + type: postgresql + username: keycloak_user + keycloakExtension: + connectionLimit: null + host: postgresql + name: keycloak_extensions + password: "" + port: 5432 + ssl: "false" + type: postgresql + username: keycloak_extensions_user + nextcloud: + connectionLimit: null + host: postgresql + name: nextcloud + password: "" + port: 5432 + type: postgresql + username: nextcloud_user + notes: + connectionLimit: null + host: postgresql + name: notes + password: "" + port: 5432 + type: postgresql + username: notes_user + openproject: + connectionLimit: null + host: postgresql + name: openproject + password: "" + port: 5432 + type: postgresql + username: openproject_user + oxAppSuite: + connectionLimit: null + host: mariadb + name: configdb + password: "" + port: 3306 + readHost: null + readPassword: null + readUser: null + type: mariadb + username: root + synapse: + channelBinding: prefer + clientEncoding: auto + connectTimeout: 10 + connectionLimit: null + connectionPoolMax: "5" + connectionPoolMin: "3" + gssencmode: prefer + host: postgresql + keepalives: 1 + keepalivesCount: 3 + keepalivesIdle: 10 + keepalivesInterval: 10 + name: matrix + password: "" + port: 5432 + replication: false + requireAuth: [] + sslMinProtocolVersion: TLSv1.2 + sslcompression: 0 + sslmode: prefer + type: postgresql + username: matrix_user + umsGuardianManagementApi: + connectionLimit: null + host: postgresql + name: guardianmanagementapi + password: "" + port: 5432 + type: postgresql + username: guardianmanagementapi_user + umsNotificationsApi: + connectionLimit: null + host: postgresql + name: notificationsapi + password: "" + port: 5432 + type: postgresql + username: notificationsapi_user + umsSelfservice: + connectionLimit: 10 + host: postgresql + name: selfservice + password: "" + port: 5432 + type: postgresql + username: selfservice_user + xwiki: + connectionLimit: null + host: postgresql + name: xwiki + password: "" + port: 5432 + type: postgresql + username: xwiki_user + debug: + cleanup: + deletePodsOnSuccess: true + deletePodsOnSuccessTimeout: 60 + keepPVCOnDelete: false + keepRessourceOnDelete: true + enabled: false + enterpriseFeatures: + collabora: + autoscaling: + maxReplicas: 4 + minReplicas: 1 + scaleDownDisabled: false + targetCPUUtilizationPercentage: 99 + targetMemoryUtilizationPercentage: 99 + enterpriseKeys: + nextcloud: + subscriptionData: "" + subscriptionKey: "" + openproject: + token: null + xwiki: + opendeskEnterpriseLicense: "" + proApplicationslicense: "" + functional: + admin: + portal: + deploymentTimestamp: + enabled: true + authentication: + newDeviceLoginNotification: + enabled: true + oidc: + clientScopes: null + clients: null + realmSettings: + accessTokenLifespan: 300 + clientOfflineSessionIdleTimeout: 0 + clientOfflineSessionMaxLifespan: 0 + clientSessionIdleTimeout: 0 + clientSessionMaxLifespan: 0 + offlineSessionIdleTimeout: 2592000 + offlineSessionMaxLifespan: 5184000 + offlineSessionMaxLifespanEnabled: false + revokeRefreshToken: false + ssoSessionIdleTimeout: 14400 + ssoSessionMaxLifespan: 57600 + ssoFederation: + enabled: false + enforceFederatedLogin: false + idpDetails: {} + name: My upstream IdP + twoFactor: + groups: + - foo + chat: + matrix: + profile: + allowUsersToUpdateDisplayname: true + useImmutableIdentifierForLocalpart: false + dataProtection: + jitsiRoomHistory: + enabled: true + matrixPresence: + enabled: false + externalServices: + matrix: + federation: + domainAllowList: [] + enabled: true + nubus: + udmRestApi: + enabled: true + filestore: + nextcloud: + retentionObligation: + trashbin: auto + versions: auto + quota: + default: 1 + sharing: + external: + enabled: false + enforcePasswords: false + expiry: + activeByDefault: true + defaultDays: 30 + enforced: false + sendPasswordMail: true + internal: + expiry: + activeByDefault: false + defaultDays: 90 + enforced: false + migration: + oxAppSuite: + enabled: false + portal: + enforceLogin: true + linkLegalNotice: https://opendesk.eu/impressum + linkPrivacyStatement: https://zendis.de/datenschutzerklaerung + global: + additionalMailDomains: "" + domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + helmRegistry: "" + hosts: + adminBot: adminbot + collabora: office + cryptpad: pad + element: chat + intercomService: ics + jitsi: meet + keycloak: id + matrixNeoBoardWidget: matrix-neoboard-widget + matrixNeoChoiceWidget: matrix-neochoice-widget + matrixNeoDateFixBot: matrix-neodatefix-bot + matrixNeoDateFixWidget: matrix-neodatefix-widget + minioApi: objectstore + minioConsole: objectstore-ui + nextcloud: files + notes: notes + nubus: portal + openproject: projects + openxchange: webmail + static: static + synapse: matrix + synapseAdmin: synapse-admin + synapseFederation: matrix-federation + whiteboard: whiteboard + xwiki: wiki + imagePullPolicy: IfNotPresent + imagePullSecrets: [] + imageRegistry: "" + mailDomain: "" + matrixDomain: "" + systemInformation: + releaseVersion: v1.3.2 + images: + bitnamiOSShell: + registry: registry-1.docker.io + repository: bitnami/os-shell + tag: 12-debian-12-r34@sha256:41e0561b0f08011c24acc5e8ad4c0d09a36062cfab35d9ec7b3fdd4cfecc01e0 + cassandra: + registry: registry-1.docker.io + repository: bitnami/cassandra + tag: 5.0.2-debian-12-r1@sha256:9f5fd6fe3a24b7e5ea215a99a0e0d6a10d11a914d6eb8c511780271a9097f5ea + cassandraExporter: + registry: registry-1.docker.io + repository: bitnami/cassandra-exporter + tag: 2.3.8-debian-12-r31@sha256:ae861f6c8712dd32c2304c680e4564802df689a62dc4aed2f4e7cfcbba8a8051 + clamd: + registry: registry-1.docker.io + repository: clamav/clamav + tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f + collabora: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk + tag: 24.04.13.3.1@sha256:f04a31d72b2b12b530b4e88b3ecb81eb96ebd98112515db59499ff71a4ec905f + collaboraController: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/collabora/images-mirror/cool-controller + tag: 1.1.1@sha256:8a5b79920fdf7a8eb9c1e781f480d6134a30c75f14fae3f1ecb0b607e016215c + cryptpad: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad + tag: opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17 + dkimpy: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/dkimpy-milter + tag: 1.1.0@sha256:f140c7fc3fd9636addc612edd6e10f6aefa69e34ff637c95ce9036a32e44555f + dovecot: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images/dovecot-public-sector + tag: 2.3.21@sha256:c76965a84d1ca527f523404eb027119f6736b199c094e4671037cb345ecad3dc + dovecotBootstrap: + registry: registry-1.docker.io + repository: alpine/k8s + tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9 + element: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin + tag: latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1 + elementAdminBot: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/access_element_web + tag: v1.11.85@sha256:0e36121cbaab5a8146ef8561d8e77b38f711f855f1a353df3bb96a8d13303812 + elementGroupsync: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/groupsync + tag: v0.14.0@sha256:a8cee92b9035d8cc80cc13194e4e0118c7dfbfcbc4c0ee5ac173582d0cd55846 + elementHaProxy: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/haproxy + tag: 3.0-alpine@sha256:c22c8710886104a48b920306f063401f0d11811858e3c6b9d87d88a7556b2e61 + elementPipe: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/pipe + tag: 6.3.1@sha256:7f487af25f220d31aa987665f9d1393b42e925c6b1a7e0458daaa91e8e7bf0c4 + elementSynapseAdmin: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/synapse_admin + tag: v16.105.5-24.10@sha256:563979fc69162adf93f1286cf79dcbe58adf878a0e4e9332044e5ab6a7170350 + elementSyncAdmins: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-element-syncadmins + tag: 1.0.3@sha256:1dea24d5f65a6f9ac63b402c772dd81dcd07a847d24845901c8a039461043097 + freshclam: + registry: registry-1.docker.io + repository: clamav/clamav + tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f + icap: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/clamav-icap + tag: 0.5.10@sha256:891f267a6b2a304616854ad2f013dc5d23f6f6c84d535c8b46e76d124fe39b6a + intercom: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/intercom-service + tag: 2.12.0@sha256:380476d849fb353dc167ba52a6b0f6235b3fa7561c082e65c37e2242cedb0df1 + jibri: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jibri + tag: stable-9955@sha256:a07b82f2758389b2071c794810145111641e78f1b768b1bbfa6d3d1dc76d3da9 + jicofo: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jicofo + tag: stable-9955@sha256:f1a1478d231bc4891b5eea06443d72187c378d5e38403bb545aab281446f8d50 + jigasi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jigasi + tag: stable-9955@sha256:0e191ac39d3e7299d0bcc070fa1867cceb17fe8d92e9d5cd492aec4c268fa56f + jitsi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/web + tag: stable-9955@sha256:81fdcfa14287fe3358532c363875584d0cdd40ff4030695b713af6e60192d306 + jitsiKeycloakAdapter: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jitsi-keycloak-adapter + tag: v20250314@sha256:2e24db127ab266b90b8fd371ce547e7f9619b6be3fefed30906867b1ce368697 + jitsiPatchJVB: + registry: registry-1.docker.io + repository: bitnami/kubectl + tag: 1.32.0@sha256:48c81b7aaf4fabf2733a0b888960f6982181fbcd2c3f8dfcebc4a1a065631162 + jvb: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jvb + tag: stable-9955@sha256:27753ac320910e04f5c4f4f628d20995ea969ea38523d90a9066adc52f9bc022 + mariadb: + registry: registry-1.docker.io + repository: library/mariadb + tag: 10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f + matrixNeoBoardWidget: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget + tag: 2.1.0@sha256:3a386d5a7d1b0582372909e8f3714fc82304fbfb0c078807476d867f726d30f5 + matrixNeoChoiceWidget: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget + tag: 1.5.1@sha256:00d28898e2b08d00dc7f4ed986d496779b95f0b87347b6059b76d291eb44a7eb + matrixNeoDateFixBot: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot + tag: 2.8.2@sha256:1266f4af93cd82554e037125a7f6d753742bcde3dd90ecbeed8f6f5f64689c96 + matrixNeoDateFixWidget: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget + tag: 1.7.0@sha256:a3547f064dff6b469bb3ed931acd4edba9654699e1af59a9180987bbbfd8104b + matrixUserVerificationService: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/element/images-mirror/matrix-user-verification-service + tag: v3.0.0@sha256:25e685d595785e2a72e75a525dac78cf8c782445454f8ac090d3702431c38008 + memcached: + registry: registry-1.docker.io + repository: bitnami/memcached + tag: 1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d + migrations: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-migrations + tag: 1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7 + milter: + registry: registry-1.docker.io + repository: clamav/clamav + tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f + minio: + registry: registry-1.docker.io + repository: bitnami/minio + tag: 2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 + nextcloud: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud + tag: 2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4 + nextcloudExporter: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud-exporter + tag: 1.0.1@sha256:63e63c7420e37d3989fa0ffdbcf18a07b2a603ab9b2a849c2e7e44342dd82af0 + nginxS3Gateway: + registry: registry-1.docker.io + repository: nginxinc/nginx-s3-gateway + tag: unprivileged-oss-20241111@sha256:20d6b6ec5fc987b18c3e345de33674374a8335c593d6d0841ac64eb49ae2dea4 + notesBackend: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-notes + tag: 1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef + notesFrontend: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-notes + tag: 1.7.0-docs-v2.4.0-frontend@sha256:98fb87ad877eb5658c6bef1c09adf4e03f816dce61867bc099838aca15890887 + notesYProvider: + registry: registry-1.docker.io + repository: lasuite/impress-y-provider + tag: v2.4.0@sha256:329d47f5cda80941a7f0812969c3194ba68da3e7e1ef38e3d08c266fc97555c1 + nubusDataLoader: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/data-loader + tag: 0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb + nubusGuardianAuthorizationApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-authorization-api + tag: 2.0.0@sha256:5f194f9385aea5a279e25a57352f7b88a6cc4fa90b3bf04c2c97b9ff2bad70a5 + nubusGuardianManagementApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api + tag: 2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2 + nubusGuardianManagementUi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui + tag: 2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf + nubusGuardianProvisioning: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-init + tag: 0.17.0@sha256:56acfc53c3d3e0a20ff77fe427ae794adbf03ccc66972c95188e0da9e87c4a62 + nubusKeycloak: + registry: artifacts.software-univention.de + repository: nubus/keycloak + tag: 25.0.6-ucs6@sha256:1db8af70741bca9badeb3d5b0b145244dde1a2579fe4f966e488ce730cb07d65 + nubusKeycloakBootstrap: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap + tag: 0.10.2@sha256:7406bfee267dff6520b8b3c0db098a79e7f9fe1b45307ea6b1edf26a2bcfc1aa + nubusKeycloakExtensionHandler: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-handler + tag: 0.11.0@sha256:aaba6527f37a7302cf54b0a689a1c11cb439bdc471e01d101726a05902714b9c + nubusKeycloakExtensionProxy: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy + tag: 0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056 + nubusLdapNotifier: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier + tag: 0.34.1@sha256:02d1a0d6ce7e154738f4a1c2323f901245b62c23c8e6c27ce19a57ab44cfdaa7 + nubusLdapServer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server + tag: 0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984 + nubusLdapServerDhInitContainer: + registry: registry-1.docker.io + repository: natsio/nats-box + tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51 + nubusLdapServerLeaderElector: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server-elector + tag: 0.33.0@sha256:c1304a156094b276199fb263baf93e3704ceece478d7f663061b1b1f05f5931c + nubusNats: + registry: registry-1.docker.io + repository: library/nats + tag: 2.10.26@sha256:736d575e60135ce1d50fc206675d48d0e57dcaa0704f696f0cb4b5f6dadd49d7 + nubusNatsBox: + registry: registry-1.docker.io + repository: natsio/nats-box + tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51 + nubusNatsReloader: + registry: registry-1.docker.io + repository: natsio/nats-server-config-reloader + tag: 0.17.1@sha256:f364bb8330d3430666ca09f17c6a43bfaefde32f0f3e79d4a41c588c29936e99 + nubusNotificationsApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/notifications-api + tag: 0.63.0@sha256:4c2e01e609fb83df6d090c389b5c63d4b1477bdb133b910cacf2f2a1ce1c39e1 + nubusOpenPolicyAgent: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-opa + tag: 2.0.0@sha256:56a92a08da5addb951a2b2df09974889295ddde8526e93ad40dd973de1052ad4 + nubusOpendeskExtension: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nubus + tag: 1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b + nubusOpendeskExtensionA2gMapper: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper + tag: 1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d + nubusOxExtension: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-extension + tag: 0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + nubusPortalConsumer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer + tag: 0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc + nubusPortalExtension: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-extension + tag: 0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900 + nubusPortalFrontend: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update + tag: 1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b + nubusPortalServer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-server + tag: 0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27 + nubusProvisioningDispatcher: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher + tag: 0.49.3@sha256:1089683a7e04259b335c79c13ceca2879d5d834a13d9c93ef62315f3086c9efd + nubusProvisioningEventsAndConsumerApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api + tag: 0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a + nubusProvisioningPrefill: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill + tag: 0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788 + nubusProvisioningUdmListener: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener + tag: 0.49.3@sha256:9bd8dd7531e3247761a6347a1889640821121c56435a96c286d1f6385a3152e7 + nubusProvisioningUdmTransformer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer + tag: 0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e + nubusSelfServiceConsumer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation + tag: 0.14.0@sha256:999c50058a02f6006a8d1732b651a5c738c5ee91fc453dc8ae3fcdbb9d4192c0 + nubusUdmRestApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api + tag: 0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2 + nubusUmcGateway: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway + tag: 0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1 + nubusUmcServer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-server + tag: 0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d + nubusUmcServerProxy: + registry: registry-1.docker.io + repository: library/traefik + tag: 3.0@sha256:a208c74fd80a566d4ea376053bff73d31616d7af3f1465a7747b8b89ee34d97e + nubusWaitForDependency: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency + tag: 0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8 + opendeskKeycloakBootstrap: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap + tag: 1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7 + opendeskStaticFiles: + registry: registry-1.docker.io + repository: library/nginx + tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4 + openproject: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/openproject/images-mirror/open_desk + tag: 15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 + openprojectBootstrap: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-openproject-bootstrap + tag: 1.1.4@sha256:2fd97a316114428849aaeef87fb8755274e675830088a93afcafac91bb048d1d + openprojectDbInit: + registry: registry-1.docker.io + repository: library/postgres + tag: 16.8-alpine3.20@sha256:951d0626662c85a25e1ba0a89e64f314a2b99abced2c85b4423506249c2d82b0 + openxchangeBootstrap: + registry: registry-1.docker.io + repository: alpine/k8s + tag: 1.31.3@sha256:77812543abe5649b286d5f0dc17a7dbaa4056433225f6f695150f329cb4b6803 + openxchangeCoreGuidedtours: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours + tag: 8.6.14@sha256:c00546144667d2d5036fa37b2e6185f1abb53c13e9eee7b0c78ec64ac8e5250a + openxchangeCoreMW: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector + tag: 8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2 + openxchangeCoreUI: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui + tag: 8.35.2@sha256:658563b6ec4d3d5f2e06f2987cd8e730d91b8d0c65b0206495007d347f98965f + openxchangeCoreUIMiddleware: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware + tag: 2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3 + openxchangeCoreUserGuide: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide + tag: 8.35.1292950@sha256:a6937222e3b07b42c7dc6a066aae0cd05b3b899325a4e4aee50ee91355c9b3b5 + openxchangeDocumentConverter: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter + tag: 8.35.1671@sha256:0a7b9d7af9cd22562196b854ad11ca3fd477ddcc70f2ccd113e87ab3b7aad26c + openxchangeGotenberg: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg + tag: 8.15.3@sha256:0864c9cd905264f714f0c306d5b38eec8599b908c9096e0283b5db3ff6706172 + openxchangeGuardUI: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui + tag: 8.32.0@sha256:5c9542f9112882e46c3b8cb6f0ca2bef61585abac0e640a4fafa7d7ef60a392b + openxchangeImageConverter: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter + tag: 8.35.77@sha256:fb67cbaf0771ea6c18b5a1b94aaec9bf72b930227613e70535d382be58940372 + openxchangeNextcloudIntegrationUI: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui + tag: 1.4.0@sha256:4be267ab2dc8dbef6b8382e2de6b28f3851a7af7f68702f360d457898cb9011e + openxchangePublicSectorUI: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui + tag: 2.4.0@sha256:6513e948028ed98aca633d9943ef3be5fed890e4757eee6b527b7215206d2bd6 + oxConnector: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone + tag: 0.19.0@sha256:447e3c3e0cdd8bf1f86004d2088c24fcf6141ff6fef78ade8dfe86f7f16ba40e + postfix: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/postfix + tag: 3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d + postfixBootstrap: + registry: registry-1.docker.io + repository: alpine/k8s + tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9 + postgresql: + registry: registry-1.docker.io + repository: library/postgres + tag: 15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b + prosody: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/prosody + tag: stable-9955@sha256:fa66872338c7c3b6fdb1f1a67ad770f2b62948f4193b91a58f12c0aa5ca2e783 + redis: + registry: registry-1.docker.io + repository: bitnami/redis + tag: 7.4.1-debian-12-r2@sha256:3cfa11e8fef45c006a101ed7cfaae2cdaed7a5167c8ada2a3f76a1de54488cd0 + synapse: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/element/images-mirror/synapse + tag: v1.127.1@sha256:0b0b933314ac9e1ba917a72c29d5b49c47828ab6e8df3aae3ac244ee947a89fc + synapseCreateUser: + registry: registry-1.docker.io + repository: alpine/k8s + tag: 1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619 + synapseGuestModule: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/element/images-mirror/synapse-guest-module + tag: 1.0.1@sha256:a8c02b2eb4dfea9632b32d00415af8d5276870fa150fac392914f67053c161ea + synapseWeb: + registry: registry-1.docker.io + repository: rapidfort/haproxy-official + tag: 2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c + wellKnown: + registry: registry-1.docker.io + repository: library/nginx + tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4 + xwikiMariadb: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki + tag: 0.25-mariadb-jetty-alpine@sha256:7175ef5e454b4eb0f6fd6a92a9503d8a680db3ca97b25c3a4eedac9c9bfbcdaf + xwikiPostgres: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki + tag: 0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335 + ingress: + enabled: true + ingressClassName: nginx + parameters: + bodySize: + collabora: 100M + element: 100M + nextcloud: 100M + openproject: 100M + oxAppSuite: 100M + xwiki: 100M + bodyTimeout: + collabora: 600 + element: 60 + nextcloud: 600 + openproject: 60 + oxAppSuite: 60 + xwiki: 60 + tls: + enabled: true + secretName: opendesk-certificates-tls + ldap: + baseDn: dc=swp-ldap,dc=internal + host: ums-ldap-server + notifierHost: ums-ldap-notifier + monitoring: + grafana: + dashboards: + annotations: null + enabled: false + labels: + grafana_dashboard: "1" + prometheus: + podMonitors: + enabled: false + labels: + release: kube-prometheus-stack + prometheusRules: + annotations: {} + enabled: false + labels: + release: kube-prometheus-stack + serviceMonitors: + enabled: false + labels: + release: kube-prometheus-stack + objectstores: + dovecot: + bucket: dovecot + endpoint: "" + pathStyle: true + port: 443 + region: eu-west-1 + secretKey: "" + storageClass: STANDARD + useSSL: true + username: dovecot_user + migrations: + bucket: migrations + endpoint: "" + pathStyle: true + port: 443 + region: eu-west-1 + secretKey: "" + storageClass: STANDARD + useSSL: true + username: migration_user + nextcloud: + bucket: nextcloud + endpoint: "" + pathStyle: true + port: 443 + region: eu-west-1 + secretKey: "" + storageClass: STANDARD + useSSL: true + username: nextcloud_user + notes: + bucket: notes + endpoint: "" + port: 443 + secretKey: "" + username: notes_user + nubus: + bucket: ums + endpoint: "" + region: eu-west-1 + secretKey: "" + username: ums_user + openproject: + bucket: openproject + directUploads: true + enableSignatureV4Streaming: true + endpoint: "" + pathStyle: true + region: eu-west-1 + secretKey: "" + useIamProfile: false + username: openproject_user + persistence: + storageClassNames: + RWO: "" + RWX: "" + storages: + cassandra: + commitLogsize: 256Mi + size: 1Gi + storageClassName: null + clamav: + size: 1Gi + storageClassName: null + dovecot: + size: 1Gi + storageClassName: null + mariadb: + size: 1Gi + storageClassName: null + matrixNeoDateFixBot: + size: 1Gi + storageClassName: null + minio: + size: 10Gi + storageClassName: null + nubusLdapServerData: + size: 1Gi + storageClassName: null + nubusPortalConsumer: + size: 1Gi + storageClassName: null + nubusProvisioningNats: + size: 1Gi + storageClassName: null + oxConnector: + size: 1Gi + storageClassName: null + postfix: + size: 1Gi + storageClassName: null + postgresql: + size: 1Gi + storageClassName: null + prosody: + size: 1Gi + storageClassName: null + redis: + size: 1Gi + storageClassName: null + synapse: + size: 1Gi + storageClassName: null + xwiki: + size: 1Gi + storageClassName: null + platform: + realm: opendesk + replicas: + cassandra: 1 + clamav: 1 + clamd: 1 + collabora: 1 + collaboraController: 1 + cryptpad: 1 + dkimpy: 1 + dovecot: 1 + element: 1 + freshclam: 1 + icap: 1 + intercomService: 1 + jibri: 1 + jicofo: 1 + jigasi: 1 + jitsi: 1 + jitsiKeycloakAdapter: 1 + jvb: 1 + keycloak: 1 + mariadb: 1 + matrixNeoBoardWidget: 1 + matrixNeoChoiceWidget: 1 + matrixNeoDateFixBot: 1 + matrixNeoDateFixWidget: 1 + matrixUserVerificationService: 1 + memcached: 1 + milter: 1 + minio: 1 + nextcloud: 1 + nextcloudExporter: 1 + nginxS3Gateway: 1 + notesBackend: 1 + notesFrontend: 1 + notesYProvider: 1 + opendeskStaticFiles: 1 + openprojectWeb: 1 + openprojectWorker: 1 + openxchangeCoreDocumentConverter: 1 + openxchangeCoreGuidedtours: 1 + openxchangeCoreImageConverter: 1 + openxchangeCoreMW: 1 + openxchangeCoreUI: 1 + openxchangeCoreUIMiddleware: 1 + openxchangeCoreUserGuide: 1 + openxchangeGotenberg: 1 + openxchangeGuardUI: 1 + openxchangeNextcloudIntegrationUI: 1 + openxchangePluginsUI: 1 + openxchangePublicSectorUI: 1 + oxConnector: 1 + postfix: 1 + postgres: 1 + redis: 1 + synapse: 1 + synapseWeb: 1 + umsGuardianAuthorizationApi: 1 + umsGuardianManagementApi: 1 + umsGuardianManagementUi: 1 + umsGuardianOpenPolicyAgent: 1 + umsKeycloakExtensionsHandler: 1 + umsKeycloakExtensionsProxy: 1 + umsLdapNotifier: 1 + umsLdapServerPrimary: 2 + umsLdapServerProxy: 2 + umsLdapServerSecondary: 2 + umsNotificationsApi: 1 + umsPortalConsumer: 1 + umsPortalFrontend: 1 + umsPortalServer: 1 + umsProvisioningApi: 1 + umsProvisioningDispatcher: 1 + umsProvisioningNats: 1 + umsProvisioningPrefill: 1 + umsProvisioningUdmTransformer: 1 + umsSelfserviceConsumer: 1 + umsUdmListener: 1 + umsUdmRestApi: 1 + umsUmcGateway: 1 + umsUmcServer: 1 + umsUmcServerProxy: 1 + wellKnown: 1 + xwiki: 1 + repositories: + clamav: + auth: {} + customURLs: + - scheme: https + url: ftp.swin.edu.au/sanesecurity/badmacro.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/blurl.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/foxhole_js.cdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/foxhole_js.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/hackingteam.hsb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/junk.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/jurlbl.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/jurlbla.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/lott.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/malwarehash.hsb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/phish.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/phishtank.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/porcupine.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/rogue.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/scam.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/shelter.ldb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/spamattach.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/spamimg.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/spear.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/spearl.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_malware.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb + - scheme: https + url: urlhaus.abuse.ch/downloads/urlhaus.ndb + mirror: + scheme: https + url: clamavdb.c3sl.ufpr.br + helm: + registryOpencodeDe: "" + registryOpencodeDeEnterprise: registry.opencode.de + image: + dockerHub: "" + registryOpencodeDe: "" + registryOpencodeDeEnterprise: "" + resources: + cassandra: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.1 + memory: 1Gi + clamd: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.1 + memory: 1.5Gi + collabora: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.5 + memory: 512Mi + collaboraController: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 32Mi + cryptpad: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 512Mi + dkimpy: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 128Mi + dovecot: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + element: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + freshclam: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 96Mi + icap: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 16Mi + intercomService: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 64Mi + jibri: + limits: + cpu: 99 + memory: 3Gi + requests: + cpu: 0.1 + memory: 384Mi + jicofo: + limits: + cpu: 99 + memory: 3584Mi + requests: + cpu: 0.1 + memory: 256Mi + jigasi: + limits: + cpu: 99 + memory: 3584Mi + requests: + cpu: 0.1 + memory: 256Mi + jitsi: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 32Mi + jitsiKeycloakAdapter: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.01 + memory: 48Mi + jvb: + limits: + cpu: 99 + memory: 3584Mi + requests: + cpu: 0.1 + memory: 384Mi + mariadb: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 384Mi + matrixNeoBoardWidget: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 48Mi + matrixNeoChoiceWidget: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + matrixNeoDateFixBot: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 128Mi + matrixNeoDateFixWidget: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + matrixUserVerificationService: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 128Mi + memcached: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + milter: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.1 + memory: 16Mi + minio: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.25 + memory: 256Mi + nextcloud: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 512Mi + nextcloudCron: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 512Mi + nextcloudExporter: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 32Mi + nginxS3Gateway: + limits: + cpu: 99 + memory: 64Mi + requests: + cpu: 100m + memory: 16Mi + notesBackend: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 512Mi + notesFrontend: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 32Mi + notesYProvider: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 128Mi + opendeskKeycloakBootstrap: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 256Mi + opendeskStaticFiles: + limits: + cpu: 99 + memory: 64Mi + requests: + cpu: 0.01 + memory: 16Mi + openproject: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 768Mi + openprojectAppInit: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + openprojectDbInit: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + openprojectSeederJob: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + openprojectWorkers: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.25 + memory: 512Mi + openxchangeCoreDocumentConverter: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.25 + memory: 1.25Gi + openxchangeCoreGuidedtours: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + openxchangeCoreImageConverter: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.5 + memory: 1.25Gi + openxchangeCoreMW: + limits: + cpu: 99 + memory: 8Gi + requests: + cpu: 1 + memory: 1.25Gi + openxchangeCoreUI: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + openxchangeCoreUIMiddleware: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.5 + memory: 192Mi + openxchangeCoreUIMiddlewareUpdater: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.5 + memory: 192Mi + openxchangeCoreUserGuide: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.02 + memory: 32Mi + openxchangeGotenberg: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.05 + memory: 32Mi + openxchangeGuardUI: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + openxchangeNextcloudIntegrationUI: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + openxchangePluginsUI: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.05 + memory: 32Mi + openxchangePublicSectorUI: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + oxConnector: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 64Mi + postfix: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 16Mi + postgresql: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + prosody: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 32Mi + redis: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + synapse: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.5 + memory: 256Mi + synapseWeb: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 64Mi + umsGuardianAuthorizationApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsGuardianManagementApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsGuardianManagementUi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsKeycloak: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 512Mi + umsKeycloakBootstrap: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 256Mi + umsKeycloakExtensionHandler: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + umsKeycloakExtensionProxy: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + umsLdapNotifier: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsLdapServer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsNotificationsApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsOpenPolicyAgent: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsPortalConsumer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsPortalConsumerDependencies: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsPortalFrontend: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsPortalServer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsProvisioningApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 100Mi + umsProvisioningDispatcher: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsProvisioningNats: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 128Mi + umsProvisioningPrefill: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsProvisioningRegisterConsumers: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + umsProvisioningUdmTransformer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + umsSelfserviceConsumer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsStackDataUms: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUdmListener: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUdmRestApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUdmRestApiInit: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUmcGateway: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUmcServer: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + wellKnown: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + xwiki: + limits: + cpu: 99 + memory: 8Gi + requests: + cpu: 0.1 + memory: 1.5Gi + sample: + withTemplating: "" + withoutTemplating: my_value + seLinuxOptions: + cassandra: null + clamav: null + clamavSimple: null + clamd: null + collabora: null + collaboraController: null + cryptpad: null + dkimpy: null + dovecot: null + element: null + freshclam: null + icap: null + intercom: null + jicofo: null + jigasi: null + jitsi: null + jitsiKeycloakAdapter: null + jitsiPatchJVB: null + jvb: null + mariadb: null + matrixNeoBoardWidget: null + matrixNeoChoiceWidget: null + matrixNeoDateFixBot: null + matrixNeoDateFixWidget: null + matrixUserVerificationService: null + memcached: null + migrations: null + milter: null + minio: null + nextcloud: null + nextcloudExporter: null + nextcloudManagement: null + notesBackend: null + notesFrontend: null + notesYProvider: null + opendeskKeycloakBootstrap: null + opendeskStaticFiles: null + openproject: null + openprojectBootstrap: null + openprojectDbInit: null + openxchangeBootstrap: null + openxchangeCoreGuidedtours: null + openxchangeCoreMW: null + openxchangeCoreUI: null + openxchangeCoreUIMiddleware: null + openxchangeCoreUserGuide: null + openxchangeDocumentConverter: null + openxchangeGotenberg: null + openxchangeGuardUI: null + openxchangeImageConverter: null + openxchangeNextcloudIntegrationUI: null + openxchangePluginsUI: null + openxchangePublicSectorUI: null + oxConnector: null + postfix: null + postgresql: null + prosody: null + redis: null + synapse: null + synapseCreateUser: null + synapseGuestModule: null + synapseWeb: null + umsGuardianAuthorizationApi: null + umsGuardianManagementApi: null + umsGuardianManagementUi: null + umsGuardianOpenPolicyAgent: null + umsKeycloak: null + umsKeycloakBootstrap: null + umsKeycloakExtensionHandler: null + umsKeycloakExtensionProxy: null + umsLdapNotifier: null + umsLdapServer: null + umsNotificationsApi: null + umsPortalConsumer: null + umsPortalFrontend: null + umsPortalServer: null + umsProvisioning: null + umsProvisioningNats: null + umsSelfserviceConsumer: null + umsStackDataUms: null + umsUdmListener: null + umsUdmRestApi: null + umsUmcGateway: null + umsUmcServer: null + wellKnown: null + xwiki: null + secrets: + cassandra: + dovecotACLUser: c89fe1500bb39e79ca949a197a7266009a861e86 + dovecotDictmapUser: 6e6db3489ebc6f39bfcd77050885196dba3899c6 + rootPassword: af7a37694032f6e8072b001b15ada3bbb315317a + centralnavigation: + apiKey: 1e2eb0fc3815d766ef1be11fb4edba676856ba52 + certificates: + password: d4434074a779300dbbef2c812c66fbba163e3818 + collabora: + adminPassword: 1f18028954368652aa70c5498a52f194e721b145 + dovecot: + doveadm: 2a9dbfe67ac0f70b60b14b55d4c144bb3605c9c9 + intercom: + secret: 3eb73e36131cd6a817564c2144363875cf63a490 + synapseAsToken: f4a859990d1d37276a77e88ccd1e67d158b5e18f + jitsi: + jibriRecorderPassword: b83c2f95314c17ce17b471dd2ec6608df5ee72ee + jibriXmppPassword: 76d4cf37e97b5fc5e637ac4b916e6c4cbb0d8abf + jicofoAuthPassword: 888d06581d177bf49018de077e5acea91fffbefb + jicofoComponentPassword: 791dc50a4a70ee7a307f01d1789a80406de63dff + jigasiXmppPassword: 457d88f74b34443bde192b0b20df915103200da4 + jvbAuthPassword: e1094c9de9dfdc7ebf32f9a442780cd50f7fa0ee + jwtAppSecret: d26cc08b285a55fb53cc6a05734beecc4d1683ab + keycloak: + adminPassword: 81d3190e7a7467137ccb11c6fdd2c296986275db + clientSecret: + as8oidc: ba9c972d28385e400bc71a5869b8219ec42afb45 + dovecot: b4b4e59939b23669b1287c722376441b0bdcddfa + guardian: cdfd791d2b9460c15334d4b8e46df698b3e3bd9f + intercom: d42f6afee33e28f01222383c86e8741b98e14924 + jitsi: 6dfdd4ee34e8b7ceebc7406b4113faea8738dc73 + matrix: b4f6604310ebd2d06b5fc8832ae1095e43481b04 + ncoidc: 9ba1ae31cafd277b67b043234aa0d0fdd53d90b8 + notes: 0cbc7a3257db722ed76270a547c7dccf1f84db87 + openproject: 3621e456b58b341fe12689612e0ca7820974d274 + xwiki: af1243a89d9b55965b6395e3ab7cc6d004dbcdab + mariadb: + nextcloudUser: 2ab459d441e9967df1d0a5d1844d230b490515ea + openxchangeUser: 9778a34a657fc40e8f7e16bea4fd84d8e64e224c + rootPassword: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 + xwikiUser: d6d97039490cb8fb1179f816c3220b92b8f270bb + matrixAdminBot: + backupPassphrase: 7657d0355bb64ec8051bc353bd554708c3707b7a + password: 1a5a01b8ec8961a12669d1261a8ae78211660ec4 + synapseAsToken: 614986fefd100bb4341c94a6d7bb201062eed05f + matrixAuditBot: + backupPassphrase: 12449fcf240e35921b93dc71bcf5946837c9fa0a + password: 76fd3d48911fb1e18c6e477c922339279268debd + synapseAsToken: bab5234abc7d477fed1a77166efd648f06db2f31 + matrixGroupsync: + synapseAsToken: 15a3f24e76b700ff911e24224a69098b4f0d4164 + matrixNeoDateFixBot: + password: f14e2756afd0fba205bd037f1d2363e7cedc8f89 + matrixUserVerificationService: + password: 3187b7b18610762c770a46421965e3a7e6ce93f7 + minio: + dovecotUser: a96922dd49c5ef516acca3aaf28ef92d0ae68174 + migrationsUser: 91b5990fdaffbc455d7ef7483b5cc1c7f2f371e8 + nextcloudUser: cd58fb1bf965a7605e316b394f11ae9c67b3220f + notesUser: 5c58820a84259ce3b869bfc267b53437f49d9902 + openprojectUser: 200f449601dec2cd474d0695f4f802493413f322 + rootPassword: 3c80db94b61453066c9b969361de14f66d5a611b + umsUser: 915f15805278ef774a1cf3abfa6b8623c1fa4544 + nats: + natsAdminPassword: f076a4d9fceeea85cfb81f8769f3adf01e07bdc5 + nextcloud: + adminPassword: d132ecf836fac6a43b19341f94d5effff7edee65 + metricsToken: 53514b7a8729d5b3a6acdc6295ae3694f19065f9 + notes: + collaborationSecret: c25d22c80c4c0728c3d3dacf268c171a1285301d + djangoSecretKey: 7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8 + superuser: 65a3226e9c23d19a7eac7573a4920d9882b5464a + nubus: + guardian: + udmPassword: c5f71556f038329831204aa6a6f717f8ef0da6c5 + ldapSearch: + dovecot: 40290e376095d33c0c650723efa007abec1ee3fd + element: 96380258a941863a5f9ecf74f3f88f1b563cae35 + keycloak: 6f85092e969e10c851eef49367019d1e02a4a8a0 + nextcloud: f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0 + openproject: 9c96f85df1170aaa929a6763111ff9472b2d109f + ox: 57356bf92e475164a8c4522dfd8453bb162094d4 + xwiki: 8072148becdef928e46f5686560bbbcd9c9a4284 + ldapSecret: b63d4de0d8766a932cad776066f76211906f8967 + masterpassword: OpenDeskTest + portalConsumer: + provisioningApiPassword: 285e53cfa767e8788935963e6d60186f31a36879 + provisioning: + api: + adminPassword: cb586a0ffaae0ed919024f900f871979bbcd1521 + natsPassword: 95d501c0387cf0eec31aa80bb17f95f830a6251d + prefillPassword: b9a5a15f7e8c3101852f76d50e55ca9c9da7de10 + udmTransformerPassword: 4aee10e27a9997767d5c22f7915d1549b6d08c93 + dispatcherNatsPassword: b4b9a0246a4ad460f600be8b77af5861cde06201 + prefillNatsPassword: 9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d + udmListenerNatsPassword: 0acadb5b0a2e885081a0ad98d44c0884c6aa517e + udmTransformerNatsPassword: 89a6741df85e8725261ad4fcc3c49ac7af505252 + selfserviceConsumer: + provisioningApiPassword: 903594f7a3da64ac8573b35933f0546f2fb4d1e0 + systemAccounts: + administratorPassword: 937393b22852fc828b0d68283dddcb9f8fb97411 + sysIdpUserPassword: ae632ba815a15fbff51ba5bfb4a9490a12293bf6 + openproject: + adminPassword: 487706602e4fedcb300a24af26a25be29bc8530c + apiAdminPassword: 9e8d27af068f15dce7b940241ddac82785935239 + apiAdminUsername: abbb47d550ea03225cb109388f296cbc3a4b66eb + oxAppSuite: + adminPassword: 818f26bf8665480c7e1e2cedfaded285ac1c8b16 + basicAuthPassword: 301711fcb8af664af271411cbf403d07f328712d + cookieHashSalt: 6da47cf7c319d398ae4c3a4823d54d6024e36fd0 + hzGroupPassword: 6e1ec5fff93ffe194feaec82ae14836c3c33fcb8 + jolokiaPassword: 2201ebdc53a32254a877e5055dcf0cf402630294 + migrationsMasterPassword: 1748a0b8a43268f79f9b5a1d27be603ca563702c + oxguardMC: MCYjJmMmY3ZjVlZTFhOGEzYzY4ZDA= + oxguardRC: RCYThlMzYwMmNlMTM3MDA3NjM3Y2Q= + sessiondEncryptionKey: 43a02b231cc7515d147729011e55d33dbb7a10ff + shareCryptKey: 91281f20e0096f5ce2794799158ac91595386521 + synapseAsToken: 5dbaa82eda85bb25f7963063b327555e3f3a821d + oxConnector: + provisioningApiPassword: 5b25d2be2690ee3acf32a4f93006e8010ff4bbd2 + postfix: + opendeskSystemPassword: 1884bda7fb31c726adcd094399ab63319e9ca56f + postgresql: + keycloakExtensionUser: a7125d58b42fc935fd603c362ddecbfafd92bca0 + keycloakUser: 2a27e8e8f1148830c04a97d765173021337b738e + matrixUser: 5cd0a266029154912dd660f748137982a924e6f5 + nextcloudUser: 0c6b73606d239fe1aba0b3f28ada476e3a58fa2f + notesUser: be74d99779cd9ad3426c25b026e0bec0784f7aff + openprojectUser: 0b4d7caf9005abcc8df53519620dd00619de27f8 + postgresUser: e5c38aa93bd3191b54a288db3e820c103ebb52e0 + umsGuardianManagementApiUser: 37b03322fc23defff213fe18e95448bd27f92652 + umsNotificationsApiUser: d1f34090031fd52de9518c2665090822a0d1e17b + umsSelfserviceUser: 09af664fe11f675880a6dc980f0276f70d001104 + xwikiUser: cf03170636d1fa89617370fe51aefc470221ae28 + redis: + password: 07c524f0d3f95b4d03fea54ea10cfb848bdb355e + synapse: + registrationSharedSecret: fc72f9f14ac53672b134f6cbfa64f90bf866dfc5 + whiteboard: + apiKey: 88f87d464a348ef695e42b91cc89f377b90892f4 + xwiki: + superadminpassword: ae3a28d06563fbc8d1e7f00485a92d38616a7551 + security: + clusterPostfix: + enabled: false + namespace: "" + ingressController: + namespace: ingress-nginx + podSelector: + matchLabels: + app.kubernetes.io/name: ingress-nginx + otterizeIntents: + enabled: false + service: + type: + dovecot: null + jitsiVideoBridge: null + postfix: null + sip: + jigasi: + enabled: false + password: null + port: "5060" + server: "" + transport: TCP + uri: "" + smtp: + dkim: + key: + secret: + key: "" + name: "" + value: "" + selector: rsa + useED25519: false + host: "" + localpartNoReply: no-reply + password: "" + port: 587 + username: "" + technical: + collabora: + numPrespawnChildren: 4 + turn: + credentials: "" + server: + host: "" + port: "3478" + tls: + host: "" + port: "5349" + transport: udp +... +--- +# 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.6.0 + 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: ["get", "patch"] + # + # run_4.py + # + # Delete StatefulSet of Nubus Portal Consumer + - apiGroups: ["apps"] + resources: ["statefulsets"] + resourceNames: ["ums-portal-consumer"] + verbs: ["delete"] + # Delete PVC of Nubus Portal Consumer to allow running as non-root + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + resourceNames: ["group-membership-cache-ums-portal-consumer-0"] + verbs: ["delete"] + # Execute slacpcat in LDAP Pod + - apiGroups: [""] + resources: ["pods/exec"] + resourceNames: ["ums-provisioning-nats-0"] + verbs: ["get", "create"] + # Restart of Deployments + - apiGroups: ["apps"] + resources: ["deployments"] + resourceNames: ["ums-provisioning-udm-transformer"] + verbs: ["update", "patch"] + # Restart of StatefulSets + - apiGroups: ["apps"] + resources: ["statefulsets"] + resourceNames: ["ums-provisioning-udm-listener"] + verbs: ["update", "patch"] + # Delete the Ingress + - apiGroups: ["networking.k8s.io"] + resources: ["ingresses"] + resourceNames: ["ums-minio-rewrites"] + verbs: ["delete"] +... +--- +# 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.6.0 + 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.6.0 + 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: 60 + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.6.0 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations:1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7" + 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: "4" + - name: "MIGRATIONS_NAMESPACE" + value: "yschmidt-opendesk-argo" + - name: "MIGRATIONS_FAIL_ON_UNEXPECTED_STATE" + value: "true" + volumes: + - name: "environmentdetails-volume" + secret: + secretName: "opendesk-migrations-pre-environmentdetails" +... + +--- +# 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + } + nginx.org/server-snippets: | + location ~* "^/$" { + return 302 https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + } + haproxy.org/request-redirect: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + haproxy-ingress.github.io/redirect-to: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" +... + +--- +# 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-3.1.1 + app.kubernetes.io/instance: opendesk-certificates + app.kubernetes.io/managed-by: Helm +spec: + dnsNames: + - "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "objectstore-ui.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "whiteboard.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + issuerRef: + kind: "ClusterIssuer" + name: "letsencrypt-prod" +... + +--- +# Source: opendesk-static-files/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: opendesk-static-files + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-element-assets" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0/////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//tki//6SHb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6Omz/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//osYf/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4ur/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3G1f/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/9Wmsv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3G1f/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP/VprL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/1aay///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6O2z/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/9Wmsv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP/VprL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////+2WM//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tzlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3OW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////9q8D/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/VprL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//9q8D//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//9ucv//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/VprL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/VprL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/1aay/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/7Ncc//Ol6b/6tLY/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7pqgP/48PL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+eL03/6tLY/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pT5a//jw8v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5cgQP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/ctL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/IiJn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////48PM/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////6tLY/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/q0tj//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////58wTv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/58wTv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////9Wmsv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pj9a/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/pj9a/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+mP1r/+PDy/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////+PDy/8iJmv+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8F6jf/48PL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/1qez/8iJmv+zXHT/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/rE5n/6xOZ/+sTmf/s1x0/8iJmv/Wp7P/+PDy/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-jitsi-assets" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + b3ea2c80d902061a870360ef1c69dead0b0abff7.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTguNjExNSAzMi4xNzI1SDI3LjQ1MjJDMjMuMTQ2OSAzMi4xNzI1IDE5LjY1NjkgMzUuNjYyNiAxOS42NTY5IDM5Ljk2NzlWNzEuMTI3MkMxOS42NTY5IDc1LjQzMjUgMjMuMTQ2OSA3OC45MjI1IDI3LjQ1MjIgNzguOTIyNUg1OC42MTE1QzYyLjkxNjggNzguOTIyNSA2Ni40MDY5IDc1LjQzMjUgNjYuNDA2OSA3MS4xMjcyVjM5Ljk2NzlDNjYuNDA2OSAzNS42NjI2IDYyLjkxNjggMzIuMTcyNSA1OC42MTE1IDMyLjE3MjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05MS4zNDMxIDcyLjY4ODJDODEuODc2NSA3Mi42ODgyIDc0LjIwMjEgNjUuMDEzOSA3NC4yMDIxIDU1LjU0NzNDNzQuMjAyMSA0Ni4wODA4IDgxLjg3NjUgMzguNDA2NCA5MS4zNDMxIDM4LjQwNjRWNzIuNjg4MloiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg== +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-keycloak-assets" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////93OL//dzi//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8ws3//dzi//7l6f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+6i4//p9lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6hpz//LrG//729////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//uouP/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p9lf/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+o6j//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////729//6fZX/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uouP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////qOo//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////cvU//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//u3w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+9vf/+n2V//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////909v/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+n2V/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7qLj/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//3T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//y6xv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//yxv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb/+1aB//tWgf/8gKD//Jy1//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH/+3KW//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tki////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tXgf/8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//IGh//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o6bP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////+4ur//I+r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9uMr//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+kl3//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uLq//osYv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6hpz/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////8ws3/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+7fD/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////+6i4//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////u3w//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////3T2//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////9y9T/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPb//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////729//8sb//+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//3L1f/7qbj/+5iq//uYqv/7mKr//uXp////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yAoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tki//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0///////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////vD0//yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//uLq//////////////////////////////////////////////////////////////////7U3//8gKD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+4ur//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7i6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//ICg/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7c5b/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bjK//o7bP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//2rwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/8j6v/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////25y//7c5b/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pJd//8gaH//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/9x9X//avA//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//J22//3H1f/9x9X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= + f26f33840612e492ead45fc5e75896de016f48b7.b64: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjkzLjI1IDIxNC4wMiI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEyNi4xNCwxNDAuMzJ2Mi4xM2MwLDguOTktNy4zMSwxNi4zLTE2LjMsMTYuM2gtMzguMjZjLTguOTksMC0xNi4zLTcuMzEtMTYuMy0xNi4zdi0zOC4yNmMwLTguOTksNy4zMS0xNi4zLDE2LjMtMTYuM2gyLjEzdjUyLjQ0aDUyLjQ0WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI2Ljg1LDEyNy41NmgtNDAuMzl2LTQ0LjY1YzAtMTUuMjQsMTIuNC0yNy42NCwyNy42NC0yNy42NGgxMi43NmMxNy41OCwwLDMxLjg5LDE0LjMxLDMxLjg5LDMxLjg5djguNWMwLDE3LjU4LTE0LjMxLDMxLjg5LTMxLjg5LDMxLjg5Wk0xMDQuODgsMTA5LjEzaDIxLjk3YzcuNDIsMCwxMy40Ni02LjA0LDEzLjQ2LTEzLjQ2di04LjVjMC03LjQyLTYuMDQtMTMuNDYtMTMuNDYtMTMuNDZoLTEyLjc2Yy01LjA4LDAtOS4yMSw0LjEzLTkuMjEsOS4yMXYyNi4yMloiLz4KICA8L2c+CiAgPGc+CiAgICA8cGF0aCBkPSJNMjEwLjgyLDkwLjc2YzE0Ljg1LDAsMjQuMzQsMTAuOSwyNC4zNCwyNC4yNXMtOS40OSwyNC4yNS0yNC4zNCwyNC4yNS0yNC40NC0xMC45LTI0LjQ0LTI0LjI1LDkuNDktMjQuMjUsMjQuNDQtMjQuMjVaTTIxMC44MiwxMzMuMzRjMTEuMzcsMCwxNy4zOS04LjQ2LDE3LjM5LTE4LjMzcy02LjAyLTE4LjMzLTE3LjM5LTE4LjMzLTE3LjQ4LDguNDYtMTcuNDgsMTguMzMsNi4wMSwxOC4zMywxNy40OCwxOC4zM1oiLz4KICAgIDxwYXRoIGQ9Ik0yNDQuMTksOTEuN2g2Ljk2djExLjg0YzMuMjktNy44LDEwLjI1LTEyLjc4LDIwLjQtMTIuNzgsMTMuMDcsMCwyMS45LDkuODcsMjEuOSwyNC4zNHMtOC44MywyNC4xNi0yMS45LDI0LjE2Yy0xMC4zNCwwLTE3LjItNS4xNy0yMC40LTEyLjc4djI4Ljk1aC02Ljk2di02My43M1pNMjY5LjM4LDEzMy4zNGM5LjQsMCwxNy4xMS01LjgzLDE3LjExLTE4LjI0cy03LjcxLTE4LjQyLTE3LjExLTE4LjQyLTE3Ljk1LDYuMTEtMTcuOTUsMTguNDIsOC42NSwxOC4yNCwxNy45NSwxOC4yNFoiLz4KICAgIDxwYXRoIGQ9Ik0zMjIuOTYsOTAuNzZjMTMuMzUsMCwyMi4yOCw4LjM3LDIyLjI4LDIyLjY1djIuODJoLTM3LjVjLjI4LDkuNzgsNS4yNiwxNy4yOSwxNS42LDE3LjI5LDguNTUsMCwxMy41NC00LjUxLDE1LjIzLTExLjQ3aDYuODZjLTEuOTcsOC4yNy03LjYxLDE3LjItMjEuOSwxNy4yLTE1LjEzLDAtMjIuNDYtMTEuMjgtMjIuNDYtMjQuOTEsMC0xNS4wNCw4Ljc0LTIzLjU5LDIxLjktMjMuNTlaTTMzOC4zNywxMTAuNzhjLS42Ni05LjEyLTYuNzctMTQuMjktMTUuNTEtMTQuMjktOC4xOCwwLTE0LjI5LDUuMjYtMTUuMDQsMTQuMjloMzAuNTVaIi8+CiAgICA8cGF0aCBkPSJNMzU1LjAxLDkxLjdoNi45NnYxMi45N2MyLjU0LTguNjUsOS4xMi0xMy45MSwxOS4zNi0xMy45MXMxNi43Myw2Ljc3LDE2LjczLDE4Ljk5djI4LjU3aC03LjA1di0yOC4wMWMwLTkuNjgtMy43Ni0xMy42My0xMi4wMy0xMy42My0xMC41MywwLTE3LjAxLDguODQtMTcuMDEsMjEuMzR2MjAuM2gtNi45NnYtNDYuNjJaIi8+CiAgICA8cGF0aCBkPSJNNDA5LjgxLDcyLjA1aDI0LjM1YzYuODksMCwxMi45Ny44NSwxOC4yNCwyLjU0LDUuMjYsMS42OSw5LjU3LDQuOTgsMTIuOTIsOS44NywzLjM1LDQuODksNS4wMywxMS43OCw1LjAzLDIwLjY4cy0xLjY4LDE1Ljg5LTUuMDMsMjAuNzdjLTMuMzUsNC44OS03LjY2LDguMTgtMTIuOTIsOS44Ny01LjI3LDEuNjktMTEuMzQsMi41NC0xOC4yNCwyLjU0aC0yNC4zNXYtNjYuMjdaTTQzNC4xNiwxMjUuMDdjNC43NiwwLDguNTctLjM4LDExLjQyLTEuMTNzNS4xNy0yLjU1LDYuOTYtNS40MWMxLjc5LTIuODUsMi42OC03LjMyLDIuNjgtMTMuMzlzLS45MS0xMC40Ni0yLjcyLTEzLjM1Yy0xLjgyLTIuODgtNC4xNC00LjctNi45Ni01LjQ1cy02LjYxLTEuMTMtMTEuMzctMS4xM2gtOS4zMXYzOS44Nmg5LjMxWiIvPgogICAgPHBhdGggZD0iTTQ4MC4xNywxMDEuMzNjMi4xLTMuNjcsNS4wMS02LjQ3LDguNzQtOC40MXM4LjAxLTIuOTEsMTIuODMtMi45MWM3LjksMCwxNC4wNywyLjEsMTguNTIsNi4zLDQuNDUsNC4yLDYuNjcsMTAsNi42NywxNy4zOXYzLjk1aC0zNS41M2MuMjUsMy4zOCwxLjMyLDYuMDMsMy4yLDcuOTQsMS44OCwxLjkxLDQuNDUsMi44Nyw3LjcxLDIuODcsMi44MiwwLDUuMTUtLjU5LDctMS43OSwxLjg1LTEuMTksMy4wMi0yLjg4LDMuNTMtNS4wOGgxNC4xOWMtLjc1LDUuMjYtMy4yOCw5LjUzLTcuNTcsMTIuNzgtNC4yOSwzLjI2LTkuOTgsNC44OS0xNy4wNiw0Ljg5LTUuMiwwLTkuNzEtMS4wNS0xMy41NC0zLjE1LTMuODItMi4xLTYuNzUtNS4wMy04Ljc5LTguNzktMi4wNC0zLjc2LTMuMDUtOC4wOC0zLjA1LTEyLjk3czEuMDUtOS4zNSwzLjE1LTEzLjAyWk01MTMuMDIsMTA5LjkzYy0uMjUtMy4wMS0xLjM2LTUuMzMtMy4zNC02Ljk2LTEuOTctMS42My00LjUzLTIuNDQtNy42Ni0yLjQ0cy01LjU2LjgyLTcuNDcsMi40NGMtMS45MSwxLjYzLTIuOTksMy45NS0zLjI0LDYuOTZoMjEuNzFaIi8+CiAgICA8cGF0aCBkPSJNNTM5LjYyLDEzNC42NWMtNC4xNC0zLjA3LTYuMjEtNy41OC02LjIxLTEzLjU0aDE0LjI5YzAsMi43Ljg1LDQuNjksMi41NCw1Ljk3LDEuNjksMS4yOSw0LjI5LDEuOTMsNy44LDEuOTMsMi41NywwLDQuNDMtLjMzLDUuNTktLjk5LDEuMTYtLjY2LDEuNzQtMS43MSwxLjc0LTMuMTUsMC0xLS4zNC0xLjgyLTEuMDMtMi40NC0uNjktLjYzLTEuNzktMS4xNi0zLjI5LTEuNmwtMTQuNDgtMy45NWMtMy4yLS44MS01Ljk1LTIuMjctOC4yNy00LjM3LTIuMzItMi4xLTMuNDgtNS0zLjQ4LTguNywwLTQuNDUsMS44My03Ljg2LDUuNS0xMC4yNSwzLjY3LTIuMzgsOC43OS0zLjU3LDE1LjM3LTMuNTcsNy4yNywwLDEyLjk0LDEuNDYsMTcuMDEsNC4zN3M2LjExLDcuMTMsNi4xMSwxMi42NGgtMTQuMjljMC00LjU3LTIuOTEtNi44Ni04Ljc0LTYuODYtMi4wNywwLTMuNy4zNS00Ljg5LDEuMDMtMS4xOS42OS0xLjc5LDEuNi0xLjc5LDIuNzMsMCwxLjk0LDEuNzIsMy4zNSw1LjE3LDQuMjNsMTEuMDksMi43M2M0LjMyLDEuMDcsNy43OSwyLjcxLDEwLjM5LDQuOTQsMi42LDIuMjIsMy45LDUuMzQsMy45LDkuMzUsMCw0LjU4LTEuODMsOC4wNy01LjUsMTAuNDgtMy42NywyLjQxLTkuMSwzLjYyLTE2LjMxLDMuNjItOC4wMiwwLTE0LjEtMS41NC0xOC4yNC00LjYxWiIvPgogICAgPHBhdGggZD0iTTU4Ny41Niw2OS4yM2gxNC4yOXY0MC4wNGwxOC44OS0xOC4zM2gxNy40OGwtMjMuNTksMjMuMDMsMjMuNSwyNC4zNWgtMTcuMzlsLTE4Ljg5LTE5LjkzdjE5LjkzaC0xNC4yOXYtNjkuMDlaIi8+CiAgPC9nPgo8L3N2Zz4= +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-nextcloud-assets" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + 17f7a005ac01ada220723048c5b1f5b7fbd20eba.b64: iVBORw0KGgoAAAANSUhEUgAAAG8AAABvCAYAAADixZ5gAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASWSURBVHgB7Z0/aBtXHMe/J3dKIHUGd2kDlw4dQocMGQIdfFoypENToqFQiOV2KrRQD10b1K1DccdCh8aTKfXglHQoLfgCDU0pbg0FN2TJETvx4CH/SCCE6PL7SWchOZIl+3RP99N9P/DzO8snC+mj3+/de+908pCSOI4npQkktPVB+hElseZ53n2kwMMBEGGBNO9JnAOFpSGSCCUWRGSIfbIveSKtKs0MmplGhkskUROJlwa9w0Dykky7CEpzQSRRFolRvx1L/XYQcSptBRTnCl/iVvK670nPzEsOROYlqiCjYllitteBTVd5iTjNtpMgo2YNzTL6ksBeZfMHUFxeUA/z3f7wkryk1p4DyRPVbn1gR9mUHXxpboHklXL7eHB35q2A5JmO7GvJSwbgPkieCRJPDVplU27UcumD5J1QSmdZNxqZl8yg+CAWCBJfrbI5A2KJxmigUTZZMs0RSek87iWzKfdArHFUyyZnUmwSqDwfxCKTlGcXv+96HskvlGcYyjPMKxgBjx48xeofm9jaeNTY3g/Bu2/irbenQBzL27r9ELVPf8fqtU0clH/kvt/9fB7EYdm8svg/PgwWU4lTVq/dSf0/xgUn8m7+ty0Z99u+S2Qvvv/6LxBH8r648AuGCbOvSebyriyu4670dcOG2edE3g1kAbPPgbytjeFn3Q5Fzz7Tg/SiZ5/5GZYiZ595eUXOvrGY2yxq9o2FvKJmX+Zzm5f/rYJkA5eEDEN5hqE8w1CeYSjPMJRnmMyHCtubMcaZqTcOdBGpoZC5vK8+eI7tjfEVePiIh1NnPFTmJkQknMKymZLHD2NcXarjs3eeYWn+OVxCeUNk6du6U4GUN2RU4Pr1OlxAeRmwNE95Zlm/Hjs5yqa8jFj/k/LIHlCeYSjPMJRnGMozDOUZhvIMQ3mGoTzDUJ5hKM8wlGcYyjMM5RmG8gxDeYahPMNQnmEozzCUZxjKMwzlGYbyDEN5hqE8w2Qub+p1FJKpY8iczOWdOF285D58xM3zzvwRzn5cajyZInHqjJs3bOaPckjEnZ+bQFHQz6hX5sZEnnL2o5LE+AtUcV/+OOHsIgPOvhTjwsUSDr0KXP2pPpZXiDhx2sMn30w4vTqE0280qXxewnTFa3z48O9f63iS3eWnnaBdwmvHvEYfp/Jc4/y7hPSdqQKnKxxipoWvoGEozzCUZxjKMwzlGYbyDEN5hqE8w6i8CMQikcq7D2KRyIvjeFI27oFY42jJ8zzNvAjEEpF62zlguQxiiVB/7MhbBrHEgv5oLUJJ37ciTQCSd7RkHteN9nHeAogFajsbHcu/zL7c08o6ZfcMSw0kz5Tbf+mQJ1ZDUGBeqYmfqP2GrmfNSPm8JM0MSF5YFnHv776xlzydddH+7yTIqFmTKCeTKR10XVVIdtT6yvHfaNERQFdxSs8lIb1DkqrsA0eD9nHVXuKUgc4UlTLqo1lGfZCsCdEUF/bbcaDFWD3KScYXs+AkdlaEErPyOpcHEacc6BxtycRAmqrENJiNaYjQXBRYHlRYO6lPsE+OTPWo1AdFDkKE5gJ4uFd/NggvAPEyPHpVADmrAAAAAElFTkSuQmCC + 778ebecebb8b69848f38b3342d29d3ac755d2521.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//2qwP/7ZIv/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//tWgf/7VoH/+1aB//yAoP/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4ur/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixh/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Omz/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yctf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1eB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8nLX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYv/7c5b//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//cfV//3H1f/9x9X//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/+PDzP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/rE5n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/48PM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+sTmf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xOZ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+zXHP/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/+PDzP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VprL/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/rE5n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nzBO/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/48PM/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6tLY/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+sTmf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9y0v/+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP/jw8z//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x4eX/umuA/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xOZ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jw8v/jxM3/z5im/8iJmv/IiZr/yIma/8iJmv/IiZr/yIma/8iJmv/IiZr/yIma/8iJmv/IiZr/yIma/+rS2P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-notes-assets" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + 3050e4c60897d1be2a1c7cd21152dd2d546a49b0.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VprL/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/8iImf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+4ur//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV//3G1f/9xtX//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9uMr/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8nLX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tzlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3OW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7c5b//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tzlv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3OW/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8j6v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////24yv/6O2z/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bnL//tzlv/7V4H/+1eB//tzlv/9ucv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-openproject-assets" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + 1116991e86385dc68a295b155053cb5c731f644d.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMzI5NiA4Ni43MDY5TDI0LjMyOTYgMjQuMzc3MkgxNi41MzQzTDE2LjUzNDMgODYuNzA2OUgyNC4zMjk2WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNODYuODM1MyA1OS40Mzk3SDU1LjY3NTlDNTEuMzcwNyA1OS40Mzk3IDQ3Ljg4MDYgNjIuOTI5OCA0Ny44ODA2IDY3LjIzNVY3NS4wMTk0QzQ3Ljg4MDYgNzkuMzI0NiA1MS4zNzA3IDgyLjgxNDcgNTUuNjc1OSA4Mi44MTQ3SDg2LjgzNTNDOTEuMTQwNSA4Mi44MTQ3IDk0LjYzMDYgNzkuMzI0NiA5NC42MzA2IDc1LjAxOTRWNjcuMjM1Qzk0LjYzMDYgNjIuOTI5OCA5MS4xNDA1IDU5LjQzOTcgODYuODM1MyA1OS40Mzk3WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNjMuNDYwMyAyOC4yODAzSDM5LjkyMDNDMzUuNjE1MSAyOC4yODAzIDMyLjEyNSAzMS43NzA0IDMyLjEyNSAzNi4wNzU2VjQzLjg1OTlDMzIuMTI1IDQ4LjE2NTIgMzUuNjE1MSA1MS42NTUzIDM5LjkyMDMgNTEuNjU1M0g2My40NjAzQzY3Ljc2NTUgNTEuNjU1MyA3MS4yNTU2IDQ4LjE2NTIgNzEuMjU1NiA0My44NTk5VjM2LjA3NTZDNzEuMjU1NiAzMS43NzA0IDY3Ljc2NTUgMjguMjgwMyA2My40NjAzIDI4LjI4MDNaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo= +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-openxchange-assets" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + a80c151fa3c27057eb4276e4b0e42e4243d3e232.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9y0v/+6aoD/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv+sTWb/rE1m/6xNZv/Ol6b/+PDy/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////q0tj/ni9N/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/lyBA/86Xpv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9y0v/+XIED/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+6aoD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8eHl/5cgQP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/zpem/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s1xz/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/lyBA//jw8v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/9Wmsv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ctL//kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7Ncc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/mCFB/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+6a4D/+PDy/9Wmsv+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/mCFB/9Wmsv/////////////////q0tj/pj9a/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+mP1r/6tLY////////////////////////////+PDy/7prgP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7prgP/48PL////////////////////////////////////////////VprL/mCFB/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+YIUH/1aay////////////////////////////////////////////////////////////6tLY/6Y/Wv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6Y/Wv/q0tj///////////////////////////////////////////////////////////////////////jw8v+6a4D/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/umuA//jw8v//////////////////////////////////////////////////////////////////////////////////////1aay/5ghQf+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ghQf/VprL//////////////////////////////////////////////////////////////////////////////////////////////////////+rS2P+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pj9a/+rS2P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////48PL/umuA/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+6a4D/+PDy/////////////////////////////////////////////////////////////cbV//7w9P///////////////////////////////////////////////////////////9Wmsv+YIUH/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/mCFB/9Wmsv////////////////////////////////////////////////////////////7w9P/7cpb/+h5X//pIdv/+1N/////////////////////////////////////////////////////////////q0tj/pj9a/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+mP1r/6tLY/////////////////////////////////////////////////////////////tTf//pIdv/6Hlf/+h5X//oeV//6LGH//arA////////////////////////////////////////////////////////////+PDy/7prgP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/7prgP/48PL////////////////////////////////////////////////////////////9qsD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv/+8PT////////////////////////////////////////////////////////////VprL/mCFB/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+YIUH/1aay/////////////////////////////////////////////////////////////vD0//tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//tTf////////////////////////////////////////////////////////////6tLY/6Y/Wv+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6Y/Wv/q0tj////////////////////////////////////////////////////////////+1N//+kh2//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixh//2qwP////////////////////////////////////////////////////////////jw8v+6a4D/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/umuA//jw8v////////////////////////////////////////////////////////////2qwP/6LGH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//vD0////////////////////////////////////////////////////////////1aay/5ghQf+REjT/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/5ghQf/VprL////////////////////////////////////////////////////////////+8PT/+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7U3////////////////////////////////////////////////////////////+rS2P+mP1r/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+REjT/pj9a/+rS2P////////////////////////////////////////////////////////////7U3//6SHb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD////////////////////////////////////////////////////////////48PL/umuA/5ESNP+REjT/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/kRI0/5ESNP+6a4D/+PDy/////////////////////////////////////////////////////////////arA//osYf/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW//7w9P///////////////////////////////////////////////////////////9Wmsv+YIUH/kRI0/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+REjT/mCFB/9Wmsv////////////////////////////////////////////////////////////7w9P/7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv/+1N/////////////////////////////////////////////////////////////q0tj/pj9a/5ESNP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/5ESNP+mP1r/6tLY/////////////////////////////////////////////////////////////tTf//pIdv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH//arA////////////////////////////////////////////////////////////+PDy/7prgP+REjT/kRI0/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////IiJn/kRI0/7prgP/48PL////////////////////////////////////////////////////////////9qsD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv/+8PT////////////////////////////////////////////////////////////VprL/mCFB/6xNZv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Ol6b/1aay/////////////////////////////////////////////////////////////vD0//tylv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//tTf////////////////////////////////////////////////////////////6tLY/8F5jP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1N//+kh2//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixh//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6LGH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+3KW//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SHb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//osYf/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tTf//pIdv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1N//+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//ydtv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2rwP/7c5b/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/7V4H/+1eB//tXgf/8nbb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= + 070273f978a249ae8a3ab5196d22d18dae244b05.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTUuNjcxIDU1LjVMODQuMjEzNiAzNC4wOTMxQzgyLjgzOTIgMzIuODcyNiA4MS4wMzYgMzIuMTI1IDc5LjA0NiAzMi4xMjVIMzIuMjk2QzMwLjMxNjkgMzIuMTI1IDI4LjUwMjggMzIuODcyNiAyNy4xMjg0IDM0LjA5MzFMNTUuNjcxIDU1LjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik02Mi4xNjg5IDYwLjM3MDdMNTUuNjcwOSA2NS4yNDE0TDQ5LjE3MyA2MC4zNzA3TDI0LjUwMDYgNDEuODY2NFY3MS4wNzk2QzI0LjUwMDYgNzUuMzc4NiAyNy45ODYgNzguODc0OSAzMi4yOTU5IDc4Ljg3NDlINzkuMDQ1OUM4My4zNDQ5IDc4Ljg3NDkgODYuODQxMyA3NS4zODk2IDg2Ljg0MTMgNzEuMDc5NlY0MS44NjY0TDYyLjE2ODkgNjAuMzcwN1oiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg== +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-portal-assets" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64: AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////93OL//dzi//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8ws3//dzi//7l6f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+6i4//p9lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6hpz//LrG//729////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//uouP/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p9lf/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+o6j//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////729//6fZX/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uouP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////qOo//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////cvU//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//u3w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+9vf/+n2V//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////909v/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+n2V/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7qLj/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//3T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//y6xv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//yxv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb/+1aB//tWgf/8gKD//Jy1//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH/+3KW//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tki////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tXgf/8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//IGh//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o6bP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////+4ur//I+r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9uMr//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+kl3//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uLq//osYv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6hpz/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////8ws3/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+7fD/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////+6i4//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////u3w//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////3T2//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////9y9T/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPb//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////729//8sb//+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//3L1f/7qbj/+5iq//uYqv/7mKr//uXp////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yAoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tki//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0///////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////vD0//yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//uLq//////////////////////////////////////////////////////////////////7U3//8gKD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+4ur//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7i6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//ICg/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7c5b/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bjK//o7bP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//2rwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/8j6v/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////25y//7c5b/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pJd//8gaH//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/9x9X//avA//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//J22//3H1f/9x9X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA= + e7f9d1ad04d1efe6154644a19056586e13a734b7.b64: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== + cdea6e921a3ea56e326074499de783647258c796.b64: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iRWJlbmVfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTI4IDEyOCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzU3MWVmYTsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjOTI3YWZhOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik04My4xLDk3LjI2djIuMTJjMCw4Ljk3LTcuMywxNi4yNy0xNi4yNywxNi4yN0gyOC42MmMtOC45NywwLTE2LjI3LTcuMy0xNi4yNy0xNi4yN3YtMzguMmMwLTguOTcsNy4zLTE2LjI3LDE2LjI3LTE2LjI3aDIuMTJ2NTIuMzVoNTIuMzVaIi8+CiAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODMuODEsODQuNTJoLTQwLjMzdi00NC41N2MwLTE1LjIyLDEyLjM4LTI3LjU5LDI3LjU5LTI3LjU5aDEyLjc0YzE3LjU2LDAsMzEuODQsMTQuMjgsMzEuODQsMzEuODR2OC40OWMwLDE3LjU2LTE0LjI4LDMxLjg0LTMxLjg0LDMxLjg0Wk02MS44OCw2Ni4xMmgyMS45M2M3LjQxLDAsMTMuNDQtNi4wMywxMy40NC0xMy40NHYtOC40OWMwLTcuNDEtNi4wMy0xMy40NC0xMy40NC0xMy40NGgtMTIuNzRjLTUuMDcsMC05LjIsNC4xMy05LjIsOS4ydjI2LjE4WiIvPgo8L3N2Zz4= + 3c57131cb5aba5437f541c362619f0d2d924fb78.b64: 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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9k= +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-xwiki-assets" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + 5ad21d258634828e615c1fa334356fd0ae2bac5c.b64: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjcuMTg3NSA3NS4wMzAyQzY3LjE4NzUgODEuNDg0MiA2MS45NTQgODYuNzE3NyA1NS41IDg2LjcxNzdDNDkuMDQ2IDg2LjcxNzcgNDMuODEyNSA4MS40ODQyIDQzLjgxMjUgNzUuMDMwMlY3MS4xMzgxSDY3LjE4NzVWNzUuMDMwMloiIGZpbGw9IiMzNDEyOTEiLz4KPHBhdGggZD0iTTU1LjUgMjQuMzc3MkM0Mi41OTIxIDI0LjM3NzIgMzIuMTI1IDM0Ljg0NDMgMzIuMTI1IDQ3Ljc1MjJDMzIuMTI1IDUzLjc0NDQgMzQuNDAwOSA1OS4xOTc4IDM4LjExNzIgNjMuMzMxOUg3Mi44ODI4Qzc2LjU5OTEgNTkuMTk3OCA3OC44NzUgNTMuNzQ0NCA3OC44NzUgNDcuNzUyMkM3OC44NzUgMzQuODQ0MyA2OC40MDc5IDI0LjM3NzIgNTUuNSAyNC4zNzcyWiIgZmlsbD0iIzU3MUVGQSIvPgo8L3N2Zz4K + b7b42874d0e274093e028cacac11373e1fb9b60c.b64: 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 +... +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-entrypoint" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + entrypoint.sh: | + #!/bin/sh + cd /mnt/assets + cat /cm/element/fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.b64 | base64 -d > fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.ico + cat /cm/jitsi/b3ea2c80d902061a870360ef1c69dead0b0abff7.b64 | base64 -d > b3ea2c80d902061a870360ef1c69dead0b0abff7.svg + cat /cm/keycloak/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64 | base64 -d > a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico + cat /cm/keycloak/f26f33840612e492ead45fc5e75896de016f48b7.b64 | base64 -d > f26f33840612e492ead45fc5e75896de016f48b7.svg + cat /cm/nextcloud/17f7a005ac01ada220723048c5b1f5b7fbd20eba.b64 | base64 -d > 17f7a005ac01ada220723048c5b1f5b7fbd20eba.png + cat /cm/nextcloud/778ebecebb8b69848f38b3342d29d3ac755d2521.b64 | base64 -d > 778ebecebb8b69848f38b3342d29d3ac755d2521.ico + cat /cm/notes/3050e4c60897d1be2a1c7cd21152dd2d546a49b0.b64 | base64 -d > 3050e4c60897d1be2a1c7cd21152dd2d546a49b0.ico + cat /cm/openproject/1116991e86385dc68a295b155053cb5c731f644d.b64 | base64 -d > 1116991e86385dc68a295b155053cb5c731f644d.svg + cat /cm/openxchange/a80c151fa3c27057eb4276e4b0e42e4243d3e232.b64 | base64 -d > a80c151fa3c27057eb4276e4b0e42e4243d3e232.ico + cat /cm/openxchange/070273f978a249ae8a3ab5196d22d18dae244b05.b64 | base64 -d > 070273f978a249ae8a3ab5196d22d18dae244b05.svg + cat /cm/portal/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.b64 | base64 -d > a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico + cat /cm/portal/e7f9d1ad04d1efe6154644a19056586e13a734b7.b64 | base64 -d > e7f9d1ad04d1efe6154644a19056586e13a734b7.svg + cat /cm/portal/cdea6e921a3ea56e326074499de783647258c796.b64 | base64 -d > cdea6e921a3ea56e326074499de783647258c796.svg + cat /cm/portal/3c57131cb5aba5437f541c362619f0d2d924fb78.b64 | base64 -d > 3c57131cb5aba5437f541c362619f0d2d924fb78.jpg + cat /cm/xwiki/5ad21d258634828e615c1fa334356fd0ae2bac5c.b64 | base64 -d > 5ad21d258634828e615c1fa334356fd0ae2bac5c.svg + cat /cm/xwiki/b7b42874d0e274093e028cacac11373e1fb9b60c.b64 | base64 -d > b7b42874d0e274093e028cacac11373e1fb9b60c.png +--- +# Source: opendesk-static-files/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "opendesk-static-files-nginx" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +data: + nginx.conf: |- + worker_processes auto; + + error_log stderr warn; + pid /tmp/nginx.pid; + + events { + worker_connections 1024; + } + + http { + include /etc/nginx/mime.types; + + 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; + + server_names_hash_bucket_size 128; + + # Health-Endpoint + server { + listen 8080; + location = /health { + access_log off; + allow all; + default_type 'application/json'; + return 200 '{"status": "ok"}'; + } + } + + # assets-Endpoints + server { + listen 8081; + server_name chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + location ~ ^/vector-icons/favicon.........ico$ { + alias /mnt/assets/fcaeeb04e0a8958c483fc15533d4a4e80c0652cb.ico; + } + + } + server { + listen 8081; + server_name meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + location ~ ^/images/favicon.svg$ { + alias /mnt/assets/b3ea2c80d902061a870360ef1c69dead0b0abff7.svg; + } + + } + server { + listen 8081; + server_name id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + location ~ ^/resources/...../login/UCS/img/favicon.ico$ { + alias /mnt/assets/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico; + } + location ~ ^/static-files/login/logo.svg$ { + alias /mnt/assets/f26f33840612e492ead45fc5e75896de016f48b7.svg; + } + + } + server { + listen 8081; + server_name files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + location ~ ^/core/img/favicon-touch.png$ { + alias /mnt/assets/17f7a005ac01ada220723048c5b1f5b7fbd20eba.png; + } + location ~ ^/core/img/favicon.ico$ { + alias /mnt/assets/778ebecebb8b69848f38b3342d29d3ac755d2521.ico; + } + + } + server { + listen 8081; + server_name notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + location ~ ^/favicon.ico$ { + alias /mnt/assets/3050e4c60897d1be2a1c7cd21152dd2d546a49b0.ico; + } + + } + server { + listen 8081; + server_name projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + location ~ ^/custom_style/........../favicon/favicon.svg$ { + alias /mnt/assets/1116991e86385dc68a295b155053cb5c731f644d.svg; + } + + } + server { + listen 8081; + server_name webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + location ~ ^/appsuite/favicon.ico$ { + alias /mnt/assets/a80c151fa3c27057eb4276e4b0e42e4243d3e232.ico; + } + location ~ ^/appsuite/favicon.svg$ { + alias /mnt/assets/070273f978a249ae8a3ab5196d22d18dae244b05.svg; + } + + } + server { + listen 8081; + server_name portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + location ~ ^/favicon.ico$ { + alias /mnt/assets/a7f8f6d33a133d8e4b8f28eb962f6b88d1762371.ico; + } + location ~ ^/static-files/portal/background.svg$ { + alias /mnt/assets/e7f9d1ad04d1efe6154644a19056586e13a734b7.svg; + } + location ~ ^/static-files/portal/waiting-spinner.svg$ { + alias /mnt/assets/cdea6e921a3ea56e326074499de783647258c796.svg; + } + location ~ ^/static-files/login/background.jpg$ { + alias /mnt/assets/3c57131cb5aba5437f541c362619f0d2d924fb78.jpg; + } + + } + server { + listen 8081; + server_name wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de; + location ~ ^/resources/icons/xwiki/favicon.svg$ { + alias /mnt/assets/5ad21d258634828e615c1fa334356fd0ae2bac5c.svg; + } + location ~ ^/resources/icons/xwiki/favicon16.png$ { + alias /mnt/assets/b7b42874d0e274093e028cacac11373e1fb9b60c.png; + } + + } + } +... +--- +# Source: opendesk-static-files/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "opendesk-static-files" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm + annotations: +spec: + type: "ClusterIP" + ports: + - name: "assets" + port: 8081 + targetPort: "assets" + protocol: "TCP" + - name: "status" + port: 8080 + targetPort: "status" + protocol: "TCP" + selector: + app.kubernetes.io/name: opendesk-static-files + app.kubernetes.io/instance: opendesk-static-files +... +--- +# Source: opendesk-static-files/templates/deployment.yaml +apiVersion: apps/v1 +kind: "Deployment" +metadata: + name: "opendesk-static-files" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: opendesk-static-files + app.kubernetes.io/instance: opendesk-static-files + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 05dcf3ad549e7a7c30fac3a8eb771c9c7188255ba8fc2fa9c0b29b55c5b14f82 + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: opendesk-static-files + initContainers: + - name: "init" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/library/nginx:1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4" + command: + - "/bin/sh" + - "-c" + - "/entrypoint.sh" + imagePullPolicy: IfNotPresent + env: + resources: + limits: + cpu: 99 + memory: 64Mi + requests: + cpu: 0.01 + memory: 16Mi + volumeMounts: + - name: "element-assets" + mountPath: "/cm/element" + - name: "jitsi-assets" + mountPath: "/cm/jitsi" + - name: "keycloak-assets" + mountPath: "/cm/keycloak" + - name: "nextcloud-assets" + mountPath: "/cm/nextcloud" + - name: "notes-assets" + mountPath: "/cm/notes" + - name: "openproject-assets" + mountPath: "/cm/openproject" + - name: "openxchange-assets" + mountPath: "/cm/openxchange" + - name: "portal-assets" + mountPath: "/cm/portal" + - name: "xwiki-assets" + mountPath: "/cm/xwiki" + - name: "assets" + mountPath: "/mnt/assets" + readOnly: false + - name: "entrypoint" + mountPath: "/entrypoint.sh" + subPath: "entrypoint.sh" + containers: + - name: "nginx" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/library/nginx:1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4" + imagePullPolicy: IfNotPresent + env: + livenessProbe: + httpGet: + path: "/health" + port: 8080 + httpHeaders: + - name: "Host" + value: "localhost" + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 2 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + httpGet: + path: "/health" + port: 8080 + httpHeaders: + - name: "Host" + value: "localhost" + initialDelaySeconds: 1 + periodSeconds: 1 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + startupProbe: + httpGet: + path: "/health" + port: 8080 + httpHeaders: + - name: "Host" + value: "localhost" + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ports: + - name: assets + containerPort: 8081 + protocol: TCP + - name: status + containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 64Mi + requests: + cpu: 0.01 + memory: 16Mi + volumeMounts: + - name: "config" + mountPath: "/etc/nginx/nginx.conf" + subPath: "nginx.conf" + - name: "cache" + mountPath: "/var/cache/nginx/" + - name: "run" + mountPath: "/var/run/" + - name: "tmp" + mountPath: "/tmp" + - name: "assets" + mountPath: "/mnt/assets" + readOnly: true + volumes: + - name: "element-assets" + configMap: + name: "opendesk-static-files-element-assets" + - name: "jitsi-assets" + configMap: + name: "opendesk-static-files-jitsi-assets" + - name: "keycloak-assets" + configMap: + name: "opendesk-static-files-keycloak-assets" + - name: "nextcloud-assets" + configMap: + name: "opendesk-static-files-nextcloud-assets" + - name: "notes-assets" + configMap: + name: "opendesk-static-files-notes-assets" + - name: "openproject-assets" + configMap: + name: "opendesk-static-files-openproject-assets" + - name: "openxchange-assets" + configMap: + name: "opendesk-static-files-openxchange-assets" + - name: "portal-assets" + configMap: + name: "opendesk-static-files-portal-assets" + - name: "xwiki-assets" + configMap: + name: "opendesk-static-files-xwiki-assets" + - name: "config" + configMap: + name: "opendesk-static-files-nginx" + - name: "entrypoint" + configMap: + name: "opendesk-static-files-entrypoint" + items: + - key: "entrypoint.sh" + path: "entrypoint.sh" + defaultMode: 0755 + - name: "cache" + emptyDir: {} + - name: "run" + emptyDir: {} + - name: "tmp" + emptyDir: {} + - name: "assets" + emptyDir: {} +... +--- +# Source: opendesk-static-files/templates/ingress.yaml +apiVersion: "networking.k8s.io/v1" +kind: "Ingress" +metadata: + name: "opendesk-static-files" + labels: + app.kubernetes.io/name: opendesk-static-files + helm.sh/chart: opendesk-static-files-4.0.1 + app.kubernetes.io/instance: opendesk-static-files + app.kubernetes.io/managed-by: Helm + annotations: + nginx.ingress.kubernetes.io/use-regex: "true" + nginx.ingress.kubernetes.io/session-cookie-path: "/" +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /vector-icons/favicon.........ico + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - host: "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /images/favicon.svg + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - host: "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /resources/...../login/UCS/img/favicon.ico + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - path: /static-files/login/logo.svg + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - host: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /core/img/favicon-touch.png + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - path: /core/img/favicon.ico + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /favicon.ico + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - host: "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /custom_style/........../favicon/favicon.svg + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - host: "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /appsuite/favicon.ico + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - path: /appsuite/favicon.svg + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /favicon.ico + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - path: /static-files/portal/background.svg + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - path: /static-files/portal/waiting-spinner.svg + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - path: /static-files/login/background.jpg + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - host: "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /resources/icons/xwiki/favicon.svg + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets + - path: /resources/icons/xwiki/favicon16.png + pathType: "Exact" + backend: + service: + name: opendesk-static-files + port: + name: assets +... + +--- +# Source: redis/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +automountServiceAccountToken: true +metadata: + name: redis + namespace: "yschmidt-opendesk-argo" + 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/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: redis + namespace: "yschmidt-opendesk-argo" + 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: "MDdjNTI0ZjBkM2Y5NWI0ZDAzZmVhNTRlYTEwY2ZiODQ4YmRiMzU1ZQ==" +--- +# Source: redis/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: redis-configuration + namespace: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" + 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: null + 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: "yschmidt-opendesk-argo" + 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: ab6bcf8974601f2d1c9598fc3f77f21fe3df4848bb3f714847f3f85935fd7822 + 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.4.1-debian-12-r2@sha256:3cfa11e8fef45c006a101ed7cfaae2cdaed7a5167c8ada2a3f76a1de54488cd0 + imagePullPolicy: "IfNotPresent" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: null + 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" + +--- +# Source: memcached/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +automountServiceAccountToken: true +metadata: + name: memcached + namespace: yschmidt-opendesk-argo + 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: yschmidt-opendesk-argo + 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: null + 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: yschmidt-opendesk-argo + 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: null + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.2 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +... +--- +# Source: postgresql/templates/secret-job.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "postgresql-job" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.2 + app.kubernetes.io/instance: postgresql + app.kubernetes.io/managed-by: Helm +stringData: + init-wait.sh: | + RETRIES=60 + until psql -c "select 1" > /dev/null 2>&1 || [ $RETRIES -eq "0" ]; do + echo "Waiting 5s for postgres server, $((RETRIES--)) remaining attempts..." + sleep 5 + done + if [ ${RETRIES} -eq "0" ]; then + echo "Maximum wait attempts exceeded, aborting". + exit 1; + fi + init-user.sh: | + CURRENT_MAX_CONNECTIONS=$(psql -t -c "SHOW max_connections;" | xargs) + echo "Current set max_connections ($CURRENT_MAX_CONNECTIONS)." + echo "Working on keycloak_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'keycloak_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"keycloak_user\" WITH ENCRYPTED PASSWORD '2a27e8e8f1148830c04a97d765173021337b738e' CONNECTION LIMIT 100"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"keycloak_user\" WITH ENCRYPTED PASSWORD '2a27e8e8f1148830c04a97d765173021337b738e' CONNECTION LIMIT 100"; + fi + echo "Working on notes_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'notes_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"notes_user\" WITH ENCRYPTED PASSWORD 'be74d99779cd9ad3426c25b026e0bec0784f7aff' CONNECTION LIMIT 100"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"notes_user\" WITH ENCRYPTED PASSWORD 'be74d99779cd9ad3426c25b026e0bec0784f7aff' CONNECTION LIMIT 100"; + fi + echo "Working on openproject_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'openproject_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"openproject_user\" WITH ENCRYPTED PASSWORD '0b4d7caf9005abcc8df53519620dd00619de27f8' CONNECTION LIMIT 100"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"openproject_user\" WITH ENCRYPTED PASSWORD '0b4d7caf9005abcc8df53519620dd00619de27f8' CONNECTION LIMIT 100"; + fi + echo "Working on keycloak_extensions_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'keycloak_extensions_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"keycloak_extensions_user\" WITH ENCRYPTED PASSWORD 'a7125d58b42fc935fd603c362ddecbfafd92bca0' CONNECTION LIMIT 100"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"keycloak_extensions_user\" WITH ENCRYPTED PASSWORD 'a7125d58b42fc935fd603c362ddecbfafd92bca0' CONNECTION LIMIT 100"; + fi + echo "Working on matrix_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'matrix_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"matrix_user\" WITH ENCRYPTED PASSWORD '5cd0a266029154912dd660f748137982a924e6f5' CONNECTION LIMIT 100"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"matrix_user\" WITH ENCRYPTED PASSWORD '5cd0a266029154912dd660f748137982a924e6f5' CONNECTION LIMIT 100"; + fi + echo "Working on notificationsapi_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'notificationsapi_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"notificationsapi_user\" WITH ENCRYPTED PASSWORD 'd1f34090031fd52de9518c2665090822a0d1e17b' CONNECTION LIMIT 100"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"notificationsapi_user\" WITH ENCRYPTED PASSWORD 'd1f34090031fd52de9518c2665090822a0d1e17b' CONNECTION LIMIT 100"; + fi + echo "Working on guardianmanagementapi_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'guardianmanagementapi_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"guardianmanagementapi_user\" WITH ENCRYPTED PASSWORD '37b03322fc23defff213fe18e95448bd27f92652' CONNECTION LIMIT 100"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"guardianmanagementapi_user\" WITH ENCRYPTED PASSWORD '37b03322fc23defff213fe18e95448bd27f92652' CONNECTION LIMIT 100"; + fi + echo "Working on selfservice_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'selfservice_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"selfservice_user\" WITH ENCRYPTED PASSWORD '09af664fe11f675880a6dc980f0276f70d001104' CONNECTION LIMIT 10"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"selfservice_user\" WITH ENCRYPTED PASSWORD '09af664fe11f675880a6dc980f0276f70d001104' CONNECTION LIMIT 10"; + fi + echo "Working on nextcloud_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'nextcloud_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"nextcloud_user\" WITH ENCRYPTED PASSWORD '0c6b73606d239fe1aba0b3f28ada476e3a58fa2f' CONNECTION LIMIT 100"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"nextcloud_user\" WITH ENCRYPTED PASSWORD '0c6b73606d239fe1aba0b3f28ada476e3a58fa2f' CONNECTION LIMIT 100"; + fi + echo "Working on xwiki_user..." + if psql -tc "SELECT 1 FROM pg_user WHERE usename = 'xwiki_user'" | grep -q 1; then + echo "User already exists, updating." + psql -c "ALTER USER \"xwiki_user\" WITH ENCRYPTED PASSWORD 'cf03170636d1fa89617370fe51aefc470221ae28' CONNECTION LIMIT 100"; + else + echo "User does not exist, creating." + psql -c "CREATE USER \"xwiki_user\" WITH ENCRYPTED PASSWORD 'cf03170636d1fa89617370fe51aefc470221ae28' CONNECTION LIMIT 100"; + fi + echo "Final required max_connections: 925" + if [[ "$CURRENT_MAX_CONNECTIONS" -ne "925" ]]; then + echo "Updating required limits from current $CURRENT_MAX_CONNECTIONS to 925" + psql -c "ALTER SYSTEM SET MAX_CONNECTIONS = 925"; + # echo "Restarting the postgres Service." + # pg_ctl restart + fi + init-db.sh: | + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'keycloak'" | grep -q 1 || psql -c "CREATE DATABASE keycloak "; + psql -c "ALTER DATABASE keycloak OWNER TO keycloak_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE keycloak TO keycloak_user"; + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'keycloak_extensions'" | grep -q 1 || psql -c "CREATE DATABASE keycloak_extensions "; + psql -c "ALTER DATABASE keycloak_extensions OWNER TO keycloak_extensions_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE keycloak_extensions TO keycloak_extensions_user"; + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'notes'" | grep -q 1 || psql -c "CREATE DATABASE notes "; + psql -c "ALTER DATABASE notes OWNER TO notes_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE notes TO notes_user"; + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'openproject'" | grep -q 1 || psql -c "CREATE DATABASE openproject "; + psql -c "ALTER DATABASE openproject OWNER TO openproject_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE openproject TO openproject_user"; + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'matrix'" | grep -q 1 || psql -c "CREATE DATABASE matrix ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 "; + psql -c "ALTER DATABASE matrix OWNER TO matrix_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE matrix TO matrix_user"; + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'guardianmanagementapi'" | grep -q 1 || psql -c "CREATE DATABASE guardianmanagementapi "; + psql -c "ALTER DATABASE guardianmanagementapi OWNER TO guardianmanagementapi_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE guardianmanagementapi TO guardianmanagementapi_user"; + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'notificationsapi'" | grep -q 1 || psql -c "CREATE DATABASE notificationsapi "; + psql -c "ALTER DATABASE notificationsapi OWNER TO notificationsapi_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE notificationsapi TO notificationsapi_user"; + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'selfservice'" | grep -q 1 || psql -c "CREATE DATABASE selfservice "; + psql -c "ALTER DATABASE selfservice OWNER TO selfservice_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE selfservice TO selfservice_user"; + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'nextcloud'" | grep -q 1 || psql -c "CREATE DATABASE nextcloud "; + psql -c "ALTER DATABASE nextcloud OWNER TO nextcloud_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud_user"; + psql -tc "SELECT 1 FROM pg_database WHERE datname = 'xwiki'" | grep -q 1 || psql -c "CREATE DATABASE xwiki ENCODING 'UNICODE' template=template0 "; + psql -c "ALTER DATABASE xwiki OWNER TO xwiki_user"; + psql -c "GRANT ALL PRIVILEGES ON DATABASE xwiki TO xwiki_user"; +... +--- +# Source: postgresql/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "postgresql" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.2 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.2 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.2 + 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.2 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/library/postgres:15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b" + imagePullPolicy: IfNotPresent + env: + - name: "POSTGRES_PASSWORD" + value: "e5c38aa93bd3191b54a288db3e820c103ebb52e0" + - 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" + +... +--- +# Source: postgresql/templates/job.yaml +apiVersion: "batch/v1" +kind: "Job" +metadata: + name: "postgresql-bootstrap" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postgresql + helm.sh/chart: postgresql-2.1.2 + 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.2 + 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: null + 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: "e5c38aa93bd3191b54a288db3e820c103ebb52e0" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-3.0.3 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +... +--- +# Source: mariadb/templates/secret-job.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "mariadb-job" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-3.0.3 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm +stringData: + init-wait.sh: | + RETRIES=10 + until mariadb-admin status --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} > /dev/null 2>&1 || [ $RETRIES -eq 0 ]; do + echo "Waiting 30s for mariadb server, $((RETRIES--)) remaining attempts..." + sleep 30 + done + if [ ${RETRIES} -eq "0" ]; then + echo "Maximum wait attempts exceeded, aborting". + exit 1; + fi + init-user-data.sql: | + CREATE USER IF NOT EXISTS "openxchange_user"@"%" IDENTIFIED BY "9778a34a657fc40e8f7e16bea4fd84d8e64e224c"; + ALTER USER "openxchange_user"@"%" WITH MAX_USER_CONNECTIONS 100; + ALTER USER "openxchange_user"@"%" IDENTIFIED BY "9778a34a657fc40e8f7e16bea4fd84d8e64e224c"; + init-user.sh: | + mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} + init-db.sh: | + mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} -e "CREATE DATABASE IF NOT EXISTS openxchange_dummy;" + mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} -e 'GRANT ALL PRIVILEGES ON openxchange_dummy.* TO "openxchange_user"@"%";' + mariadb --host=mariadb --user=root --password=${MARIADB_ROOT_PASSWORD} -e "FLUSH PRIVILEGES;" +... +--- +# Source: mariadb/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "mariadb" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-3.0.3 + app.kubernetes.io/instance: mariadb + app.kubernetes.io/managed-by: Helm +stringData: + rootPassword: "e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59" +... +--- +# Source: mariadb/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "mariadb" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-3.0.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-3.0.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-3.0.3 + 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-3.0.3 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/library/mariadb:10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f" + imagePullPolicy: IfNotPresent + env: + - name: "MARIADB_ROOT_PASSWORD" + valueFrom: + secretKeyRef: + name: mariadb + key: rootPassword + 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" + +... +--- +# Source: mariadb/templates/job.yaml +apiVersion: "batch/v1" +kind: "Job" +metadata: + name: "mariadb-bootstrap" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-3.0.3 + 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-3.0.3 + 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: null + 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" + valueFrom: + secretKeyRef: + name: mariadb + key: rootPassword + 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-3.0.1 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +... +--- +# Source: postfix/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "postfix" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm +stringData: + username: "opendesk-system" + password: "1884bda7fb31c726adcd094399ab63319e9ca56f" +... +--- +# Source: postfix/templates/configmap-overrides.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "postfix-overrides" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: "postfix" +data: + sasl_passwd.map: | + : +... +--- +# Source: postfix/templates/configmap-scripts.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "postfix-scripts" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: "postfix" +data: + init-postfix.sh: | + #!/bin/bash + + function initPostfix { + cp /etc/postfix/master.cf.template /etc/postfix/master.cf + cp /etc/postfix/main.cf.template /etc/postfix/main.cf + chmod g-w,o-w /etc/postfix /etc/postfix-copy /var/spool/postfix /var/lib/postfix + chown postfix /var/lib/postfix + + if [ -f /overrides/postfix.cf ]; then + while read line; do + [[ -n "${line}" && "${line}" != [[:blank:]#]* ]] && postconf -e "${line}" + done < /overrides/postfix.cf + echo "Loaded '/overrides/postfix.cf'" + else + echo "No extra postfix settings loaded because optional '/overrides/postfix.cf' not provided." + fi + + # Include table-map files + if ls -A /overrides/*.map 1> /dev/null 2>&1; then + cp /overrides/*.map /etc/postfix/ + postmap /etc/postfix/*.map + rm /etc/postfix/*.map + chown root:root /etc/postfix/*.lmdb + chmod 0600 /etc/postfix/*.lmdb + echo "Loaded 'map files'" + else + echo "No extra map files loaded because optional '/overrides/*.map' not provided." + fi + echo -n ${AUTHDB_PASSWORD} | saslpasswd2 -c -u "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" ${AUTHDB_USERNAME} + chmod g+r /etc/sasl2/sasldb2 + + cp -a /etc/postfix/* /etc/postfix-copy/ + echo "Init done" + } + + initPostfix >> /proc/1/fd/1 + + start-postfix.sh: | + #!/bin/bash + + function startPostfix { + saslauthd -a sasldb -d -O /etc/postfix/sasl2/smtpd.conf & + echo "Started Sasl Daemon Daemon" + + /usr/sbin/postfix start-fg + } + + startPostfix &>> /proc/1/fd/1 + + namespace-watcher.sh: | + #!/bin/bash + + DELAY=${DELAY:-10} + DOMAIN=${DOMAIN:-"develop.souvap-univention.de"} + INTERNAL_DOMAIN=${INTERNAL_DOMAIN:-"svc.cluster.local"} + KUBECTL_BIN="/usr/bin/env kubectl" + MAILSERVER=${MAILSERVER:-"dovecot"} + MAILSERVER_PORT=${MAILSERVER_PORT:-"24"} + MAILSERVER_PROTOCOL=${MAILSERVER_PROTOCOL:-"lmtps"} + NAMESPACE=${NAMESPACE:-"default"} + SERVICE_NAME=${SERVICE_NAME:-"dovecot"} + TRANSPORT_MAP=${TRANSPORT_MAP:-"/etc/postfix/transport.map"} + VIRTUAL_MAILBOX_DOMAINS=${VIRTUAL_MAILBOX_DOMAINS:-"/etc/postfix/virtual_mailbox_domains.txt"} + WORKDIR=${WORKDIR:-"/namespace-watcher"} + + touch "${WORKDIR}/virtual_mailbox_domains.txt" + touch "${WORKDIR}/transport.map" + + update-postfix() { + echo "updating Postfix ..." + cp "${WORKDIR}/virtual_mailbox_domains.txt.tmp" "${WORKDIR}/virtual_mailbox_domains.txt" + cp "${WORKDIR}/transport.map.tmp" "${WORKDIR}/transport.map" + ${KUBECTL_BIN} exec -n "${NAMESPACE}" ${HOSTNAME} -c postfix -- bash -c "cp \"${WORKDIR}/transport.map\" \"${TRANSPORT_MAP}\"; cp \"${WORKDIR}/virtual_mailbox_domains.txt\" \"${VIRTUAL_MAILBOX_DOMAINS}\"; postmap \"${TRANSPORT_MAP}\"; postfix reload" + } + + while true; do + # Get all namespaces containting a service called dovecot + namespaces=( $( ${KUBECTL_BIN} get -A service -o jsonpath="{.items[?(@.metadata.name==\"${SERVICE_NAME}\")].metadata.namespace}" ) ) + rm -f "${WORKDIR}/virtual_mailbox_domains.txt.tmp" + rm -f "${WORKDIR}/transport.map.tmp" + for ns in $(printf "%q\n" "${namespaces[@]}" | sort -u); do + # Get all mail domains from annotation + IFS=',' read -r -a domains <<< $( ${KUBECTL_BIN} get service -n ${ns} ${SERVICE_NAME} -o jsonpath='{.metadata.annotations.opendesk\.eu/mail-domains}' ) + # Add default namespace domain + domains+=("${ns}.${DOMAIN}") + for domain in $(printf "%q\n" "${domains[@]}" | sort -u); do + echo "${domain}" >> "${WORKDIR}/virtual_mailbox_domains.txt.tmp" + echo "${domain} ${MAILSERVER_PROTOCOL}:${MAILSERVER}.${ns}:${MAILSERVER_PORT}" >> "${WORKDIR}/transport.map.tmp" + done + done + cmp "${WORKDIR}/transport.map" "${WORKDIR}/transport.map.tmp" || update-postfix + sleep ${DELAY} + echo "👀" + done +... +--- +# Source: postfix/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "postfix-config" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + 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_client_restrictions= + -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= + + submission inet n - n - - smtpd + -o smtpd_client_connection_count_limit=15 + -o smtpd_proxy_options=speed_adjust + -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject + -o smtpd_reject_unlisted_recipient=no + -o smtpd_sasl_auth_enable=yes + -o smtpd_tls_security_level=may + -o syslog_name=postfix/submission + + 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_send_xforward_command=yes + -o lmtp_tls_ciphers=high + -o lmtp_tls_mandatory_ciphers=high + -o lmtp_tls_mandatory_protocols=>=TLSv1.2 + -o lmtp_tls_note_starttls_offer=yes + -o lmtp_tls_protocols=>=TLSv1.2 + -o lmtp_tls_security_level=encrypt + + main.cf: | + compatibility_level=3.6 + + mydomain = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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 + + recipient_delimiter = + + + # 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_tls_CAfile = + smtp_tls_mandatory_protocols = >=TLSv1.2 + smtp_tls_security_level = encrypt + smtp_tls_session_cache_database = lmdb:/var/lib/postfix/smtp_scache + + virtual_mailbox_domains = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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, + permit_sasl_authenticated, + 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_sasl_authenticated, + permit + + # Relay restrictions + smtpd_relay_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + + smtpd_sasl_auth_enable = yes + smtpd_sasl_path = smtpd + smtpd_sasl_security_options = noanonymous + smtpd_sasl_type = cyrus + cyrus_sasl_config_path = "/etc/postfix/sasl" + # smtpd_sasl_local_domain = $mydomain + broken_sasl_auth_clients = yes + smtpd_tls_cert_file = /etc/tls/tls.crt + smtpd_tls_key_file = /etc/tls/tls.key + smtpd_tls_mandatory_protocols = >=TLSv1.2 + smtpd_tls_security_level = may + 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 + + smtpd.conf: | + pwcheck_method: auxprop + auxprop_plugin: sasldb + mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM + sasldb_path: /etc/postfix/sasldb +... +--- +# Source: postfix/templates/persistentvolumeclaim.yaml +apiVersion: "v1" +kind: "PersistentVolumeClaim" +metadata: + name: "postfix" +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "1Gi" + +... +--- +# Source: postfix/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "postfix" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + 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/configmap: 81bd3ff9d37b21391b7f1c7fdbff68632f3e316f925edf32dcb1feb099ea9da8 + checksum/configmapoverrides: a0519350f440fde8cd07d5b8babba5eb186ba501196ca95333fee0662dc10c10 + checksum/configmapnamespacewatcherbin: e222c5e7d6e26b5151f6e35368cf32cb1a4e1f936f0e818d234fb97dfdaf9da7 + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix + app.kubernetes.io/managed-by: Helm + spec: + imagePullSecrets: + securityContext: + fsGroup: 101 + serviceAccountName: postfix + volumes: + - name: "postfix-scripts" + configMap: + name: "postfix-scripts" + defaultMode: 0777 + - name: "config-templates" + configMap: + name: "postfix-config" + - 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: "config" + emptyDir: + sizeLimit: "100Mi" + medium: "Memory" + - name: "lib-postfix" + emptyDir: + sizeLimit: "100Mi" + medium: "Memory" + - name: "tls" + secret: + secretName: "opendesk-certificates-tls" + - name: "spool-postfix" + persistentVolumeClaim: + claimName: "postfix" + - name: "config-sasl" + configMap: + name: "postfix-config" + items: + - key: "smtpd.conf" + path: "smtpd.conf" + - name: "run-saslauthd" + emptyDir: + sizeLimit: "100Mi" + medium: "Memory" + - name: "sasl2" + emptyDir: + sizeLimit: "100Mi" + medium: "Memory" + - name: "overrides" + configMap: + name: "postfix-overrides" + initContainers: + - name: "init-postfix" + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d" + imagePullPolicy: "IfNotPresent" + command: ['bash', '-c', "/usr/local/bin/init-postfix.sh"] + resources: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 16Mi + env: + - name: "AUTHDB_USERNAME" + valueFrom: + secretKeyRef: + name: "postfix" + key: username + - name: "AUTHDB_PASSWORD" + valueFrom: + secretKeyRef: + name: "postfix" + key: password + volumeMounts: + - name: "config" + mountPath: "/etc/postfix-copy" + - name: "config-templates" + mountPath: "/etc/postfix/master.cf.template" + subPath: "master.cf" + - name: "config-templates" + mountPath: "/etc/postfix/main.cf.template" + subPath: "main.cf" + - name: "lib-postfix" + mountPath: "/var/lib/postfix" + - name: "postfix-scripts" + mountPath: "/usr/local/bin/init-postfix.sh" + subPath: "init-postfix.sh" + - name: "config-sasl" + mountPath: "/etc/postfix/sasl/smtpd.conf" + subPath: "smtpd.conf" + - name: "sasl2" + mountPath: "/etc/sasl2" + - name: "tls" + mountPath: "/etc/tls" + - name: "spool-postfix" + mountPath: "/var/spool/postfix" + - name: "overrides" + mountPath: "/overrides" + containers: + - name: "postfix" + securityContext: + allowPrivilegeEscalation: true + capabilities: {} + privileged: true + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d" + imagePullPolicy: "IfNotPresent" + command: ['bash', '-c', "/usr/local/bin/start-postfix.sh"] + 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" + mountPath: "/etc/postfix" + readOnly: true + - name: "postfix-scripts" + mountPath: "/usr/local/bin/start-postfix.sh" + subPath: "start-postfix.sh" + - name: "config-sasl" + mountPath: "/etc/postfix/sasl/smtpd.conf" + subPath: "smtpd.conf" + - name: "run-saslauthd" + mountPath: "/run/saslauthd" + - name: "sasl2" + mountPath: "/etc/sasl2" + - name: "lib-postfix" + mountPath: "/var/lib/postfix" + - name: "tls" + mountPath: "/etc/tls" + - name: "spool-postfix" + mountPath: "/var/spool/postfix" +... + +--- +# Source: clamav-simple/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: "clamav-simple" + namespace: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" + 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: null + 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: null + 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" + +... + +--- +# Source: minio/templates/provisioning-networkpolicy.yaml +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + name: minio-provisioning + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 +spec: + podSelector: + matchLabels: + app.kubernetes.io/component: minio-provisioning + policyTypes: + - Ingress + - Egress + egress: + - {} + ingress: +--- +# Source: minio/templates/pdb.yaml +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: minio + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 +spec: + maxUnavailable: 1 + selector: + matchLabels: + app.kubernetes.io/instance: minio + app.kubernetes.io/name: minio +--- +# Source: minio/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: minio + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 +automountServiceAccountToken: false +secrets: + - name: minio +--- +# Source: minio/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: minio + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 +type: Opaque +data: + root-user: "YWRtaW4=" + root-password: "M2M4MGRiOTRiNjE0NTMwNjZjOWI5NjkzNjFkZTE0ZjY2ZDVhNjExYg==" +--- +# Source: minio/templates/provisioning-configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: minio-provisioning + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 + 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-notes-bucket-policy.json: | + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::notes"] + }, + { + "Effect": "Allow", + "Action": ["s3:*"], + "Resource": ["arn:aws:s3:::notes/*"] + } + ] + } + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "10Gi" +--- +# Source: minio/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: minio + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 +spec: + type: ClusterIP + ports: + - name: minio-api + port: 9000 + targetPort: minio-api + nodePort: null + - name: minio-console + port: 9001 + targetPort: minio-console + nodePort: null + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 +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: 2024.12.13 + helm.sh/chart: minio-14.10.1 + annotations: + checksum/credentials-secret: 97b540812be151f47c01d33b7e977f90b6b76ba8c66b8c9d878b492ad396ae94 + 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: + + automountServiceAccountToken: false + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: OnRootMismatch + supplementalGroups: [] + sysctls: [] + initContainers: + - name: volume-permissions + image: registry-1.docker.io/bitnami/os-shell:12-debian-12-r34@sha256:41e0561b0f08011c24acc5e8ad4c0d09a36062cfab35d9ec7b3fdd4cfecc01e0 + imagePullPolicy: "IfNotPresent" + command: + - /bin/bash + - -ec + - | + chown -R 1001:1001 /bitnami/minio/data + securityContext: + runAsUser: 0 + seLinuxOptions: {} + resources: + limits: + cpu: 150m + ephemeral-storage: 2Gi + memory: 192Mi + requests: + cpu: 100m + ephemeral-storage: 50Mi + memory: 128Mi + volumeMounts: + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + - name: data + mountPath: /bitnami/minio/data + containers: + - name: minio + image: registry-1.docker.io/bitnami/minio:2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 + imagePullPolicy: "IfNotPresent" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seccompProfile: + type: RuntimeDefault + env: + - name: BITNAMI_DEBUG + value: "false" + - name: MINIO_SCHEME + value: "http" + - name: MINIO_FORCE_NEW_KEYS + value: "no" + - name: MINIO_API_PORT_NUMBER + value: "9000" + - name: MINIO_ROOT_USER + valueFrom: + secretKeyRef: + name: minio + key: root-user + - name: MINIO_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: minio + key: root-password + - name: MINIO_BROWSER + value: "on" + - name: MINIO_PROMETHEUS_AUTH_TYPE + value: "public" + - name: MINIO_CONSOLE_PORT_NUMBER + value: "9001" + - name: MINIO_DATA_DIR + value: "/bitnami/minio/data" + 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: empty-dir + mountPath: /tmp + subPath: tmp-dir + - name: empty-dir + mountPath: /opt/bitnami/minio/tmp + subPath: app-tmp-dir + - name: empty-dir + mountPath: /.mc + subPath: app-mc-dir + - name: data + mountPath: /bitnami/minio/data + volumes: + - name: empty-dir + emptyDir: {} + - name: data + persistentVolumeClaim: + claimName: minio +--- +# Source: minio/templates/api-ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: minio-api + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: 4G + nginx.org/client-max-body-size: 4G +spec: + ingressClassName: "nginx" + rules: + - host: objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: minio + port: + name: minio-api + tls: + - hosts: + - objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + secretName: opendesk-certificates-tls +--- +# Source: minio/templates/provisioning-job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: minio-provisioning + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: minio + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: minio + app.kubernetes.io/version: 2024.12.13 + helm.sh/chart: minio-14.10.1 + 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: 2024.12.13 + helm.sh/chart: minio-14.10.1 + app.kubernetes.io/component: minio-provisioning + spec: + + restartPolicy: OnFailure + terminationGracePeriodSeconds: 0 + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: Always + supplementalGroups: [] + sysctls: [] + serviceAccountName: minio + initContainers: + - name: wait-for-available-minio + image: registry-1.docker.io/bitnami/minio:2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 + 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 + - -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:2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 + 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 + - -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 --wait --json; + + # Adding a sleep to ensure that the check below does not cause + # a race condition. We check for the MinIO port because the + # "mc admin service restart --wait" command is not working as expected + sleep 5; + echo "Waiting for Minio to be available after restart"; + wait-for-port \ + --host=minio \ + --state=inuse \ + --timeout=120 \ + 9000; + echo "Minio is available. Executing provisioning commands"; + 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 notes-bucket-policy /etc/ilm/policy-notes-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 91b5990fdaffbc455d7ef7483b5cc1c7f2f371e8; + 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 cd58fb1bf965a7605e316b394f11ae9c67b3220f; + 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 notes_user 5c58820a84259ce3b869bfc267b53437f49d9902; + attachPolicy user notes_user notes-bucket-policy; + detachDanglingPolicies user notes_user "notes-bucket-policy"; + mc admin user enable provisioning notes_user; + mc admin user add provisioning openproject_user 200f449601dec2cd474d0695f4f802493413f322; + 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 915f15805278ef774a1cf3abfa6b8623c1fa4544; + 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 version suspend provisioning/migrations; + mc mb provisioning/nextcloud --ignore-existing ; + mc version suspend provisioning/nextcloud; + mc mb provisioning/notes --ignore-existing ; + mc version enable provisioning/notes; + mc mb provisioning/openproject --ignore-existing ; + mc version suspend provisioning/openproject; + mc mb provisioning/ums --ignore-existing ; + mc version suspend provisioning/ums; + + 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: empty-dir + mountPath: /.mc + subPath: app-mc-dir + - name: empty-dir + mountPath: /opt/bitnami/minio/tmp + subPath: app-tmp-dir + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + - name: minio-provisioning + mountPath: /etc/ilm + volumes: + - name: empty-dir + emptyDir: {} + - name: minio-provisioning + configMap: + name: minio-provisioning + +--- +# Source: nubus/charts/keycloak/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: ums-keycloak + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: keycloak + helm.sh/chart: keycloak-0.9.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +... +--- +# Source: nubus/charts/nubusGuardian/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: ums-guardian + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.17.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "2.0.0" + annotations: +automountServiceAccountToken: false +... +--- +# Source: nubus/charts/nubusKeycloakBootstrap/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: ums-keycloak-bootstrap + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.10.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "0.0.1" + annotations: +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.16.1 + 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.16.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "21.0.1" + annotations: +automountServiceAccountToken: false +... +--- +# Source: nubus/charts/nubusLdapNotifier/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: ums-ldap-notifier + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-notifier + helm.sh/chart: nubusLdapNotifier-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "14.0.4" + annotations: +automountServiceAccountToken: false +... +--- +# Source: nubus/charts/nubusLdapServer/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ums-ldap-server + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +--- +# Source: nubus/charts/nubusPortalFrontend/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: ums-portal-frontend + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.63.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.63.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.3.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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: selfservice-listener + helm.sh/chart: nubusSelfServiceConsumer-0.14.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "0.0.1" + annotations: +automountServiceAccountToken: false +... +--- +# Source: nubus/charts/nubusStackDataUms/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: ums-stack-data-ums + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.89.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 +automountServiceAccountToken: false +... +--- +# Source: nubus/charts/nubusUdmListener/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: ums-provisioning-udm-listener + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning-udm-listener + helm.sh/chart: nubusUdmListener-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.29.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-gateway + helm.sh/chart: nubusUmcGateway-0.38.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.38.0 + 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/nubusPortalConsumer/templates/secret.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: ums-portal-consumer-common + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-consumer + helm.sh/chart: nubusPortalConsumer-0.63.0 + 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: "" +--- +# Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-stack-data-ums-context" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.89.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: | + apps: + cassandra: + enabled: false + namespace: null + certificates: + enabled: true + namespace: null + clamavDistributed: + enabled: false + namespace: null + clamavSimple: + enabled: true + namespace: null + collabora: + enabled: true + namespace: null + collaboraController: + enabled: false + namespace: null + cryptpad: + enabled: true + namespace: null + dkimpy: + enabled: false + namespace: null + dovecot: + enabled: true + namespace: null + element: + enabled: true + namespace: null + elementAdmin: + enabled: false + namespace: null + elementGroupsync: + enabled: false + namespace: null + home: + enabled: true + namespace: null + jitsi: + enabled: false + namespace: null + mariadb: + enabled: true + namespace: null + memcached: + enabled: true + namespace: null + migrations: + enabled: true + namespace: null + minio: + enabled: true + namespace: null + nextcloud: + enabled: true + namespace: null + notes: + enabled: true + namespace: null + nubus: + enabled: true + namespace: null + openproject: + enabled: true + namespace: null + oxAppSuite: + enabled: true + namespace: null + postfix: + enabled: true + namespace: null + postgresql: + enabled: true + namespace: null + redis: + enabled: true + namespace: null + staticFiles: + enabled: true + namespace: null + xwiki: + enabled: true + namespace: null + defaultGroupOtherObjects: cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal + domainName: 'yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' + enableDefaultLogin: 'false' + externalMailDomain: 'yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' + initialPasswordAdministrator: 937393b22852fc828b0d68283dddcb9f8fb97411 + ldapBaseDn: 'dc=swp-ldap,dc=internal' + ldapSearchUsers: + - lastname: LDAP-Search-User + password: 40290e376095d33c0c650723efa007abec1ee3fd + username: ldapsearch_dovecot + - lastname: LDAP-Search-User + password: 96380258a941863a5f9ecf74f3f88f1b563cae35 + username: ldapsearch_element + - lastname: LDAP-Search-User + password: 6f85092e969e10c851eef49367019d1e02a4a8a0 + username: ldapsearch_keycloak + - lastname: LDAP-Search-User + password: f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0 + username: ldapsearch_nextcloud + - lastname: LDAP-Search-User + password: 9c96f85df1170aaa929a6763111ff9472b2d109f + username: ldapsearch_openproject + - lastname: LDAP-Search-User + password: 57356bf92e475164a8c4522dfd8453bb162094d4 + username: ldapsearch_ox + - lastname: LDAP-Search-User + password: 8072148becdef928e46f5686560bbbcd9c9a4284 + username: ldapsearch_xwiki + ldapSystemUsers: [] + loadDevData: true + opendeskAdminAttributes: true + opendeskEnterprise: null + opendeskGroupAttributes: true + opendeskUserAttributes: true + oxContextHidden: true + oxDefaultContext: "1" + portalEnforceLogin: true + portalFileshareLinkBase: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + portalGroupwareLinkBase: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + portalHeaderLogo: | + PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg== + portalLinkLegalNotice: https://opendesk.eu/impressum + portalLinkPrivacyStatement: https://zendis.de/datenschutzerklaerung + portalManagementKnowledgeLinkBase: https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + portalManagementProjectLinkBase: https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + portalNotesLinkBase: https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + portalRealtimeCollaborationLinkBase: https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + portalRealtimeVideoconferenceLinkBase: https://meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + portalTiles: + adminAnnouncement: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNzE2LjkyLTQ2MHYtNDBoMTI5LjIzdjQwSDcxNi45MlptNDMuMzkgMjU4LjQ2LTEwMy4zOS03Ny41NCAyNC45My0zMS42OSAxMDMuMzggNzcuNTQtMjQuOTIgMzEuNjlabS04MS41NC00NTAuNzdMNjUzLjg1LTY4NGwxMDMuMzgtNzcuNTQgMjQuOTIgMzEuNjktMTAzLjM4IDc3LjU0Wk0yMjAtMjQxLjU0di0xNTIuMzFoLTQxLjU0cS0yNi44NCAwLTQ1LjczLTE4Ljg4LTE4Ljg4LTE4Ljg5LTE4Ljg4LTQ1Ljczdi00My4wOHEwLTI2Ljg0IDE4Ljg4LTQ1LjczIDE4Ljg5LTE4Ljg4IDQ1LjczLTE4Ljg4aDE0OS4yM0w0ODYuMTUtNjYwdjM2MGwtMTU4LjQ2LTkzLjg1SDI2MHYxNTIuMzFoLTQwWm0yMjYuMTUtMTI5LjY5di0yMTcuNTRsLTEwNy4yMyA2Mi42MkgxNzguNDZxLTkuMjMgMC0xNi45MiA3LjY5LTcuNjkgNy42OS03LjY5IDE2LjkydjQzLjA4cTAgOS4yMyA3LjY5IDE2LjkyIDcuNjkgNy42OSAxNi45MiA3LjY5aDE2MC40NmwxMDcuMjMgNjIuNjJabTExMC43NyA2Ljc3di0yMzEuMDhxMjAuMDggMTguNjIgMzIuMzUgNDguODkgMTIuMjcgMzAuMjcgMTIuMjcgNjYuNjUgMCAzNi4zOC0xMi4yNyA2Ni42NS0xMi4yNyAzMC4yNy0zMi4zNSA0OC44OVpNMzAwLTQ4MFoiLz48L3N2Zz4K + adminContext: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== + adminFunctionalmailbox: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNjAwLTI0MHY4OS4yM3EwIDEyLjM5LTkuMTkgMjEuNTgtOS4xOSA5LjE5LTIxLjU4IDkuMTlIMTUwLjc3cS0xMi4zOSAwLTIxLjU4LTkuMTktOS4xOS05LjE5LTkuMTktMjEuNTh2LTI1OC40NnEwLTEyLjM5IDkuMTktMjEuNTggOS4xOS05LjE5IDIxLjU4LTkuMTlIMjgwdi0yMDBxMC04My4wOCA1OC40Ni0xNDEuNTRRMzk2LjkyLTg0MCA0ODAtODQwaDE2MHE4My4wOCAwIDE0MS41NCA1OC40NlE4NDAtNzIzLjA4IDg0MC02NDB2NTIwaC00MHYtMTIwSDYwMFptMC00MGgyMDB2LTM2MHEwLTY2LTQ3LTExM3QtMTEzLTQ3SDQ4MHEtNjYgMC0xMTMgNDd0LTQ3IDExM3YyMDBoMjQ5LjIzcTEyLjM5IDAgMjEuNTggOS4xOSA5LjE5IDkuMTkgOS4xOSAyMS41OFYtMjgwWk00MjAtNTgwdi00MGgyODB2NDBINDIwWm0tNjAgMjk0IDIwMC0xMTRIMTYwbDIwMCAxMTRabTAgNDAuNzctMjAwLTExNFYtMTYwaDQwMHYtMTk5LjIzbC0yMDAgMTE0Wk0xNjAtNDAwdjI0MC0yNDBaIi8+PC9zdmc+ + adminGroup: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMTAzLjg1LTIxNS4zOHYtNjUuODVxMC0yNy44NSAxNC40Mi00Ny44OSAxNC40Mi0yMC4wMyAzOC43Ni0zMi4wMiA1Mi4wNS0yNC43OCAxMDMuMzUtMzkuNTEgNTEuMzEtMTQuNzMgMTIzLjQ3LTE0LjczIDcyLjE1IDAgMTIzLjQ2IDE0LjczIDUxLjMxIDE0LjczIDEwMy4zNSAzOS41MSAyNC4zNCAxMS45OSAzOC43NiAzMi4wMiAxNC40MyAyMC4wNCAxNC40MyA0Ny44OXY2NS44NWgtNTYwWm02NDAgMHYtNjcuN3EwLTM0Ljc3LTE0LjA4LTY1LjY0LTE0LjA3LTMwLjg3LTM5LjkyLTUyLjk3IDI5LjQ2IDYgNTYuNzcgMTYuNjUgMjcuMyAxMC42NiA1NCAyMy45NiAyNiAxMy4wOCA0MC43NyAzMy40NyAxNC43NiAyMC40IDE0Ljc2IDQ0LjUzdjY3LjdoLTExMi4zWm0tMzYwLTI4OS4yNHEtNDkuNSAwLTg0Ljc1LTM1LjI1dC0zNS4yNS04NC43NXEwLTQ5LjUgMzUuMjUtODQuNzV0ODQuNzUtMzUuMjVxNDkuNSAwIDg0Ljc1IDM1LjI1dDM1LjI1IDg0Ljc1cTAgNDkuNS0zNS4yNSA4NC43NXQtODQuNzUgMzUuMjVabTI5MC43Ny0xMjBxMCA0OS41LTM1LjI1IDg0Ljc1dC04NC43NSAzNS4yNXEtMi41NCAwLTYuNDctLjU3LTMuOTItLjU4LTYuNDYtMS4yNyAyMC4zMy0yNC45IDMxLjI0LTU1LjI0IDEwLjkyLTMwLjM0IDEwLjkyLTYzLjAxdC0xMS40My02Mi40NHEtMTEuNDItMjkuNzctMzAuNzMtNTUuNjIgMy4yMy0xLjE1IDYuNDYtMS41IDMuMjMtLjM1IDYuNDctLjM1IDQ5LjUgMCA4NC43NSAzNS4yNXQzNS4yNSA4NC43NVpNMTQzLjg1LTI1NS4zOGg0ODB2LTI1Ljg1cTAtMTQuMDgtNy4wNC0yNC42Mi03LjA0LTEwLjUzLTI1LjI3LTIwLjE1LTQ0Ljc3LTIzLjkyLTk0LjM5LTM2LjY1LTQ5LjYxLTEyLjczLTExMy4zLTEyLjczLTYzLjcgMC0xMTMuMzEgMTIuNzMtNDkuNjIgMTIuNzMtOTQuMzkgMzYuNjUtMTguMjMgOS42Mi0yNS4yNyAyMC4xNS03LjAzIDEwLjU0LTcuMDMgMjQuNjJ2MjUuODVabTI0MC0yODkuMjRxMzMgMCA1Ni41LTIzLjV0MjMuNS01Ni41cTAtMzMtMjMuNS01Ni41dC01Ni41LTIzLjVxLTMzIDAtNTYuNSAyMy41dC0yMy41IDU2LjVxMCAzMyAyMy41IDU2LjV0NTYuNSAyMy41Wm0wIDI4OS4yNFptMC0zNjkuMjRaIi8+PC9zdmc+ + adminResource: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMTgwLTE2MHYtNDBoODB2LTYwMGgzMjB2NDBoMTIwdjU2MGg4MHY0MEg2NjB2LTU2MGgtODB2NTYwSDE4MFptMTIwLTYwMHY1NjAtNTYwWm0xNjAgMzEwLjc3cTEyLjM4IDAgMjEuNTgtOS4xOSA5LjE5LTkuMiA5LjE5LTIxLjU4IDAtMTIuMzgtOS4xOS0yMS41OC05LjItOS4xOS0yMS41OC05LjE5LTEyLjM4IDAtMjEuNTggOS4xOS05LjE5IDkuMi05LjE5IDIxLjU4IDAgMTIuMzggOS4xOSAyMS41OCA5LjIgOS4xOSAyMS41OCA5LjE5Wk0zMDAtMjAwaDI0MHYtNTYwSDMwMHY1NjBaIi8+PC9zdmc+ + adminUser: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNDgwLTUwNC42MnEtNDkuNSAwLTg0Ljc1LTM1LjI1VDM2MC02MjQuNjJxMC00OS41IDM1LjI1LTg0Ljc1VDQ4MC03NDQuNjJxNDkuNSAwIDg0Ljc1IDM1LjI1VDYwMC02MjQuNjJxMCA0OS41LTM1LjI1IDg0Ljc1VDQ4MC01MDQuNjJaTTIwMC0yMTUuMzh2LTY1Ljg1cTAtMjQuNzcgMTQuNDItNDYuMzUgMTQuNDMtMjEuNTcgMzguODEtMzMuNSA1Ni42Mi0yNy4xNSAxMTMuMzEtNDAuNzMgNTYuNjktMTMuNTcgMTEzLjQ2LTEzLjU3IDU2Ljc3IDAgMTEzLjQ2IDEzLjU3IDU2LjY5IDEzLjU4IDExMy4zMSA0MC43MyAyNC4zOCAxMS45MyAzOC44MSAzMy41UTc2MC0zMDYgNzYwLTI4MS4yM3Y2NS44NUgyMDBabTQwLTQwaDQ4MHYtMjUuODVxMC0xMy4zMS04LjU4LTI1LTguNTctMTEuNjktMjMuNzMtMTkuNzctNDkuMzgtMjMuOTItMTAxLjgzLTM2LjY1LTUyLjQ1LTEyLjczLTEwNS44Ni0xMi43M3QtMTA1Ljg2IDEyLjczUTMyMS42OS0zNDkuOTIgMjcyLjMxLTMyNnEtMTUuMTYgOC4wOC0yMy43MyAxOS43Ny04LjU4IDExLjY5LTguNTggMjV2MjUuODVabTI0MC0yODkuMjRxMzMgMCA1Ni41LTIzLjV0MjMuNS01Ni41cTAtMzMtMjMuNS01Ni41dC01Ni41LTIzLjVxLTMzIDAtNTYuNSAyMy41dC0yMy41IDU2LjVxMCAzMyAyMy41IDU2LjV0NTYuNSAyMy41Wm0wLTgwWm0wIDM2OS4yNFoiLz48L3N2Zz4= + anonymousLogin: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjguNjc3OCA4MC4xMTQ1VjgxLjY1NjVDNjguNjc3OCA4OC4xNjQ3IDYzLjQ0OTggOTMuNDU2NyA1Ny4wMjAzIDkzLjQ1NjdIMjkuNjU3NEMyMy4yMjc5IDkzLjQ1NjcgMTcuOTk5OSA4OC4xNjQ3IDE3Ljk5OTkgODEuNjU2NVY1My45NTg2QzE3Ljk5OTkgNDcuNDUwMyAyMy4yMjc5IDQyLjE1ODMgMjkuNjU3NCA0Mi4xNTgzSDMxLjE4MDdWODAuMTIxOEg2OC42ODQ5TDY4LjY3NzggODAuMTE0NVoiIGZpbGw9IiM4RTc1RkEiLz4KPHBhdGggZD0iTTY5LjE4NTYgNzAuODc3SDQwLjI5OTNWMzguNTUzQzQwLjI5OTMgMjcuNTIwMiA0OS4xNjc2IDE4LjU0MzMgNjAuMDY3IDE4LjU0MzNINjkuMTkyN0M4MS43NjU2IDE4LjU0MzMgOTEuOTk5OSAyOC45MDI5IDkxLjk5OTkgNDEuNjI5OFY0Ny43ODMzQzkxLjk5OTkgNjAuNTEwMiA4MS43NjU2IDcwLjg2OTcgNjkuMTkyNyA3MC44Njk3TDY5LjE4NTYgNzAuODc3Wk01My40NzMgNTcuNTM0OEg2OS4xODU2Qzc0LjQ5MjIgNTcuNTM0OCA3OC44MTE5IDUzLjE2MjIgNzguODExOSA0Ny43OTA1VjQxLjYzN0M3OC44MTE5IDM2LjI2NTQgNzQuNDkyMiAzMS44OTI4IDY5LjE4NTYgMzEuODkyOEg2MC4wNTk4QzU2LjQyNjcgMzEuODkyOCA1My40NzMgMzQuODgyNyA1My40NzMgMzguNTYwM1Y1Ny41NDJWNTcuNTM0OFoiIGZpbGw9IiM1NzFFRkEiLz4KPC9zdmc+Cg== + empty: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== + fileshareActivity: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== + fileshareDirectdocOdp: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNNDgwLTQ4MFpNMjI0LjYyLTE2MHEtMjcuNjIgMC00Ni4xMi0xOC41UTE2MC0xOTcgMTYwLTIyNC42MnYtNTEwLjc2cTAtMjcuNjIgMTguNS00Ni4xMlExOTctODAwIDIyNC42Mi04MDBoMjgwdjQwaC0yODBxLTEwLjc3IDAtMTcuNyA2LjkyLTYuOTIgNi45My02LjkyIDE3Ljd2NTEwLjc2cTAgMTAuNzcgNi45MiAxNy43IDYuOTMgNi45MiAxNy43IDYuOTJoNTEwLjc2cTEwLjc3IDAgMTcuNy02LjkyIDYuOTItNi45MyA2LjkyLTE3Ljd2LTI4MGg0MHYyODBxMCAyNy42Mi0xOC41IDQ2LjEyUTc2My0xNjAgNzM1LjM4LTE2MEgyMjQuNjJabTQ2LjE1LTE0NC42Mmg0MTguNDZMNTYwLTQ3Ni45MiA0NDAtMzI1LjM4bC04MC05Ni4xNi04OS4yMyAxMTYuOTJaTTY4MC02MDB2LTgwaC04MHYtNDBoODB2LTgwaDQwdjgwaDgwdjQwaC04MHY4MGgtNDBaIi8+PC9zdmc+ + fileshareDirectdocOds: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMjA0LjYyLTE2MHEtMjcuNjIgMC00Ni4xMi0xOC41UTE0MC0xOTcgMTQwLTIyNC42MnYtNTEwLjc2cTAtMjcuNjIgMTguNS00Ni4xMlExNzctODAwIDIwNC42Mi04MDBoMzcyLjN2NDBoLTM3Mi4zcS0xMC43NyAwLTE3LjcgNi45Mi02LjkyIDYuOTMtNi45MiAxNy43djUxMC43NnEwIDEwLjc3IDYuOTIgMTcuNyA2LjkzIDYuOTIgMTcuNyA2LjkyaDUxMC43NnExMC43NyAwIDE3LjctNi45MiA2LjkyLTYuOTMgNi45Mi0xNy43di0zNzIuM2g0MHYzNzIuM3EwIDI3LjYyLTE4LjUgNDYuMTJRNzQzLTE2MCA3MTUuMzgtMTYwSDIwNC42MlptODQuNjEtMTQwaDQwdi0yNDBoLTQwdjI0MFpNNDQwLTMwMGg0MHYtMzYwaC00MHYzNjBabTE1MC43NyAwaDQwdi0xMjBoLTQwdjEyMFpNNzAwLTY0MHYtODBoLTgwdi00MGg4MHYtODBoNDB2ODBoODB2NDBoLTgwdjgwaC00MFpNNDYwLTQ4MFoiLz48L3N2Zz4= + fileshareDirectdocOdt: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWUyN2RkIj48cGF0aCBkPSJNMjA0LjYyLTE2MHEtMjcuNjIgMC00Ni4xMi0xOC41UTE0MC0xOTcgMTQwLTIyNC42MnYtNTEwLjc2cTAtMjcuNjIgMTguNS00Ni4xMlExNzctODAwIDIwNC42Mi04MDBoMzcyLjN2NDBoLTM3Mi4zcS05LjI0IDAtMTYuOTMgNy42OS03LjY5IDcuNjktNy42OSAxNi45M3Y1MTAuNzZxMCA5LjI0IDcuNjkgMTYuOTMgNy42OSA3LjY5IDE2LjkzIDcuNjloNTEwLjc2cTkuMjQgMCAxNi45My03LjY5IDcuNjktNy42OSA3LjY5LTE2Ljkzdi0zNzIuM2g0MHYzNzIuM3EwIDI3LjYyLTE4LjUgNDYuMTJRNzQzLTE2MCA3MTUuMzgtMTYwSDIwNC42MlpNMzIwLTMwMHYtNDBoMjgwdjQwSDMyMFptMC0xMjB2LTQwaDI4MHY0MEgzMjBabTAtMTIwdi00MGgyODB2NDBIMzIwWm0zODAtMTAwdi04MGgtODB2LTQwaDgwdi04MGg0MHY4MGg4MHY0MGgtODB2ODBoLTQwWiIvPjwvc3ZnPg== + fileshareFiles: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMDcxOCA0My44MjE0SDc4LjYxNDZDODIuOTEzNCA0My44MjE0IDg2LjQwOTYgNDcuMzE3NiA4Ni40MDk2IDUxLjYxNjRWNzQuOTkwM0M4Ni40MDk2IDc5LjI4OTEgODIuOTEzNCA4Mi43ODUyIDc4LjYxNDYgODIuNzg1MkgzMS44NjY3QzI3LjU2OCA4Mi43ODUyIDI0LjA3MTggNzkuMjg5MSAyNC4wNzE4IDc0Ljk5MDNWNDMuODIxNFoiIGZpbGw9IiM1NzFFRkEiLz4KPHBhdGggZD0iTTUwLjU1NzEgMzYuMDI2NkgyNC4wNzE4VjMxLjM1NEMyNC4wNzE4IDI3LjA0NDIgMjcuNTU3IDIzLjU1OSAzMS44NjY3IDIzLjU1OUg0NC4zMzQzTDUwLjU2ODEgMzYuMDI2Nkg1MC41NTcxWiIgZmlsbD0iIzM0MTI5MSIvPgo8L3N2Zz4K + groupwareCalendar: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzYuNzk3OSA2MC4yMjAzSDE0Ljk4NDFWODMuNTk1M0gzNi43OTc5VjYwLjIyMDNaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik02Ni40MDY5IDYwLjIyMDNINDQuNTkzMVY4My41OTUzSDY2LjQwNjlWNjAuMjIwM1oiIGZpbGw9IiM1NzFFRkEiLz4KPHBhdGggZD0iTTM2Ljc5NzkgMjkuMDYwOUgxNC45ODQxVjUyLjQzNTlIMzYuNzk3OVYyOS4wNjA5WiIgZmlsbD0iIzM0MTI5MSIvPgo8cGF0aCBkPSJNNjYuNDA2OSAyOS4wNjA5SDQ0LjU5MzFWNTIuNDM1OUg2Ni40MDY5VjI5LjA2MDlaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05Ni4wMTU5IDI5LjA2MDlINzQuMjAyMVY1Mi40MzU5SDk2LjAxNTlWMjkuMDYwOVoiIGZpbGw9IiM1NzFFRkEiLz4KPC9zdmc+Cg== + groupwareContacts: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMzMuNjg2MyA1My45ODYxQzQwLjE0MTEgNTMuOTg2MSA0NS4zNzM4IDQ4Ljc1MzQgNDUuMzczOCA0Mi4yOTg2QzQ1LjM3MzggMzUuODQzOCA0MC4xNDExIDMwLjYxMTEgMzMuNjg2MyAzMC42MTExQzI3LjIzMTUgMzAuNjExMSAyMS45OTg4IDM1Ljg0MzggMjEuOTk4OCA0Mi4yOTg2QzIxLjk5ODggNDguNzUzNCAyNy4yMzE1IDUzLjk4NjEgMzMuNjg2MyA1My45ODYxWiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNzcuMzEzNyA1My45ODYxQzgzLjc2ODUgNTMuOTg2MSA4OS4wMDEyIDQ4Ljc1MzQgODkuMDAxMiA0Mi4yOTg2Qzg5LjAwMTIgMzUuODQzOCA4My43Njg1IDMwLjYxMTEgNzcuMzEzNyAzMC42MTExQzcwLjg1ODkgMzAuNjExMSA2NS42MjYyIDM1Ljg0MzggNjUuNjI2MiA0Mi4yOTg2QzY1LjYyNjIgNDguNzUzNCA3MC44NTg5IDUzLjk4NjEgNzcuMzEzNyA1My45ODYxWiIgZmlsbD0iIzM0MTI5MSIvPgo8cGF0aCBkPSJNMTQuOTg0MSA4MC40ODM2QzE0Ljk4NDEgNzAuMTU5NCAyMy4zNTEyIDYxLjc4MTQgMzMuNjg2MyA2MS43ODE0QzQ0LjAyMTUgNjEuNzgxNCA1Mi4zODg1IDcwLjE0ODQgNTIuMzg4NSA4MC40ODM2SDE0Ljk4NDFaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik01OC42MTE2IDgwLjQ4MzZDNTguNjExNiA3MC4xNTk0IDY2Ljk3ODYgNjEuNzgxNCA3Ny4zMTM4IDYxLjc4MTRDODcuNjQ4OSA2MS43ODE0IDk2LjAxNiA3MC4xNDg0IDk2LjAxNiA4MC40ODM2SDU4LjYxMTZaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo= + groupwareMail: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTUuNjcxIDU1LjVMODQuMjEzNiAzNC4wOTMxQzgyLjgzOTIgMzIuODcyNiA4MS4wMzYgMzIuMTI1IDc5LjA0NiAzMi4xMjVIMzIuMjk2QzMwLjMxNjkgMzIuMTI1IDI4LjUwMjggMzIuODcyNiAyNy4xMjg0IDM0LjA5MzFMNTUuNjcxIDU1LjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik02Mi4xNjg5IDYwLjM3MDdMNTUuNjcwOSA2NS4yNDE0TDQ5LjE3MyA2MC4zNzA3TDI0LjUwMDYgNDEuODY2NFY3MS4wNzk2QzI0LjUwMDYgNzUuMzc4NiAyNy45ODYgNzguODc0OSAzMi4yOTU5IDc4Ljg3NDlINzkuMDQ1OUM4My4zNDQ5IDc4Ljg3NDkgODYuODQxMyA3NS4zODk2IDg2Ljg0MTMgNzEuMDc5NlY0MS44NjY0TDYyLjE2ODkgNjAuMzcwN1oiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg== + groupwareTasks: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjYuNjcxNiA1Mi40MzZDMzMuMTI2NSA1Mi40MzYgMzguMzU5MSA0Ny4yMDMzIDM4LjM1OTEgNDAuNzQ4NUMzOC4zNTkxIDM0LjI5MzYgMzMuMTI2NSAyOS4wNjEgMjYuNjcxNiAyOS4wNjFDMjAuMjE2OCAyOS4wNjEgMTQuOTg0MSAzNC4yOTM2IDE0Ljk4NDEgNDAuNzQ4NUMxNC45ODQxIDQ3LjIwMzMgMjAuMjE2OCA1Mi40MzYgMjYuNjcxNiA1Mi40MzZaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05Mi45MDQzIDM2Ljg0NTVINDYuMTU0M1Y0NC42NDA4SDkyLjkwNDNWMzYuODQ1NVoiIGZpbGw9IiMzNDEyOTEiLz4KPHBhdGggZD0iTTI2LjY3MTYgODIuMDM0MUMzMy4xMjY1IDgyLjAzNDEgMzguMzU5MSA3Ni44MDE0IDM4LjM1OTEgNzAuMzQ2NkMzOC4zNTkxIDYzLjg5MTcgMzMuMTI2NSA1OC42NTkxIDI2LjY3MTYgNTguNjU5MUMyMC4yMTY4IDU4LjY1OTEgMTQuOTg0MSA2My44OTE3IDE0Ljk4NDEgNzAuMzQ2NkMxNC45ODQxIDc2LjgwMTQgMjAuMjE2OCA4Mi4wMzQxIDI2LjY3MTYgODIuMDM0MVoiIGZpbGw9IiM1NzFFRkEiLz4KPHBhdGggZD0iTTkyLjkwNDMgNjYuNDU0M0g0Ni4xNTQzVjc0LjI0OTdIOTIuOTA0M1Y2Ni40NTQzWiIgZmlsbD0iIzM0MTI5MSIvPgo8L3N2Zz4K + managementKnowledge: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNjcuMTg3NSA3NS4wMzAyQzY3LjE4NzUgODEuNDg0MiA2MS45NTQgODYuNzE3NyA1NS41IDg2LjcxNzdDNDkuMDQ2IDg2LjcxNzcgNDMuODEyNSA4MS40ODQyIDQzLjgxMjUgNzUuMDMwMlY3MS4xMzgxSDY3LjE4NzVWNzUuMDMwMloiIGZpbGw9IiMzNDEyOTEiLz4KPHBhdGggZD0iTTU1LjUgMjQuMzc3MkM0Mi41OTIxIDI0LjM3NzIgMzIuMTI1IDM0Ljg0NDMgMzIuMTI1IDQ3Ljc1MjJDMzIuMTI1IDUzLjc0NDQgMzQuNDAwOSA1OS4xOTc4IDM4LjExNzIgNjMuMzMxOUg3Mi44ODI4Qzc2LjU5OTEgNTkuMTk3OCA3OC44NzUgNTMuNzQ0NCA3OC44NzUgNDcuNzUyMkM3OC44NzUgMzQuODQ0MyA2OC40MDc5IDI0LjM3NzIgNTUuNSAyNC4zNzcyWiIgZmlsbD0iIzU3MUVGQSIvPgo8L3N2Zz4K + managementProject: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMzI5NiA4Ni43MDY5TDI0LjMyOTYgMjQuMzc3MkgxNi41MzQzTDE2LjUzNDMgODYuNzA2OUgyNC4zMjk2WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNODYuODM1MyA1OS40Mzk3SDU1LjY3NTlDNTEuMzcwNyA1OS40Mzk3IDQ3Ljg4MDYgNjIuOTI5OCA0Ny44ODA2IDY3LjIzNVY3NS4wMTk0QzQ3Ljg4MDYgNzkuMzI0NiA1MS4zNzA3IDgyLjgxNDcgNTUuNjc1OSA4Mi44MTQ3SDg2LjgzNTNDOTEuMTQwNSA4Mi44MTQ3IDk0LjYzMDYgNzkuMzI0NiA5NC42MzA2IDc1LjAxOTRWNjcuMjM1Qzk0LjYzMDYgNjIuOTI5OCA5MS4xNDA1IDU5LjQzOTcgODYuODM1MyA1OS40Mzk3WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNjMuNDYwMyAyOC4yODAzSDM5LjkyMDNDMzUuNjE1MSAyOC4yODAzIDMyLjEyNSAzMS43NzA0IDMyLjEyNSAzNi4wNzU2VjQzLjg1OTlDMzIuMTI1IDQ4LjE2NTIgMzUuNjE1MSA1MS42NTUzIDM5LjkyMDMgNTEuNjU1M0g2My40NjAzQzY3Ljc2NTUgNTEuNjU1MyA3MS4yNTU2IDQ4LjE2NTIgNzEuMjU1NiA0My44NTk5VjM2LjA3NTZDNzEuMjU1NiAzMS43NzA0IDY3Ljc2NTUgMjguMjgwMyA2My40NjAzIDI4LjI4MDNaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo= + notes: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNODMuNTQ3OSA3OC45MjI1SDI3LjU5NTJWODYuNzE3OEg4My41NDc5Vjc4LjkyMjVaIiBmaWxsPSIjMzQxMjkxIi8+CjxwYXRoIGQ9Ik02Ni41NDk3IDI2LjUyMTFMNzIuMDU4MiAzMi4wMjk1Qzc1LjEwMzcgMzUuMDc1MSA3NS4xMDM3IDQwLjAwMDggNzIuMDU4MiA0My4wNDYzTDY2LjIwODkgNDguODk1Nkw0My45Nzc0IDcxLjEyNzFIMjcuNDUyMVY1NC42MDE5TDQ5LjY4MzcgMzIuMzcwNEw1NS41MzI5IDI2LjUyMTFDNTguNTc4NSAyMy40NzU1IDYzLjUwNDIgMjMuNDc1NSA2Ni41NDk3IDI2LjUyMTFaIiBmaWxsPSIjNTcxRUZBIi8+Cjwvc3ZnPgo= + realtimeCollaboration: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTguNjExNSA0Ny43NTIxQzYyLjkxMDUgNDcuNzUyMSA2Ni40MDY5IDQ0LjI2NjcgNjYuNDA2OSAzOS45NTY4VjMyLjE2MTRDNjYuNDA2OSAyNy44NjI0IDYyLjkyMTUgMjQuMzY2MSA1OC42MTE1IDI0LjM2NjFIMjcuNDQxMkMyMy4xNDIyIDI0LjM2NjEgMTkuNjQ1OSAyNy44NTE0IDE5LjY0NTkgMzIuMTYxNFY2My4zMzE3TDM1LjIyNTUgNDcuNzUyMUg1OC42MDA1SDU4LjYxMTVaIiBmaWxsPSIjMzQxMjkxIi8+CjxwYXRoIGQ9Ik04My41NDc4IDU1LjU0NzZINTIuMzc3NUM0OC4wNzg1IDU1LjU0NzYgNDQuNTgyMiA1OS4wMzMgNDQuNTgyMiA2My4zNDI5VjcxLjEzODNDNDQuNTgyMiA3NS40MzcyIDQ4LjA2NzUgNzguOTMzNiA1Mi4zNzc1IDc4LjkzMzZINzUuNzUyNUw5MS4zMzIxIDk0LjUxMzNWNjMuMzQyOUM5MS4zMzIxIDU5LjA0NCA4Ny44NDY4IDU1LjU0NzYgODMuNTM2OCA1NS41NDc2SDgzLjU0NzhaIiBmaWxsPSIjNTcxRUZBIi8+Cjwvc3ZnPgo= + realtimeVideoconference: PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNNTguNjExNSAzMi4xNzI1SDI3LjQ1MjJDMjMuMTQ2OSAzMi4xNzI1IDE5LjY1NjkgMzUuNjYyNiAxOS42NTY5IDM5Ljk2NzlWNzEuMTI3MkMxOS42NTY5IDc1LjQzMjUgMjMuMTQ2OSA3OC45MjI1IDI3LjQ1MjIgNzguOTIyNUg1OC42MTE1QzYyLjkxNjggNzguOTIyNSA2Ni40MDY5IDc1LjQzMjUgNjYuNDA2OSA3MS4xMjcyVjM5Ljk2NzlDNjYuNDA2OSAzNS42NjI2IDYyLjkxNjggMzIuMTcyNSA1OC42MTE1IDMyLjE3MjVaIiBmaWxsPSIjNTcxRUZBIi8+CjxwYXRoIGQ9Ik05MS4zNDMxIDcyLjY4ODJDODEuODc2NSA3Mi42ODgyIDc0LjIwMjEgNjUuMDEzOSA3NC4yMDIxIDU1LjU0NzNDNzQuMjAyMSA0Ni4wODA4IDgxLjg3NjUgMzguNDA2NCA5MS4zNDMxIDM4LjQwNjRWNzIuNjg4MloiIGZpbGw9IiMzNDEyOTEiLz4KPC9zdmc+Cg== + selfserviceChangepassword: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== + selfserviceEditprofile: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== + selfserviceProtectaccount: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPg== + portalTitleDE: Portal - openDesk + portalTitleEN: Portal - openDesk + portaltileGroupFileshare: + - cn=managed-by-attribute-Fileshare,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupGroupware: + - cn=managed-by-attribute-Groupware,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupLiveCollaboration: + - cn=managed-by-attribute-Livecollaboration,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupManagementKnowledge: + - cn=managed-by-attribute-Knowledgemanagement,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupManagementLearn: + - cn=managed-by-attribute-Learnmanagement,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupManagementProject: + - cn=managed-by-attribute-Projectmanagement,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupNotes: + - cn=managed-by-attribute-Notes,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupUserAdmin: + - cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal + - cn=Support,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupUserAll: + - cn=Domain Admins,cn=groups,dc=swp-ldap,dc=internal + - cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupUserStandard: + - cn=Domain Users,cn=groups,dc=swp-ldap,dc=internal + portaltileGroupVideoconference: + - cn=managed-by-attribute-Videoconference,cn=groups,dc=swp-ldap,dc=internal + readonlyUserPassword: '9fbafb70b3be33694fe8409400f3843ef6b9dd06' + showUmc: 'true' + subDomainsKeycloak: 'id' + svcPortalServerUserPassword: fe6ca21673a27ff0c1741c00a1873cd3017c2cf8 + systemInformation: + deployDate: 'Deployed: 2025-05-10T21:07:43+0200' + releaseVersion: 'Release: v1.3.2' + udmCustomFinalizer: [] + udmCustomInitializer: [] +--- +# Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-stack-data-ums-svc-portal-server" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.89.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: + password: "fe6ca21673a27ff0c1741c00a1873cd3017c2cf8" +--- +# Source: nubus/charts/nubusStackDataUms/templates/secret.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-stack-data-ums" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.89.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: + udm_secret: "" +--- +# Source: nubus/charts/nubusUdmListener/templates/secret.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: ums-provisioning-udm-listener + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning-udm-listener + helm.sh/chart: nubusUdmListener-0.49.3 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "1.16.0" +data: + ldap_secret: "" + ca_cert: "" + +... +--- +# Source: nubus/charts/nubusUmcServer/templates/secret.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: ums-umc-server + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.38.0 + 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: + machine_secret: + ca_cert: "" + cert_pem: + private_key: + db_password: "" + memcached_password: "" + smtp_password: "" + +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-opendesk-portal-server-central-navigation" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "1e2eb0fc3815d766ef1be11fb4edba676856ba52" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-opendesk-guardian-client-secret" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + managementApiClientSecret: "cdfd791d2b9460c15334d4b8e46df698b3e3bd9f" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-opendesk-keycloak-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + admin_password: "81d3190e7a7467137ccb11c6fdd2c296986275db" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-keycloak-postgresql-opendesk-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + keycloakDatabasePassword: "2a27e8e8f1148830c04a97d765173021337b738e" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-guardian-postgresql-opendesk-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + guardianDatabasePassword: "37b03322fc23defff213fe18e95448bd27f92652" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-notifications-api-postgresql-opendesk-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "d1f34090031fd52de9518c2665090822a0d1e17b" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-umc-server-postgresql-opendesk-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + umcServerDatabasePassword: "09af664fe11f675880a6dc980f0276f70d001104" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-umc-server-memcached-opendesk-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + umcServerMemcachedPassword: "" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-keycloak-extensions-postgresql-opendesk-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + umcKeycloakExtensionsDatabasePassword: "a7125d58b42fc935fd603c362ddecbfafd92bca0" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-keycloak-extensions-smtp-opendesk-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + umcKeycloakExtensionsSmtpPassword: "1884bda7fb31c726adcd094399ab63319e9ca56f" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-keycloak-bootstrap-ldap-opendesk-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "6f85092e969e10c851eef49367019d1e02a4a8a0" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-portal-server-minio-opendesk-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + access-key-id: "ums_user" + secret-key-id: "915f15805278ef774a1cf3abfa6b8623c1fa4544" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-umc-server-smtp-credentials-custom" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "1884bda7fb31c726adcd094399ab63319e9ca56f" +... +--- +# Source: nubus/templates/extraSecrets.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "ums-provisioning-ox-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ox-connector.json: "{ \"name\": \"ox-connector\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"oxmail/oxcontext\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/accessprofile\"}, {\"realm\": \"udm\", \"topic\": \"users/user\"}, {\"realm\": \"udm\", \"topic\": \"oxresources/oxresources\"}, {\"realm\": \"udm\", \"topic\": \"groups/group\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/functional_account\"}], \"request_prefill\": true, \"password\": \"5b25d2be2690ee3acf32a4f93006e8010ff4bbd2\" }" +... +--- +# Source: nubus/templates/nubusMinioProvisioningSecrets.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH--- +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "nubus-minio-provisioning" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + portal-consumer-user: "username=ums_user\npassword=915f15805278ef774a1cf3abfa6b8623c1fa4544\ndisabled=false\npolicies=nubus-readwrite\nsetPolicies=false" + portal-server-user: "username=ums_user\npassword=915f15805278ef774a1cf3abfa6b8623c1fa4544\ndisabled=false\npolicies=nubus-read\nsetPolicies=false" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-nubus-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + administrator_password: "937393b22852fc828b0d68283dddcb9f8fb97411" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-postgresql-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + admin_password: "5766e50d31dcf035c440e207b6a70f8cdbb73f6c" + replication_password: "d31873679d935c4d8a2780f4ef358098dbf72409" + user_password: "44f4bfadb6c82d4b7632d7b155a931fa4fd326b4" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-ldap-server-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + adminPassword: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-keycloak-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + admin_password: "706676bc3cd8c020813f4a97beac99a44b45484f" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-minio-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + root-password: "62c6470f313bec082fc99d7a35fc3c5ae47b3f94" + root-user: "admin" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-portal-consumer-minio-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + accessKey: "ums_user" + secretKey: "915f15805278ef774a1cf3abfa6b8623c1fa4544" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-portal-server-minio-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + accessKey: "ums_user" + secretKey: "915f15805278ef774a1cf3abfa6b8623c1fa4544" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-portal-server-central-navigation-shared-secret" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "91bad5c377c1eb2610b68790571f5afee8570bd2" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-umc-server-postgresql-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "33ece5da171ae2827d8b664332565a870a425775" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-notifications-api-postgresql-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "c071f4f6d38c633b570e8e0ae6411b907794ee29" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-keycloak-postgresql-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "d9854482f04c2af2e4c9b432423160b7f1f4093f" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-keycloak-extensions-postgresql-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "3a8d434286750942928391011fe07f41574aa481" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-keycloak-extensions-keycloak-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "706676bc3cd8c020813f4a97beac99a44b45484f" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-keycloak-extensions-smtp-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "3a8d434286750942928391011fe07f41574aa481" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-keycloak-bootstrap-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "9fbafb70b3be33694fe8409400f3843ef6b9dd06" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-keycloak-bootstrap-keycloak-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "706676bc3cd8c020813f4a97beac99a44b45484f" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-udm-listener-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-stack-data-swp-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-selfservice-listener-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" + machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" + password: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-udm-rest-api-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-self-service-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "937393b22852fc828b0d68283dddcb9f8fb97411" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-umc-server-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" + machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-stack-data-udm-rest-api-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-umc-server-udm-rest-api-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-portal-consumer-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" + machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-udm-listener-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" + machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-portal-consumer-udm-rest-api-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-readonly-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "7edb027e32df3da6b956102c4c5367bfe1a9ab86" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-events-and-consumer-api-nats-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "95d501c0387cf0eec31aa80bb17f95f830a6251d" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-dispatcher-nats-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "b4b9a0246a4ad460f600be8b77af5861cde06201" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-prefill-nats-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-udm-transformer-nats-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + NATS_PASSWORD: "89a6741df85e8725261ad4fcc3c49ac7af505252" + NATS_USER: udmtransformer +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-udm-transformer-api-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93" + EVENTS_USERNAME_UDM: udm +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-udm-transformer-ldap-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + LDAP_BIND_PW: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-selfservice-listener-nats-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "c499b4d4ffc11d4d8f9f12656e4336bd915b5cde" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-udm-rest-api-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ldap.secret: "b63d4de0d8766a932cad776066f76211906f8967" + machine.secret: "b63d4de0d8766a932cad776066f76211906f8967" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-umc-server-memcached-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + memcached-password: "33ece5da171ae2827d8b664332565a870a425775" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-umc-server-smtp-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "33ece5da171ae2827d8b664332565a870a425775" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-umc-server-ldap-tls" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ca.crt: + tls.crt: + tls.key: +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-portal-consumer-ldap-tls" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ca.crt: + tls.crt: + tls.key: +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-udm-listener-ldap-tls" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ca.crt: + tls.crt: + tls.key: +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-selfservice-listener-ldap-tls" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ca.crt: + tls.crt: + tls.key: +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-nats-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + admin_password: "f076a4d9fceeea85cfb81f8769f3adf01e07bdc5" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-api-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ADMIN_NATS_PASSWORD: "f076a4d9fceeea85cfb81f8769f3adf01e07bdc5" + ADMIN_NATS_USER: admin + ADMIN_PASSWORD: "cb586a0ffaae0ed919024f900f871979bbcd1521" + ADMIN_USERNAME: admin + EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93" + EVENTS_USERNAME_UDM: udm + NATS_PASSWORD: "95d501c0387cf0eec31aa80bb17f95f830a6251d" + NATS_USER: api + PREFILL_PASSWORD: "b9a5a15f7e8c3101852f76d50e55ca9c9da7de10" + PREFILL_USERNAME: prefill +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-dispatcher-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + NATS_PASSWORD: "b4b9a0246a4ad460f600be8b77af5861cde06201" + NATS_USER: dispatcher +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-prefill-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + NATS_PASSWORD: "9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d" + NATS_USER: prefill + PREFILL_PASSWORD: "b9a5a15f7e8c3101852f76d50e55ca9c9da7de10" + PREFILL_USERNAME: prefill + UDM_PASSWORD: "b63d4de0d8766a932cad776066f76211906f8967" + UDM_USERNAME: cn=admin +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-udm-listener-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93" + EVENTS_USERNAME_UDM: udm + NATS_PASSWORD: "0acadb5b0a2e885081a0ad98d44c0884c6aa517e" + NATS_USER: udmlistener +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-udm-transformer-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + EVENTS_PASSWORD_UDM: "4aee10e27a9997767d5c22f7915d1549b6d08c93" + EVENTS_USERNAME_UDM: udm + NATS_PASSWORD: "89a6741df85e8725261ad4fcc3c49ac7af505252" + NATS_USER: udmtransformer +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-register-consumers-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ADMIN_PASSWORD: "cb586a0ffaae0ed919024f900f871979bbcd1521" + ADMIN_USERNAME: admin + UDM_PASSWORD: "b63d4de0d8766a932cad776066f76211906f8967" + UDM_USERNAME: cn=admin +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-selfservice-listener-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + NATS_PASSWORD: "c499b4d4ffc11d4d8f9f12656e4336bd915b5cde" + NATS_USER: selfservice + PROVISIONING_API_PASSWORD: "903594f7a3da64ac8573b35933f0546f2fb4d1e0" + UMC_ADMIN_PASSWORD: "937393b22852fc828b0d68283dddcb9f8fb97411" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-portal-consumer-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + PROVISIONING_API_PASSWORD: "285e53cfa767e8788935963e6d60186f31a36879" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-provisioning-register-consumers-json-secrets" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + ox-connector.json: "{ \"name\": \"ox-connector\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"oxmail/oxcontext\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/accessprofile\"}, {\"realm\": \"udm\", \"topic\": \"users/user\"}, {\"realm\": \"udm\", \"topic\": \"oxresources/oxresources\"}, {\"realm\": \"udm\", \"topic\": \"groups/group\"}, {\"realm\": \"udm\", \"topic\": \"oxmail/functional_account\"}], \"request_prefill\": true, \"password\": \"5b25d2be2690ee3acf32a4f93006e8010ff4bbd2\" }" + portal-consumer.json: "{ \"name\": \"portal-consumer\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"groups/group\"}, {\"realm\": \"udm\", \"topic\": \"portals/portal\"}, {\"realm\": \"udm\", \"topic\": \"portals/category\"}, {\"realm\": \"udm\", \"topic\": \"portals/entry\"}, {\"realm\": \"udm\", \"topic\": \"portals/folder\"}, {\"realm\": \"udm\", \"topic\": \"portals/announcement\"}], \"request_prefill\": false, \"password\": \"285e53cfa767e8788935963e6d60186f31a36879\" }" + selfservice.json: "{ \"name\": \"selfservice\", \"realms_topics\": [{\"realm\": \"udm\", \"topic\": \"users/user\"}], \"request_prefill\": true, \"password\": \"903594f7a3da64ac8573b35933f0546f2fb4d1e0\" }" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-guardian-keycloak-client-secret" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + oauthAdapterM2mSecret: "109f406de749f9d8588bc4144c738143023def37" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-guardian-udm-secret" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + udmDataAdapterPassword: "b63d4de0d8766a932cad776066f76211906f8967" + udmDataAdapterUsername: cn=admin +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-guardian-provisioning-secret" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + adminPassword: "706676bc3cd8c020813f4a97beac99a44b45484f" + managementApiClientSecret: "109f406de749f9d8588bc4144c738143023def37" +... +--- +# Source: nubus/templates/nubusSecrets.yaml +kind: "Secret" +apiVersion: "v1" +type: "Opaque" +metadata: + name: "ums-guardian-management-api-postgresql-credentials" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +stringData: + password: "9e1704c5a20a9a0e781f4537e37395663e1299fb" +... +--- +# Source: nubus/charts/keycloak/templates/configmap.yaml +apiVersion: "v1" +kind: ConfigMap +metadata: + name: "ums-keycloak" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-keycloak + helm.sh/chart: keycloak-0.9.2 +data: + KEYCLOAK_PASSWORD_CHANGE_ENDPOINT: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + KC_LOG_LEVEL: "INFO" + KC_HOSTNAME: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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_URL_DATABASE: "keycloak" + + UNIVENTION_THEME: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/theme.css" + UNIVENTION_CUSTOM_THEME: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/css/custom.css" + UNIVENTION_FAVICON: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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.yschmidt-opendesk-argo.svc.cluster.local +... +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-authorization-api.yaml +apiVersion: "v1" +kind: ConfigMap +metadata: + name: ums-guardian-authorization-api + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.17.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:9979/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-nginx-conf + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.17.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "2.0.0" + +data: + nginx.conf: | + server { + listen 8080; + listen [::]:8080; + 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/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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.17.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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.17.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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/guardian/management" + VITE__KEYCLOAK_AUTHENTICATION_ADAPTER__SSO_URI: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: guardian + helm.sh/chart: nubusGuardian-0.17.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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.10.2 + 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: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + SUBDOMAIN_PORTAL: "portal" + 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_URI: "ldap://ums-ldap-server:389" + SAML_SERVICE_PROVIDER_HOSTNAME: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" +... +--- +# Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "ums-keycloak-bootstrap-bootstrap-data" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.10.2 + 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: | + + - ldapAndUserModelAttributeName: opendeskProjectmanagementAdmin + - ldapAndUserModelAttributeName: oxContextIDNum + loginlinks.yaml: | + + - link_number: 1 + language: "de" + description: "Passwort vergessen?" + href: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/#/selfservice/passwordforgotten" + - link_number: 1 + language: "en" + description: "Forgot password?" + href: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/#/selfservice/passwordforgotten" + + 2fa.yaml: | + + enabled: true + group: 2fa-users +... +--- +# Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml +apiVersion: "v1" +kind: ConfigMap +metadata: + name: ums-keycloak-bootstrap-init + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.10.2 + 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: + KEYCLOAK_URL: "http://ums-keycloak:8080/realms/master" + wait-for-keycloak.py: | + #!/usr/bin/python3 + import requests + import time + import sys + import os + + keycloak_url = os.environ.get('KEYCLOAK_URL') + max_retries = 300 + retries = 0 + + for retry in range(max_retries): + 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') + else: + print('Unexpected response code: ', response.status_code) + except requests.exceptions.ConnectionError: + print('Could not reach keycloak, retrying...') + time.sleep(1) + sys.exit(1) +... +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-handler.yaml +apiVersion: "v1" +kind: ConfigMap +metadata: + name: ums-keycloak-extensions-handler + namespace: "yschmidt-opendesk-argo" + 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.16.1 +data: + KC_AUTH_URL: "http://ums-keycloak:8080/admin" + KC_REALM: "opendesk" + KC_USER_REALM: "master" + POSTGRES_HOST: "postgresql" + POSTGRES_PORT: "5432" + 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 openDesk account" + SMTP_HOST: "postfix.yschmidt-opendesk-argo.svc.cluster.local" + SMTP_PORT: "25" + SMTP_AUTH_ENABLED: "true" + SMTP_SSL_ENABLED: "false" + SMTP_STARTTLS_ENABLED: "false" + MAIL_FROM: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + +... +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-proxy.yaml +apiVersion: "v1" +kind: ConfigMap +metadata: + name: ums-keycloak-extensions-proxy + namespace: "yschmidt-opendesk-argo" + 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.16.1 +data: + KEYCLOAK_URL: "http://ums-keycloak:8080" + KC_AUTH_URL: "http://ums-keycloak:8080/admin" + KC_REALM: "opendesk" + KC_USER_REALM: "master" + POSTGRES_HOST: "postgresql" + POSTGRES_PORT: "5432" + POSTGRES_DATABASE_NAME: "keycloak_extensions" + POSTGRES_SSL: "false" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-notifier + helm.sh/chart: nubusLdapNotifier-0.34.1 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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" + LDAP_SERVER_ENABLE_STATUS_CONFIGMAP: "true" + LDAP_SERVER_ROLE: "primary" + 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: "2" + ENABLE_SOCKET_OVERLAY: "false" +... +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: ums-ldap-server-primary-scripts + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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 -euo pipefail + + # 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:${LDAP_PORT}" + else + export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-0:${LDAP_PORT}" + fi + else + if [[ "${trailing_digit}" -eq 0 ]]; then + export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-$((replicacount - 1)):${LDAP_PORT}" + elif [[ "${trailing_digit}" -eq $((replicacount - 1)) ]]; then + export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-0:${LDAP_PORT}" + else + export PRIMARY_LDAP_URI="${LDAP_PROTOCOL}://${PRIMARY_SERVICE}-$((trailing_digit - 1)):${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 ${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 +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-primary.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: ums-ldap-server-primary-config-templates + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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 + syncrepl rid=00PLACEHOLDER_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=on + scope=sub + retry="60 +" + + multiprovider on + + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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" + LDAP_SERVER_ROLE: "proxy" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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 -uo 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 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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" + LDAP_SERVER_ROLE: "secondary" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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 -uo 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 -euo 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: ums-ldap-server +data: + DOMAIN_NAME: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/saml/metadata" + TLS_MODE: "off" +... +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: ums-ldap-server-scripts + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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 -euo 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 -uo 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 + +... +--- +# Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: ums-portal-consumer-common + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-consumer + helm.sh/chart: nubusPortalConsumer-0.63.0 + 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_ASSETS_BASE_URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal" + 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: "false" + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-consumer + helm.sh/chart: nubusPortalConsumer-0.63.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.63.0 + 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: "LyoqCiAqIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjMgQnVuZGVzbWluaXN0ZXJpdW0gZGVzIElubmVybiB1bmQgZsO8ciBIZWltYXQsIFBHIFplbkRpUyAiUHJvamVrdGdydXBwZSBmw7xyIEF1ZmJhdSBaZW5EaVMiCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAqLwo6cm9vdCB7CiAgLyogdXNlZCB0byBhY2NlbnQgc29tZSBlbGVtZW50czogY2hlY2tib3gvcmFkaW9ib3gsIGNoZWNrZWQgdG9nZ2xlIGJ1dHRvbnMvY2hlY2tlZCBpbnB1dCBmaWVsZHMgKi8KICAtLWNvbG9yLWFjY2VudDogIzU3MUVGQTsKICAtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeTogI2Y1ZjVmNTsKICAtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeS1kYXJrOiAjYzdiM2YzOwogIC0tY29sb3Itb3BlbmRlc2std2hpdGU6ICNmZmZmZmY7CiAgLS1jb2xvci1vcGVuZGVzay1ibGFjazogIzAwMDAwMDsKICAtLWJnYy1hbm5vdW5jZW1lbnRzLWluZm86ICNhZGIzYmM7CiAgLS1iZ2MtYW5ub3VuY2VtZW50cy13YXJuOiAjZmZjNzAwOwogIC0tYmdjLWFubm91bmNlbWVudHMtc3VjY2VzczogIzAwZmZjZDsKICAtLWJnYy1hbm5vdW5jZW1lbnRzLWRhbmdlcjogI2ZmNTI5ZTsKICAtLWJnYy1jb250ZW50LWJvZHk6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgLS1iZ2MtY29udGVudC1jb250YWluZXI6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICAtLWJnYy1jb250ZW50LWhlYWRlcjogdmFyKC0tYmdjLWNvbnRlbnQtY29udGFpbmVyKTsKICAtLWJnYy1pbnB1dGZpZWxkLW9uLWNvbnRhaW5lcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwogIC0tYmdjLWlucHV0Ym9yZGVyLW9uLWNvbnRhaW5lcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKICAtLWJnYy1pbnB1dGZpZWxkLW9uLWJvZHk6IHZhcigtLWJnYy1jb250ZW50LWNvbnRhaW5lcik7CiAgLS1iZ2MtY2hlY2tib3gtaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7CiAgLS1iZ2MtY2hlY2tib3gtZm9jdXM6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7CiAgLS1iZ2MtbG9hZGluZy1jaXJjbGU6IHZhcigtLWZvbnQtY29sb3ItY29udHJhc3QtbWlkZGxlKTsKICAtLWJnYy11c2VyLW1lbnUtaXRlbS1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogIC0tYmdjLXVzZXItbWVudS1pdGVtLWFjdGl2ZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogIC0tYmdjLWhlYWRlci1udW1iZXItY2lyY2xlOiB2YXIoLS1jb2xvci1hY2NlbnQpOwogIC0tYmdjLXRhYi1zZXBhcmF0b3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgLS1iZ2MtcG9wdXA6ICNkMGQwZDA7CiAgLS1iZ2MtcG9wdXAtaXRlbS1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjE1KTsKICAtLWJnYy1wb3B1cC1pdGVtLWFjdGl2ZTogcmdiYSgwLCAwLCAwLCAwLjMpOwogIC0tYmdjLXBvcHVwLWl0ZW0tc2VsZWN0ZWQ6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAtLWJnYy1ncmlkLXJvdy1ob3ZlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTsKICAtLWJnYy1ncmlkLXJvdy1zZWxlY3RlZDogdmFyKC0tYmdjLWdyaWQtcm93LWhvdmVyKTsKICAtLWJnYy10cmVlLXJvdy1ob3ZlcjogdmFyKC0tYmdjLWdyaWQtcm93LWhvdmVyKTsKICAtLWJnYy10cmVlLXJvdy1zZWxlY3RlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAtLWJnYy1hcHB0aWxlLWRlZmF1bHQ6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICAtLWJnYy1hcHBjZW50ZXItYXBwLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogIC0tYmdjLWFwcGNlbnRlci1hcHAtYWN0aXZlOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOwogIC0tYmdjLXByb2dyZXNzYmFyLWVtcHR5OiAjYmRiZGJiOwogIC0tYmdjLXByb2dyZXNzYmFyLXByb2dyZXNzOiB2YXIoLS1iZ2Mtc3VjY2Vzcyk7CiAgLS1iZ2MtdGl0bGVwYW5lLWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpOwogIC0tYmdjLXVuZGVybGF5OiByZ2IoMjIxIDIyMSAyMjEgLyA4MCUpOwogIC0tYmdjLWNoZWNrZXJib2FyZDogcmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KHZhcigtLWJnYy1pbnB1dGZpZWxkLW9uLWNvbnRhaW5lcikgMCUgMjUlLCB0cmFuc3BhcmVudCAwJSA1MCUpIDUwJS8yMHB4IDIwcHg7CiAgLS1iZ2MtZXJyb3I6ICNmZjUyOWU7CiAgLS1iZ2Mtd2FybmluZzogI2ZmYzcwMDsKICAtLWJnYy1zdWNjZXNzOiAjMDBmZmNkOwogIC0tZm9udC1zaXplLTE6IDEuNXJlbTsKICAtLWZvbnQtc2l6ZS0yOiAxLjI1cmVtOwogIC0tZm9udC1zaXplLTM6IDFyZW07CiAgLS1mb250LXNpemUtNDogMC44NzVyZW07CiAgLS1mb250LXNpemUtNTogMC43NXJlbTsKICAtLWZvbnQtc2l6ZS1odG1sOiAxcmVtOwogIC0tZm9udC1zaXplLWJvZHk6IHZhcigtLWZvbnQtc2l6ZS00KTsKICAtLWZvbnQtbGluZWhlaWdodC1ub3JtYWw6IDEuNTsKICAtLWZvbnQtbGluZWhlaWdodC1jb21wYWN0OiAxLjI1OwogIC0tZm9udC1saW5laGVpZ2h0LWhlYWRlcjogMS4zOwogIC0tZm9udC13ZWlnaHQtYm9sZDogNjAwOwogIC0tZm9udC1jb2xvci1jb250cmFzdC1oaWdoOiAjMjAzMjU3OwogIC0tZm9udC1jb2xvci1jb250cmFzdC1taWRkbGU6ICM2MDYwNjA7CiAgLS1mb250LWNvbG9yLWNvbnRyYXN0LWxvdzogIzg2ODY4MTsKICAtLWZvbnQtY29sb3ItZXJyb3I6ICNiODIzMjM7CiAgLS1mb250LWNvbG9yLWVycm9yLWxpZ2h0OiAjRUFCRkJGOwogIC0tZm9udC1jb2xvci13YXJuaW5nOiAjZmY4YzAwOwogIC0tZm9udC1jb2xvci13YXJuaW5nLWxpZ2h0OiAjZmZlZWNhOwogIC0tZm9udC1jb2xvci1zdWNjZXNzOiAjOTJkNjI1OwogIC0tZm9udC1jb2xvci1zdWNjZXNzLWxpZ2h0OiAjZWJmZmNhOwogIC0tYnV0dG9uLXByaW1hcnktYmdjOiAjNTcxRUZBOwogIC0tYnV0dG9uLXByaW1hcnktYmdjLWhvdmVyOiAjMWIxZDE4OwogIC0tYnV0dG9uLXByaW1hcnktYmdjLWFjdGl2ZTogcmdiYSg3OSwgMTE0LCAyNCwgMSk7CiAgLS1idXR0b24tcHJpbWFyeS1iZ2MtZGlzYWJsZWQ6ICM1ZjVmNWM7CiAgLS1idXR0b24tYmdjOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIC0tYnV0dG9uLWJnYy1ob3ZlcjogIzU3NTc1NTsKICAtLWJ1dHRvbi1iZ2MtYWN0aXZlOiByZ2JhKDgwLCA4MCwgNzcsIDEpOwogIC0tYnV0dG9uLWJnYy1kaXNhYmxlZDogIzVmNWY1YzsKICAtLWJ1dHRvbi10ZXh0LWJnYzogdHJhbnNwYXJlbnQ7CiAgLS1idXR0b24tdGV4dC1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLXRleHQtYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLXRleHQtYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWJ1dHRvbi1pY29uLWJnYzogdHJhbnNwYXJlbnQ7CiAgLS1idXR0b24taWNvbi1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLWljb24tYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLWljb24tYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWJ1dHRvbi1pY29uLWhpZ2hsaWdodGVkLWJnYzogdmFyKC0tYmdjLWlucHV0ZmllbGQtb24tYm9keSk7CiAgLS1idXR0b24taWNvbi1oaWdobGlnaHRlZC1iZ2MtaG92ZXI6IHZhcigtLWJ1dHRvbi1iZ2MtaG92ZXIpOwogIC0tYnV0dG9uLWljb24taGlnaGxpZ2h0ZWQtYmdjLWFjdGl2ZTogdmFyKC0tYnV0dG9uLWJnYy1hY3RpdmUpOwogIC0tYnV0dG9uLWljb24taGlnaGxpZ2h0ZWQtYmdjLWRpc2FibGVkOiB0cmFuc3BhcmVudDsKICAtLWNvbG9yLWZvY3VzOiAjQUE5OEZCOwogIC0tcG9wdXAtYm9yZGVyOiAxcHggc29saWQgI2JkYmRiYjsKICAtLWJveC1zaGFkb3c6IDAgMXB4IDZweCByZ2IoMSAwIDAgLyAxMiUpLCAwIDFweCA0cHggcmdiKDAgMSAwIC8gMTIlKTsKICAtLXNlcnZlcm92ZXJ2aWV3LXRpbGUtaG92ZXItYmdjOiAjMDBhY2I2OwogIC0tc2VydmVyb3ZlcnZpZXctdGlsZS1ob3Zlci1jb2xvcjogIzFlMWUxZDsKICAtLXBvcnRhbC10YWItYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYWNjZW50KTsKICAtLXNlbGVjdC1hcnJvdzogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJjQUFBQVhDQVlBQUFEZ0t0U2dBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQmtTVVJCVkhnQjdZM0JDUUFoREFTM0JFdElDVmVDSmRpNUpWd3BHc0dIaUdMRUNENHlzTDlsQmpDTXB3azhFbjZwL2tWNFh1TDlXQWVvL3NyL2d3REhpNEpBSzQ3WVlCWG94UTZiekFMSDRsbkFhNGxIZ2FRcEhnVlV4VzBnNElMWU1DNlRBWjBCSkEzYnhOM1JBQUFBQUVsRlRrU3VRbUNDJyk7CiAgLS1sYXlvdXQtaGVpZ2h0LWhlYWRlcjogNjNweDsKICAvKiBLZXljbG9hayB1c2VyIHNjcmVlbnMgbG9nbyAqLwogIC0tbG9naW4tbG9nbzogdXJsKCIvc3RhdGljLWZpbGVzL2xvZ2luL2xvZ28uc3ZnIikgbm8tcmVwZWF0IGNlbnRlcjsKfQoKLyogQmV0YSBvdmVybGF5IGZvciBOb3RlcyAqLwoucG9ydGFsLXRpbGVbdGFyZ2V0PSJ0YWJfbm90ZXMiXTpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBjb250ZW50OiAiQmV0YSI7CiAgY29sb3I6ICM1NzFFRkE7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRvcDogOHB4OwogIHJpZ2h0OiAwcHg7CiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtNSk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgei1pbmRleDogMTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzQ4cHgpIHsKICAucG9ydGFsLXRpbGVbdGFyZ2V0PSJ0YWJfbm90ZXMiXTpiZWZvcmUgewogICAgICB0b3A6IDVweDsKICAgICAgZm9udC1zaXplOiAxMHB4OwogIH0KICAucG9ydGFsLXRpbGVfX25hbWUgewogICAgICBmb250LXNpemU6IDEzcHg7CiAgfQp9CgoucG9ydGFsLXRpbGVbdGFyZ2V0PSJ0YWJfbm90ZXMiXTphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGNvbnRlbnQ6ICIiOwogIHRvcDogMXB4OwogIHJpZ2h0OiAxcHg7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICBib3JkZXItd2lkdGg6IDAgY2FsYyh2YXIoLS1hcHAtdGlsZS1zaWRlLWxlbmd0aCkgLyAyKSBjYWxjKHZhcigtLWFwcC10aWxlLXNpZGUtbGVuZ3RoKSAvIDIpIDA7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAjRTlFNEZDIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogIHotaW5kZXg6IDA7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGModmFyKC0tYm9yZGVyLXJhZGl1cy1hcHB0aWxlKSAtIDFweCk7Cn0KCi8qIEtleWNsb2FrIHVzZXIgc2NyZWVucyBiZWdpbiAqLwoja2MtbG9naW4sCiNrYy1sb2dvdXQsCiNzYXZlVE9UUEJ0biwKLnBmLWMtYnV0dG9uLmJ0bi1sZyB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKSAhaW1wb3J0YW50OwogIGJvcmRlcjogMnB4IHNvbGlkOwp9Cgoua2Mtc29jaWFsLXByb3ZpZGVyLW5hbWUgewogIGNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSkgIWltcG9ydGFudDsKfQoKI2tjLWxvZ2luOmhvdmVyLAoja2MtbG9nb3V0OmhvdmVyLAojc2F2ZVRPVFBCdG46aG92ZXIsCi5wZi1jLWJ1dHRvbi5idG4tbGc6aG92ZXIgewogIGNvbG9yOiAjMDAwMDAwOwogIGJhY2tncm91bmQtY29sb3I6ICNlN2RmZmE7CiAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYWNjZW50KTsKfQoKLnBmLWMtZm9ybS1jb250cm9sIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdkZmZhOwp9CgoucGYtYy1kcm9wZG93bl9fbWVudS1pdGVtOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpOwogIGNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSkgIWltcG9ydGFudDsKfQoKI2tjLWZvcm0tb3B0aW9ucyAuY2hlY2tib3ggewogIGNvbG9yOiB2YXIoLS1mb250LWNvbG9yLWNvbnRyYXN0LWhpZ2gpICFpbXBvcnRhbnQ7Cn0KCiNrYy1oZWFkZXItd3JhcHBlciB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5sb2dpbi1wZi1wYWdlIHsKICBtYXJnaW46IDBweDsKICBwYWRkaW5nOiAwcHg7CiAgbWluLWhlaWdodDogMTAwJTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLmxvZ2luLXBmLXBhZ2UgI2tjLWhlYWRlciB7CiAgZGlzcGxheTogbm9uZTsKfQoKLmxvZ2luLXBmLXBhZ2UgLmNhcmQtcGYgewogIGJvcmRlci1yYWRpdXM6IDEzcHg7CiAgbWFyZ2luLXRvcDogNDBweDsKfQoKLmxvZ2luLXBmLXBhZ2UgI3VtY0xvZ2luTGlua3MgYSB7CiAgY29sb3I6ICMwMDA7Cn0KCi5sb2dpbi1wZi1wYWdlICN1bWNMb2dpbkxpbmtzIGE6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IHVuc2V0Owp9CgoubG9naW4tcGYgYm9keSB7CiAgYmFja2dyb3VuZDogI2VlZTZmZSB1cmwoIi9zdGF0aWMtZmlsZXMvbG9naW4vYmFja2dyb3VuZC5qcGciKSBjZW50ZXIgY2VudGVyL2NvdmVyIG5vLXJlcGVhdCAhaW1wb3J0YW50Owp9Ci8qIEtleWNsb2FrIHVzZXIgc2NyZWVucyBlbmQgKi8KCi5wb3J0YWwtdGl0bGVfX2ltYWdlIHsKICB3aWR0aDogODJweDsKICBoZWlnaHQ6IGF1dG87Cn0KCi5wb3J0YWwtdGl0bGUgewogIHBhZGRpbmc6IDAgMTBweCAwIDVweDsKfQoKLyoKLnBvcnRhbDo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDA7CiAgICBoZWlnaHQ6IDEwcHg7CiAgICBsZWZ0OiAwOwogICAgcmlnaHQ6IDA7CiAgICBib3R0b206IDA7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICM1NzFFRkEsICM1NzFFRkEgNjIlLCB3aGl0ZSA2MiUpOwp9CiovCgoucG9ydGFsX19iYWNrZ3JvdW5kOjpiZWZvcmUgewogIGNvbnRlbnQ6ICcnOwogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBmaXhlZDsKICBsZWZ0OiAwOwogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiL3N0YXRpYy1maWxlcy9wb3J0YWwvYmFja2dyb3VuZC5zdmciKTsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMjM3cHg7CiAgYmFja2dyb3VuZC1zaXplOiA0ODBweDsKICBib3R0b206IDRweDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAyNXB4IGNlbnRlcjsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTMwMHB4KSB7CiAgLnBvcnRhbF9fYmFja2dyb3VuZDo6YmVmb3JlIHsKICAgIGJhY2tncm91bmQtc2l6ZTogMzUwcHg7CiAgICBib3R0b206IC0yOHB4OwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMTlweCBjZW50ZXI7CiAgfQp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NDhweCkgewogIC5wb3J0YWxfX2JhY2tncm91bmQ6OmJlZm9yZSB7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDI1MHB4OwogICAgYm90dG9tOiAtNTBweDsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDIwcHggY2VudGVyOwogIH0KfQoKLnBvcnRhbC1jYXRlZ29yaWVzOmJlZm9yZSB7CiAgd2lkdGg6IDEwMCU7CiAgY29udGVudDogJyc7CiAgcG9zaXRpb246IGZpeGVkOwogIGxlZnQ6IDA7CiAgaGVpZ2h0OiAxcHg7CiAgdG9wOiB2YXIoLS1sYXlvdXQtaGVpZ2h0LWhlYWRlcik7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZGRkZDsKICB6LWluZGV4OiAxOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19sb2dpbi1oZWFkZXIgewogIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX2VkaXQtbW9kZSB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX2VkaXQtbW9kZTpob3ZlciB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyayk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5LWRhcmspOwp9CgoucG9ydGFsLWhlYWRlcl9fZWRpdC1tb2RlLWxhYmVsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgoucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19sb2dvdXQtbGluayB7CiAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtaXRlbTpob3ZlciwKLnBvcnRhbC1zaWRlbmF2aWdhdGlvbl9fbWVudS1zdWJJdGVtOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwogIHRyYW5zaXRpb246IGFsbCB2YXIoLS1wb3J0YWwtdHJhbnNpdGlvbi1kdXJhdGlvbik7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtaXRlbTpob3ZlciAucG9ydGFsLXNpZGVuYXZpZ2F0aW9uX19zdWJtZW51IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay13aGl0ZSk7Cn0KCi5wb3J0YWwtc2lkZW5hdmlnYXRpb25fX21lbnUtaXRlbTphY3RpdmUgewogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCmlucHV0IHsKICBib3JkZXI6IDAuMXJlbSBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyaykKfQoKaW5wdXRbcmVhZG9ubHldIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgovKmlucHV0IHsKYm9yZGVyLWNvbG9yOiB2YXIoLS1iZ2MtaW5wdXRib3JkZXItb24tY29udGFpbmVyKTsKfSovCgoucG9ydGFsLXNlYXJjaF9faW5wdXQgewogIGJvcmRlcjogMC4xcmVtIHNvbGlkIHZhcigtLWJnYy1pbnB1dGJvcmRlci1vbi1jb250YWluZXIpOwp9CgouaW1hZ2UtdXBsb2FkX19jYW52YXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKYnV0dG9uIHsKICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcG9ydGFsLXRyYW5zaXRpb24tZHVyYXRpb24pOwp9CgpidXR0b24ucHJpbWFyeSB7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKYnV0dG9uLnByaW1hcnkgc3ZnIHsKICBjb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwp9CgpidXR0b25bZGlzYWJsZWRdIHsKICBjb2xvcjogI2FmYWZhZjsKfQoKYnV0dG9uW2Rpc2FibGVkXSBzdmcgewogIGNvbG9yOiAjYWZhZmFmOwp9CgppbnB1dFt0eXBlPWNoZWNrYm94XTpmb2N1cyB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLW9wZW5kZXNrLWJsYWNrKTsKfQoKLmZvcm0tZWxlbWVudCB7CiAgbWFyZ2luLWJvdHRvbTogMnB4OwogIC8qbmVlZGVkIGZvciBjbGVhbmVyIE91dGxpbmUqLwogIG1hcmdpbi1sZWZ0OiAycHg7Cn0KCnNlbGVjdCB7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKfQoKLm11bHRpLXNlbGVjdF9fc2VsZWN0IHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9CgoubXVsdGktaW5wdXRfX3Jvdy0tbXVsdGlsaW5lIHsKICBib3gtc2hhZG93OiBpbnNldCAycHggMCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnkpOwp9Cgp0ZXh0YXJlYSB7CiAgYm9yZGVyOiAuMXJlbSBzb2xpZCAjQjJBRkFGOwogIHdpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlOwp9Cgoubm90aWZpY2F0aW9uLS1zdWNjZXNzIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mb250LWNvbG9yLXN1Y2Nlc3MpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZvbnQtY29sb3Itc3VjY2Vzcy1saWdodCk7Cn0KCi5ub3RpZmljYXRpb24tLXdhcm5pbmcgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZvbnQtY29sb3Itd2FybmluZyk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZm9udC1jb2xvci13YXJuaW5nLWxpZ2h0KTsKfQoKLm5vdGlmaWNhdGlvbi0tZXJyb3IgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZvbnQtY29sb3ItZXJyb3IpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZvbnQtY29sb3ItZXJyb3ItbGlnaHQpOwp9CgouaGVhZGVyLXRhYl9fY2xpY2thYmxlOmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2stc2Vjb25kYXJ5KTsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKICBib3gtc2hhZG93OiAwIDAuMnJlbSAwIHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoKLmhlYWRlci10YWI6aG92ZXI6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyayk7CiAgYm94LXNoYWRvdzogMCAwLjJyZW0gMCB2YXIoLS1jb2xvci1vcGVuZGVzay1zZWNvbmRhcnktZGFyayk7CiAgYm9yZGVyLWJvdHRvbTogMDsKICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcG9ydGFsLXRyYW5zaXRpb24tZHVyYXRpb24pOwp9CgouaGVhZGVyLXRhYjpmb2N1czpiZWZvcmUgewogIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCB2YXIoLS1jb2xvci1vcGVuZGVzay1ibGFjayk7CiAgYm94LXNoYWRvdzogMDsKfQoKLmhlYWRlci10YWItLWFjdGl2ZTpmb2N1czphZnRlciB7CiAgYm9yZGVyOiAwLjJyZW0gc29saWQgdmFyKC0tY29sb3Itb3BlbmRlc2stYmxhY2spOwp9CgouaGVhZGVyLXRhYjpob3ZlciwKLmhlYWRlci10YWI6aG92ZXJ+Lmljb24tYnV0dG9uIC5wb3J0YWwtaWNvbiwKLmhlYWRlci10YWItLWFjdGl2ZSwKLmhlYWRlci10YWItLWFjdGl2ZX4uaWNvbi1idXR0b24gLnBvcnRhbC1pY29uIHsKICBjb2xvcjogdmFyKC0tY29sb3Itb3BlbmRlc2std2hpdGUpOwogIHRyYW5zaXRpb246IGFsbCB2YXIoLS1wb3J0YWwtdHJhbnNpdGlvbi1kdXJhdGlvbik7Cn0KCi5oZWFkZXItdGFiLS1hY3RpdmV+Lmljb24tYnV0dG9uOmZvY3VzIHsKICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKLmNob29zZS10YWI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXNlY29uZGFyeSk7Cn0KCi5jaG9vc2UtdGFiLS1hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudCk7CiAgY29sb3I6IHZhcigtLWNvbG9yLW9wZW5kZXNrLXdoaXRlKTsKfQoKCi5oZWFkZXItYnV0dG9uX19idXR0b24gLnBvcnRhbC1pY29uIHsKICBjb2xvcjogIzFGMUYxRjsKICBzdHJva2Utd2lkdGg6IDM7Cn0KCi5oZWFkZXItYnV0dG9uLS1pcy1hY3RpdmUgLnBvcnRhbC1pY29uIHsKICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50KTsKfQoKLyoKLy8KLy8KLy8gTG9hZGluZyBPdmVybGF5IGltYWdlIGFuZCBBbmltYXRpb24KKi8KCi5zdGFuZGJ5Q2lyY2xlIHsKICBkaXNwbGF5OiBub25lOwp9Cgouc3RhbmRieVdyYXBwZXI6YmVmb3JlIHsKICBjb250ZW50OiAnJzsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi9zdGF0aWMtZmlsZXMvcG9ydGFsL3dhaXRpbmctc3Bpbm5lci5zdmciKTsKICBiYWNrZ3JvdW5kLXNpemU6IDcwJTsKICB3aWR0aDogMjAwcHg7CiAgaGVpZ2h0OiAyMDBweDsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzYXRlLWJjayAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlIGJvdGg7CiAgYW5pbWF0aW9uOiBwdWxzYXRlLWJjayAxLjJzIGVhc2UtaW4tb3V0IGluZmluaXRlIGJvdGg7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHB1bHNhdGUtYmNrIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDUwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgpAa2V5ZnJhbWVzIHB1bHNhdGUtYmNrIHsKICAwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgb3BhY2l0eTogMTsKICB9CgogIDUwJSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDEwMCUgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgoucG9ydGFsLXRvb2x0aXAgewogIGJvcmRlci1jb2xvcjogI0QzRDdERTsKICBib3gtc2hhZG93OiAwcHggMHB4IDRweCAwcHggcmdiYSgzMiwgNTAsIDg3LCAwLjEwKTsKfQoKLnBvcnRhbC10b29sdGlwX19hcnJvdyB7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjRDNEN0RFIHRyYW5zcGFyZW50Owp9CgoucG9ydGFsLXRpdGxlX19wb3J0YWwtbmFtZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IC0xcHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIGJvcmRlcjogMDsKfQ==" + favicon.ico: "AAABAAEAb28AAAEAIACcxwAAFgAAACgAAABvAAAA3gAAAAEAIAAAAAAAhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///0D///9w////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///4D///+A////gP///3D///9A////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///5D////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9D///+Q////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D////g/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+D///9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////0P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wP///zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////oP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAP///+D////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////gAAAAAAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////4P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0AAAAAD///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xD///9A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////93OL//dzi//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8usb//LrG//y6xv/8ws3//dzi//7l6f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///9w///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+6i4//p9lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6hpz//LrG//729////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//uouP/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p9lf/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////+5en/+o6j//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////729//6fZX/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uouP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////qOo//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/8ws3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////cvU//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//u3w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+9vf/+n2V//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+6i4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////909v/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+n2V/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7qLj/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//3T2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//y6xv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//yxv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//uXqv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb/+1aB//tWgf/8gKD//Jy1//7U3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6LGH/+3KW//3G1f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Omz//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tWgf/+8PT//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tki////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tXgf/8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//IGh//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o6bP///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////+4ur//I+r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9uMr//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////7U3//6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7cpb//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+kl3//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uLq//osYv/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//cbV/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////6hpz/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//I6r/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////7l6r/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+2SL/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////8ws3/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7cpb/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////+7fD/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////+6i4//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////u3w//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////3T2//6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////9y9T/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////dPb//p+lf/6dY7/+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////729//8sb//+nWO//p1jv/6dY7/+nWO//p1jv/6dY7//dzi////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vb3//3L1f/7qbj/+5iq//uYqv/7mKr//uXp////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9xtX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nLX/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yOq//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7VoH/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+1aB/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+1aB//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//yAoP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+3KW/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pIdv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tki//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////I6r//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9xtX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////arA//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cbV//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6SHb//vD0///////////////////////////////////////////////////////////////////////////////////////////////////////9qsD/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+kh2//7w9P///////////////////////////////////////////////////////////////////////////////////////vD0//yOq//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//8jqv//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//osYf/9qsD//uLq//////////////////////////////////////////////////////////////////7U3//8gKD/+ixh//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+4ur//////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2qwP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//tylv///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6LGL/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//7i6v///////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8jqv/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//ICg/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6O2z//vD0/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Jy1//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//+1N///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tljP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//2qwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/6SXf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf//arA/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+8PT/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//9qsD//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vD0//pJd//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+ixi//24yv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/7c5b/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//7V4H//uLq/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bjK//o7bP/6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+jts//2rwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7w9P/8j6v/+ixi//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//o7bP/9q8D//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///+A//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////25y//7c5b/+jts//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//oeV//6Hlf/+h5X//pJd//8gaH//tTf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4D///9w//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7i6v/9x9X//avA//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//I+r//yPq//8j6v//J22//3H1f/9x9X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3D///9A/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0D///8Q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xAAAAAA////3///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zwAAAAAAAAAA////kP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////kAAAAAAAAAAA////MP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////MAAAAAAAAAAAAAAAAP///9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fAAAAAAAAAAAAAAAAAAAAAP///2D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9gAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////gP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8w////z///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z////zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///1/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////MP///4/////f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9////+P////MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////EP///z////9v////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////3////9/////f////2////8/////EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAH//gAA//gAAAAAAAAAAAAAP/4AAP/gAAAAAAAAAAAAAA/+AAD/gAAAAAAAAAAAAAAD/gAA/wAAAAAAAAAAAAAAAf4AAP4AAAAAAAAAAAAAAAD+AAD8AAAAAAAAAAAAAAAAfgAA+AAAAAAAAAAAAAAAAD4AAPAAAAAAAAAAAAAAAAAeAADgAAAAAAAAAAAAAAAADgAA4AAAAAAAAAAAAAAAAA4AAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAAgAAAAAAAAAAAAAAAAAIAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAACAACAAAAAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAIAAMAAAAAAAAAAAAAAAAAGAADAAAAAAAAAAAAAAAAABgAA4AAAAAAAAAAAAAAAAA4AAOAAAAAAAAAAAAAAAAAOAADwAAAAAAAAAAAAAAAAHgAA+AAAAAAAAAAAAAAAAD4AAPwAAAAAAAAAAAAAAAB+AAD+AAAAAAAAAAAAAAAA/gAA/wAAAAAAAAAAAAAAAf4AAP+AAAAAAAAAAAAAAAP+AAD/4AAAAAAAAAAAAAAP/gAA//gAAAAAAAAAAAAAP/4AAP//AAAAAAAAAAAAAf/+AAA=" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.63.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.63.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.63.0 + 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_FEATURE_TOGGLES: "{\"centered_layout\":false,\"notifications_api\":false,\"umc_session_refresh\":true,\"welcome_message\":false}" + 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" + PORTAL_UDM_API_URL: "http://ums-udm-rest-api:9979/udm/" + PORTAL_UDM_API_USERNAME: "svc-portal-server" + PORTAL_UDM_API_PASSWORD_FILE: "/var/secrets/udm_api_password" + OBJECT_STORAGE_ENDPOINT: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + OBJECT_STORAGE_BUCKET: "ums" +--- +# Source: nubus/charts/nubusProvisioning/charts/nats/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "ums-provisioning-nats-config" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.3.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: admin + password: $NATS_PASSWORD + permissions: { + publish: ">" + subscribe: ">" + } + } + { + user: dispatcher + password: $NATS_DISPATCHER_PASSWORD + permissions: { + publish: ">" + subscribe: ">" + } + } + { + user: prefill + password: $NATS_PREFILL_PASSWORD + permissions: { + publish: ">" + subscribe: ">" + } + } + { + user: api + password: $NATS_PROVISIONING_API_PASSWORD + permissions: { + publish: ">" + subscribe: ">" + } + } + { + user: udmlistener + password: $NATS_UDM_LISTENER_PASSWORD + permissions: { + publish: ">" + subscribe: ">" + } + } + { + user: udmtransformer + password: $NATS_UDM_TRANSFORMER_PASSWORD + permissions: { + publish: ">" + subscribe: ">" + } + } + ] + } + + } +... +--- +# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: ums-provisioning-common + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning + helm.sh/chart: nubusProvisioning-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: selfservice-listener + helm.sh/chart: nubusSelfServiceConsumer-0.14.0 + 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" + MAX_ACKNOWLEDGEMENT_RETRIES: "3" +... +--- +# Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: ums-selfservice-listener-scripts + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: selfservice-listener + helm.sh/chart: nubusSelfServiceConsumer-0.14.0 + 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 +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: 'ums-stack-data-ums-data' + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.89.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: + 00-service-accounts.yaml: |- + # Source: data-files/default/00-service-accounts.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2023 Univention GmbH + + # Initializes the base structure for service accounts. + --- + action: create + module: groups/group + position: cn=groups,{{ ldapBaseDn }} + properties: + name: "Domain Service Users" + + 00-umc-init.yaml: |- + # Source: data-files/default/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,{{ ldapBaseDn }} + properties: + name: {{ externalMailDomain }} + + 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,{{ ldapBaseDn }}" + 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@{{ externalMailDomain }}" + password: "{{ initialPasswordAdministrator }}" + primaryGroup: "cn=Domain Admins,cn=groups,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }} + properties: + users: + - "uid=Administrator,cn=users,{{ ldapBaseDn }}" + --- + action: ensure_list_contains + module: groups/group + position: cn=Domain Admins,cn=groups,{{ ldapBaseDn }} + properties: + users: + - "uid=Administrator,cn=users,{{ ldapBaseDn }}" + + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + properties: + name: "udm-navigation" + description: "UDM - Navigation" + flavor: "navigation" + hosts: [] + objectFlag: [] + operation: + - command: "udm/get" + option: "" + - command: "udm/layout" + option: "" + - command: "udm/meta_info" + option: "" + - command: "udm/nav/container/query" + option: "" + - command: "udm/nav/object/query" + option: "" + - command: "udm/policies" + option: "" + - command: "udm/properties" + option: "" + - command: "udm/types" + option: "" + - command: "udm/values" + option: "" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + properties: + name: "udm-new-portal" + description: "UDM - Portal" + flavor: "portals/all" + hosts: [] + objectFlag: [] + operation: + - command: "udm/*" + option: "objectType=portals/*" + - 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + properties: + name: "udm-usertemplates" + description: "UDM - Apply User Templates" + flavor: "settings/usertemplate" + hosts: [] + objectFlag: [] + operation: + - command: "udm/get" + option: "" + + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-blocklists" + description: "UDM - Blocklists" + flavor: "blocklists/all" + hosts: [] + objectFlag: [] + operation: + - command: "udm/*" + option: "objectType=blocklists/*" + flavor: "blocklists/all" + + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-contacts" + description: "UDM - Contacts" + flavor: "users/contact" + hosts: [] + objectFlag: [] + operation: + - command: "udm/reports/query" + option: "" + - command: "udm/meta_info" + option: "" + - command: "udm/containers" + option: "" + - command: "udm/types" + option: "" + - command: "udm/properties" + option: "" + - command: "udm/layout" + option: "" + - command: "udm/policies" + option: "" + - command: "udm/values" + option: "" + - command: "udm/query" + option: "" + - command: "udm/*" + option: "objectType=users/contact" + - command: "udm/*" + option: "!objectType" + - command: "udm/query" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/properties" + option: "objectType=policies/*" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-printers" + description: "UDM - Printers" + flavor: "shares/print" + hosts: [] + objectFlag: [] + operation: + - command: "udm/*" + option: "!objectType" + - command: "udm/*" + option: "objectType=shares/print*" + - command: "udm/query" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/properties" + option: "objectType=policies/*" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-dhcp" + description: "UDM - DHCP" + flavor: "dhcp/dhcp" + hosts: [] + objectFlag: [] + operation: + - command: "udm/query" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/*" + option: "objectType=dhcp/*" + - command: "udm/properties" + option: "objectType=policies/*" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-dns" + description: "UDM - DNS" + flavor: "dns/dns" + hosts: [] + objectFlag: [] + operation: + - command: "udm/query" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/*" + option: "objectType=dns/*" + - command: "udm/properties" + option: "objectType=policies/*" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-mail" + description: "UDM - Mail" + flavor: "mail/mail" + hosts: [] + objectFlag: [] + operation: + - command: "udm/query" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/*" + option: "objectType=mail/*" + - command: "udm/properties" + option: "objectType=policies/*" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-network" + description: "UDM - Network" + flavor: "networks/network" + hosts: [] + objectFlag: [] + operation: + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/*" + option: "objectType=networks/network" + - command: "udm/properties" + option: "objectType=policies/*" + --- + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-shares" + description: "UDM - Shares" + flavor: "shares/share" + hosts: [] + objectFlag: [] + operation: + - command: "udm/*" + option: "!objectType" + - command: "udm/query" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/*" + option: "objectType=shares/share" + - command: "udm/properties" + option: "objectType=policies/*" + + --- + + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-computers" + description: "UDM - Computers" + flavor: "computers/computer" + hosts: [] + objectFlag: [] + operation: + - command: "udm/query" + option: "objectType=policies/*" + - command: "udm/layout" + option: "objectType=policies/*" + - command: "udm/*" + option: "objectType=computers/*" + - command: "udm/query" + option: "objectType=groups/group" + - command: "udm/properties" + option: "objectType=policies/*" + - command: "udm/*" + option: "!objectType" + - command: "udm/properties" + option: "objectType=groups/group" + - command: "udm/values" + option: "objectType=groups/group" + --- + + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "welcome-all" + description: "Welcome" + flavor: "" + hosts: [] + objectFlag: [] + operation: + - command: "welcome/*" + option: "" + + --- + + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-license" + flavor: "license-import" + description: "UDM - License Import" + operation: + - command: "udm/license/*" + option: "" + hosts: [] + objectFlag: [] + + --- + + action: create + module: settings/umc_operationset + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + properties: + name: "udm-request-license" + flavor: "" + description: "UDM - Request new license" + operation: + - command: "udm/request_new_license" + option: "" + hosts: [] + objectFlag: [] + + --- + action: ensure_list_contains + module: policies/umc + position: "cn=default-umc-all,cn=UMC,cn=policies,{{ ldapBaseDn }}" + properties: + allow: + - "cn=welcome-all,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-contacts,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-groups,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-users,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-computers,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-printers,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-blocklists,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-dhcp,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-dns,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-navigation,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-mail,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-network,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-policies,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-shares,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-portal,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-new-portal,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-syntax,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-license,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-request-license,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-validate,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-reports,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + - "cn=udm-usertemplates,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + --- + action: create + module: policies/umc + position: cn=UMC,cn=policies,{{ ldapBaseDn }} + properties: + name: default-udm-self + --- + action: ensure_list_contains + module: policies/umc + position: "cn=default-udm-self,cn=UMC,cn=policies,{{ ldapBaseDn }}" + properties: + allow: + - "cn=udm-self,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + + 39-domain-portal.yaml: |- + # Source: data-files/default/39-domain-portal.yaml + # SPDX-License-Identifier: AGPL-3.0-only + # SPDX-FileCopyrightText: 2023 Univention GmbH + + --- + # Change showUmc in the domain portal + action: "modify" + module: "portals/portal" + position: "cn=domain,cn=portal,cn=portals,cn=univention,{{ ldapBaseDn }}" + properties: + showUmc: {{ showUmc }} + + --- + # enable SAML login tile + action: "modify" + module: "portals/entry" + position: "cn=login-saml,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" + properties: + activated: true + + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + properties: + allow: + - "allow=cn=passwordchange-all,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + + # 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,{{ ldapBaseDn }}" + # properties: + # policy-reference: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}" + # --- + # action: "modify" + # module: "policies/umc" + # position: "cn=memberserver,cn=computers,{{ ldapBaseDn }}" + # properties: + # policy-reference: "cn=selfservice-umc-servers,cn=UMC,cn=policies,{{ ldapBaseDn }}" + + --- + # Source: ucs/management/univention-self-service/35univention-self-service-passwordreset-umc.inst + action: "create" + module: "settings/extended_attribute" + position: "cn=custom attributes,cn=univention,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + properties: + name: "selfserviceregistrationtemplate" + displayName: " <:strip>" + unixhome: "/home/" + primaryGroup: "cn=Domain Users,cn=groups,{{ ldapBaseDn }}" + shell: "/bin/bash" + --- + action: "create" + module: "container/cn" + position: "{{ ldapBaseDn }}" + properties: + name: "self registered users" + --- + action: "create" + module: "settings/umc_operationset" + position: "cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + properties: + allow: + - "allow=cn=passwordreset-all,cn=operations,cn=UMC,cn=univention,{{ ldapBaseDn }}" + ... + + 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,{{ ldapBaseDn }}" + properties: + name: "self-service-password-change" + icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWtleSI+PHBhdGggZD0iTTIxIDJsLTIgMm0tNy42MSA3LjYxYTUuNSA1LjUgMCAxIDEtNy43NzggNy43NzggNS41IDUuNSAwIDAgMSA3Ljc3Ny03Ljc3N3ptMCAwTDE1LjUgNy41bTAgMGwzIDNMMjIgN2wtMy0zbS0zLjUgMy41TDE5IDQiPjwvcGF0aD48L3N2Zz4K + activated: True + anonymous: False + linkTarget: "samewindow" + displayName: + en_US: "Change your password" + de_DE: "Ihr Passwort ändern" + description: + en_US: "Change your password" + de_DE: "Ihr Passwort ändern" + link: + - - "en_US" + - "#/selfservice/passwordchange" + + --- + action: "create" + module: "portals/entry" + position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" + properties: + name: "self-service-my-profile" + icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48ZWxsaXBzZSBjbGFzcz0iYSIgY3g9Ijc0LjQ1NzQzIiBjeT0iNDguOTk1NzkiIHJ4PSIyMS4yNDEwNiIgcnk9IjIxLjUyMjk1Ii8+PHBhdGggY2xhc3M9ImEiIGQ9Ik0xMTAuMDU3MzcsNzguNDEzMjFjLTIuNjc1NjYtNi4zMTE3MS03LjI3NDc4LTExLjEzNDc3LTE1LjAwMTc3LTExLjQzN2EyNy4wMDI1MiwyNy4wMDI1MiwwLDAsMS00MS4xOTYyMi4wMDAxOEMzOC4zMjgxMiw2Ny41ODksMzUuNDUzLDg2LjYwNzczLDM1LjQ1Myw5OS4wOTA3YzAsOS4wNjk3LDUuOTIxMTUsMTQuNTIwOTMsMTQuODAyODYsMTQuNTIwOTNIOTMuMjgzNTdhMjMuNjg3NTUsMjMuNjg3NTUsMCwwLDEsMTYuNzczOC0zNS4xOTg0MloiLz48cGF0aCBjbGFzcz0iYSIgZD0iTTExMy44MzgzOCw4MS4xMDgxNWEyMC43MDk0OCwyMC43MDk0OCwwLDEsMCwyMC43MSwyMC43MDk0OEEyMC43MzI2OCwyMC43MzI2OCwwLDAsMCwxMTMuODM4MzgsODEuMTA4MTVabTAsMzguNDE5YTE3LjcwOTQ4LDE3LjcwOTQ4LDAsMSwxLDE3LjcxLTE3LjcwOTQ3QTE3LjcyOTQsMTcuNzI5NCwwLDAsMSwxMTMuODM4MzgsMTE5LjUyNzFaIi8+PHBhdGggY2xhc3M9ImEiIGQ9Ik0xMTguNzczNDQsOTMuMzM4NDRsLTEwLjQxMzMzLDEwLjQxMzMzLDMuMzYyMTIsMy40NDY5TDEyMi4xNzc5Miw5Ni43NDNhMi40MDczNSwyLjQwNzM1LDAsMCwwLTMuNDA0NDgtMy40MDQ1NFoiLz48cG9seWdvbiBjbGFzcz0iYSIgcG9pbnRzPSIxMDcuMjgzIDEwNC44MjkgMTA2LjAwNyAxMDkuNTEgMTEwLjY0NiAxMDguMjQ0IDEwNy4yOTkgMTA0LjgxMyAxMDcuMjgzIDEwNC44MjkiLz48L3N2Zz4= + activated: True + anonymous: False + linkTarget: "samewindow" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + + + --- + action: "create" + module: "portals/entry" + position: "cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" + properties: + name: "self-service-protect-account" + icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTEwNi4wNTk5Myw3Mi4yMjA3YTcuNjk5LDcuNjk5LDAsMCwwLTcuNTYyMTMtNy41NTUzNmMtLjg4Ny0uMDIxNTQtMS43NzUtLjAwMzE3LTIuNzc3ODMtLjAwMzE3VjYzLjc2NDFjMC0zLjA3NDc3LjAwNTA2LTYuMTQ5Ni0uMDAxLTkuMjI0NDNBMjAuNzEyODksMjAuNzEyODksMCwwLDAsNTQuNjExMiw1MC42Nzc1NWEyOC43OTU0MiwyOC43OTU0MiwwLDAsMC0uMzIzMDYsNC4xMDM1MmMtLjA0NTc3LDMuMjU4MTgtLjAxNDc3LDYuNTE3NDUtLjAxNDc3LDkuODc2NC0uNzcyNTgsMC0xLjQ5MTI3LS4wMDExNi0yLjIwOTkuMDAwMjRhNy43ODI4Miw3Ljc4MjgyLDAsMCwwLTguMTUwMTQsOC4xMjgxOHEtLjAwNywxNy42ODAyLS4wMDEyMywzNS4zNjA0MWMuMDAwMzcsNC4zMjkyMiwyLjIzODIyLDcuMTY3NjYsNi40NDI0NSw4LjE4NDIxYS43MTc2MS43MTc2MSwwLDAsMSwuMTk1MTMuMTI2MjhoNDguODk0Yy41MDYxLS4xNTk4NSwxLjAxODc0LS4zMDE3LDEuNTE3MjEtLjQ4MjU1YTcuNjM5ODMsNy42Mzk4MywwLDAsMCw1LjEwMzQ2LTcuMDk4NjlRMTA2LjEwNzYzLDkwLjU0ODE2LDEwNi4wNTk5Myw3Mi4yMjA3Wk02MS4xOTQ3LDYyLjQ4ODFjLjAwMDEyLTIuNjY5NzQtLjAxMTE3LTUuMzM5Ni4wMDI3NC04LjAwOTM0YTEzLjc5MjQxLDEzLjc5MjQxLDAsMCwxLDI3LjM3NC0yLjU5LDM0LjkyNzg0LDM0LjkyNzg0LDAsMCwxLC4yMTgzOCw0Ljc1NjljLjAzMjQxLDIuNjM3NDUuMDA4ODUsNS4yNzU1Ny4wMDg4NSw3Ljk2OEg2MS4xOTQ2NEM2MS4xOTQ2NCw2My44NzcyLDYxLjE5NDY0LDYzLjE4MjYyLDYxLjE5NDcsNjIuNDg4MVpNODkuMDI5OSw5Ni4zNzlhNS4wMTI4Miw1LjAxMjgyLDAsMCwxLTQuNTk2LDMuNTMyMjJxLS4yNDU4MS4wMTg4Ny0uNDgzNTIuMDE4OGE1LjEzMTUyLDUuMTMxNTIsMCwwLDEtNC40MTQ1NS0yLjQ0NjIzLDcuMzQxNjMsNy4zNDE2MywwLDAsMS00LjUwNjgzLDEuNTMwNTgsNy40MzgxOCw3LjQzODE4LDAsMSwxLDMuODE5NjQtMTMuODAxMDgsMS44ODE2NCwxLjg4MTY0LDAsMCwxLDEuNjk2NTktMS4wODAzOSwxLjkzMTUzLDEuOTMxNTMsMCwwLDEsLjE5NDk1LjAwOTg5LDEuODk0ODMsMS44OTQ4MywwLDAsMSwxLjY5MjYzLDEuODkyN3EuMDA2NTksMS41NTY0OS4wMDI4NiwzLjExM2wtLjAwMDU0LDEuMzcwNzNMODIuNDM0LDkxLjcxNzE2Yy0uMDAxNTIuOTc3NDgtLjAwMzExLDEuOTU1LjAwNiwyLjkzMjI1YTEuNTQxNzIsMS41NDE3MiwwLDAsMCwxLjA0MDgzLDEuNDIzMSwxLjY1NTQ3LDEuNjU1NDcsMCwwLDAsLjU1MjMxLjA5NjE5LDEuNDgzNTIsMS40ODM1MiwwLDAsMCwxLjE2NS0uNTUyMzcsMS42MTI0OCwxLjYxMjQ4LDAsMCwwLC4yODIyOS0uNTEzMjQsMTAuNzc2MTEsMTAuNzc2MTEsMCwwLDAtMS45Mjg1My0xMC41MjI3MSwxMC41NjIwOSwxMC41NjIwOSwwLDAsMC04LjU3OTQtNC4wNjc1cS0uMjU0NywwLS41MTI5NC4wMDk1OGExMS4wNjQyOCwxMS4wNjQyOCwwLDAsMC0xLjQyMDUzLDIxLjkzODQ4LDExLjUyMjE5LDExLjUyMjE5LDAsMCwwLDIuMDIyNy4xODMyOSwxMS4wMTcyNywxMS4wMTcyNywwLDAsMCw1LjU0NTU5LTEuNTMxLDIuMjI2LDIuMjI2LDAsMCwxLDEuMTAyNTQtLjMwOTU3LDEuODIxMjQsMS44MjEyNCwwLDAsMSwxLjYwODI4Ljk1ODYyLDEuODcsMS44NywwLDAsMS0uNzMxLDIuNTY2NTMsMTQuMjU1MzQsMTQuMjU1MzQsMCwwLDEtNC4zMTM0MSwxLjcyNjEzLDE1LjMxODg2LDE1LjMxODg2LDAsMCwxLTMuMjQ2MjIuMzUxLDE0Ljg0MjY4LDE0Ljg0MjY4LDAsMCwxLTE0LjU0MzQ2LTExLjc0LDE0Ljg2NDU5LDE0Ljg2NDU5LDAsMCwxLDExLjI5MDI5LTE3LjY3NTksMTQuODI2NzIsMTQuODI2NzIsMCwwLDEsMTcuODAyMTgsMTEuNzc3QTE0LjMyNTUsMTQuMzI1NSwwLDAsMSw4OS4wMjk5LDk2LjM3OVoiLz48cGF0aCBjbGFzcz0iYSIgZD0iTTc1LjAxOTUzLDg3LjkxMDc3YTMuNjYzNzYsMy42NjM3NiwwLDEsMC0uMDIyMjgsNy4zMjc0NWwuMDA0ODguMjQ5NTcuMDA0ODgtLjAwMDQ5di0uMjQ5MDhhMy42NzM0OSwzLjY3MzQ5LDAsMCwwLDMuNjUyMjMtMy42NDkxN0EzLjY2NTgzLDMuNjY1ODMsMCwwLDAsNzUuMDE5NTMsODcuOTEwNzdaIi8+PC9zdmc+ + activated: True + anonymous: False + linkTarget: "samewindow" + 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,{{ ldapBaseDn }}" + properties: + name: "self-service-password-forgotten" + icon: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTAgMTUwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDojZmZmO308L3N0eWxlPjwvZGVmcz48cGF0aCBjbGFzcz0iYSIgZD0iTTExOS4yMjg5MSw3NC40OTg1NWgtNy4xNDAyQTQxLjcxNjg4LDQxLjcxNjg4LDAsMCwwLDcyLjc4NzMyLDMzLjQwODM0YTMuMDI1NDksMy4wMjU0OSwwLDAsMC0uNTQ2NjktLjA3OTY1Yy0uMzEwMTktLjAxMzc5LS42MTIxMy4wMTI2NC0uOTIxLjAwNTc0LS4zMDc2MS0uMDA2NzgtLjYwNjkzLS4wNDYwOC0uOTE2MDctLjA0NjA4LS40Mjk0NSwwLS44NTIwNS4wNDY4MS0xLjI3OTc5LjA1OTg3LS42Mzc1MS4wMTkwNS0xLjI3MjU4LjA0MTA4LTEuOTAzMDcuMDg4ODctLjcxNzcyLjA1NDQ0LTEuNDI4LjE0MDI2LTIuMTM4NjguMjMxMTQtLjYyNC4wOC0xLjI0NzkyLjE1NTQ2LTEuODYzNTguMjYzMDYtLjc0Mjg2LjEyOTIxLTEuNDc0MTguMjk3MTItMi4yMDY3My40NjU4OC0uNTUxMTUuMTI3NzUtMS4xMDUyOC4yNDMtMS42NDgxOS4zOTI1OC0uODM1NTcuMjI4NzYtMS42NTQxOC41MDQ3Ni0yLjQ3MjQxLjc4NDc5LS40MTMzMy4xNDIzNC0uODMzNjIuMjY2NDgtMS4yNDExNS40MjEyNy0uOTkwNzMuMzc0NDUtMS45NTg1Ni44MDI5MS0yLjkxODE1LDEuMjUyNDQtLjIxNjYyLjEwMTgtLjQ0MS4xODc4Ni0uNjU1NjQuMjkzMzNhNDEuNjg2ODIsNDEuNjg2ODIsMCwwLDAtMTAuMDQxNjMsNi44Nzg2Yy0uMDUxODguMDQ4LS4wNzEuMTE0MzItLjExODc3LjE2NTFBNDEuNTY2LDQxLjU2NiwwLDAsMCwyOC43MzAxOSw3My4xNjI4NmMtLjAyMDM5LjQ2NC4wMTE4NC45MjEuMDA2NTMsMS4zODMxOGEyLjk5OTUyLDIuOTk5NTIsMCwwLDAtLjA0NTg0LjQ1NGMwLC4zNTE5My4wNDQxMy42OTI4MS4wNTI4NiwxLjA0MjcyLjAxODkyLjc5OC4wNTY4OCwxLjU5MTI1LjEyMDYsMi4zODE3OC4wNDY4Mi41NzI1MS4xMDU4NCwxLjE0LjE3NTY2LDEuNzA1ODdxLjE1NDE5LDEuMjY0LjM4NCwyLjUwOWMuMDkxMy40OTEuMTg5MzMuOTc4LjI5Nzg1LDEuNDYyODlxLjI5NTgsMS4zMzE5MS42NzkzMiwyLjYzNmMuMTIwNzMuNDEwNjQuMjQ0ODcuODE4NDguMzc3ODEsMS4yMjM4MnEuNDQ2NCwxLjM2NjYuOTg4NywyLjY5NjE2Yy4xNDMuMzUxNjkuMjg4MDkuNzAxLjQ0MDM3LDEuMDQ3ODVxLjU4ODc4LDEuMzQzLDEuMjc0NiwyLjY0MTg1Yy4xNzMyOC4zMjk0Ny4zNDkxMi42NTYuNTMxLjk4MDE2cS43MDQ1OCwxLjI1NTc0LDEuNDk4NTMsMi40NjQxOC4zMzEzNC41MDU0Ni42NzYxNS45OTk2OS43OTM0LDEuMTM2MjcsMS42NjUsMi4yMjVjLjI3NTM5LjM0Mzc1LjU1NjM5LjY4MDI5Ljg0MjIyLDEuMDE1MDcuMzE5NzYuMzc0NDUuNjA3MTguNzY5MjkuOTQxMjgsMS4xMzQyOGEzLjAyNjE2LDMuMDI2MTYsMCwwLDAsLjQ1NjM2LjQwMzA4LDQxLjYxNTc5LDQxLjYxNTc5LDAsMCwwLDU5LjgwNDQ1LjkyNTU5LDMuMDIwODksMy4wMjA4OSwwLDEsMC00LjI3MjIyLTQuMjcyMTVBMzUuNjEzMzEsMzUuNjEzMzEsMCwwLDEsNDMuMjg0Miw5OC4xMTEyOWMtLjI0MTg4LS4yODM1MS0uNDgwMjgtLjU2OTEtLjcxMjQ2LS44NTg3MXEtLjc0NjE2LS45MzExOC0xLjQzMDQ4LTEuOTExNzQtLjI5MjIzLS40MTktLjU3MTQxLS44NDQ3OS0uNjc4MjMtMS4wMzQyNy0xLjI4Njg3LTIuMTE1NzhjLS4xNTQ0OC0uMjc1NTItLjMwMzgzLS41NTMxLS40NTA2Mi0uODMyMTZxLS41ODQtMS4xMDk5LTEuMDkxOTItMi4yNjM0MmMtLjEyOTctLjI5NTc4LS4yNTM4NC0uNTkzNjMtLjM3NTMtLjg5Mjc3cS0uNDYxNy0xLjEzNDc5LS44NDYtMi4zMDcxOS0uMTcwMzgtLjUyMTg1LS4zMjM4NS0xLjA0OTA3LS4zMjUzOC0xLjEwNzUxLS41Nzg1LTIuMjQ0NTctLjE0MDM0LS42MzExNS0uMjU4LTEuMjY3ODhjLS4xMzAwNy0uNzAwMjUtLjIzNjI3LTEuNDA4MzItLjMyNDc3LTIuMTIyMDctLjA2MDYxLS40OTUxOC0uMTEzMzQtLjk5MTU4LS4xNTMzMi0xLjQ5MS0uMDUzNTktLjY1OC0uMDgzNjgtMS4zMjIzOC0uMTAwNzctMS45ODk4Ni0uMDIwMi0uODI4NS0uMDQ4MjItMS42NTYwNy0uMDExMjMtMi40OTE4OUEzNS43MjEyLDM1LjcyMTIsMCwwLDEsNTcuOTAxODIsNDEuNjA3Yy4xNjYtLjA2MjA3LjMzNjQ5LS4xMTEyLjUwMzQyLS4xNzA4NC44NzUzLS4zMTQ0NSwxLjc2MzEyLS42MDE1LDIuNjY3NDItLjg0Nzc3LjMzMy0uMDkwMDkuNjcxODEtLjE1OTU1LDEuMDA3NjktLjIzOTkzLjc1MDYxLS4xODEwOSwxLjUwNi0uMzQ4NjQsMi4yNzMyNS0uNDgxMi40NDE1OS0uMDc1NTcuODg3OTQtLjEyOTIyLDEuMzMzMzEtLjE4ODE4LjY4MTgzLS4wOTEyNCwxLjM2NjQtLjE3MjI0LDIuMDU4OS0uMjI0MTIuNDk3ODctLjAzNjg2Ljk5OS0uMDUzODMsMS41LS4wNzAwNy42NDc4OS0uMDIxMTcsMS4yOTgzNC0uMDI4MzgsMS45NTM2OC0uMDE0MTZhMzUuNjc4MywzNS42NzgzLDAsMCwxLDM0Ljg0Njg2LDM1LjEyNzg3SDk4Ljk1NzU0Yy0yLjIxNTUxLDAtMi43NDY0NiwxLjI4MTgtMS4xNzk4MSwyLjg0ODM5bDguNDY3MTEsOC40NjcxYTQuMDQwMDgsNC4wNDAwOCwwLDAsMCw1LjY5Njg0LDBsOC40NjcxNi04LjQ2NzFDMTIxLjk3NTM3LDc1Ljc4MDM1LDEyMS40NDQ1NCw3NC40OTg1NSwxMTkuMjI4OTEsNzQuNDk4NTVaIi8+PHBhdGggY2xhc3M9ImEiIGQ9Ik01Ny4wMjQ2Miw3My4wMjMyN3EtLjAwMyw3LjY4OTMzLS4wMDA1NSwxNS4zNzg3M0EzLjM3NDkyLDMuMzc0OTIsMCwwLDAsNTkuODI2LDkxLjk2MTM4YS4zMTI3Ni4zMTI3NiwwLDAsMSwuMDg0ODQuMDU0OTNIODEuMTc1NTZjLjIyMDA5LS4wNjk1MS40NDMwNi0uMTMxMjIuNjU5ODUtLjIwOTgzQTMuMzIyNzcsMy4zMjI3NywwLDAsMCw4NC4wNTUsODguNzE5MTNxLjAxODg1LTcuOTcwODUtLjAwMi0xNS45NDE3MWEzLjM0ODQ1LDMuMzQ4NDUsMCwwLDAtMy4yODg4OC0zLjI4NTk1Yy0uMzg1NzQtLjAwOTM0LS43NzE5MS0uMDAxMzQtMS4yMDgxMi0uMDAxMzR2LS4zOTA1NmMwLTEuMzM3MjguMDAyMjUtMi42NzQ1Ni0uMDAwMzctNC4wMTE4NEE5LjAwODM2LDkuMDA4MzYsMCwwLDAsNjEuNjc3MjcsNjMuNDA4YTEyLjUyODU3LDEyLjUyODU3LDAsMCwwLS4xNDA1LDEuNzg0NzNjLS4wMTk5LDEuNDE3LS4wMDY0MSwyLjgzNDUzLS4wMDY0MSw0LjI5NTM1LS4zMzYsMC0uNjQ4NTYtLjAwMDQ5LS45NjExMi4wMDAxMkEzLjM4NDksMy4zODQ5LDAsMCwwLDU3LjAyNDYyLDczLjAyMzI3Wk03MS4wMjkxNCw4Ny41MjM4OGExLjM4MzQ4LDEuMzgzNDgsMCwwLDEtLjk0OTIyLjM2NTI0LDEuNDM5MzEsMS40MzkzMSwwLDAsMS0uOTcyNjYtLjM2MDM1LDEuMjY2NzEsMS4yNjY3MSwwLDAsMS0uNDE1LTEuMDA4NzksMS4zMDA2NiwxLjMwMDY2LDAsMCwxLC40MDEzNy0uOTY3NzgsMS4zNjA0MiwxLjM2MDQyLDAsMCwxLC45ODYzMy0uMzkyNThBMS4zNDA4NCwxLjM0MDg0LDAsMCwxLDcxLjQ0MDI3LDg2LjUyLDEuMjc1NDgsMS4yNzU0OCwwLDAsMSw3MS4wMjkxNCw4Ny41MjM4OFptMy40MDkxOC04LjQ1MjYzQTQuMTYzNjIsNC4xNjM2MiwwLDAsMSw3My42OTAyNyw4MC4wOHEtLjQzMzU5LjQyNDgtMS41NTY2NCwxLjQyODcxYTYuMTM4MjUsNi4xMzgyNSwwLDAsMC0uNDk3MDcuNDk3NTUsMi4wMzQ0NSwyLjAzNDQ1LDAsMCwwLS4yNzkzLjM5MjA5LDEuOTI0NTMsMS45MjQ1MywwLDAsMC0uMTQwNjIuMzU2Yy0uMDM0MTguMTE4NjUtLjA4NC4zMjc2NC0uMTUxMzcuNjI1NDlhMS4wMTU1NCwxLjAxNTU0LDAsMCwxLTEuMDg1OTQuOTQ5MjIsMS4xMTE3MiwxLjExMTcyLDAsMCwxLS43OTg4Mi0uMzEwMDYsMS4yMjA0OCwxLjIyMDQ4LDAsMCwxLS4zMjQyMi0uOTIyMzYsMy4yMzYxMywzLjIzNjEzLDAsMCwxLC44NjcxOC0yLjMxNCwxNC40Njg2NSwxNC40Njg2NSwwLDAsMSwxLjA1OTU3LTEuMDA4M2MuMzg4NjgtLjM0MDgyLjY3MDktLjU5ODE0Ljg0Mzc1LS43NzE0OGEyLjYyMTksMi42MjE5LDAsMCwwLC40Mzg0OC0uNTc5NTksMS40MDcxLDEuNDA3MSwwLDAsMCwuMTc3NzQtLjY5Mzg1LDEuNjExMDcsMS42MTEwNywwLDAsMC0uNTQzLTEuMjMxOTMsMS45ODIyMSwxLjk4MjIxLDAsMCwwLTEuNDAxMzctLjUwMjQ1LDEuOTM4LDEuOTM4LDAsMCwwLTEuNDc4NTIuNTA2ODQsNC4wNDk0NSw0LjA0OTQ1LDAsMCwwLS44MDM3MSwxLjQ5MjE5cS0uMzA5MDgsMS4wMzItMS4xNzY3NSwxLjAzMTc0YTEuMTU4MywxLjE1ODMsMCwwLDEtLjg2MzI5LS4zNjA4NCwxLjEwMjIxLDEuMTAyMjEsMCwwLDEtLjM1MTU2LS43ODAyOCwzLjMwMzc4LDMuMzAzNzgsMCwwLDEsLjU1NzYyLTEuNzU3MzIsNC4yODY0Myw0LjI4NjQzLDAsMCwxLDEuNjI0LTEuNDc0MTIsNS4xMTg4Niw1LjExODg2LDAsMCwxLDIuNDkyMTktLjU4NCw1LjMxOTA5LDUuMzE5MDksMCwwLDEsMi4zMzY5MS40ODgyOEEzLjc5MDIxLDMuNzkwMjEsMCwwLDEsNzQuMjAxLDc1Ljg4NTdhMy4yNTg2MSwzLjI1ODYxLDAsMCwxLC41NTI3NCwxLjgyNTY4QTIuODIxODIsMi44MjE4MiwwLDAsMSw3NC40MzgzMiw3OS4wNzEyNVpNNjQuNTQwNTUsNjguNTQ0NTdjLjAwMDA2LTEuMTYxMTMtLjAwNDg4LTIuMzIyMjYuMDAxMTYtMy40ODMzM2E1Ljk5ODU0LDUuOTk4NTQsMCwwLDEsMTEuOTA1NC0xLjEyNjQ3LDE1LjE5MjQ0LDE1LjE5MjQ0LDAsMCwxLC4wOTUsMi4wNjg4NWMuMDE0MSwxLjE0Ny4wMDM4NCwyLjI5NDQzLjAwMzg0LDMuNDY1MzlINjQuNTQwNTVaIi8+PC9zdmc+ + activated: True + anonymous: True + linkTarget: "samewindow" + 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,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + - "cn=self-service-password-forgotten,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" + - "cn=self-service-password-change,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" + + --- + action: "create" + module: "portals/portal" + position: "cn=portal,cn=portals,cn=univention,{{ ldapBaseDn }}" + 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,{{ ldapBaseDn }}" + - "cn=self-service-password,cn=category,cn=portals,cn=univention,{{ ldapBaseDn }}" + + --- + action: "ensure_list_contains" + module: "portals/portal" + position: "cn=domain,cn=portal,cn=portals,cn=univention,{{ ldapBaseDn }}" + properties: + userLinks: + - "cn=self-service-protect-account,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" + - "cn=self-service-password-forgotten,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" + - "cn=self-service-password-change,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" + - "cn=self-service-my-profile,cn=entry,cn=portals,cn=univention,{{ ldapBaseDn }}" + + 42-readonly-user.yaml: |- + # Source: data-files/default/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 +--- +# Source: nubus/charts/nubusStackDataUms/templates/configmap-ucr.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "ums-stack-data-ums-ucr" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.89.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/domain-service-users: cn=Domain Service Users,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: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + self-service/ldap_attributes: jpegPhoto,mail,telephoneNumber,roomNumber,departmentNumber,st,homePhone,mobile,homePostalAddress + self-service/udm-rest-server: portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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,e-mail,phone,roomnumber,departmentNumber,country,homeTelephoneNumber,mobileTelephoneNumber,homePostalAddress + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + umc/self-service/passwordreset/email/server: postfix.yschmidt-opendesk-argo.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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: Portal - openDesk + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: stack-data-ums + helm.sh/chart: nubusStackDataUms-0.89.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-udm-listener + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning-udm-listener + helm.sh/chart: nubusUdmListener-0.49.3 + 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-notifier" + 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-udm-listener-files" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning-udm-listener + helm.sh/chart: nubusUdmListener-0.49.3 + 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-notifier + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.29.0 + 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: "" + MACHINE_SECRET_FILE: "" + # 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: "" + +... +--- +# Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: ums-udm-rest-api-ldap-conf + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.29.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.38.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.38.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.38.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nubus + helm.sh/chart: nubus-1.8.0 + 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/nubusLdapServer/templates/serviceaccount.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: ums-ldap-server + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +rules: +- apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: + - create +- apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: + - watch + - get + - update + resourceNames: ["ldap-primary-leader"] +- apiGroups: [""] + resources: ["pods"] + verbs: ["patch"] + resourceNames: + - ums-ldap-server-primary-0 + - ums-ldap-server-primary-1 +- apiGroups: [""] + resources: ["services"] + verbs: ["patch"] + resourceNames: + - ums-ldap-server-primary +- apiGroups: [""] + resources: ["configmaps"] + verbs: ["create"] +- apiGroups: [""] + resources: ["configmaps"] + verbs: ["get", "update", "patch"] + resourceNames: + - ums-ldap-server-status +--- +# Source: nubus/charts/nubusLdapServer/templates/serviceaccount.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: ums-ldap-server + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm +subjects: +- kind: ServiceAccount + name: ums-ldap-server + namespace: "yschmidt-opendesk-argo" +roleRef: + kind: Role + name: ums-ldap-server + apiGroup: rbac.authorization.k8s.io +--- +# Source: nubus/charts/keycloak/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "ums-keycloak" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: keycloak + helm.sh/chart: keycloak-0.9.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.17.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.17.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.17.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.17.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.16.1 +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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-notifier + helm.sh/chart: nubusLdapNotifier-0.34.1 + 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-notifier.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: ums-ldap-server-primary-notifier + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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 + statefulset.kubernetes.io/pod-name: ums-ldap-server-primary-0 +... +--- +# Source: nubus/charts/nubusLdapServer/templates/service-primary-mirror.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: ums-ldap-server-primary-0 + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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 + statefulset.kubernetes.io/pod-name: "ums-ldap-server-primary-0" # This will be updated by the leader elector +... +--- +# Source: nubus/charts/nubusLdapServer/templates/service-primary-mirror.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: ums-ldap-server-primary-1 + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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 + statefulset.kubernetes.io/pod-name: "ums-ldap-server-primary-1" # This will be updated by the leader elector +... +--- +# Source: nubus/charts/nubusLdapServer/templates/service-primary.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: ums-ldap-server-primary + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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 + statefulset.kubernetes.io/pod-name: "will-be-updated-by-elector" # This will be updated by the leader elector +... +--- +# Source: nubus/charts/nubusLdapServer/templates/service-secondary.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: ums-ldap-server-secondary + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: proxy +... +--- +# Source: nubus/charts/nubusPortalFrontend/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "ums-portal-frontend" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.63.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.63.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.3.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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.3.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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-api + helm.sh/chart: nubusProvisioning-0.49.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.29.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-gateway + helm.sh/chart: nubusUmcGateway-0.38.0 + 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: "yschmidt-opendesk-argo" + 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.38.0 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.38.0 + 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.17.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-authorization-api + template: + metadata: + annotations: + checksum/config: d7947c399537b10083f81f1342a50f774514fb4d775fe3a1461ef55a3f7f5b68 + 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.17.0 + spec: + serviceAccountName: ums-guardian + 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: null + 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.17.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-management-api + template: + metadata: + annotations: + checksum/config: edd431a7429fd937cb9b4a78c92bfa5f8f9aa3bdac936d3a0091e5813fe11b1b + 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.17.0 + spec: + serviceAccountName: ums-guardian + 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" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + 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: null + 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.17.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-guardian-management-ui + template: + metadata: + annotations: + checksum/config: f57692262288fcf0ef25edb2babd27bd672597a50143c7e63a88dc67ea12fcd1 + 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.17.0 + spec: + serviceAccountName: ums-guardian + initContainers: + - name: "app-configuration" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + 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" + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + env: + - name: "SKIP_CONFIG_GENERATION" + value: "TRUE" + envFrom: + - configMapRef: + name: ums-guardian-management-ui + command: + - sh + - -c + - '/entrypoint.sh; cp -a /app/* /target/app/' + volumeMounts: + # NOTE: using target approach + - name: "app-config" + mountPath: "/target/app" + containers: + - name: "management-ui" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + 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: "var-lib" + mountPath: "/var/lib/nginx" + - name: "var-run" + mountPath: "/var/run" + ports: + - name: http + containerPort: 8080 + 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: "var-lib" + emptyDir: { } + - name: "var-run" + emptyDir: { } + - 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.17.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: f8fd5444dd86861996f4ea5d4e7590c2fe5e2030ad20fdace15858bd616a683d + 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.17.0 + spec: + serviceAccountName: ums-guardian + 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.16.1 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-keycloak-extensions-handler + template: + metadata: + annotations: + checksum/config: 3e9f8de9771f7e6068fc133a5cc89893614dd7763313d6660a5e2c2c42922828 + 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.16.1 + spec: + serviceAccountName: ums-keycloak-extensions-handler + containers: + - name: "keycloak-bfp-handler" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + 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_USER + value: kcadmin + - name: KC_PASS + valueFrom: + secretKeyRef: + name: ums-opendesk-keycloak-credentials + key: "admin_password" + - name: POSTGRES_USER + value: keycloak_extensions_user + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: ums-keycloak-extensions-postgresql-opendesk-credentials + key: "umcKeycloakExtensionsDatabasePassword" + - name: SMTP_USERNAME + value: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + - name: SMTP_PASSWORD + valueFrom: + secretKeyRef: + name: ums-keycloak-extensions-smtp-opendesk-credentials + key: "umcKeycloakExtensionsSmtpPassword" + 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.16.1 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-keycloak-extensions-proxy + template: + metadata: + annotations: + checksum/config: 30f8314e918a1ce1b9adcfb7e6d8e1fc74ddd9ea8c21456c2e75892908693bf9 + 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.16.1 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy:0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056" + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: ums-keycloak-extensions-proxy + env: + - name: KC_USER + value: kcadmin + - name: KC_PASS + valueFrom: + secretKeyRef: + name: ums-opendesk-keycloak-credentials + key: admin_password + - name: POSTGRES_USER + value: keycloak_extensions_user + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: ums-keycloak-extensions-postgresql-opendesk-credentials + key: umcKeycloakExtensionsDatabasePassword + ports: + - name: http + containerPort: 8181 + protocol: TCP + volumeMounts: + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + volumes: +... +--- +# Source: nubus/charts/nubusLdapServer/templates/deployment-proxy.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-ldap-server-proxy + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: 2 + 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: 9e2d9210bdb5b54c41b01640eaff7df785c4fa4226dad7fc6f44b5b9a547d7e9 + checksum/configmap-proxy: 9fcd0b7e145f1ff264a865f93ec51a51b2417be18e21df91db3f35015c37d4fc + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: 20 + initContainers: + - name: "univention-compatibility" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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 + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: "load-portal-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: "load-ox-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: "load-opendesk-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: "load-opendesk-a2g-mapper-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: "wait-for-secondary" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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 + privileged: false + 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.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + 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 + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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 + readOnly: true + - name: plugin-targets + mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d + subPath: ldap-acls + + readOnly: false + - 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 + 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" +... +--- +# Source: nubus/charts/nubusPortalFrontend/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: "ums-portal-frontend" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.63.0 + 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: 2eb70c692dd148ad4e9ac43015d8d73fedd90bd2e2ab969763a8b7ef006922e9 + checksum/branding-configmap: 9a39db2d72c22b79d74e75c7aa560fe75270915d8df5a5d6e2476390c5010257 + labels: + app.kubernetes.io/name: portal-frontend + helm.sh/chart: nubusPortalFrontend-0.63.0 + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update:1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b" + imagePullPolicy: "IfNotPresent" + env: + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.63.0 + 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: e3d49ae79f8cbd656683f2d1a0b3a27df49829d89c6f68774e5239eb56ec1f78 + labels: + app.kubernetes.io/name: portal-server + helm.sh/chart: nubusPortalServer-0.63.0 + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-server:0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27" + 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 + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + containers: + - name: "portal-server" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-server:0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27" + imagePullPolicy: "IfNotPresent" + env: + - name: OBJECT_STORAGE_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + name: "ums-portal-server-minio-credentials" + key: "accessKey" + - name: OBJECT_STORAGE_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + name: "ums-portal-server-minio-credentials" + key: "secretKey" + 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: "password" + - name: tmp-volume + mountPath: /tmp + - name: secret-udm + mountPath: /var/secrets/udm_api_password + subPath: "password" + 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: secret-udm + secret: + secretName: "ums-stack-data-ums-svc-portal-server" + - name: tmp-volume + emptyDir: {} +--- +# Source: nubus/charts/nubusProvisioning/templates/deployment-dispatcher.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ums-provisioning-dispatcher + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-dispatcher + helm.sh/chart: nubusProvisioning-0.49.3 + 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: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-dispatcher + helm.sh/chart: nubusProvisioning-0.49.3 + 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" ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-api + env: + - name: NATS_USER + value: "dispatcher" + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-dispatcher-credentials + key: NATS_PASSWORD + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher:0.49.3@sha256:1089683a7e04259b335c79c13ceca2879d5d834a13d9c93ef62315f3086c9efd" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-dispatcher + env: + - name: NATS_USER + value: "dispatcher" + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-dispatcher-credentials + key: NATS_PASSWORD + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-api + helm.sh/chart: nubusProvisioning-0.49.3 + 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: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-api + helm.sh/chart: nubusProvisioning-0.49.3 + 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" ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-api + env: + - name: NATS_USER + value: "api" + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: NATS_PASSWORD + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-api + env: + - name: ADMIN_USERNAME + value: "admin" + - name: ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: ADMIN_PASSWORD + - name: EVENTS_USERNAME_UDM + value: "udm" + - name: EVENTS_PASSWORD_UDM + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: EVENTS_PASSWORD_UDM + - name: PREFILL_USERNAME + value: "prefill" + - name: PREFILL_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: PREFILL_PASSWORD + - name: ADMIN_NATS_USER + value: "placeholder" + - name: ADMIN_NATS_PASSWORD + value: "placeholder" + - name: NATS_USER + value: "api" + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: NATS_PASSWORD + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-prefill + helm.sh/chart: nubusProvisioning-0.49.3 + 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: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-prefill + helm.sh/chart: nubusProvisioning-0.49.3 + 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" ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill:0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-provisioning-prefill + env: + - name: UDM_USERNAME + value: "cn=admin" + - name: UDM_PASSWORD + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + volumeMounts: + - name: wait-for-udm + mountPath: /scripts + resources: + limits: + cpu: 288 + memory: 1Gi + requests: + cpu: 10m + memory: 16Mi + - name: wait-for-api-to-start + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill:0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-prefill + env: + - name: NATS_USER + value: "prefill" + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-prefill-credentials + key: NATS_PASSWORD + - name: UDM_USERNAME + value: "cn=admin" + - name: UDM_PASSWORD + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + - name: PREFILL_USERNAME + value: "prefill" + - name: PREFILL_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: PREFILL_PASSWORD + 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: "yschmidt-opendesk-argo" + 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.49.3 + 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: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 + 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.49.3 + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer:0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e" + 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: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + - name: "load-portal-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + - name: "load-ox-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + 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: 1 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + - name: "load-opendesk-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + - name: "load-opendesk-a2g-mapper-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + - name: wait-for-nats + command: [ "poetry", "run", "python", "/scripts/wait-for-nats.py" ] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api:0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-api + env: + - name: NATS_USER + value: "udmtransformer" + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-transformer-credentials + key: NATS_PASSWORD + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer:0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-provisioning-common + - configMapRef: + name: ums-provisioning-udm-transformer + env: + - name: NATS_USER + value: "udmtransformer" + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-transformer-credentials + key: NATS_PASSWORD + - name: EVENTS_USERNAME_UDM + value: "udm" + - name: EVENTS_PASSWORD_UDM + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: EVENTS_PASSWORD_UDM + - name: LDAP_BIND_PW + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + 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 + 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 + 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.14.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-selfservice-listener + template: + metadata: + annotations: + checksum/configmap: 76c62f016e9d1e4eb0e5913d0c2a0d45837946dfe402a0fc8ec60c1bf55d8fca + 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 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + imagePullPolicy: "IfNotPresent" + command: ["/bin/bash", "/scripts/wait-for-provisioning-api.sh"] + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - name: scripts + mountPath: /scripts + env: + - name: PROVISIONING_API_USERNAME + value: selfservice + - 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation:0.14.0@sha256:999c50058a02f6006a8d1732b651a5c738c5ee91fc453dc8ae3fcdbb9d4192c0" + imagePullPolicy: "IfNotPresent" + command: + - /bin/bash + - -c + - | + set -euxo pipefail + poetry run python3 -m invitation + env: + - name: PROVISIONING_API_USERNAME + value: selfservice + - name: PROVISIONING_API_PASSWORD + valueFrom: + secretKeyRef: + name: ums-selfservice-listener-credentials + key: PROVISIONING_API_PASSWORD + envFrom: + - configMapRef: + name: ums-selfservice-listener-common + 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: + null + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.29.0 + 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: f2c2f0ab9162c70b01a035d98fd89ac341f94aec50f7309f846db2267b3f8e5e + labels: + app.kubernetes.io/name: udm-rest-api + helm.sh/chart: nubusUdmRestApi-0.29.0 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2" + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2" + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api:0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2" + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" + 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: null + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-opendesk-a2g-mapper-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" + 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: null + 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.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2" + 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: adminPassword + - name: credentials-volume + mountPath: /etc/machine.secret + subPath: adminPassword + - 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: "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-ldap-server-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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-gateway + helm.sh/chart: nubusUmcGateway-0.38.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "12.0.29" +spec: + replicas: 1 + strategy: + type: RollingUpdate + 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.38.0 + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + 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.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1" + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + 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.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1" + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1" + 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: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-portal-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-opendesk-a2g-mapper-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + + containers: + - name: "umc-gateway" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway:0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1" + 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: "yschmidt-opendesk-argo" + 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.38.0 + annotations: + intents.otterize.com/service-name: ums-umc-server +spec: + replicas: 1 + strategy: + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: ums-umc-server-proxy + template: + metadata: + annotations: + checksum/configmap: 105906601f7b3c03503c2935a66844ca61874732012d626f0f87349e2946610c + 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.38.0 + spec: + securityContext: + fsGroup: 0 + fsGroupChangePolicy: Always + serviceAccountName: ums-umc-server + terminationGracePeriodSeconds: 5 + containers: + - name: "proxy" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + 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 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: keycloak + helm.sh/chart: keycloak-0.9.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: 163999489175340c6ed413f27e5392c0fd7c03eabfe6bb60239616028bacf024 + intents.otterize.com/service-name: ums-keycloak + labels: + app.kubernetes.io/name: keycloak + helm.sh/chart: keycloak-0.9.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 + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "artifacts.software-univention.de/nubus/keycloak:25.0.6-ucs6@sha256:1db8af70741bca9badeb3d5b0b145244dde1a2579fe4f966e488ce730cb07d65" + 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_USERNAME" + value: keycloak_user + - name: "KC_DB_PASSWORD" + valueFrom: + secretKeyRef: + name: ums-keycloak-postgresql-opendesk-credentials + key: keycloakDatabasePassword + - name: "UNIVENTION_META_JSON" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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.34.1 + 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: 52bd8a8b5b432276dacda90c63fc8127f9a066abdbb1f9b6040d9276875fa950 + 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 + serviceAccountName: ums-ldap-notifier + containers: + - name: "ldap-notifier" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier:0.34.1@sha256:02d1a0d6ce7e154738f4a1c2323f901245b62c23c8e6c27ce19a57ab44cfdaa7" + 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 + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 6669 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 6669 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 6669 + timeoutSeconds: 5 + 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 + - key: apps.kubernetes.io/pod-index + operator: In + values: + - "0" + topologyKey: kubernetes.io/hostname +--- +# Source: nubus/charts/nubusLdapServer/templates/statefulset-primary.yaml +apiVersion: apps/v1 +kind: "StatefulSet" +metadata: + name: ums-ldap-server-primary + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: 2 + podManagementPolicy: OrderedReady + volumeClaimTemplates: + + - metadata: + name: "shared-data" + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: "1Gi" + - metadata: + name: "shared-run" + spec: + accessModes: ["ReadWriteOnce"] + 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: 9e2d9210bdb5b54c41b01640eaff7df785c4fa4226dad7fc6f44b5b9a547d7e9 + checksum/configmap-primary: 25661acec827deb67d9904c34a9360d8cb8a67714f31e9479266e09723ed213d + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: 20 + initContainers: + - name: "univention-compatibility" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-internal-plugins" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + imagePullPolicy: "IfNotPresent" + command: + - sh + - -c + - | + mkdir -p /target/ldap-schema + mkdir -p /target/ldap-acls + 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 + privileged: false + 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.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" + 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 + privileged: false + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-opendesk-a2g-mapper-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" + 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 + privileged: false + 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.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + 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: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + containers: + - name: "openldap" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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" + - name: STATUS_CONFIGMAP + value: ums-ldap-server-status + - name: STATUS_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + livenessProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + readinessProbe: + exec: + command: + - /bin/sh + - -c + - ldapsearch -H ldapi:/// -Y EXTERNAL -b "cn=config" -LLL "(&(objectClass=mdb))" + dn + failureThreshold: 1 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + timeoutSeconds: 5 + startupProbe: + failureThreshold: 10 + initialDelaySeconds: 15 + periodSeconds: 20 + successThreshold: 1 + tcpSocket: + port: 389 + timeoutSeconds: 5 + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + ports: + - name: ldap + containerPort: 389 + protocol: TCP + - name: ldaps + containerPort: 636 + protocol: TCP + 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 + readOnly: true + - name: plugin-targets + mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d + subPath: ldap-acls + + readOnly: false + + - 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 + - name: leader-elector + image: registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ldap-server-elector:0.33.0@sha256:c1304a156094b276199fb263baf93e3704ceece478d7f663061b1b1f05f5931c + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: LEASE_NAME + value: "ldap-primary-leader" + - name: LEASE_DURATION_SECONDS + value: "15" + - name: RETRY_PERIOD_SECONDS + value: "5" + - name: RENEW_DEADLINE_SECONDS + value: "10" + volumeMounts: + - name: "shared-data" + mountPath: /var/lib/univention-ldap + 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" + +... +--- +# Source: nubus/charts/nubusLdapServer/templates/statefulset-secondary.yaml +apiVersion: apps/v1 +kind: "StatefulSet" +metadata: + name: ums-ldap-server-secondary + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: 2 + podManagementPolicy: OrderedReady + volumeClaimTemplates: + + - metadata: + name: "shared-data" + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: "1Gi" + - metadata: + name: "shared-run" + spec: + accessModes: ["ReadWriteOnce"] + 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: 9e2d9210bdb5b54c41b01640eaff7df785c4fa4226dad7fc6f44b5b9a547d7e9 + checksum/configmap-secondary: 978da6d233bffad3a3b6f1e42204300a3cc8957ad9eeafee9673f438506802a6 + labels: + app.kubernetes.io/name: ldap-server + helm.sh/chart: nubusLdapServer-0.34.1 + 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: 20 + initContainers: + - name: "univention-compatibility" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-internal-plugins" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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 + privileged: false + 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.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" + 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 + privileged: false + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-opendesk-a2g-mapper-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 102 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" + 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 + privileged: false + 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.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + 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: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "wait-for-primary" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + containers: + - name: "openldap" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + 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.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984" + 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: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + 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 + readOnly: true + - name: plugin-targets + mountPath: /etc/univention/templates/files/etc/ldap/slapd.conf.d + subPath: ldap-acls + + readOnly: false + + - 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 + 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" + +... +--- +# 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 + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: portal-consumer + app.kubernetes.io/version: 1.16.0 + helm.sh/chart: nubusPortalConsumer-0.63.0 +spec: + serviceName: ums-portal-consumer + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/instance: ums + app.kubernetes.io/name: portal-consumer + template: + metadata: + annotations: + checksum/config: 35dd904a00f3d581133c5f9b63984b8a553a94ae6375552c97c6e8a26f9fb957 + checksum/secret: 468f8dbd741a43c130cac709b318f6b5002bdba3a514d8fa79c89fe60729c45c + intents.otterize.com/service-name: ums-portal-consumer + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: portal-consumer + app.kubernetes.io/version: 1.16.0 + helm.sh/chart: nubusPortalConsumer-0.63.0 + spec: + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: "1" + terminationGracePeriodSeconds: 5 + initContainers: + - name: wait-for-ldap + securityContext: + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + command: ["/bin/bash", "/scripts/wait-for-ldap.sh"] + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + 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-credentials-volume" + mountPath: "/etc/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 + securityContext: + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + command: ["/bin/bash", "/scripts/wait-for-udm.sh"] + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + 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-credentials-volume" + mountPath: "/etc/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 + securityContext: + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + command: ["/usr/bin/python3", "/scripts/wait-for-object-store.py"] + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc" + 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 + securityContext: + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + 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 + - name: "univention-compatibility" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-portal-consumer-common + env: + - name: REQUESTS_CA_BUNDLE + value: "/etc/ssl/certs/ca-certificates.crt" + - 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" + command: + - sh + - -c + - './50-ldap-setup.envsh; cp -a /etc/univention/* /target/etc/univention/' + volumeMounts: + - name: etc-univention-volume + mountPath: /target/etc/univention + + - name: "ums-portal-consumer-ldap-credentials-volume" + mountPath: "/var/secrets/machine_secret" + subPath: "machine.secret" + readOnly: true + - name: "ums-portal-consumer-ldap-credentials-volume" + mountPath: "/etc/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 + containers: + - name: "portal-consumer" + securityContext: + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer:0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-portal-consumer-common + env: + - name: REQUESTS_CA_BUNDLE + value: "/etc/ssl/certs/ca-certificates.crt" + - 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: usr-lib-univention-portal-config-volume + mountPath: /usr/lib/univention-portal/config + - name: etc-univention-volume + mountPath: /etc/univention + readOnly: true + - 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-credentials-volume" + mountPath: "/etc/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: "usr-lib-univention-portal-config-volume" + emptyDir: {} + - name: "etc-univention-volume" + emptyDir: {} + - 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: "1Gi" +--- +# Source: nubus/charts/nubusProvisioning/charts/nats/templates/statefulset.yaml +apiVersion: apps/v1 +kind: "StatefulSet" +metadata: + name: ums-provisioning-nats + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.3.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: 53c56366abd73187e41e32f3abeeb69c21aec733331b4650fb5b91096ab2a284 + labels: + app.kubernetes.io/name: provisioning-nats + helm.sh/chart: nats-0.3.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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/library/nats:2.10.26@sha256:736d575e60135ce1d50fc206675d48d0e57dcaa0704f696f0cb4b5f6dadd49d7" + 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_UDM_LISTENER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-listener-credentials + key: NATS_PASSWORD + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-nats-credentials + key: admin_password + - name: NATS_PROVISIONING_API_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: NATS_PASSWORD + - name: NATS_DISPATCHER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-dispatcher-credentials + key: NATS_PASSWORD + - name: NATS_UDM_TRANSFORMER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-transformer-credentials + key: NATS_PASSWORD + - name: NATS_PREFILL_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-prefill-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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/natsio/nats-server-config-reloader:0.17.1@sha256:f364bb8330d3430666ca09f17c6a43bfaefde32f0f3e79d4a41c588c29936e99" + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/natsio/nats-box:0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51" + imagePullPolicy: "IfNotPresent" + workingDir: /home/nats + env: + - name: SERVER_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: NATS_UDM_LISTENER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-listener-credentials + key: NATS_PASSWORD + - name: NATS_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-nats-credentials + key: admin_password + - name: NATS_PROVISIONING_API_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: NATS_PASSWORD + - name: NATS_DISPATCHER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-dispatcher-credentials + key: NATS_PASSWORD + - name: NATS_UDM_TRANSFORMER_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-udm-transformer-credentials + key: NATS_PASSWORD + - name: NATS_PREFILL_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-prefill-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-udm-listener' + labels: + app.kubernetes.io/name: provisioning-udm-listener + helm.sh/chart: nubusUdmListener-0.49.3 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "1.16.0" +spec: + serviceName: ums-provisioning-udm-listener + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: provisioning-udm-listener + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/config: 'd010754eed8f47b373e2dd6e1a8110e2dbdd6e27f4bf51e0087f79694893d037' + checksum/secret: 'dfb18b47dd62ad11226dcb141c57a41fcf226ace38ecfebc2e88d26fe650a5da' + labels: + app.kubernetes.io/name: provisioning-udm-listener + app.kubernetes.io/instance: ums + spec: + securityContext: + fsGroup: 65534 + fsGroupChangePolicy: Always + sysctls: [] + serviceAccountName: ums-provisioning-udm-listener + terminationGracePeriodSeconds: 5 + containers: + - name: "udm-listener" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 65534 + runAsNonRoot: true + runAsUser: 102 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + privileged: false # Explicitly set privileged to false + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener:0.49.3@sha256:9bd8dd7531e3247761a6347a1889640821121c56435a96c286d1f6385a3152e7" + imagePullPolicy: "IfNotPresent" + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + 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 + envFrom: + - configMapRef: + name: 'ums-provisioning-udm-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" + volumes: + - name: "config-files" + configMap: + name: "ums-provisioning-udm-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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.38.0 + 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: + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: umc-server + app.kubernetes.io/instance: ums + template: + metadata: + annotations: + checksum/configmap: 4941eb87d99515bc5cb280ca1682863759908a792cc0554f1f5c0a9b5b3f15a5 + labels: + app.kubernetes.io/name: umc-server + helm.sh/chart: nubusUmcServer-0.38.0 + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + 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.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d" + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d" + imagePullPolicy: "IfNotPresent" + command: + - sh + - -c + - | + cp -Rv /usr/share/univention-management-console/i18n/ /target/umc-i18n + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-opendesk-a2g-mapper-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d" + 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: plugin-targets + mountPath: /usr/share/univention-management-console/i18n + subPath: umc-i18n + readOnly: true + - name: passwordreset-email-body + mountPath: /usr/share/univention-self-service/email_bodies + readOnly: true + ports: + - name: http + containerPort: 8090 + protocol: TCP + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 30 + successThreshold: 1 + tcpSocket: + port: http + timeoutSeconds: 3 + readinessProbe: + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 30 + successThreshold: 1 + tcpSocket: + port: http + timeoutSeconds: 3 + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/umc-server:0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d" + 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 + 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 + 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/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.10.2 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "0.0.1" + annotations: + argocd.argoproj.io/hook: Sync +spec: + template: + metadata: + annotations: + checksum/config: dfc68a03cb67e395e679d403e3c49f1de9f842af818faea64e4b85bb1660699b + intents.otterize.com/service-name: ums-keycloak-bootstrap + labels: + app.kubernetes.io/name: keycloak-bootstrap + helm.sh/chart: nubusKeycloakBootstrap-0.10.2 + 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 + initContainers: + - name: "wait-for-keycloak" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-keycloak-bootstrap-init + command: ["/usr/bin/python3", "/scripts/wait-for-keycloak.py"] + resources: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - name: "wait-for-keycloak" + mountPath: "/scripts" + containers: + - name: "univention-keycloak-bootstrap" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap:0.10.2@sha256:7406bfee267dff6520b8b3c0db098a79e7f9fe1b45307ea6b1edf26a2bcfc1aa" + imagePullPolicy: "IfNotPresent" + command: + - "/app/entrypoint.sh" + envFrom: + - configMapRef: + name: "ums-keycloak-bootstrap" + env: + - name: KEYCLOAK_USERNAME + value: kcadmin + - name: KEYCLOAK_PASSWORD + valueFrom: + secretKeyRef: + name: ums-opendesk-keycloak-credentials + key: admin_password + - name: LDAP_BIND_DN + value: uid=ldapsearch_keycloak,cn=users,dc=swp-ldap,dc=internal + - 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: "wait-for-keycloak" + configMap: + name: ums-keycloak-bootstrap-init + - 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: nubus/charts/nubusProvisioning/templates/job-register-consumer.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: ums-provisioning-register-consumers-1 + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-register-consumers-1 + helm.sh/chart: nubusProvisioning-0.49.3 + annotations: + intents.otterize.com/service-name: ums-provisioning-register-consumers +spec: + template: + metadata: + annotations: + checksum/configmap: 425cd59c397b4f89003f5f85f78e6f618fb779e2dbc6889d936bef6652b24355 + intents.otterize.com/service-name: ums-provisioning-register-consumers + labels: + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: ums-provisioning-register-consumers-1 + helm.sh/chart: nubusProvisioning-0.49.3 + spec: + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: Always + sysctls: + - name: net.ipv4.ip_unprivileged_port_start + value: "1" + serviceAccountName: ums-provisioning + restartPolicy: Never + volumes: + - name: consumer-secrets + projected: + sources: + - secret: + name: "ums-provisioning-ox-credentials" + items: + - key: "ox-connector.json" + path: oxconsumer.json + - secret: + name: "ums-provisioning-register-consumers-json-secrets" + items: + - key: "portal-consumer.json" + path: portalconsumer.json + - secret: + name: "ums-provisioning-register-consumers-json-secrets" + items: + - key: "selfservice.json" + path: selfserviceconsumer.json + - 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 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + 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 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + command: ["/bin/bash", "/scripts/wait-for-data-loader.sh"] + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + imagePullPolicy: "IfNotPresent" + envFrom: + - configMapRef: + name: ums-provisioning-register-consumers + env: + - name: UDM_USERNAME + value: "cn=admin" + - name: UDM_PASSWORD + valueFrom: + secretKeyRef: + name: ums-ldap-server-credentials + key: adminPassword + volumeMounts: + - name: wait-for-data-loader + mountPath: /scripts + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + containers: + - name: consumer-registration + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: consumer-secrets + mountPath: "/secrets" + envFrom: + - configMapRef: + name: ums-provisioning-register-consumers + env: + - name: ADMIN_USERNAME + value: "admin" + - name: ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: ums-provisioning-api-credentials + key: ADMIN_PASSWORD + 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.89.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.89.0 + app.kubernetes.io/instance: ums + app.kubernetes.io/managed-by: Helm + annotations: + checksum/config: '9bd899cd20b0212ff2570ea5a8a25e67f4e8beb6a084ccd940e2c244da20f9c4' + checksum/config-data: '7283ada7d5683284a9b1e156a903fe8a82e0bd1ee43fe4a02c59db2b15aa39ba' + + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: HookSucceeded + intents.otterize.com/service-name: ums-stack-data-ums + spec: + restartPolicy: Never + serviceAccountName: ums-stack-data-ums + + initContainers: + - name: "load-internal-plugins" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb" + 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: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-portal-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/portal-extension:0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900" + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus:1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - name: "load-opendesk-a2g-mapper-extension" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper:1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d" + imagePullPolicy: "IfNotPresent" + volumeMounts: + - name: plugin-targets + mountPath: /target + resources: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + - 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb" + 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 + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/data-loader:0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb" + 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: yschmidt-opendesk-argo + 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.17.0 + annotations: +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: yschmidt-opendesk-argo + 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.17.0 + annotations: +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: yschmidt-opendesk-argo + 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.17.0 + annotations: +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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.16.1 + annotations: + nginx.ingress.kubernetes.io/proxy-buffer-size: 8k + nginx.org/proxy-buffer-size: 8k +spec: + ingressClassName: nginx + tls: + - hosts: + - "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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/nubusPortalFrontend/templates/ingresses.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ums-portal-frontend-rewrites + namespace: yschmidt-opendesk-argo + 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.63.0 + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: yschmidt-opendesk-argo + 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.63.0 + annotations: + intents.otterize.com/service-name: ums-portal-frontend + nginx.ingress.kubernetes.io/permanent-redirect: /univention/portal/ +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: yschmidt-opendesk-argo + 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.63.0 + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - pathType: ImplementationSpecific + path: /()(univention/portal/|univention/selfservice/)(portal.json|navigation.json)$ + backend: + service: + name: ums-portal-server + port: + name: http + - pathType: ImplementationSpecific + path: /()(univention/portal/|univention/selfservice/)(api/v1/me)$ + 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: yschmidt-opendesk-argo + 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.29.0 + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: yschmidt-opendesk-argo + 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.38.0 + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de, https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" +spec: + ingressClassName: nginx + tls: + - hosts: + - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: yschmidt-opendesk-argo + 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.38.0 + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /favicon.ico$ + pathType: ImplementationSpecific + backend: + service: + name: ums-portal-frontend + port: + number: 80 +--- +# Source: nubus/charts/keycloak/templates/configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-authorization-api.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-init-management-ui.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-management-api.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-management-ui.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-open-policy-agent.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/configmap-provisioning.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/deployment-authorization-api.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/deployment-management-api.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/deployment-management-ui.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/deployment-open-policy-agent.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/extraSecrets.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/ingresses.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/job-provisioning.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/service-authorization-api.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/service-management-api.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/service-management-ui.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/service-open-policy-agent.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusGuardian/templates/serviceaccount.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusKeycloakBootstrap/templates/configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-handler.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/configmap-proxy.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-handler.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/deployment-proxy.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/ingress-handler.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/service-handler.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusKeycloakExtensions/templates/service-proxy.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-ldif-producer.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusLdapServer/templates/configmap-proxy.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusLdapServer/templates/deployment-proxy.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusLdapServer/templates/preflight-check.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH222 +--- +# Source: nubus/charts/nubusLdapServer/templates/secret-ldap-server-auth.yaml +# TEST +--- +# Source: nubus/charts/nubusPortalConsumer/templates/configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023-2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalConsumer/templates/extraSecrets.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalConsumer/templates/secret.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023-2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalFrontend/templates/branding-configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalFrontend/templates/deployment.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023-2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalFrontend/templates/ingresses.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalFrontend/templates/service.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalFrontend/templates/serviceaccount.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalServer/templates/deployment.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023-2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalServer/templates/extraIngresses.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalServer/templates/ingress.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalServer/templates/service.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalServer/templates/serviceaccount.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusPortalServer/templates/tests/test-connection.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023-2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/deployment-dispatcher.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/deployment-events-and-consumer-api.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/deployment-prefill.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/deployment-udm-transformer.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/extraSecrets.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/gateway.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/ingress.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/job-register-consumer.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/service.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/serviceaccount.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusProvisioning/templates/virtualservice.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusSelfServiceConsumer/templates/configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusSelfServiceConsumer/templates/deployment.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusSelfServiceConsumer/templates/extraSecrets.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusStackDataUms/templates/configmap-data.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023 Univention GmbH +--- +# Source: nubus/charts/nubusStackDataUms/templates/configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusStackDataUms/templates/job-load-data-ums.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023 Univention GmbH +--- +# Source: nubus/charts/nubusStackDataUms/templates/secret-context.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusStackDataUms/templates/secret.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023 Univention GmbH +--- +# Source: nubus/charts/nubusStackDataUms/templates/serviceaccount.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusUdmRestApi/templates/configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusUdmRestApi/templates/deployment.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusUdmRestApi/templates/ingress.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusUdmRestApi/templates/tests/test-connection.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023-2024 Univention GmbH +--- +# Source: nubus/charts/nubusUmcGateway/templates/deployment.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusUmcGateway/templates/ingress.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusUmcServer/templates/deployment-load-balancer.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusUmcServer/templates/ingress.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/charts/nubusUmcServer/templates/statefulset-server.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/templates/cert-manager.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/templates/ingresses.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/templates/nubusSecrets.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/templates/postgresql-provisioning-configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/templates/postgresql-provisioning-job.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# Source: nubus/templates/preflight-check.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH +--- +# 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: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + dnsNames: + - yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + +... +--- +# 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: + - yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + privateKey: + algorithm: RSA + encoding: PKCS1 + size: 2048 + usages: + - digital signature + - key encipherment + - server auth + - client auth + dnsNames: + - "ums-umc-server" + - "ums-umc-server.yschmidt-opendesk-argo.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.63.0 + 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.29.0 + 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: intercom-service/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: intercom-service + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.12.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/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "intercom-service" + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.12.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "1.4" +type: Opaque +stringData: + SECRET: "3eb73e36131cd6a817564c2144363875cf63a490" + INTERCOM_URL: "https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + BASE_URL: "https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + PORT: "8008" + PROXY: "false" + ENABLE_SESSION_COOKIE: "true" + SESSION_ROLLING_DURATION: "86400" + LOG_LEVEL: "INFO" + ORIGIN_REGEX: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + USER_UNIQUE_MAPPER: "opendesk_username" + USERNAME_CLAIM: "opendesk_username" + # Keycloak + ISSUER_BASE_URL: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk" + KEYCLOAK_URL: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + REALM_NAME: "opendesk" + # Nordeck + NORDECK_MODE: "test" + NORDECK_URL: "https://matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + # Matrix + MATRIX_ENABLED: "true" + MATRIX_URL: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + MATRIX_SERVER_NAME: "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + MATRIX_AS_SECRET: "f4a859990d1d37276a77e88ccd1e67d158b5e18f" + # Nextcloud + NC_ENABLED: "true" + NC_ORIGIN: "https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + NC_URL: "https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + NC_AUDIENCE: "opendesk-nextcloud" + # XWIKI + XWIKI_ENABLED: "true" + XWIKI_URL: "https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + XWIKI_AUDIENCE: "opendesk-xwiki" + # UCS + PORTAL_URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + PORTAL_API_KEY: "1e2eb0fc3815d766ef1be11fb4edba676856ba52" + # Redis + REDIS_HOST: "redis-headless" + REDIS_PORT: "6379" + REDIS_SSL: "false" + REDIS_MTLS: "false" + REDIS_PASSWORD: "07c524f0d3f95b4d03fea54ea10cfb848bdb355e" + # OIDC + CLIENT_ID: opendesk-intercom + CLIENT_SECRET: "d42f6afee33e28f01222383c86e8741b98e14924" +... +--- +# Source: intercom-service/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "intercom-service" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.12.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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.12.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: 06e5393faabd76be04bd2ddb50a48960c3301970c0b1fc62ae8d4c1bef399c0b + labels: + app.kubernetes.io/name: intercom-service + helm.sh/chart: intercom-service-2.12.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: + containers: + - name: "intercom-service" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/intercom-service:2.12.0@sha256:380476d849fb353dc167ba52a6b0f6235b3fa7561c082e65c37e2242cedb0df1" + imagePullPolicy: IfNotPresent + env: + - name: REDIS_USER + value: default + 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: "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.12.0 + app.kubernetes.io/instance: intercom-service + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "1.4" + annotations: +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: intercom-service + port: + name: http +... +--- +# Source: intercom-service/templates/configmap-provisioning.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2024 Univention GmbH + +--- +# Source: nginx-s3-gateway/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: nubus-nginx-s3-gateway + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nginx-s3-gateway + helm.sh/chart: nginx-s3-gateway-1.0.1 + app.kubernetes.io/instance: nubus + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +... +--- +# Source: nginx-s3-gateway/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "nubus-nginx-s3-gateway" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nginx-s3-gateway + helm.sh/chart: nginx-s3-gateway-1.0.1 + app.kubernetes.io/instance: nubus + app.kubernetes.io/managed-by: Helm + annotations: +stringData: + accessKey: ums_user + secretKey: 915f15805278ef774a1cf3abfa6b8623c1fa4544 +... +--- +# Source: nginx-s3-gateway/templates/configmap.yaml +apiVersion: "v1" +kind: "ConfigMap" +metadata: + name: "nubus-nginx-s3-gateway" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nginx-s3-gateway + helm.sh/chart: nginx-s3-gateway-1.0.1 + app.kubernetes.io/instance: nubus + app.kubernetes.io/managed-by: Helm + annotations: +data: + server_variables.conf.template: | + # Variable indicating to the awssig4.js script that singing key + # caching is turned off. This feature uses the keyval store, so it + # is only enabled when using NGINX Plus. + set $cache_signing_key_enabled 0; + + # Variable indicating to the awscredentials.js script that session token + # caching is turned on. This feature uses the keyval store, so it + # is only enabled when using NGINX Plus. + set $cache_instance_credentials_enabled 0; +... +--- +# Source: nginx-s3-gateway/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "nubus-nginx-s3-gateway" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nginx-s3-gateway + helm.sh/chart: nginx-s3-gateway-1.0.1 + app.kubernetes.io/instance: nubus + app.kubernetes.io/managed-by: Helm + annotations: +spec: + type: "ClusterIP" + ports: + - name: "gateway" + port: 8080 + targetPort: "gateway" + protocol: "TCP" + selector: + app.kubernetes.io/name: nginx-s3-gateway + app.kubernetes.io/instance: nubus +... +--- +# Source: nginx-s3-gateway/templates/deployment.yaml +apiVersion: apps/v1 +kind: "Deployment" +metadata: + name: nubus-nginx-s3-gateway + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: nginx-s3-gateway + helm.sh/chart: nginx-s3-gateway-1.0.1 + app.kubernetes.io/instance: nubus + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: nginx-s3-gateway + app.kubernetes.io/instance: nubus + strategy: + type: RollingUpdate + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: nginx-s3-gateway + helm.sh/chart: nginx-s3-gateway-1.0.1 + app.kubernetes.io/instance: nubus + app.kubernetes.io/managed-by: Helm + spec: + securityContext: + fsGroup: 101 + fsGroupChangePolicy: Always + serviceAccountName: nubus-nginx-s3-gateway + containers: + - name: "nginx-s3-gateway" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/nginxinc/nginx-s3-gateway:unprivileged-oss-20241111@sha256:20d6b6ec5fc987b18c3e345de33674374a8335c593d6d0841ac64eb49ae2dea4" + imagePullPolicy: IfNotPresent + env: + - name: "ALLOW_DIRECTORY_LIST" + value: "false" + - name: "AWS_SIGS_VERSION" + value: "4" + - name: "AWS_ACCESS_KEY_ID" + valueFrom: + secretKeyRef: + name: nubus-nginx-s3-gateway + key: accessKey + - name: "AWS_SECRET_ACCESS_KEY" + valueFrom: + secretKeyRef: + name: nubus-nginx-s3-gateway + key: secretKey + - name: "S3_BUCKET_NAME" + value: "ums" + - name: "S3_REGION" + value: "eu-west-1" + - name: "S3_SERVER_PORT" + value: "443" + - name: "S3_SERVER_PROTO" + value: "https" + - name: "S3_SERVER" + value: "objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "S3_STYLE" + value: "path" + - name: "PROVIDE_INDEX_PAGE" + value: "false" + - name: "DEBUG" + value: "false" + livenessProbe: + httpGet: + path: "/health" + port: 8080 + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + httpGet: + path: "/health" + port: 8080 + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ports: + - name: gateway + containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 64Mi + requests: + cpu: 100m + memory: 16Mi + volumeMounts: + - name: "tmp" + mountPath: "/tmp" + - name: "cache" + mountPath: "/var/cache/nginx" + - name: "conf" + mountPath: "/etc/nginx/conf.d" + - name: "server-variables" + mountPath: "/etc/nginx/templates/gateway/server_variables.conf.template" + subPath: "server_variables.conf.template" + volumes: + - name: "tmp" + emptyDir: + medium: "Memory" + sizeLimit: "100Mi" + - name: "cache" + emptyDir: + medium: "Memory" + sizeLimit: "100Mi" + - name: "conf" + emptyDir: + medium: "Memory" + sizeLimit: "1Mi" + - name: "server-variables" + configMap: + name: nubus-nginx-s3-gateway + items: + - key: "server_variables.conf.template" + path: "server_variables.conf.template" +... +--- +# Source: nginx-s3-gateway/templates/ingress.yaml +apiVersion: "networking.k8s.io/v1" +kind: "Ingress" +metadata: + name: "nubus-nginx-s3-gateway" + labels: + app.kubernetes.io/name: nginx-s3-gateway + helm.sh/chart: nginx-s3-gateway-1.0.1 + app.kubernetes.io/instance: nubus + app.kubernetes.io/managed-by: Helm + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /portal-assets/icons/$2/$3 + nginx.ingress.kubernetes.io/use-regex: "true" +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: /univention/(portal|selfservice)/icons/(logos|entries)/(.*)$ + pathType: Prefix + backend: + service: + name: nubus-nginx-s3-gateway + port: + name: gateway +... + +--- +# Source: opendesk-keycloak-bootstrap/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: opendesk-keycloak-bootstrap + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-keycloak-bootstrap + helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0 + app.kubernetes.io/instance: opendesk-keycloak-bootstrap + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +... +--- +# 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.6.0 + app.kubernetes.io/instance: opendesk-keycloak-bootstrap + app.kubernetes.io/managed-by: Helm + +stringData: + values.yaml: | + + additionalAnnotations: + argocd.argoproj.io/hook: Sync + argocd.argoproj.io/hook-delete-policy: BeforeHookCreation + additionalLabels: {} + affinity: {} + cleanup: + deletePodsOnSuccess: true + deletePodsOnSuccessTimeout: 60 + keepPVCOnDelete: false + common: + exampleValue: common-chart + global: + domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + hosts: + adminBot: adminbot + collabora: office + cryptpad: pad + element: chat + intercomService: ics + jitsi: meet + keycloak: id + matrixNeoBoardWidget: matrix-neoboard-widget + matrixNeoChoiceWidget: matrix-neochoice-widget + matrixNeoDateFixBot: matrix-neodatefix-bot + matrixNeoDateFixWidget: matrix-neodatefix-widget + minioApi: objectstore + minioConsole: objectstore-ui + nextcloud: files + notes: notes + nubus: portal + openproject: projects + openxchange: webmail + portal: portal + static: static + synapse: matrix + synapseAdmin: synapse-admin + synapseFederation: matrix-federation + whiteboard: whiteboard + xwiki: wiki + imagePullSecrets: [] + registry: registry.opencode.de + config: + clientAccessRestrictions: + dovecot: + client: opendesk-dovecot + group: managed-by-attribute-Groupware + role: opendesk-dovecot-access-control + scope: opendesk-dovecot-scope + matrix: + client: opendesk-matrix + group: managed-by-attribute-Livecollaboration + role: opendesk-matrix-access-control + scope: opendesk-matrix-scope + nextcloud: + client: opendesk-nextcloud + group: managed-by-attribute-Fileshare + role: opendesk-nextcloud-access-control + scope: opendesk-nextcloud-scope + notes: + client: opendesk-notes + group: managed-by-attribute-Notes + role: opendesk-notes-access-control + scope: opendesk-notes-scope + openproject: + client: opendesk-openproject + group: managed-by-attribute-Projectmanagement + role: opendesk-openproject-access-control + scope: opendesk-openproject-scope + oxAppSuite: + client: opendesk-oxappsuite + group: managed-by-attribute-Groupware + role: opendesk-oxappsuite-access-control + scope: opendesk-oxappsuite-scope + xwiki: + client: opendesk-xwiki + group: managed-by-attribute-Knowledgemanagement + role: opendesk-xwiki-access-control + scope: opendesk-xwiki-scope + custom: {} + debug: + enabled: false + pauseBeforeScriptStart: 0 + keycloak: + admin: + secret: + name: "" + values: + password: 81d3190e7a7467137ccb11c6fdd2c296986275db + username: kcadmin + intraCluster: + enabled: true + internalBaseUrl: http://ums-keycloak.yschmidt-opendesk-argo.svc.cluster.local:8080 + realm: opendesk + managed: + clientScopes: + - acr + - web-origins + - email + - profile + - microprofile-jwt + - role_list + - offline_access + - roles + - address + - phone + clients: + - guardian-management-api + - guardian-scripts + - guardian-ui + - UMC + - ${client_account} + - ${client_account-console} + - ${client_admin-cli} + - ${client_broker} + - ${client_realm-management} + - ${client_security-admin-console} + opendesk: + clientScopes: + - name: read_contacts + protocol: openid-connect + - name: write_contacts + protocol: openid-connect + - description: Scope for the claims required by openDesk's OpenProject instance. + name: opendesk-openproject-scope + protocol: openid-connect + protocolMappers: + - config: + access.token.claim: true + claim.name: opendesk_useruuid + id.token.claim: true + jsonType.label: String + user.attribute: entryUUID + userinfo.token.claim: true + consentRequired: false + name: opendesk_useruuid + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: opendesk_username + id.token.claim: true + jsonType.label: String + user.attribute: uid + userinfo.token.claim: true + consentRequired: false + name: opendesk_username + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: openproject_admin + id.token.claim: true + jsonType.label: String + user.attribute: opendeskProjectmanagementAdmin + userinfo.token.claim: true + consentRequired: false + name: opendeskProjectmanagementAdmin + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: email + id.token.claim: true + introspection.token.claim: true + jsonType.label: String + user.attribute: email + userinfo.token.claim: true + consentRequired: false + name: email + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: given_name + id.token.claim: true + introspection.token.claim: true + jsonType.label: String + user.attribute: firstName + userinfo.token.claim: true + consentRequired: false + name: given name + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: family_name + id.token.claim: true + introspection.token.claim: true + jsonType.label: String + user.attribute: lastName + userinfo.token.claim: true + consentRequired: false + name: family name + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - description: Scope for the claims required by openDesk's Nextcloud instance. + name: opendesk-nextcloud-scope + protocol: openid-connect + protocolMappers: + - config: + access.token.claim: true + claim.name: opendesk_useruuid + id.token.claim: true + jsonType.label: String + user.attribute: entryUUID + userinfo.token.claim: true + consentRequired: false + name: opendesk_useruuid + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: opendesk_username + id.token.claim: true + jsonType.label: String + user.attribute: uid + userinfo.token.claim: true + consentRequired: false + name: opendesk_username + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: email + id.token.claim: true + introspection.token.claim: true + jsonType.label: String + user.attribute: email + userinfo.token.claim: true + consentRequired: false + name: email + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: context + id.token.claim: true + jsonType.label: String + user.attribute: oxContextIDNum + userinfo.token.claim: true + consentRequired: false + name: context + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - description: Scope for the claims required by openDesk's Matrix instance. + name: opendesk-matrix-scope + protocol: openid-connect + protocolMappers: + - config: + access.token.claim: true + claim.name: opendesk_useruuid + id.token.claim: true + jsonType.label: String + user.attribute: entryUUID + userinfo.token.claim: true + consentRequired: false + name: opendesk_useruuid + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: opendesk_username + id.token.claim: true + jsonType.label: String + user.attribute: uid + userinfo.token.claim: true + consentRequired: false + name: opendesk_username + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + id.token.claim: true + introspection.token.claim: true + userinfo.token.claim: true + consentRequired: false + name: full name + protocol: openid-connect + protocolMapper: oidc-full-name-mapper + - config: + access.token.claim: true + claim.name: email + id.token.claim: true + introspection.token.claim: true + jsonType.label: String + user.attribute: email + userinfo.token.claim: true + consentRequired: false + name: email + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - description: Scope for the claims required by openDesk's XWiki instance. + name: opendesk-xwiki-scope + protocol: openid-connect + protocolMappers: + - config: + access.token.claim: true + claim.name: opendesk_useruuid + id.token.claim: true + jsonType.label: String + user.attribute: entryUUID + userinfo.token.claim: true + consentRequired: false + name: opendesk_useruuid + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: opendesk_username + id.token.claim: true + jsonType.label: String + user.attribute: uid + userinfo.token.claim: true + consentRequired: false + name: opendesk_username + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + id.token.claim: true + introspection.token.claim: true + userinfo.token.claim: true + consentRequired: false + name: full name + protocol: openid-connect + protocolMapper: oidc-full-name-mapper + - config: + access.token.claim: true + claim.name: email + id.token.claim: true + introspection.token.claim: true + jsonType.label: String + user.attribute: email + userinfo.token.claim: true + consentRequired: false + name: email + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - description: Scope for the claims required by openDesk's Dovecot instance. + name: opendesk-dovecot-scope + protocol: openid-connect + protocolMappers: + - config: + access.token.claim: true + claim.name: opendesk_useruuid + id.token.claim: true + jsonType.label: String + user.attribute: entryUUID + userinfo.token.claim: true + consentRequired: false + name: opendesk_useruuid + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: opendesk_username + id.token.claim: true + jsonType.label: String + user.attribute: uid + userinfo.token.claim: true + consentRequired: false + name: opendesk_username + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - description: Scope for the claims required by openDesk's OX Appuite instance. + name: opendesk-oxappsuite-scope + protocol: openid-connect + protocolMappers: + - config: + access.token.claim: true + claim.name: context + id.token.claim: true + jsonType.label: String + user.attribute: oxContextIDNum + userinfo.token.claim: true + consentRequired: false + name: context + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: opendesk_useruuid + id.token.claim: true + jsonType.label: String + user.attribute: entryUUID + userinfo.token.claim: true + consentRequired: false + name: opendesk_useruuid + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: opendesk_username + id.token.claim: true + jsonType.label: String + user.attribute: uid + userinfo.token.claim: true + consentRequired: false + name: opendesk_username + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - description: Scope for the claims required by openDesk's Notes instance. + name: opendesk-notes-scope + protocol: openid-connect + protocolMappers: + - config: + access.token.claim: true + claim.name: email + id.token.claim: true + introspection.token.claim: true + jsonType.label: String + user.attribute: email + userinfo.token.claim: true + consentRequired: false + name: email + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: given_name + id.token.claim: true + introspection.token.claim: true + jsonType.label: String + user.attribute: firstName + userinfo.token.claim: true + consentRequired: false + name: given name + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: family_name + id.token.claim: true + introspection.token.claim: true + jsonType.label: String + user.attribute: lastName + userinfo.token.claim: true + consentRequired: false + name: family name + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + clients: + - attributes: + backchannel.logout.revoke.offline.tokens: true + backchannel.logout.session.required: true + backchannel.logout.url: https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/backchannel-logout + authorizationServicesEnabled: false + clientAuthenticatorType: client-secret + clientId: opendesk-intercom + consentRequired: false + defaultClientScopes: + - offline_access + frontchannelLogout: false + name: opendesk-intercom + protocol: openid-connect + protocolMappers: + - config: + access.token.claim: true + id.token.claim: false + included.client.audience: opendesk-intercom + consentRequired: false + name: intercom-audience + protocol: openid-connect + protocolMapper: oidc-audience-mapper + - config: + access.token.claim: true + claim.name: opendesk_username + id.token.claim: true + jsonType.label: String + user.attribute: uid + userinfo.token.claim: true + consentRequired: false + name: opendesk_username + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + - config: + access.token.claim: true + claim.name: opendesk_useruuid + id.token.claim: true + jsonType.label: String + user.attribute: entryUUID + userinfo.token.claim: true + consentRequired: false + name: opendesk_useruuid + protocol: openid-connect + protocolMapper: oidc-usermodel-attribute-mapper + publicClient: false + redirectUris: + - https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/callback + secret: d42f6afee33e28f01222383c86e8741b98e14924 + - alwaysDisplayInConsole: false + attributes: + backchannel.logout.revoke.offline.tokens: false + backchannel.logout.session.required: false + client.introspection.response.allow.jwt.claim.enabled: false + client.use.lightweight.access.token.enabled: false + client_credentials.use_refresh_token: false + display.on.consent.screen: false + oauth2.device.authorization.grant.enabled: false + oidc.ciba.grant.enabled: false + post.logout.redirect.uris: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + require.pushed.authorization.requests: false + tls.client.certificate.bound.access.tokens: false + token.response.type.bearer.lower-case: false + use.jwks.url: false + use.refresh.tokens: false + user.info.response.signature.alg: RS256 + authorizationServicesEnabled: false + bearerOnly: false + clientAuthenticatorType: client-secret + clientId: opendesk-notes + consentRequired: false + defaultClientScopes: + - opendesk-notes-scope + directAccessGrantsEnabled: true + frontchannelLogout: false + implicitFlowEnabled: false + name: opendesk-notes + protocol: openid-connect + publicClient: false + redirectUris: + - https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/v1.0/callback/ + secret: 0cbc7a3257db722ed76270a547c7dccf1f84db87 + serviceAccountsEnabled: false + standardFlowEnabled: true + surrogateAuthRequired: false + - attributes: + backchannel.logout.session.required: false + authorizationServicesEnabled: false + clientAuthenticatorType: client-secret + clientId: opendesk-dovecot + consentRequired: false + defaultClientScopes: + - opendesk-dovecot-scope + frontchannelLogout: false + name: opendesk-dovecot + protocol: openid-connect + publicClient: false + secret: b4b4e59939b23669b1287c722376441b0bdcddfa + - attributes: + backchannel.logout.session.required: true + backchannel.logout.url: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/ajax/oidc/backchannel_logout + post.logout.redirect.uris: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + authorizationServicesEnabled: false + clientAuthenticatorType: client-secret + clientId: opendesk-oxappsuite + consentRequired: false + defaultClientScopes: + - opendesk-oxappsuite-scope + - read_contacts + - write_contacts + frontchannelLogout: false + name: opendesk-oxappsuite + protocol: openid-connect + publicClient: false + redirectUris: + - https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + secret: ba9c972d28385e400bc71a5869b8219ec42afb45 + - attributes: + backchannel.logout.session.required: true + backchannel.logout.url: https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/_synapse/client/oidc/backchannel_logout + post.logout.redirect.uris: https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + authorizationServicesEnabled: false + clientAuthenticatorType: client-secret + clientId: opendesk-matrix + consentRequired: false + defaultClientScopes: + - opendesk-matrix-scope + directAccessGrantsEnabled: true + frontchannelLogout: false + name: opendesk-matrix + protocol: openid-connect + publicClient: false + redirectUris: + - https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + - https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + secret: b4f6604310ebd2d06b5fc8832ae1095e43481b04 + serviceAccountsEnabled: true + standardFlowEnabled: true + - attributes: + backchannel.logout.session.required: true + backchannel.logout.url: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/apps/user_oidc/backchannel-logout/opendesk + post.logout.redirect.uris: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + authorizationServicesEnabled: false + clientAuthenticatorType: client-secret + clientId: opendesk-nextcloud + consentRequired: false + defaultClientScopes: + - opendesk-nextcloud-scope + - read_contacts + - write_contacts + frontchannelLogout: false + name: opendesk-nextcloud + protocol: openid-connect + publicClient: false + redirectUris: + - https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + secret: 9ba1ae31cafd277b67b043234aa0d0fdd53d90b8 + - attributes: + backchannel.logout.session.required: true + backchannel.logout.url: https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/auth/keycloak/backchannel-logout + post.logout.redirect.uris: https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + authorizationServicesEnabled: false + clientAuthenticatorType: client-secret + clientId: opendesk-openproject + consentRequired: false + defaultClientScopes: + - opendesk-openproject-scope + frontchannelLogout: false + name: opendesk-openproject + protocol: openid-connect + publicClient: false + redirectUris: + - https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + secret: 3621e456b58b341fe12689612e0ca7820974d274 + serviceAccountsEnabled: true + - attributes: + backchannel.logout.session.required: false + backchannel.logout.url: https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/oidc/authenticator/backchannel_logout + post.logout.redirect.uris: https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*##https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + authorizationServicesEnabled: false + clientAuthenticatorType: client-secret + clientId: opendesk-xwiki + consentRequired: false + defaultClientScopes: + - opendesk-xwiki-scope + frontchannelLogout: false + name: opendesk-xwiki + protocol: openid-connect + publicClient: false + redirectUris: + - https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + - https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/* + secret: af1243a89d9b55965b6395e3ab7cc6d004dbcdab + precreateGroups: + - Domain Admins + - Domain Users + - 2fa-users + - IAM API - Full Access + - managed-by-attribute-Fileshare + - managed-by-attribute-FileshareAdmin + - managed-by-attribute-Knowledgemanagement + - managed-by-attribute-KnowledgemanagementAdmin + - managed-by-attribute-Livecollaboration + - managed-by-attribute-LivecollaborationAdmin + - managed-by-attribute-Projectmanagement + - managed-by-attribute-ProjectmanagementAdmin + - managed-by-attribute-Groupware + - managed-by-attribute-Notes + realmSettings: + accessCodeLifespan: 60 + accessCodeLifespanLogin: 1800 + accessCodeLifespanUserAction: 300 + accessTokenLifespan: 300 + accessTokenLifespanForImplicitFlow: 900 + actionTokenGeneratedByAdminLifespan: 43200 + actionTokenGeneratedByUserLifespan: 300 + clientOfflineSessionIdleTimeout: 0 + clientOfflineSessionMaxLifespan: 0 + clientSessionIdleTimeout: 0 + clientSessionMaxLifespan: 0 + oauth2DeviceCodeLifespan: 600 + oauth2DevicePollingInterval: 5 + offlineSessionIdleTimeout: 2592000 + offlineSessionMaxLifespan: 5184000 + offlineSessionMaxLifespanEnabled: false + refreshTokenMaxReuse: 0 + rememberMe: true + revokeRefreshToken: false + ssoSessionIdleTimeout: 14400 + ssoSessionIdleTimeoutRememberMe: 28800 + ssoSessionMaxLifespan: 57600 + ssoSessionMaxLifespanRememberMe: 1209600 + ssoFederation: + enabled: false + enforceFederatedLogin: false + idpDetails: {} + name: My upstream IdP + twoFactorSettings: + additionalGroups: + - foo + roleName: 2FA role + containerSecurityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + enabled: true + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + extraEnvVars: [] + extraVolumeMounts: [] + extraVolumes: [] + global: + domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + hosts: + adminBot: adminbot + collabora: office + cryptpad: pad + element: chat + intercomService: ics + jitsi: meet + keycloak: id + matrixNeoBoardWidget: matrix-neoboard-widget + matrixNeoChoiceWidget: matrix-neochoice-widget + matrixNeoDateFixBot: matrix-neodatefix-bot + matrixNeoDateFixWidget: matrix-neodatefix-widget + minioApi: objectstore + minioConsole: objectstore-ui + nextcloud: files + notes: notes + nubus: portal + openproject: projects + openxchange: webmail + portal: portal + static: static + synapse: matrix + synapseAdmin: synapse-admin + synapseFederation: matrix-federation + whiteboard: whiteboard + xwiki: wiki + imagePullSecrets: [] + registry: registry.opencode.de + image: + imagePullPolicy: IfNotPresent + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap + tag: 1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7 + imagePullSecrets: [] + nodeSelector: {} + podAnnotations: + intents.otterize.com/service-name: ums-keycloak-bootstrap + podLabels: {} + podSecurityContext: + enabled: true + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + resources: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 256Mi + serviceAccount: + automountServiceAccountToken: false + create: true + labels: {} + terminationGracePeriodSeconds: "" + tolerations: [] + topologySpreadConstraints: [] +... +--- +# Source: opendesk-keycloak-bootstrap/templates/secrect.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "opendesk-keycloak-bootstrap-admin-creds" + labels: + app.kubernetes.io/name: opendesk-keycloak-bootstrap + helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0 + app.kubernetes.io/instance: opendesk-keycloak-bootstrap + app.kubernetes.io/managed-by: Helm + +stringData: + admin.yaml: | + username: kcadmin + password: 81d3190e7a7467137ccb11c6fdd2c296986275db +... +--- +# 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.6.0 + 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.values() }}" + 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-2025 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: "Extract client IDs and add to list" + ansible.builtin.set_fact: + client_ids: "{{ global_cfgobj.config.opendesk.clients | map(attribute='clientId') | list }}" + + - name: "Looping now" + ansible.builtin.include_tasks: "configure_clientpermissions_enable_loop.yml" + loop: "{{ client_ids }}" + loop_control: + loop_var: "client_id" + + - name: "Set KC internal client ID for realm_management" + ansible.builtin.set_fact: + kcint_clientid_realmmanagement: "{{ clientqueryresult['json'] | json_query('[?clientId==`realm-management`].id') + | first }}" + + - name: "Add intercom policy to management client" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_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/{{ kcint_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/{{ kcint_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/{{ kcint_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/{{ kcint_clientid_realmmanagement }}\ + /authz/resource-server/permission/scope" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "permissionscopequeryresult" + + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + - 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') }}" + + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + - name: "Looping now" + ansible.builtin.include_tasks: "configure_clientpermissions_configure_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_configure_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/{{ kcint_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/{{ kcint_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/{{ kcint_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_clientpermissions_enable_loop.yml: | + # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + + - name: "Set KC internal clientid for {{ client_id }}" + ansible.builtin.set_fact: + kcint_clientid: "{{ clientqueryresult['json'] | json_query('[?clientId==`' + client_id + '`].id') + | first }}" + + - name: "Enable permissions for {{ client_id }} / {{ kcint_clientid }}" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/clients/{{ kcint_clientid }}\ + /management/permissions" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + body_format: "json" + method: "PUT" + body: "{ \"enabled\": true }" + status_code: [200] + + ... + configure_create_groups.yml: | + # SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "Creating groups in loop" + ansible.builtin.include_tasks: "configure_create_groups_loop.yml" + loop: "{{ precreate_groups }}" + loop_control: + loop_var: "loop_group_name" + ... + configure_create_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] + configure_realmsettings.yml: | + # SPDX-FileCopyrightText: 2024-2025 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: "Configure session timeouts and lifespans" + 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 }}, + "accessTokenLifespanForImplicitFlow": {{ global_cfgobj.config.realmSettings.accessTokenLifespanForImplicitFlow }}, + "offlineSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.offlineSessionIdleTimeout }}, + "offlineSessionMaxLifespanEnabled": {{ global_cfgobj.config.realmSettings.offlineSessionMaxLifespanEnabled }}, + "offlineSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.offlineSessionMaxLifespan }}, + "clientSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.clientSessionIdleTimeout }}, + "clientSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.clientSessionMaxLifespan }}, + "clientOfflineSessionIdleTimeout": {{ global_cfgobj.config.realmSettings.clientOfflineSessionIdleTimeout }}, + "clientOfflineSessionMaxLifespan": {{ global_cfgobj.config.realmSettings.clientOfflineSessionMaxLifespan }}, + "accessCodeLifespan": {{ global_cfgobj.config.realmSettings.accessCodeLifespan }}, + "accessCodeLifespanUserAction": {{ global_cfgobj.config.realmSettings.accessCodeLifespanUserAction }}, + "accessCodeLifespanLogin": {{ global_cfgobj.config.realmSettings.accessCodeLifespanLogin }}, + "actionTokenGeneratedByAdminLifespan": {{ global_cfgobj.config.realmSettings.actionTokenGeneratedByAdminLifespan }}, + "actionTokenGeneratedByUserLifespan": {{ global_cfgobj.config.realmSettings.actionTokenGeneratedByUserLifespan }}, + "oauth2DeviceCodeLifespan": {{ global_cfgobj.config.realmSettings.oauth2DeviceCodeLifespan }}, + "oauth2DevicePollingInterval": {{ global_cfgobj.config.realmSettings.oauth2DevicePollingInterval }}, + "revokeRefreshToken": {{ global_cfgobj.config.realmSettings.revokeRefreshToken }}, + "refreshTokenMaxReuse": {{ global_cfgobj.config.realmSettings.refreshTokenMaxReuse }} + } + status_code: [204] + + - 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: | + { + "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: "Creating 2FA groups in loop" + ansible.builtin.include_tasks: "configure_create_groups_loop.yml" + loop: "{{ two_factor_additional_groups }}" + loop_control: + loop_var: "loop_group_name" + + - name: "Adding mapping groups to 2FA role in loop" + 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: "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] + ... + configure_sso_federation.yml: |+ + # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + # We always create the flow, even if SSO federation is not active, as we do not reference it + # anywhere else, it does not hurt. + - name: "Create 'sso-federation-flow' object" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "POST" + body_format: "json" + body: + alias: "sso-federation-flow" + description: "openDesk authentication flow for SSO federation" + providerId: "basic-flow" + topLevel: true + builtIn: false + status_code: [201,409] + register: "create_flow_response" + + - name: "Configuring 'sso-federation-flow': Setting exeuction steps to 'REQUIRED'" + when: "create_flow_response.status == 201" + ansible.builtin.include_tasks: "configure_sso_federation_authexecution.yml" + + - name: "Creating upstream IdP object" + ansible.builtin.include_tasks: "configure_sso_federation_upstreamidp.yml" + + - name: "Handle upstream SSO enforcement option" + ansible.builtin.include_tasks: "configure_sso_federation_handleenforcement.yml" + + ... + + configure_sso_federation_authexecution.yml: | + # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "Add execution step 'detect-existing-broker-user' to 'sso-federation-flow'" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions/execution" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "POST" + body_format: "json" + body: + provider: "idp-detect-existing-broker-user" + status_code: [201] + + - name: "Add execution step 'set-existing-user-authenticated' to 'sso-federation-flow'" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions/execution" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "POST" + body_format: "json" + body: + provider: "idp-auto-link" + status_code: [201] + + - name: "Get details the previously added execution steps" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "executions_list" + + - name: "Verify there are just two executions (otherwise somebody manually tampered with it or the bootstrapping is buggy)." + assert: + that: + - "executions_list.json | length == 2" + fail_msg: "Found more than two executions in 'sso-federation-flow'." + + - name: "Setting execution steps to 'REQUIRED'" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/sso-federation-flow/executions" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "PUT" + body_format: "json" + body: + id: "{{ item.id }}" + requirement: "REQUIRED" + description: "openDesk authentication flow for SSO federation" + status_code: [204] + loop: "{{ executions_list.json }}" + ... + configure_sso_federation_handleenforcement.yml: | + # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "Get details for '2fa-browser' execution steps" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/flows/2fa-browser/executions" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "GET" + status_code: [200] + register: "executions_list" + + - name: "Get the ID of the element that has 'providerId' set to 'identity-provider-redirector'" + set_fact: + redirector_execution_id: >- + {{ executions_list.json + | selectattr('providerId', 'defined') + | selectattr('providerId', 'equalto', 'identity-provider-redirector') + | map(attribute='id') + | list + | first }} + + - name: "Enforcing SSO federated login" + when: "global_cfgobj.config.ssoFederation.enabled and global_cfgobj.config.ssoFederation.enforceFederatedLogin" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/executions/{{ redirector_execution_id }}/config" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "POST" + body_format: "json" + body: + alias: sso-federation-idp + config: + defaultProvider: sso-federation-idp + status_code: [201] + + - name: "Get the ID of a possible configuration of of the element where 'providerId' is 'identity-provider-redirector'" + when: >- + executions_list.json + | selectattr('providerId', 'defined') + | selectattr('providerId', 'equalto', 'identity-provider-redirector') + | selectattr('authenticationConfig', 'defined') + | list | length > 0 + set_fact: + redirector_execution_authentication_config_id: >- + {{ executions_list.json + | selectattr('providerId', 'defined') + | selectattr('providerId', 'equalto', 'identity-provider-redirector') + | map(attribute='authenticationConfig') + | list + | first }} + + - name: "Delete the authentication config that enforces the SSO federated login" + when: >- + ( + not global_cfgobj.config.ssoFederation.enforceFederatedLogin + or not global_cfgobj.config.ssoFederation.enabled + ) + and redirector_execution_authentication_config_id is defined + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/authentication/config/{{ redirector_execution_authentication_config_id }}" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "DELETE" + status_code: [204] + ... + configure_sso_federation_upstreamidp.yml: | + # SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH + # SPDX-License-Identifier: Apache-2.0 + --- + - name: "Merge explicit values into IdP config" + when: "global_cfgobj.config.ssoFederation.enabled" + set_fact: + upstream_idp_config: >- + {{ + global_cfgobj.config.ssoFederation.idpDetails + | combine({ 'displayName': global_cfgobj.config.ssoFederation.name }, recursive=True) + | combine({ 'alias': 'sso-federation-idp' }, recursive=True) + | combine({ 'firstBrokerLoginFlowAlias': 'sso-federation-flow' }, recursive=True) + }} + + - name: "Create 'sso-federation-idp' object" + when: "global_cfgobj.config.ssoFederation.enabled" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/identity-provider/instances" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "POST" + body_format: "json" + body: "{{ upstream_idp_config }}" + status_code: [201,409] + register: "create_idp_response" + + - name: "Update IdP in case it already exists" + when: "global_cfgobj.config.ssoFederation.enabled and create_idp_response.status == 409" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/identity-provider/instances/sso-federation-idp" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "PUT" + body_format: "json" + body: "{{ upstream_idp_config }}" + status_code: [204] + + - name: "Delete IdP (but do not fail if it fails, as it might not even exist)" + when: "not global_cfgobj.config.ssoFederation.enabled" + ansible.builtin.uri: + url: "{{ global_keycloak_url }}/admin/realms/{{ global_opendesk_realm }}/identity-provider/instances/sso-federation-idp" + headers: + Accept: "application/json" + Authorization: "Bearer {{ global_accesstoken }}" + method: "DELETE" + status_code: [204,404] + ... + main.yml: | + # SPDX-FileCopyrightText: 2024-2025 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 + --- + - 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" + + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + - ansible.builtin.include_tasks: "./configure_realmsettings.yml" + + # In the following case we request the access token on every loop, not upfront, + # so no need to request it here in the `main.yml` + - ansible.builtin.include_tasks: "./configure_client_access_restriction.yml" + + # 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_sso_federation.yml" + + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + - ansible.builtin.include_tasks: "./configure_set_2fa_groups.yml" + + + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + - ansible.builtin.include_tasks: "./configure_create_groups.yml" + + - ansible.builtin.include_tasks: "./set_global_accesstoken.yml" + # To configure the client permissions we require the Intercom Service + # 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" + + ... + 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: 2024-2025 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: "Global: Read and parse config.yaml" + ansible.builtin.set_fact: + global_cfgobj: "{{ lookup('file', '/app/values.yaml') | from_yaml }}" + global_admin: "{{ lookup ('file', '/app/admin.yaml') | from_yaml }}" + + - name: "Global: Set variables" + ansible.builtin.set_fact: + global_admin_username: "{{ global_admin.username }}" + global_admin_password: "{{ global_admin.password }}" + 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 }}" + precreate_groups: "{{ global_cfgobj.config.precreateGroups | default([]) }}" + two_factor_role_name: "{{ global_cfgobj.config.twoFactorSettings.roleName }}" + two_factor_additional_groups: "{{ global_cfgobj.config.twoFactorSettings.additionalGroups | default([]) }}" + client_access_restriction_details: "{{ global_cfgobj.config.clientAccessRestrictions | default({}) }}" + + - 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.6.0 + 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: 60 + template: + metadata: + annotations: + checksum/configmap: b2372a40503669fd5a20e3ac665ac30a1a578e34e7956cb489d20eb0d8684cd3 + intents.otterize.com/service-name: ums-keycloak-bootstrap + labels: + app.kubernetes.io/name: opendesk-keycloak-bootstrap + helm.sh/chart: opendesk-keycloak-bootstrap-2.6.0 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap:1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7" + imagePullPolicy: IfNotPresent + command: + - "/app/entrypoint.sh" + volumeMounts: + - mountPath: "/app/values.yaml" + name: "secrets-volume" + subPath: "values.yaml" + - mountPath: "/app/admin.yaml" + name: "admin-creds" + subPath: "admin.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: "admin-creds" + secret: + secretName: "opendesk-keycloak-bootstrap-admin-creds" + - name: "temp-dir" + emptyDir: + sizeLimit: "20Mi" + - name: "ansible-directory-volume" + configMap: + name: "opendesk-keycloak-bootstrap-ansible" +... + +--- +# Source: dovecot/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: "dovecot" + labels: + app.kubernetes.io/name: dovecot + helm.sh/chart: dovecot-2.0.0 + app.kubernetes.io/instance: dovecot + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +... +--- +# Source: dovecot/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "dovecot" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: dovecot + helm.sh/chart: dovecot-2.0.0 + app.kubernetes.io/instance: dovecot + app.kubernetes.io/managed-by: Helm +stringData: + password: "2a9dbfe67ac0f70b60b14b55d4c144bb3605c9c9" + migrationMasterPassword: "1748a0b8a43268f79f9b5a1d27be603ca563702c" + ldapPassword: "40290e376095d33c0c650723efa007abec1ee3fd" + oidcClientID: "opendesk-dovecot" + oidcClientSecret: "b4b4e59939b23669b1287c722376441b0bdcddfa" +... +--- +# Source: dovecot/templates/configmap-virtual.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "dovecot-virtual" + labels: + app.kubernetes.io/name: dovecot + helm.sh/chart: dovecot-2.0.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-2.0.0 + app.kubernetes.io/instance: dovecot + app.kubernetes.io/managed-by: Helm +data: + dovecot.conf: | + + + auth_master_user_separator = * + auth_mechanisms = xoauth2 oauthbearer plain login + auth_realms = souvap + auth_verbose = no + first_valid_uid = 1000 + listen = * + 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 = ${DC_PASSWORD} + 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 + + recipient_delimiter = + + + # 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.yschmidt-opendesk-argo.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= "/etc/dovecot/dovecot.conf" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/global-spam-script.sieve" > "/etc/dovecot/global-spam-script.sieve" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-authz.conf.ext" > "/etc/dovecot/ldap-authz.conf.ext" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-primary.conf.ext" > "/etc/dovecot/ldap-primary.conf.ext" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-secondary.conf.ext" > "/etc/dovecot/ldap-secondary.conf.ext" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/ldap-userdn.conf.ext" > "/etc/dovecot/ldap-userdn.conf.ext" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/migration-masterpsw.conf.ext" > "/etc/dovecot/migration-masterpsw.conf.ext" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/oauth2-primary.conf.ext" > "/etc/dovecot/oauth2-primary.conf.ext" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/oauth2-secondary.conf.ext" > "/etc/dovecot/oauth2-secondary.conf.ext" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/quota-warning.sh" > "/etc/dovecot/quota-warning.sh" + + envsubst '${DC_PASSWORD} ${DC_MIGRATION_MASTER_PASSWORD} ${DC_LDAP_PASSWORD} ${DC_OIDC_CLIENT_ID} ${DC_OIDC_CLIENT_SECRET}' < "/etc/dovecot.template/welcome.sh" > "/etc/dovecot/welcome.sh" + + chmod a+x /etc/dovecot/*.sh + env: + - name: "DC_PASSWORD" + valueFrom: + secretKeyRef: + name: "dovecot" + key: password + - name: "DC_MIGRATION_MASTER_PASSWORD" + valueFrom: + secretKeyRef: + name: "dovecot" + key: migrationMasterPassword + - name: "DC_LDAP_PASSWORD" + valueFrom: + secretKeyRef: + name: "dovecot" + key: ldapPassword + - name: "DC_OIDC_CLIENT_ID" + valueFrom: + secretKeyRef: + name: "dovecot" + key: oidcClientID + - name: "DC_OIDC_CLIENT_SECRET" + valueFrom: + secretKeyRef: + name: "dovecot" + key: oidcClientSecret + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: "config-template" + mountPath: "/etc/dovecot.template" + - name: "config" + mountPath: "/etc/dovecot" + containers: + - name: dovecot + securityContext: + allowPrivilegeEscalation: false + capabilities: + add: + - CHOWN + - DAC_OVERRIDE + - KILL + - NET_BIND_SERVICE + - SETGID + - SETUID + - SYS_CHROOT + drop: + - ALL + readOnlyRootFilesystem: true + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images/dovecot-public-sector:2.3.21@sha256:c76965a84d1ca527f523404eb027119f6736b199c094e4671037cb345ecad3dc" + imagePullPolicy: IfNotPresent + env: + ports: + - name: auth + containerPort: 3659 + protocol: + - name: doveadm + containerPort: 9000 + protocol: + - name: doveadm2 + containerPort: 9200 + protocol: + - name: doveadmhttp + containerPort: 8080 + protocol: + - name: imap + containerPort: 143 + protocol: + - name: imaps + containerPort: 993 + protocol: + - name: lmpt + containerPort: 24 + protocol: + - name: managasieve + containerPort: 4190 + protocol: + - name: openmetrics + containerPort: 9900 + protocol: + - name: pop3 + containerPort: 110 + protocol: + - name: pop3s + containerPort: 995 + protocol: + livenessProbe: + tcpSocket: + port: "imap" + initialDelaySeconds: 15 + periodSeconds: 20 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + readinessProbe: + tcpSocket: + port: "imap" + initialDelaySeconds: 15 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: "config" + mountPath: "/etc/dovecot" + - name: "config-virtual-volume" + mountPath: "/etc/dovecot/virtual/All" + - name: "tls-volume" + mountPath: "/etc/tls" + - name: "srv-mail" + mountPath: "/srv/mail" + - name: "run-dovecot" + mountPath: "/run/dovecot" + - name: "var-lib-dovecot" + mountPath: "/var/lib/dovecot" +... + +--- +# Source: postfix/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: postfix-ox + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix-ox + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +... +--- +# Source: postfix/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "postfix-ox" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix-ox + app.kubernetes.io/managed-by: Helm +stringData: + username: "" + password: "" +... +--- +# Source: postfix/templates/configmap-overrides.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "postfix-ox-overrides" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix-ox + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: "postfix" +data: + sasl_passwd.map: | + : +... +--- +# Source: postfix/templates/configmap-scripts.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "postfix-ox-scripts" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix-ox + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: "postfix" +data: + init-postfix.sh: | + #!/bin/bash + + function initPostfix { + cp /etc/postfix/master.cf.template /etc/postfix/master.cf + cp /etc/postfix/main.cf.template /etc/postfix/main.cf + chmod g-w,o-w /etc/postfix /etc/postfix-copy /var/spool/postfix /var/lib/postfix + chown postfix /var/lib/postfix + + if [ -f /overrides/postfix.cf ]; then + while read line; do + [[ -n "${line}" && "${line}" != [[:blank:]#]* ]] && postconf -e "${line}" + done < /overrides/postfix.cf + echo "Loaded '/overrides/postfix.cf'" + else + echo "No extra postfix settings loaded because optional '/overrides/postfix.cf' not provided." + fi + + # Include table-map files + if ls -A /overrides/*.map 1> /dev/null 2>&1; then + cp /overrides/*.map /etc/postfix/ + postmap /etc/postfix/*.map + rm /etc/postfix/*.map + chown root:root /etc/postfix/*.lmdb + chmod 0600 /etc/postfix/*.lmdb + echo "Loaded 'map files'" + else + echo "No extra map files loaded because optional '/overrides/*.map' not provided." + fi + + cp -a /etc/postfix/* /etc/postfix-copy/ + echo "Init done" + } + + initPostfix >> /proc/1/fd/1 + + start-postfix.sh: | + #!/bin/bash + + function startPostfix { + + /usr/sbin/postfix start-fg + } + + startPostfix &>> /proc/1/fd/1 + + namespace-watcher.sh: | + #!/bin/bash + + DELAY=${DELAY:-10} + DOMAIN=${DOMAIN:-"develop.souvap-univention.de"} + INTERNAL_DOMAIN=${INTERNAL_DOMAIN:-"svc.cluster.local"} + KUBECTL_BIN="/usr/bin/env kubectl" + MAILSERVER=${MAILSERVER:-"dovecot"} + MAILSERVER_PORT=${MAILSERVER_PORT:-"24"} + MAILSERVER_PROTOCOL=${MAILSERVER_PROTOCOL:-"lmtps"} + NAMESPACE=${NAMESPACE:-"default"} + SERVICE_NAME=${SERVICE_NAME:-"dovecot"} + TRANSPORT_MAP=${TRANSPORT_MAP:-"/etc/postfix/transport.map"} + VIRTUAL_MAILBOX_DOMAINS=${VIRTUAL_MAILBOX_DOMAINS:-"/etc/postfix/virtual_mailbox_domains.txt"} + WORKDIR=${WORKDIR:-"/namespace-watcher"} + + touch "${WORKDIR}/virtual_mailbox_domains.txt" + touch "${WORKDIR}/transport.map" + + update-postfix() { + echo "updating Postfix ..." + cp "${WORKDIR}/virtual_mailbox_domains.txt.tmp" "${WORKDIR}/virtual_mailbox_domains.txt" + cp "${WORKDIR}/transport.map.tmp" "${WORKDIR}/transport.map" + ${KUBECTL_BIN} exec -n "${NAMESPACE}" ${HOSTNAME} -c postfix -- bash -c "cp \"${WORKDIR}/transport.map\" \"${TRANSPORT_MAP}\"; cp \"${WORKDIR}/virtual_mailbox_domains.txt\" \"${VIRTUAL_MAILBOX_DOMAINS}\"; postmap \"${TRANSPORT_MAP}\"; postfix reload" + } + + while true; do + # Get all namespaces containting a service called dovecot + namespaces=( $( ${KUBECTL_BIN} get -A service -o jsonpath="{.items[?(@.metadata.name==\"${SERVICE_NAME}\")].metadata.namespace}" ) ) + rm -f "${WORKDIR}/virtual_mailbox_domains.txt.tmp" + rm -f "${WORKDIR}/transport.map.tmp" + for ns in $(printf "%q\n" "${namespaces[@]}" | sort -u); do + # Get all mail domains from annotation + IFS=',' read -r -a domains <<< $( ${KUBECTL_BIN} get service -n ${ns} ${SERVICE_NAME} -o jsonpath='{.metadata.annotations.opendesk\.eu/mail-domains}' ) + # Add default namespace domain + domains+=("${ns}.${DOMAIN}") + for domain in $(printf "%q\n" "${domains[@]}" | sort -u); do + echo "${domain}" >> "${WORKDIR}/virtual_mailbox_domains.txt.tmp" + echo "${domain} ${MAILSERVER_PROTOCOL}:${MAILSERVER}.${ns}:${MAILSERVER_PORT}" >> "${WORKDIR}/transport.map.tmp" + done + done + cmp "${WORKDIR}/transport.map" "${WORKDIR}/transport.map.tmp" || update-postfix + sleep ${DELAY} + echo "👀" + done +... +--- +# Source: postfix/templates/configmap.yaml +kind: "ConfigMap" +apiVersion: "v1" +metadata: + name: "postfix-ox-config" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix-ox + 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_client_restrictions= + -o smtpd_proxy_options=speed_adjust + -o smtpd_recipient_restrictions= + -o smtpd_relay_restrictions=permit_sasl_authenticated,reject_unauth_destination + -o smtpd_sender_restrictions= + + submission inet n - n - - smtpd + -o smtpd_client_connection_count_limit=15 + -o smtpd_proxy_options=speed_adjust + -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject + -o smtpd_reject_unlisted_recipient=no + -o smtpd_sasl_auth_enable=yes + -o smtpd_tls_security_level=encrypt + -o syslog_name=postfix/submission + + 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_send_xforward_command=yes + -o lmtp_tls_ciphers=high + -o lmtp_tls_mandatory_ciphers=high + -o lmtp_tls_mandatory_protocols=>=TLSv1.2 + -o lmtp_tls_note_starttls_offer=yes + -o lmtp_tls_protocols=>=TLSv1.2 + -o lmtp_tls_security_level=encrypt + + main.cf: | + compatibility_level=3.6 + + mydomain = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + myhostname = postfix + myorigin = $mydomain + inet_protocols = ipv4 + + # Message size limit + message_size_limit = 50000000 + + # Relayed networks + mynetworks = 127.0.0.1/32 [::1]/128 + + # 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 + + recipient_delimiter = + + + # 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_tls_CAfile = + smtp_tls_mandatory_protocols = >=TLSv1.2 + smtp_tls_security_level = encrypt + smtp_tls_session_cache_database = lmdb:/var/lib/postfix/smtp_scache + + virtual_mailbox_domains = yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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_sasl_authenticated, + 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_sasl_authenticated, + permit + + # Relay restrictions + smtpd_relay_restrictions = + permit_sasl_authenticated, + reject_unauth_destination + + smtpd_sasl_auth_enable = yes + smtpd_sasl_path = inet:dovecot:3659 + smtpd_sasl_security_options = noanonymous + smtpd_sasl_type = dovecot + smtpd_tls_cert_file = /etc/tls/tls.crt + smtpd_tls_key_file = /etc/tls/tls.key + smtpd_tls_mandatory_protocols = >=TLSv1.2 + smtpd_tls_security_level = encrypt + smtpd_tls_session_cache_database = lmdb:/var/lib/postfix/smtpd_scache + + smtpd_milters = inet:clamav-simple:7357 + milter_default_action = tempfail + + ############### + # Extra Settings + ############### + maillog_file = /dev/stdout + + smtpd.conf: | + pwcheck_method: auxprop + auxprop_plugin: sasldb + mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM + sasldb_path: /etc/postfix/sasldb +... +--- +# Source: postfix/templates/persistentvolumeclaim.yaml +apiVersion: "v1" +kind: "PersistentVolumeClaim" +metadata: + name: "postfix-ox" +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "1Gi" + +... +--- +# Source: postfix/templates/service-external.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "postfix-ox-external" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix-ox + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: "postfix" + annotations: + "helm.sh/resource-policy": "keep" +spec: + type: "LoadBalancer" + externalTrafficPolicy: "Cluster" + internalTrafficPolicy: "Cluster" + 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-ox +... +--- +# Source: postfix/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "postfix-ox" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix-ox + 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-ox +... +--- +# Source: postfix/templates/deployment.yaml +apiVersion: "apps/v1" +kind: "Deployment" +metadata: + name: "postfix-ox" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix-ox + 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-ox + strategy: + type: Recreate + template: + metadata: + annotations: + checksum/configmap: 41de5e81fa3d031735a8bafaaa4f71addb27f60fea82757bbe87ca3e1067841b + checksum/configmapoverrides: 58a173189b67d5c2a841e2ba8d602e4fb6d70ffd239bd848b52c3cf03cc98f40 + checksum/configmapnamespacewatcherbin: 0acbd8ef08e9799e69bbd9ea562bc7bc253aea187a6e8491ca74f651406464d4 + labels: + app.kubernetes.io/name: postfix + helm.sh/chart: postfix-3.0.1 + app.kubernetes.io/instance: postfix-ox + app.kubernetes.io/managed-by: Helm + spec: + imagePullSecrets: + securityContext: + fsGroup: 101 + serviceAccountName: postfix-ox + volumes: + - name: "postfix-scripts" + configMap: + name: "postfix-ox-scripts" + defaultMode: 0777 + - name: "config-templates" + configMap: + name: "postfix-ox-config" + - name: "config-master" + configMap: + name: "postfix-ox-config" + items: + - key: "master.cf" + path: "master.cf" + - name: "config-main" + configMap: + name: "postfix-ox-config" + items: + - key: "main.cf" + path: "main.cf" + - name: "config" + emptyDir: + sizeLimit: "100Mi" + medium: "Memory" + - name: "lib-postfix" + emptyDir: + sizeLimit: "100Mi" + medium: "Memory" + - name: "tls" + secret: + secretName: "opendesk-certificates-tls" + - name: "spool-postfix" + persistentVolumeClaim: + claimName: "postfix-ox" + - name: "overrides" + configMap: + name: "postfix-ox-overrides" + initContainers: + - name: "init-postfix" + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d" + imagePullPolicy: "IfNotPresent" + command: ['bash', '-c', "/usr/local/bin/init-postfix.sh"] + resources: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 16Mi + volumeMounts: + - name: "config" + mountPath: "/etc/postfix-copy" + - name: "config-templates" + mountPath: "/etc/postfix/master.cf.template" + subPath: "master.cf" + - name: "config-templates" + mountPath: "/etc/postfix/main.cf.template" + subPath: "main.cf" + - name: "lib-postfix" + mountPath: "/var/lib/postfix" + - name: "postfix-scripts" + mountPath: "/usr/local/bin/init-postfix.sh" + subPath: "init-postfix.sh" + - name: "tls" + mountPath: "/etc/tls" + - name: "spool-postfix" + mountPath: "/var/spool/postfix" + - name: "overrides" + mountPath: "/overrides" + containers: + - name: "postfix" + securityContext: + allowPrivilegeEscalation: true + capabilities: {} + privileged: true + readOnlyRootFilesystem: true + runAsGroup: 0 + runAsNonRoot: false + runAsUser: 0 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/postfix:3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d" + imagePullPolicy: "IfNotPresent" + command: ['bash', '-c', "/usr/local/bin/start-postfix.sh"] + 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" + mountPath: "/etc/postfix" + readOnly: true + - name: "postfix-scripts" + mountPath: "/usr/local/bin/start-postfix.sh" + subPath: "start-postfix.sh" + - name: "lib-postfix" + mountPath: "/var/lib/postfix" + - name: "tls" + mountPath: "/etc/tls" + - name: "spool-postfix" + mountPath: "/var/spool/postfix" +... + +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: open-xchange-core-mw + namespace: yschmidt-opendesk-argo + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-imageconverter/templates/envvars.yaml +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-imageconverter-envvars + namespace: yschmidt-opendesk-argo + annotations: + helm.sh/resource-policy: "keep" + labels: + helm.sh/chart: core-imageconverter-2.34.1 +type: Opaque +data: + MASTER_ADMIN_USER: "YWRtaW4=" + MASTER_ADMIN_PW: "ODE4ZjI2YmY4NjY1NDgwYzdlMWUyY2VkZmFkZWQyODVhYzFjOGIxNg==" + OX_BASIC_AUTH_LOGIN: "b3hsb2dpbg==" + OX_BASIC_AUTH_PASSWORD: "MzAxNzExZmNiOGFmNjY0YWYyNzE0MTFjYmY0MDNkMDdmMzI4NzEyZA==" +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# contextsets-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-contextsets-secret +data: + context-sets-secret-overrides.yaml: e30= +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# etc-secrets-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-etc-secrets-secret +data: + oxguardpass: TUNZakptTW1ZM1pqVmxaVEZoT0dFell6WTRaREE9ClJDWVRobE16WXdNbU5sTVRNM01EQTNOak0zWTJRPQo= +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# mysql-secret + +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-mysql + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +type: Opaque +stringData: + MYSQL_WRITE_HOST: mariadb + MYSQL_WRITE_PORT: "3306" + MYSQL_WRITE_DATABASE: configdb + MYSQL_WRITE_USER: root + MYSQL_WRITE_PASSWORD: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 + MYSQL_READ_HOST: mariadb + MYSQL_READ_PORT: "3306" + MYSQL_READ_DATABASE: configdb + MYSQL_READ_USER: root + MYSQL_READ_PASSWORD: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 + MYSQL_HOST: mariadb + MYSQL_PORT: "3306" + MYSQL_DATABASE: configdb + MYSQL_USER: root + MYSQL_PASSWORD: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# properties-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-properties-secret +data: + 1000_secret-overrides.yaml: Cgphbnl3aGVyZTogCiAgY29tLm9wZW5leGNoYW5nZS5jb25mZXJlbmNlLmVsZW1lbnQuYXV0aFRva2VuOiA1ZGJhYTgyZWRhODViYjI1Zjc5NjMwNjNiMzI3NTU1ZTNmM2E4MjFkCiAgY29tLm9wZW5leGNoYW5nZS5jb29raWUuaGFzaC5zYWx0OiA2ZGE0N2NmN2MzMTlkMzk4YWU0YzNhNDgyM2Q1NGQ2MDI0ZTM2ZmQwCiAgY29tLm9wZW5leGNoYW5nZS5zZXNzaW9uZC5lbmNyeXB0aW9uS2V5OiA0M2EwMmIyMzFjYzc1MTVkMTQ3NzI5MDExZTU1ZDMzZGJiN2ExMGZmCiAgY29tLm9wZW5leGNoYW5nZS5zaGFyZS5jcnlwdEtleTogOTEyODFmMjBlMDA5NmY1Y2UyNzk0Nzk5MTU4YWM5MTU5NTM4NjUyMQogIAo= +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# secret-envvars +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-secret-envvars + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +type: Opaque +data: + CREDSTORAGE_PASSCRYPT: aWx5YUhPRmY1dmVEY0hvdktjTXc4aFVpZ1BSTkxBdVQ= + MASTER_ADMIN_USER: YWRtaW4= + MASTER_ADMIN_PW: ODE4ZjI2YmY4NjY1NDgwYzdlMWUyY2VkZmFkZWQyODVhYzFjOGIxNg== + OX_BASIC_AUTH_LOGIN: b3hsb2dpbg== + OX_BASIC_AUTH_PASSWORD: MzAxNzExZmNiOGFmNjY0YWYyNzE0MTFjYmY0MDNkMDdmMzI4NzEyZA== + JOLOKIA_LOGIN: am9sb2tpYQ== + JOLOKIA_PASSWORD: MjIwMWViZGM1M2EzMjI1NGE4NzdlNTA1NWRjZjBjZjQwMjYzMDI5NA== +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# ui-settings-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-ui-settings-secret +data: + 2000_secret-ui-overrides.yaml: Cgovb3B0L29wZW4teGNoYW5nZS9ldGMvc2V0dGluZ3Mvb3ZlcnJpZGVzLnByb3BlcnRpZXM6IAogIHt9Cgo= +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# yaml-secrets-secret +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-core-mw-yaml-secrets-secret +data: + ldap-client-config.yml: Y29udGFjdHNMZGFwQ2xpZW50OgogIGF1dGg6CiAgICBhZG1pbkROOgogICAgICBkbjogdWlkPWxkYXBzZWFyY2hfb3gsY249dXNlcnMsZGM9c3dwLWxkYXAsZGM9aW50ZXJuYWwKICAgICAgcGFzc3dvcmQ6IDU3MzU2YmY5MmU0NzUxNjRhOGM0NTIyZGZkODQ1M2JiMTYyMDk0ZDQKICAgIHR5cGU6IGFkbWluRE4KICBwb29sOgogICAgaG9zdDoKICAgICAgYWRkcmVzczogdW1zLWxkYXAtc2VydmVyCiAgICAgIHBvcnQ6IDM4OQogICAgdHlwZTogc2ltcGxl +--- +# 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: "ZGVmYXVsdA==" + password: "MDdjNTI0ZjBkM2Y5NWI0ZDAzZmVhNTRlYTEwY2ZiODQ4YmRiMzU1ZQ==" +--- +# Source: appsuite-public-sector/charts/appsuite/templates/common-env-secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: open-xchange-common-env + namespace: yschmidt-opendesk-argo + annotations: + helm.sh/resource-policy: "keep" + labels: + helm.sh/chart: appsuite-8.35.284 +data: + COOKIE_HASH_SALT: NmRhNDdjZjdjMzE5ZDM5OGFlNGMzYTQ4MjNkNTRkNjAyNGUzNmZkMA== + SHARE_CRYPT_KEY: OTEyODFmMjBlMDA5NmY1Y2UyNzk0Nzk5MTU4YWM5MTU5NTM4NjUyMQ== + SESSIOND_ENCRYPTION_KEY: NDNhMDJiMjMxY2M3NTE1ZDE0NzcyOTAxMWU1NWQzM2RiYjdhMTBmZg== +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-documentconverter/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-documentconverter-dc-configmap +data: + logback.xml: | + + + + + + + + + + + + + + false + + yyyy-MM-dd'T'HH:mm:ss.SSSZ + Etc/UTC + false + false + true + + + + + + 2048 + 0 + true + + + + + + + + + + + + + + + + /var/log/open-xchange/documentconverter/documentconverter.log + + /var/log/open-xchange/documentconverter/documentconverter.log.%d{yyyy-MM-dd}.%i + + 2MB + + 5 + + + %-4r [%t] %5p %c{1} - %m %mdc %n + + + + + 2048 + 0 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + documentconverter.properties: | + com.openexchange.documentconverter.cacheDir=/var/spool/open-xchange/documentconverter/cache + com.openexchange.documentconverter.scratchDir=/var/spool/open-xchange/documentconverter/scratch + + + com.openexchange.documentconverter.useCool=false + com.openexchange.documentconverter.coolUrl=http://open-xchange-collabora-online.yschmidt-opendesk-argo.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=e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 + + writeDriverClass=com.mysql.cj.jdbc.Driver + writeUrl=jdbc:mysql://mariadb:3306/configdb + writeProperty.1=user=root + writeProperty.2=password=e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 + + 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=server + + 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.monitoring.memory.enabled=false + + com.openexchange.redis.hosts=redis-headless:6379 + com.openexchange.redis.username=default + com.openexchange.redis.password=07c524f0d3f95b4d03fea54ea10cfb848bdb355e + com.openexchange.redis.mode=standalone + com.openexchange.redis.ssl=false + com.openexchange.redis.cache.enabled=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=e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 + + 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/typed-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 + productName: openDesk +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-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/typed-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/typed-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/typed-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/typed-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/typed-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/typed-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: ba9c972d28385e400bc71a5869b8219ec42afb45 + com.openexchange.authentication.oauth.tokenEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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_username + 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.guestSMTPMailFrom: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + com.openexchange.guard.guestSMTPPassword: 1884bda7fb31c726adcd094399ab63319e9ca56f + com.openexchange.guard.guestSMTPPort: "25" + com.openexchange.guard.guestSMTPServer: postfix + com.openexchange.guard.guestSMTPUsername: opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + com.openexchange.guard.storage.file.fileStorageType: file + com.openexchange.guard.storage.file.uploadDirectory: /opt/open-xchange/guard-files/ + com.openexchange.guard.useStartTLS: "false" + 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-ox + com.openexchange.mail.transportServerSource: global + com.openexchange.nextcloud.filepicker.includeAccessToken: "false" + com.openexchange.oauth.provider.allowedIssuer: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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: ba9c972d28385e400bc71a5869b8219ec42afb45 + com.openexchange.oidc.contextLookupClaim: context + com.openexchange.oidc.contextLookupNamePart: full + com.openexchange.oidc.enabled: "true" + com.openexchange.oidc.opAuthorizationEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth + com.openexchange.oidc.opIssuer: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk + com.openexchange.oidc.opJwkSetEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs + com.openexchange.oidc.opLogoutEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout + com.openexchange.oidc.opTokenEndpoint: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token + com.openexchange.oidc.rpRedirectURIAuth: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/appsuite/api/oidc/auth + com.openexchange.oidc.rpRedirectURILogout: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + com.openexchange.oidc.rpRedirectURIPostSSOLogout: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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: 57356bf92e475164a8c4522dfd8453bb162094d4 + bindOnly: "false" + java.naming.provider.url: ldap://ums-ldap-server:389/dc=swp-ldap,dc=internal + /opt/open-xchange/etc/system.properties: + SERVER_NAME: oxserver +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# properties-lean-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-properties-lean-configmap + namespace: yschmidt-opendesk-argo + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +data: + + logback.xml: | + + + + + + + + + + + + + + + false + + yyyy-MM-dd'T'HH:mm:ss.SSSZ + Etc/UTC + false + false + true + + + + + + 2048 + 0 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + languages.properties: |- + + 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-headless:6379 + com.openexchange.redis.username=default + com.openexchange.redis.password=07c524f0d3f95b4d03fea54ea10cfb848bdb355e + com.openexchange.redis.mode=standalone + com.openexchange.redis.ssl=false + com.openexchange.redis.cache.enabled=false +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-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/typed-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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/fs/ + io.ox.public-sector//ics/url: https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/ + 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: '#e7dffa' + io.ox/dynamic-theme//listHover: '#f5f5f5' + io.ox/dynamic-theme//listSelected: '#e7dffa' + io.ox/dynamic-theme//logoURL: https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/logos/domain.svg + io.ox/dynamic-theme//logoWidth: "82" + io.ox/dynamic-theme//mainColor: '#571EFA' + 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/typed-resources.yaml +# yaml-files-configmap +apiVersion: v1 +kind: ConfigMap +metadata: + name: open-xchange-core-mw-yaml-files-configmap +data: + contacts-provider-ldap-mappings.yml: | + + 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: | + + 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: yschmidt-opendesk-argo + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +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: yschmidt-opendesk-argo + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: open-xchange-core-mw +subjects: + - kind: ServiceAccount + name: open-xchange-core-mw + namespace: yschmidt-opendesk-argo +--- +# 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.33.1 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-documentconverter + version: 8.35.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.14 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-guidedtours + version: 8.6.13 +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.34.1 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-imageconverter + version: 8.35.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.10.0 + app.kubernetes.io/name: gotenberg + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: "8.15.3" + 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-http-api + labels: + app.kubernetes.io/name: core-mw + helm.sh/chart: core-mw-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +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-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +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-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +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-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +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-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +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-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-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 +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/documents: "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.2.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui-middleware + version: 2.1.1 +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.37.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui + version: 8.35.2 +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.35.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-user-guide + version: 8.35.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.7.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: guard-ui + version: 8.32.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.4.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: nextcloud-integration-ui + version: 1.4.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.4.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: public-sector-ui + version: 2.4.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.33.1 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-documentconverter + version: 8.35.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/documentconverter: c921fccc4dfd01e208e919a7a44c22aad9b23497 + logging.open-xchange.com/format: appsuite-json + checksum/commonEnv: e6ddbc18a3e99c6946b281e13d21ba4f42631ee59e6eecdc4c8c786950abbe3d + labels: + app.kubernetes.io/name: core-documentconverter + app.kubernetes.io/instance: open-xchange + app: core-documentconverter + version: 8.35.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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter:8.35.1671@sha256:0a7b9d7af9cd22562196b854ad11ca3fd477ddcc70f2ccd113e87ab3b7aad26c + 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 + - name: LO_URL_BLACKLIST_FILE + value: "/opt/open-xchange/etc/readerengine.blacklist" + - name: LO_URL_WHITELIST_FILE + value: "/opt/open-xchange/etc/readerengine.whitelist" + - name: LO_URL_LINK_LIMIT + value: "200" + - name: LO_URL_LINK_PROXY + value: "" + envFrom: + - secretRef: + name: open-xchange-common-env + ports: + - name: http + containerPort: 8008 + protocol: TCP + - name: https + containerPort: 8011 + protocol: TCP + - name: http-live + containerPort: 8017 + protocol: TCP + livenessProbe: + httpGet: + path: /health/liveness + port: http-live + failureThreshold: 15 + periodSeconds: 10 + readinessProbe: + httpGet: + path: /documentconverterws + port: http + failureThreshold: 2 + initialDelaySeconds: 30 + periodSeconds: 5 + timeoutSeconds: 5 + startupProbe: + httpGet: + path: /health/liveness + port: http-live + failureThreshold: 30 + initialDelaySeconds: 30 + periodSeconds: 10 + resources: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.25 + memory: 1.25Gi + volumeMounts: + - name: log-config + mountPath: /opt/open-xchange/etc/logback.xml + subPath: logback.xml + - name: dc-config + mountPath: /opt/open-xchange/etc/documentconverter.properties + subPath: documentconverter.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: 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: documentconverter.properties + path: documentconverter.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.14 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-guidedtours + version: 8.6.13 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-guidedtours + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + null + labels: + app.kubernetes.io/name: core-guidedtours + helm.sh/chart: core-guidedtours-2.6.14 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-guidedtours + version: 8.6.13 + spec: + imagePullSecrets: + null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours:8.6.14@sha256:c00546144667d2d5036fa37b2e6185f1abb53c13e9eee7b0c78ec64ac8e5250a + 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.34.1 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-imageconverter + version: 8.35.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: 823763748212b6d8cf81da680eb719f059c6446f + commit.open-xchange.com/imageconverter: 1251dfea65601a3b66aeba53537f783bfb7e9697 + logging.open-xchange.com/format: appsuite-json + checksum/commonEnv: faf45b39870cd824d8bc0c7bca0bba43d0a4fb979275f222bcdcd93ba1bfe557 + labels: + app.kubernetes.io/name: core-imageconverter + app.kubernetes.io/instance: open-xchange + app: core-imageconverter + version: 8.35.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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter:8.35.77@sha256:fb67cbaf0771ea6c18b5a1b94aaec9bf72b930227613e70535d382be58940372 + 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.10.0 + app.kubernetes.io/name: gotenberg + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: "8.15.3" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + progressDeadlineSeconds: 120 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg:8.15.3@sha256:0864c9cd905264f714f0c306d5b38eec8599b908c9096e0283b5db3ff6706172" + imagePullPolicy: IfNotPresent + args: + - gotenberg + - --api-port=3000 + - --api-download-from-max-retry=4 + - --chromium-disable-javascript + - --gotenberg-graceful-shutdown-duration=30s + env: + 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.2.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui-middleware + version: 2.1.1 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-ui-middleware + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + null + labels: + app.kubernetes.io/name: core-ui-middleware + app.kubernetes.io/instance: open-xchange + app: core-ui-middleware + version: 2.1.1 + spec: + imagePullSecrets: + null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware:2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3 + imagePullPolicy: IfNotPresent + env: + - name: CACHE_TTL + value: "30000" + - name: LOG_LEVEL + value: "info" + - name: BIND_ADDR + value: "::" + - 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-headless: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.2.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui-middleware + version: 2.1.1 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-ui-middleware + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + null + labels: + app.kubernetes.io/name: core-ui-middleware + app.kubernetes.io/instance: open-xchange + app: core-ui-middleware + version: 2.1.1 + spec: + imagePullSecrets: + null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware:2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3 + command: ["/nodejs/bin/node", "src/updater.js"] + imagePullPolicy: IfNotPresent + env: + - name: PROPAGATE_UPGRADES + value: "true" + - name: CACHE_TTL + value: "30000" + - name: LOG_LEVEL + value: "info" + - name: BIND_ADDR + value: "::" + - 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-headless: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.37.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-ui + version: 8.35.2 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-ui + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + null + labels: + app.kubernetes.io/name: core-ui + app.kubernetes.io/instance: open-xchange + app: core-ui + version: 8.35.2 + spec: + imagePullSecrets: + null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui:8.35.2@sha256:658563b6ec4d3d5f2e06f2987cd8e730d91b8d0c65b0206495007d347f98965f + 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.35.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-user-guide + version: 8.35.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: core-user-guide + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + null + labels: + app.kubernetes.io/name: core-user-guide + app.kubernetes.io/instance: open-xchange + spec: + imagePullSecrets: + null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide:8.35.1292950@sha256:a6937222e3b07b42c7dc6a066aae0cd05b3b899325a4e4aee50ee91355c9b3b5 + 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.7.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: guard-ui + version: 8.32.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: 18b39d1cce594c72c19a659fd74aa40457080bc2 + labels: + app.kubernetes.io/name: guard-ui + helm.sh/chart: guard-ui-2.7.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: guard-ui + version: 8.32.0 + spec: + imagePullSecrets: + null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui:8.32.0@sha256:5c9542f9112882e46c3b8cb6f0ca2bef61585abac0e640a4fafa7d7ef60a392b + 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.4.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: nextcloud-integration-ui + version: 1.4.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: nextcloud-integration-ui + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + null + labels: + app.kubernetes.io/name: nextcloud-integration-ui + helm.sh/chart: nextcloud-integration-ui-1.4.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: nextcloud-integration-ui + version: 1.4.0 + spec: + imagePullSecrets: + null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui:1.4.0@sha256:4be267ab2dc8dbef6b8382e2de6b28f3851a7af7f68702f360d457898cb9011e + 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.4.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: public-sector-ui + version: 2.4.0 +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: public-sector-ui + app.kubernetes.io/instance: open-xchange + template: + metadata: + annotations: + null + labels: + app.kubernetes.io/name: public-sector-ui + helm.sh/chart: public-sector-ui-2.4.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: public-sector-ui + version: 2.4.0 + spec: + imagePullSecrets: + null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui:2.4.0@sha256:6513e948028ed98aca633d9943ef3be5fed890e4757eee6b527b7215206d2bd6 + 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/typed-resources.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-6.6.2 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: core-mw + version: 8.35.31 + 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" + roles.middleware.open-xchange.com/documents: "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: 823763748212b6d8cf81da680eb719f059c6446f + commit.open-xchange.com/documentconverter-api: 05f6c22f2e0c7f572efefca0eb8d67d0292d0a48 + commit.open-xchange.com/exchange-interop: 7dba363002de2d05f1f5f80cad02e707bb2bac6c + commit.open-xchange.com/guard: 74c97ad3539d5e2d76b0e5c5d34915bd3bffb857 + commit.open-xchange.com/imageconverter: 1251dfea65601a3b66aeba53537f783bfb7e9697 + commit.open-xchange.com/nextcloud-integration: 60f9130e052350dcbf7587af508d875f06c276c2 + commit.open-xchange.com/office: c2f311e15a7a4b8ab36eff2b3a90ec808b5de77c + commit.open-xchange.com/public-sector: ff2817bd44501f651d398c8bfc5185a8a4533ffe + commit.open-xchange.com/weakforced: 7e517a2d71f788ac8e48a16b498638ca62265dc3 + logging.open-xchange.com/format: appsuite-json + checksum/allConfig: "56c481653ad61602d3592b583a139bb5af7260810846e41f8483e72742f9b28" + checksum/commonEnv: 0dc97c8ab62b6d74198123eafa78f5e130ccbf213d4a5bda8974bea6862ab119 + labels: + app.kubernetes.io/name: core-mw + app.kubernetes.io/instance: open-xchange + app: core-mw + version: 8.35.31 + 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" + roles.middleware.open-xchange.com/documents: "true" + + spec: + imagePullSecrets: + null + 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.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2 + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + command: + - "/bin/bash" + - "-c" + - | + + 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: SERVER_NAME + value: server + - name: RELEASE_NAMESPACE + value: yschmidt-opendesk-argo + - 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-documents-monitoring open-xchange-documents-templates 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-storage-provider 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: DCS_SERVICENAME + value: open-xchange-core-documents-collaboration + - name: DC_SERVER_URL + value: http://open-xchange-core-documentconverter.yschmidt-opendesk-argo.svc.cluster.local:8008/documentconverterws + - name: CS_SERVER_URL + value: http://open-xchange-core-cacheservice.yschmidt-opendesk-argo.svc.cluster.local:8001/cache + - name: IC_SERVER_URL + value: http://open-xchange-core-imageconverter.yschmidt-opendesk-argo.svc.cluster.local:8005/imageconverter + - name: SPELLCHECK_SERVER_URL + value: http://open-xchange-core-spellcheck.yschmidt-opendesk-argo.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_MEM + 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/ + + containers: + - name: core-mw + image: registry.opencode.de/bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector:8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2 + 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: yschmidt-opendesk-argo + - 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-documents-monitoring open-xchange-documents-templates 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-storage-provider 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: DCS_SERVICENAME + value: open-xchange-core-documents-collaboration + - name: DC_SERVER_URL + value: http://open-xchange-core-documentconverter.yschmidt-opendesk-argo.svc.cluster.local:8008/documentconverterws + - name: CS_SERVER_URL + value: http://open-xchange-core-cacheservice.yschmidt-opendesk-argo.svc.cluster.local:8001/cache + - name: IC_SERVER_URL + value: http://open-xchange-core-imageconverter.yschmidt-opendesk-argo.svc.cluster.local:8005/imageconverter + - name: SPELLCHECK_SERVER_URL + value: http://open-xchange-core-spellcheck.yschmidt-opendesk-argo.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_ENABLED + value: "true" + - name: HZ_SERVICE_DNS + value: "open-xchange-core-mw-hazelcast-headless.yschmidt-opendesk-argo.svc.cluster.local" + - name: HZ_GROUP_NAME + value: "hzgroup" + - name: HZ_GROUP_PASSWORD + value: "6e1ec5fff93ffe194feaec82ae14836c3c33fcb8" + - name: JAVA_OPTS_MEM + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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-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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + http: + paths: + - path: /(.*) + pathType: ImplementationSpecific + backend: + service: + name: open-xchange-core-mw-sync + port: + number: 80 +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# etc-binaries-configmap +--- +# Source: appsuite-public-sector/charts/appsuite/charts/core-mw/templates/typed-resources.yaml +# etc-binaries-secret +--- +# 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.14 + app.kubernetes.io/name: core-guidedtours + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: "8.6.13" + 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.37.2 + app.kubernetes.io/name: core-ui + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: "8.35.2" + 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.35.0 + app.kubernetes.io/name: core-user-guide + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/version: "8.35.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.4.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: nextcloud-integration-ui + version: 1.4.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.4.0 + app.kubernetes.io/instance: open-xchange + app.kubernetes.io/managed-by: Helm + app: public-sector-ui + version: 2.4.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: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" +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: "yschmidt-opendesk-argo" # 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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/alpine/k8s:1.31.3@sha256:77812543abe5649b286d5f0dc17a7dbaa4056433225f6f695150f329cb4b6803" + imagePullPolicy: "IfNotPresent" + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + env: + - name: "NAMESPACE" + value: "yschmidt-opendesk-argo" + - 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.19.0 + app.kubernetes.io/instance: ox-connector + app.kubernetes.io/managed-by: Helm + +... +--- +# 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.19.0 + app.kubernetes.io/instance: ox-connector + app.kubernetes.io/managed-by: Helm +data: + provisioning_api_password: "NWIyNWQyYmUyNjkwZWUzYWNmMzJhNGY5MzAwNmU4MDEwZmY0YmJkMg==" + +... +--- +# Source: ox-connector/templates/configmap.yaml +apiVersion: v1 +data: + DEFAULT_CONTEXT: "1" + DOMAINNAME: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: 818f26bf8665480c7e1e2cedfaded285ac1c8b16 + OX_SMTP_SERVER: smtp://127.0.0.1:587 + OX_SOAP_SERVER: https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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.19.0 + 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.19.0 + 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: 739c01d2384f53e04a3d80abe138614027cffd0847565d475bb2d2658e4d380d + checksum/secret: eac4a64240bb01531210eef0fbd84bc9fb0c2f1ef9b92d596497aaebca845eb7 + labels: + app.kubernetes.io/name: ox-connector + app.kubernetes.io/instance: ox-connector + spec: + serviceAccountName: ox-connector + securityContext: + fsGroup: 1000 + initContainers: + - name: wait-for-api + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + command: [ "/bin/bash", "/scripts/wait-for-api.sh" ] + + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency:0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8" + imagePullPolicy: IfNotPresent + + envFrom: + - configMapRef: + name: ox-connector + volumeMounts: + - name: wait-for-api + mountPath: /scripts + resources: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 64Mi + + containers: + - name: ox-connector + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone:0.19.0@sha256:447e3c3e0cdd8bf1f86004d2088c24fcf6141ff6fef78ade8dfe86f7f16ba40e" + 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 + livenessProbe: + exec: + command: + - /bin/sh + - -c + - | + exit 0 + failureThreshold: 3 + initialDelaySeconds: 120 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 3 + readinessProbe: + exec: + command: + - /bin/sh + - -c + - | + exit 0 + failureThreshold: 30 + initialDelaySeconds: 30 + periodSeconds: 15 + successThreshold: 1 + timeoutSeconds: 3 + 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 + +... +--- +# Source: ox-connector/templates/configmap.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023 Univention GmbH +--- +# Source: ox-connector/templates/hpa.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023 Univention GmbH +--- +# Source: ox-connector/templates/secret.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023 Univention GmbH +--- +# Source: ox-connector/templates/statefulset.yaml +# SPDX-License-Identifier: AGPL-3.0-only +# SPDX-FileCopyrightText: 2023 Univention GmbH + +--- +# Source: opendesk-nextcloud-management/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: opendesk-nextcloud-management + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + 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/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-management-administrator" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: "nextcloud" + password: "d132ecf836fac6a43b19341f94d5effff7edee65" +... +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-management-database" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: "nextcloud_user" + password: "0c6b73606d239fe1aba0b3f28ada476e3a58fa2f" +... +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-management-cache" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: "default" + password: "07c524f0d3f95b4d03fea54ea10cfb848bdb355e" +... +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-management-ldap" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + password: "f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0" +... +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-management-smtp" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + password: "1884bda7fb31c726adcd094399ab63319e9ca56f" +... +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-management-integration" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: "opendesk_username" + password: "1e2eb0fc3815d766ef1be11fb4edba676856ba52" +... +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-management-oidc" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: "opendesk-nextcloud" + password: "9ba1ae31cafd277b67b043234aa0d0fdd53d90b8" +... +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-management-objectstore" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + username: "nextcloud_user" + password: "cd58fb1bf965a7605e316b394f11ae9c67b3220f" +... +--- +# Source: opendesk-nextcloud-management/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-management-serverinfo" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-php +stringData: + token: "53514b7a8729d5b3a6acdc6295ae3694f19065f9" +... +--- +# Source: opendesk-nextcloud-management/templates/job.yaml +apiVersion: "batch/v1" +kind: "Job" +metadata: + name: "opendesk-nextcloud-management-1" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + 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: 60 + template: + metadata: + labels: + app.kubernetes.io/name: opendesk-nextcloud-management + helm.sh/chart: opendesk-nextcloud-management-4.0.3 + app.kubernetes.io/instance: opendesk-nextcloud-management + app.kubernetes.io/managed-by: Helm + annotations: + checksum/configmap: 5d8dc088de425e524012e21c06f0156608519f8e0110dfa15567545d77fc6677 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4" + imagePullPolicy: IfNotPresent + env: + - name: "FS_ENV_SUBSCRIPTION_KEY" + 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: "pgsql" + - name: "FS_ENV_DBHOST" + value: "postgresql" + - name: "FS_ENV_DBNAME" + value: "nextcloud" + - name: "FS_ENV_DBPORT" + value: "5432" + - 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_REDIS_TLS_ENABLED" + value: "false" + - name: "FS_ENV_MAIL_SMTPAUTH" + value: "true" + - name: "FS_ENV_MAIL_SMTPNAME" + valueFrom: + secretKeyRef: + name: "opendesk-nextcloud-management-smtp" + key: "username" + - name: "FS_ENV_MAIL_SMTPPASSWORD" + valueFrom: + secretKeyRef: + name: "opendesk-nextcloud-management-smtp" + key: "password" + - name: "FS_ENV_MAIL_SMTPAUTHTYPE" + value: "LOGIN" + - name: "FS_ENV_MAIL_SMTPMODE" + value: "smtp" + - name: "FS_ENV_MAIL_SMTPSECURE" + value: "tls" + - name: "FS_ENV_MAIL_SMTPHOST" + value: "postfix.yschmidt-opendesk-argo.svc.cluster.local" + - name: "FS_ENV_MAIL_SMTPPORT" + value: "587" + - name: "FS_ENV_MAIL_DOMAIN" + value: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "FS_ENV_MAIL_FROM_ADDRESS" + value: "no-reply" + - name: "FS_ENV_MAIL_SMTPVERIFYPEER" + value: "true" + - name: "FS_ENV_PORTAL_URL" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "FS_ENV_LOGO_URL" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/logos/domain.svg" + - name: "FS_ENV_WEBMAIL_URL" + value: "https://webmail.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/.well-known/openid-configuration" + - name: "FS_ENV_OIDC_MAPPING_UID" + value: "opendesk_useruuid" + - name: "FS_ENV_LDAP" + value: "ewogICJsZGFwQWdlbnROYW1lIjogInVpZD1sZGFwc2VhcmNoX25leHRjbG91ZCxjbj11c2VycyxkYz1zd3AtbGRhcCxkYz1pbnRlcm5hbCIsCiAgImxkYXBCYXNlIjogImRjPXN3cC1sZGFwLGRjPWludGVybmFsIiwKICAibGRhcEJhc2VHcm91cHMiOiAiZGM9c3dwLWxkYXAsZGM9aW50ZXJuYWwiLAogICJsZGFwQmFzZVVzZXJzIjogImRjPXN3cC1sZGFwLGRjPWludGVybmFsIiwKICAibGRhcEhvc3QiOiAibGRhcDovL3Vtcy1sZGFwLXNlcnZlciIsCiAgImxkYXBQb3J0IjogIjM4OSIsCiAgImxkYXBBZG1pbkdyb3VwIjogIm1hbmFnZWQtYnktYXR0cmlidXRlLUZpbGVzaGFyZUFkbWluIiwKICAibGRhcEdyb3VwRGlzcGxheU5hbWUiOiAiY24iLAogICJsZGFwR3JvdXBGaWx0ZXIiOiAiJygmKG9iamVjdENsYXNzPW9wZW5kZXNrRmlsZXNoYXJlR3JvdXApKG9wZW5kZXNrRmlsZXNoYXJlRW5hYmxlZD1UUlVFKSknIiwKICAibGRhcEdyb3VwRmlsdGVyT2JqZWN0Y2xhc3MiOiAib3BlbmRlc2tGaWxlc2hhcmVHcm91cCIsCiAgImxkYXBMb2dpbkZpbHRlciI6ICInKCYob3BlbmRlc2tGaWxlc2hhcmVFbmFibGVkPVRSVUUpKGVudHJ5VVVJRD0ldWlkKSknIiwKICAibGRhcFVzZXJGaWx0ZXIiOiAiJyhvcGVuZGVza0ZpbGVzaGFyZUVuYWJsZWQ9VFJVRSknIiwKICAibGRhcFVzZXJGaWx0ZXJPYmplY3RjbGFzcyI6ICJvcGVuZGVza0ZpbGVzaGFyZVVzZXIiCn0K" + - 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "FS_ENV_MONITORING_TOKEN" + valueFrom: + secretKeyRef: + name: "opendesk-nextcloud-management-serverinfo" + key: "token" + - name: "FS_ENV_OBJECTSTORE_BUCKET" + value: "nextcloud" + - name: "FS_ENV_OBJECTSTORE_HOST" + value: "objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "FS_ENV_PUBLIC_WOPI_URL" + value: "https://office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "FS_ENV_TRUSTED_DOMAINS" + value: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "FS_ENV_TRUSTED_PROXIES" + value: "127.0.0.1" + - name: "FS_ENV_THEMING_COLOR" + value: "#571EFA" + - name: "FS_ENV_THEMING_PRODUCTNAME" + value: "openDesk" + - name: "FS_ENV_NCADMINENABLED" + value: "true" + - 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_SHAREBYMAIL_ENFORCE_PASSWORD_PROTECTION" + value: "false" + - name: "FS_ENV_SHAREBYMAIL_SEND_PASSWORD_MAIL" + value: "true" + - name: "FS_ENV_DAV_SYSTEM_ADDRESSBOOK_EXPOSED" + value: "true" + - name: "FS_ENV_FEATURE_CIRCLES_ENABLED" + value: "false" + - name: "FS_ENV_FEATURE_BRUTE_FORCE_PROTECTION_ENABLED" + value: "true" + - name: "FS_ENV_FEATURE_FEDERATION_ENABLED" + value: "false" + - name: "FS_ENV_FEATURE_APPS_CONTACTS_ENABLED" + value: "false" + - name: "FS_ENV_FEATURE_APPS_FILES_ZIP_ENABLED" + value: "true" + - name: "FS_ENV_FEATURE_APPS_GROUPFOLDERS_ENABLED" + value: "true" + - name: "FS_ENV_FEATURE_APPS_INTEGRATION_OPENPROJECT_ENABLED" + value: "true" + - name: "FS_ENV_FEATURE_APPS_SPREED_ENABLED" + value: "true" + - name: "FS_ENV_CREATE_OCDATA" + value: "true" + - name: "FS_ENV_INTEGRATION_OXAPPSUITE_ENABLED" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-aio +automountServiceAccountToken: false +... +--- +# Source: opendesk-nextcloud/charts/exporter/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: opendesk-nextcloud-exporter + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-exporter +automountServiceAccountToken: false +... +--- +# Source: opendesk-nextcloud/charts/aio/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-aio-database" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-aio +stringData: + username: "nextcloud_user" + password: "0c6b73606d239fe1aba0b3f28ada476e3a58fa2f" +... +--- +# Source: opendesk-nextcloud/charts/aio/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-aio-cache" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-aio +stringData: + username: "default" + password: "07c524f0d3f95b4d03fea54ea10cfb848bdb355e" +... +--- +# Source: opendesk-nextcloud/charts/exporter/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-nextcloud-exporter" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-exporter +stringData: + token: "53514b7a8729d5b3a6acdc6295ae3694f19065f9" +... +--- +# Source: opendesk-nextcloud/charts/aio/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "opendesk-nextcloud-aio" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-aio +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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-exporter +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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-aio +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: aio + app.kubernetes.io/instance: opendesk-nextcloud + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: ff97dbd165e5b2e6a036e8e945fc5e5518db6b37e3966fea0a1c363f8085a3fb + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-4.0.2 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4" + imagePullPolicy: IfNotPresent + env: + - name: "FS_ENV_OVERWRITE_PROTOCOL" + value: "https" + - name: "FS_ENV_TRUSTED_PROXIES" + value: "10.0.0.0/8" + - name: "FS_ENV_RUN_MODE" + value: "runtime" + - name: "FS_ENV_DBTYPE" + value: "pgsql" + - name: "FS_ENV_DBHOST" + value: "postgresql" + - name: "FS_ENV_DBNAME" + value: "nextcloud" + - name: "FS_ENV_DBPORT" + value: "5432" + - 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_REDIS_TLS_ENABLED" + value: "false" + - name: "FS_ENV_CREATE_OCDATA" + value: "true" + - name: "FS_ENV_TRUSTED_DOMAINS" + value: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-exporter +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: exporter + app.kubernetes.io/instance: opendesk-nextcloud + strategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configmap: 10de92135dcd0e95bbf37a6366bb4b4ddc721b3e87fcea1d926e929af485c573 + labels: + app.kubernetes.io/name: exporter + helm.sh/chart: exporter-4.0.2 + 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: null + 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-aio" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: aio + helm.sh/chart: aio-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-aio +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-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + checksum/configmap: ff97dbd165e5b2e6a036e8e945fc5e5518db6b37e3966fea0a1c363f8085a3fb + intents.otterize.com/service-name: opendesk-nextcloud-aio + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-nextcloud:2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4" + command: + - "/usr/bin/php" + - "/usr/local/bin/entrypoint/entrypoint.php" + imagePullPolicy: IfNotPresent + env: + - name: "FS_ENV_RUN_MODE" + value: "cron" + - name: "FS_ENV_CRON_PHP_MEMORY_LIMIT" + value: "1G" + - name: "FS_ENV_DBTYPE" + value: "pgsql" + - name: "FS_ENV_DBHOST" + value: "postgresql" + - name: "FS_ENV_DBNAME" + value: "nextcloud" + - name: "FS_ENV_DBPORT" + value: "5432" + - 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-4.0.2 + app.kubernetes.io/instance: opendesk-nextcloud + app.kubernetes.io/managed-by: Helm + annotations: + intents.otterize.com/service-name: opendesk-nextcloud-aio + 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: + ingressClassName: "nginx" + tls: + - hosts: + - "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: opendesk-nextcloud-aio + port: + name: http +... + +--- +# Source: collabora-online/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: collabora + labels: + helm.sh/chart: collabora-online-1.1.37 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: "24.04.13.3.1" + app.kubernetes.io/managed-by: Helm +--- +# Source: collabora-online/templates/secret.yaml +apiVersion: v1 +kind: Secret +metadata: + name: collabora + labels: + helm.sh/chart: collabora-online-1.1.37 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: "24.04.13.3.1" + app.kubernetes.io/managed-by: Helm +data: + username: Y29sbGFib3JhLWludGVybmFsLWFkbWlu + password: MWYxODAyODk1NDM2ODY1MmFhNzBjNTQ5OGE1MmYxOTRlNzIxYjE0NQ== +--- +# Source: collabora-online/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: collabora + annotations: + confighash: config-acf7fcfbc47208034cd636e2a5b93730 + labels: + helm.sh/chart: collabora-online-1.1.37 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: "24.04.13.3.1" + app.kubernetes.io/managed-by: Helm +data: + extra_params: --o:ssl.enable=false --o:ssl.termination=true --o:fetch_update_check=0 --o:num_prespawn_children=4 --o:remote_font_config.url=https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/apps/richdocuments/settings/fonts.json --o:net.proto=all --o:logging.anonymize.anonymize_user_data=true + + aliasgroup1: https://files.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de +--- +# Source: collabora-online/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: collabora + labels: + helm.sh/chart: collabora-online-1.1.37 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: "24.04.13.3.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.37 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: "24.04.13.3.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-acf7fcfbc47208034cd636e2a5b93730 + 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: 1001 + containers: + - name: collabora-online + securityContext: + allowPrivilegeEscalation: true + capabilities: + add: + - CHOWN + - FOWNER + - SYS_CHROOT + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk:24.04.13.3.1@sha256:f04a31d72b2b12b530b4e88b3ecb81eb96ebd98112515db59499ff71a4ec905f" + 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 + + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + 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.37 + app.kubernetes.io/name: collabora-online + app.kubernetes.io/instance: collabora-online + app.kubernetes.io/version: "24.04.13.3.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: + ingressClassName: nginx + tls: + - hosts: + - "office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: "office.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: collabora + port: + number: 9980 + +--- +# 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de', + httpSafeOrigin: 'https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de', + 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: befacf9ece1dd46940ff5e5118bea194b0f5878d37b80fbc85cebb087d9dc317 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad:opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17" + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad:opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17" + imagePullPolicy: IfNotPresent + env: + - name: CPAD_MAIN_DOMAIN + value: "https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: CPAD_SANDBOX_DOMAIN + value: "https://pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - 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: + ingressClassName: nginx + tls: + - hosts: + - "pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: "pad.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: cryptpad + port: + number: 80 + - path: /cryptpad_websocket + pathType: ImplementationSpecific + backend: + service: + name: cryptpad + port: + number: 83 + +--- +# Source: opendesk-element/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: "opendesk-element" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-6.1.3 + 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-6.1.3 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm +data: + config.json: |- + { + "default_server_config": { + "m.homeserver": { + "base_url": "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + } + }, + "sso_redirect_options": { + "on_welcome_page": true + }, + "jitsi": { + "preferred_domain": "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + }, + "jitsi_widget": { + "skip_built_in_welcome_screen": true + }, + "permalink_prefix": "https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de", + "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": "Chat - openDesk", + "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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + } + }, + "logout_redirect_url":"https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout?client_id=opendesk-matrix\u0026post_logout_redirect_uri=https%3A%2F%2Fportal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de","net.nordeck.element_web.module.opendesk":{"config":{"banner":{"ics_navigation_json_url":"https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/navigation.json","ics_silent_url":"https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/silent","portal_logo_svg_url":"https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/logos/domain.svg","portal_url":"https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/"},"custom_css_variables":{"--cpd-color-bg-action-primary-rest":"#571EFA","--cpd-color-text-action-accent":"#571EFA"}}},"net.nordeck.element_web.module.widget_lifecycle":{"widget_permissions":{"https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/jitsi.html":{"identity_approved":true},"https://matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*":{"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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*":{"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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*":{"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-6.1.3 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm +data: + nginx.conf: |- + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-6.1.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-6.1.3 + 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: f02bdecaabb0dda8c51db14f7561c1c30eba253577adf829ee6cab07adffe33b + labels: + app.kubernetes.io/name: opendesk-element + helm.sh/chart: opendesk-element-6.1.3 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: "app.kubernetes.io/name" + operator: "In" + values: + - "opendesk-element" + topologyKey: "kubernetes.io/hostname" + securityContext: + fsGroup: 101 + serviceAccountName: opendesk-element + terminationGracePeriodSeconds: 30 + initContainers: + - name: "copy-modules" + command: + - cp + - -r + - /tmp/element-web-modules + - /mnt/tmp/element-web-modules + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin:latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1" + imagePullPolicy: IfNotPresent + env: + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: "tmp" + mountPath: "/mnt/tmp" + - name: "init-element" + command: + - /bin/sh + - -c + - | + /docker-entrypoint.sh nginx -t; + cat /tmp/element-web-config/config.json + cp /tmp/element-web-config/config.json /tmp-app/config.json + cp -r /tmp/element-web-modules /tmp-app/modules + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin:latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1" + imagePullPolicy: IfNotPresent + env: + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: "config" + mountPath: "/app/config.json" + subPath: "config.json" + readOnly: false + - 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: false + - name: "tmp" + mountPath: "/tmp" + - name: "tmp-app" + mountPath: "/tmp-app" + containers: + - name: "element" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 101 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin:latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1" + imagePullPolicy: IfNotPresent + env: + - name: NGINX_ENVSUBST_TEMPLATE_DIR + value: /non-existant-so-that-this-works-with-read-only-root-filesystem + 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: "tmp-app" + mountPath: "/app/config.json" + subPath: "config.json" + readOnly: true + - name: "tmp-app" + mountPath: "/app/modules" + subPath: "modules" + 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-app" + emptyDir: + medium: "Memory" + - 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-6.1.3 + app.kubernetes.io/instance: opendesk-element + app.kubernetes.io/managed-by: Helm +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-6.1.3 + 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-6.1.3 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm +data: + client: |- + { + "m.homeserver": { + "base_url": "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + }, + "im.vector.riot.jitsi": { + "preferredDomain": "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + } + } + server: |- + { + "m.server": "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de: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-6.1.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-6.1.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-6.1.3 + 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: a68724b6be43558d837b3c60ae6e7c99978e7e573a7e22c4b93c4575a505eeef + labels: + app.kubernetes.io/name: opendesk-well-known + helm.sh/chart: opendesk-well-known-6.1.3 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: "app.kubernetes.io/name" + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/library/nginx:1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4" + 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-6.1.3 + app.kubernetes.io/instance: opendesk-well-known + app.kubernetes.io/managed-by: Helm +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-6.1.3 + 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-6.1.3 + 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: | + + 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.yschmidt-opendesk-argo.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: | + + # 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: | + + # 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-6.1.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-6.1.3 + 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: 23b977b6314dd51e3b93937bf5399f74d3b74e20ef62e4f4c17beec211cfff18 + labels: + app.kubernetes.io/name: opendesk-synapse-web + helm.sh/chart: opendesk-synapse-web-6.1.3 + app.kubernetes.io/instance: opendesk-synapse-web + app.kubernetes.io/managed-by: Helm + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: "app.kubernetes.io/name" + 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: null + 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-6.1.3 + 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: + ingressClassName: "nginx" + tls: + - hosts: + - "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-6.1.3 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +... +--- +# 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-6.1.3 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +stringData: + app-service-intercom-service.yaml: | + as_token: f4a859990d1d37276a77e88ccd1e67d158b5e18f + hs_token: f4a859990d1d37276a77e88ccd1e67d158b5e18f + id: intercom-service + namespaces: + users: + - exclusive: false + regex: '@.*' + sender_localpart: intercom-service + url: null + app-service-ox-appsuite.yaml: | + as_token: 5dbaa82eda85bb25f7963063b327555e3f3a821d + hs_token: 5dbaa82eda85bb25f7963063b327555e3f3a821d + id: ox-appsuite + namespaces: + users: + - exclusive: false + regex: '@.*' + sender_localpart: ox-appsuite + url: null +... +--- +# Source: opendesk-synapse/templates/secret.yaml +kind: "Secret" +apiVersion: "v1" +metadata: + name: "opendesk-synapse-database-password" + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-6.1.3 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +stringData: + pgpass.conf: "postgresql:5432:matrix:matrix_user:5cd0a266029154912dd660f748137982a924e6f5" +... +--- +# 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-6.1.3 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +data: + instance_template.yaml: |- + + worker_app: synapse.app.homeserver + + database: + name: "psycopg2" + args: + user: matrix_user + passfile: "/config/rendered/pgpass.conf" + database: matrix + host: postgresql + port: 5432 + channel_binding: prefer + connect_timeout: 10 + client_encoding: auto + application_name: REPLACE_HOSTNAME + keepalives: 1 + keepalives_idle: 10 + keepalives_interval: 10 + keepalives_count: 3 + replication: false + gssencmode: prefer + sslmode: prefer + sslcompression: 0 + ssl_min_protocol_version: TLSv1.2 + cp_min: 3 + cp_max: 5 +--- +# 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-6.1.3 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +data: + homeserver.yaml: | + server_name: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + public_baseurl: https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + smtp_host: "postfix.yschmidt-opendesk-argo.svc.cluster.local" + smtp_port: "25" + smtp_user: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + smtp_pass: "1884bda7fb31c726adcd094399ab63319e9ca56f" + + 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 + room_list_publication_rules: + - "action": "allow" + + federation_domain_whitelist: + + sso: + client_whitelist: + - https://chat.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + oidc_providers: + - idp_id: oidc + idp_name: OIDC + issuer: https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk + client_id: opendesk-matrix + client_secret: "b4f6604310ebd2d06b5fc8832ae1095e43481b04" + 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-intercom-service.yaml + - /secrets/app-service-ox-appsuite.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: | + + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-6.1.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-6.1.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-6.1.3 + 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: 7e90bcb43ebf501dd9715bacbc262849eca65ba5a3a1470821263d9fbb36e8f0 + checksum/secret: d256494dce085a3e07453ccda7bd396ee7629298a316508e5030eaaec90e2aa0 + labels: + app.kubernetes.io/name: opendesk-synapse + helm.sh/chart: opendesk-synapse-6.1.3 + 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/element/images-mirror/synapse-guest-module:1.0.1@sha256:a8c02b2eb4dfea9632b32d00415af8d5276870fa150fac392914f67053c161ea" + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 10991 + runAsNonRoot: true + runAsUser: 10991 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.5 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/element/images-mirror/synapse:v1.127.1@sha256:0b0b933314ac9e1ba917a72c29d5b49c47828ab6e8df3aae3ac244ee947a89fc" + imagePullPolicy: IfNotPresent + command: + - "bash" + - "-cx" + - | + mkdir -p /media/generatedSecrets + cp /secret/pgpass.conf /config/rendered/pgpass.conf + chmod 0400 /config/rendered/pgpass.conf + 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: 0.5 + 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: "/secret/pgpass.conf" + name: "database-password" + readOnly: true + subPath: "pgpass.conf" + - 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: "database-password" + secret: + secretName: "opendesk-synapse-database-password" + 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" + +... +--- +# 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-6.1.3 + app.kubernetes.io/instance: opendesk-synapse + app.kubernetes.io/managed-by: Helm +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "matrix-federation.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-6.1.3 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap + app.kubernetes.io/managed-by: Helm +... +--- +# 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-6.1.3 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap + app.kubernetes.io/managed-by: Helm +stringData: + password: "3187b7b18610762c770a46421965e3a7e6ce93f7" +... +--- +# Source: opendesk-synapse-create-account/templates/role.yaml +apiVersion: "rbac.authorization.k8s.io/v1" +kind: "Role" +metadata: + namespace: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" +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: "yschmidt-opendesk-argo" # 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-6.1.3 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619" + imagePullPolicy: "IfNotPresent" + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + tty: true + env: + - name: NAMESPACE + value: "yschmidt-opendesk-argo" + - 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" + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-6.1.3 + app.kubernetes.io/instance: opendesk-matrix-user-verification-service-bootstrap + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619" + imagePullPolicy: "IfNotPresent" + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + tty: true + env: + - name: "NAMESPACE" + value: "yschmidt-opendesk-argo" + - 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: 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 + + 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 + + volumeMounts: + - name: "tmp" + mountPath: "/tmp" + restartPolicy: "Never" + volumes: + - name: "tmp" + emptyDir: + medium: "Memory" + backoffLimit: 4 +... + +--- +# Source: opendesk-matrix-user-verification-service/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: "opendesk-matrix-user-verification-service" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3 + 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-6.1.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3 + 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: 225323de6c98cae082cc08ad900b49fb0e713bc64fc94525e8bdcc92b8e05d4c + labels: + app.kubernetes.io/name: opendesk-matrix-user-verification-service + helm.sh/chart: opendesk-matrix-user-verification-service-6.1.3 + 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: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.1 + app.kubernetes.io/instance: matrix-neoboard-widget + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +... +--- +# Source: matrix-neoboard-widget/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "matrix-neoboard-widget" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.1 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.1 + 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: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b + labels: + app.kubernetes.io/name: matrix-neoboard-widget + helm.sh/chart: matrix-neoboard-widget-3.5.1 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget:2.1.0@sha256:3a386d5a7d1b0582372909e8f3714fc82304fbfb0c078807476d867f726d30f5" + imagePullPolicy: IfNotPresent + env: + - name: REACT_APP_HOME_SERVER_URL + value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: REACT_APP_PRIMARY_COLOR + value: "#571EFA" + - name: REACT_APP_LIGHT_PRIMARY_COLOR + value: "#571EFA" + - name: REACT_APP_DARK_PRIMARY_COLOR + value: "#571EFA" + 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.1 + app.kubernetes.io/instance: matrix-neoboard-widget + app.kubernetes.io/managed-by: Helm + annotations: +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "matrix-neoboard-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.1 + app.kubernetes.io/instance: matrix-neochoice-widget + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +... +--- +# Source: matrix-neochoice-widget/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "matrix-neochoice-widget" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.1 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.1 + 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: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b + labels: + app.kubernetes.io/name: matrix-neochoice-widget + helm.sh/chart: matrix-neochoice-widget-3.5.1 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget:1.5.1@sha256:00d28898e2b08d00dc7f4ed986d496779b95f0b87347b6059b76d291eb44a7eb" + imagePullPolicy: IfNotPresent + env: + - name: REACT_APP_HOME_SERVER_URL + value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: REACT_APP_POLL_DESCRIPTION_REQUIRED + value: "true" + - name: REACT_APP_IGNORE_USER_IDS + value: "@meetings-bot:yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: REACT_APP_PRIMARY_COLOR + value: "#571EFA" + 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.1 + app.kubernetes.io/instance: matrix-neochoice-widget + app.kubernetes.io/managed-by: Helm + annotations: +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "matrix-neochoice-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.1 + app.kubernetes.io/instance: matrix-neodatefix-widget + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +... +--- +# Source: matrix-neodatefix-widget/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "matrix-neodatefix-widget" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.1 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.1 + 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: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b + labels: + app.kubernetes.io/name: matrix-neodatefix-widget + helm.sh/chart: matrix-neodatefix-widget-3.5.1 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget:1.7.0@sha256:a3547f064dff6b469bb3ed931acd4edba9654699e1af59a9180987bbbfd8104b" + imagePullPolicy: IfNotPresent + env: + - name: REACT_APP_HOME_SERVER_URL + value: "https://matrix.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: REACT_APP_API_BASE_URL + value: "https://matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: REACT_APP_BOT_USER_ID + value: "@meetings-bot:yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: REACT_APP_DISPLAY_ALL_MEETINGS + value: "true" + - name: REACT_APP_PRIMARY_COLOR + value: "#571EFA" + 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.1 + app.kubernetes.io/instance: matrix-neodatefix-widget + app.kubernetes.io/managed-by: Helm + annotations: +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-6.1.3 + app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap + app.kubernetes.io/managed-by: Helm +... +--- +# 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-6.1.3 + app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap + app.kubernetes.io/managed-by: Helm +stringData: + password: "f14e2756afd0fba205bd037f1d2363e7cedc8f89" +... +--- +# Source: opendesk-synapse-create-account/templates/role.yaml +apiVersion: "rbac.authorization.k8s.io/v1" +kind: "Role" +metadata: + namespace: "yschmidt-opendesk-argo" + 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: "yschmidt-opendesk-argo" +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: "yschmidt-opendesk-argo" # 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-6.1.3 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619" + imagePullPolicy: "IfNotPresent" + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + tty: true + env: + - name: NAMESPACE + value: "yschmidt-opendesk-argo" + - 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" + labels: + app.kubernetes.io/name: opendesk-synapse-create-account + helm.sh/chart: opendesk-synapse-create-account-6.1.3 + app.kubernetes.io/instance: matrix-neodatefix-bot-bootstrap + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry-1.docker.io/alpine/k8s:1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619" + imagePullPolicy: "IfNotPresent" + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 500m + memory: 256Mi + tty: true + env: + - name: "NAMESPACE" + value: "yschmidt-opendesk-argo" + - 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: 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 + + 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 + + volumeMounts: + - name: "tmp" + mountPath: "/tmp" + restartPolicy: "Never" + volumes: + - name: "tmp" + emptyDir: + medium: "Memory" + backoffLimit: 4 +... + +--- +# Source: matrix-neodatefix-bot/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: matrix-neodatefix-bot + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.1 + 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.1 + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/jitsi.html", + "name": "Videokonferenz", + "data": { + "domain": "meet.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de", + "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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?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.1 + 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.1 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "1Gi" + +... +--- +# Source: matrix-neodatefix-bot/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: "matrix-neodatefix-bot" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.1 + 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: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.1 + 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: e2562485c3184f39461d0cdec7a81497ef67b9a091b8dcd5e3cdfd268aea289b + labels: + app.kubernetes.io/name: matrix-neodatefix-bot + helm.sh/chart: matrix-neodatefix-bot-3.5.1 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot:2.8.2@sha256:1266f4af93cd82554e037125a7f6d753742bcde3dd90ecbeed8f6f5f64689c96" + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: MEETINGWIDGET_URL + value: "https://matrix-neodatefix-widget.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/?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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/#/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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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.1 + app.kubernetes.io/instance: matrix-neodatefix-bot + app.kubernetes.io/managed-by: Helm + annotations: +spec: + ingressClassName: "nginx" + tls: + - hosts: + - "matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "matrix-neodatefix-bot.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: matrix-neodatefix-bot + port: + name: http +... + +--- +# Source: openproject/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: openproject + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" +... +--- +# Source: openproject/templates/secret_core.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "openproject-core" + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" +data: # reset data to make sure only keys defined below remain +stringData: + DATABASE_HOST: "postgresql" + DATABASE_PORT: "5432" + DATABASE_URL: "postgresql://openproject_user@postgresql:5432/openproject" + OPENPROJECT_SEED_ADMIN_USER_PASSWORD: "487706602e4fedcb300a24af26a25be29bc8530c" + OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET: "false" + OPENPROJECT_SEED_ADMIN_USER_NAME: "OpenProject Internal Admin" + OPENPROJECT_SEED_ADMIN_USER_MAIL: "openproject-admin@swp-domain.internal" + OPENPROJECT_HTTPS: "true" + OPENPROJECT_SEED_LOCALE: "de" + OPENPROJECT_HOST__NAME: "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + OPENPROJECT_HSTS: "true" + OPENPROJECT_RAILS__CACHE__STORE: "memcache" + OPENPROJECT_RAILS__RELATIVE__URL__ROOT: "" + POSTGRES_STATEMENT_TIMEOUT: "120s" +... +--- +# Source: openproject/templates/secret_cron_environment.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "openproject-cron-environment" + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" +data: # reset data to make sure only keys defined below remain +stringData: + # Additional environment variables + IMAP_HOST: + IMAP_PORT: "993" + IMAP_USERNAME: + IMAP_PASSWORD: +... +--- +# Source: openproject/templates/secret_environment.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "openproject-environment" + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" +data: # reset data to make sure only keys defined below remain +stringData: + # Additional environment variables + OPENPROJECT_APP__TITLE: "Projekte - openDesk" + OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_PASSWORD: "9e8d27af068f15dce7b940241ddac82785935239" + OPENPROJECT_AUTHENTICATION_GLOBAL__BASIC__AUTH_USER: "abbb47d550ea03225cb109388f296cbc3a4b66eb" + OPENPROJECT_DEFAULT__COMMENT__SORT__ORDER: "desc" + OPENPROJECT_EMAIL__DELIVERY__METHOD: "smtp" + OPENPROJECT_HOME__URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/" + OPENPROJECT_LOGIN__REQUIRED: "true" + OPENPROJECT_LOG__LEVEL: "info" + OPENPROJECT_MAIL__FROM: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + OPENPROJECT_OAUTH__ALLOW__REMAPPING__OF__EXISTING__USERS: "true" + OPENPROJECT_OMNIAUTH__DIRECT__LOGIN__PROVIDER: "keycloak" + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ISSUER: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk" + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_POST__LOGOUT__REDIRECT__URI: "https://projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/" + OPENPROJECT_SEED_DESIGN_ACCENT__COLOR: "#571EFA" + OPENPROJECT_SEED_DESIGN_FAVICON: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjExMSIgdmlld0JveD0iMCAwIDExMSAxMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iMC41IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjExMCIgcng9IjIwIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjQuMzI5NiA4Ni43MDY5TDI0LjMyOTYgMjQuMzc3MkgxNi41MzQzTDE2LjUzNDMgODYuNzA2OUgyNC4zMjk2WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNODYuODM1MyA1OS40Mzk3SDU1LjY3NTlDNTEuMzcwNyA1OS40Mzk3IDQ3Ljg4MDYgNjIuOTI5OCA0Ny44ODA2IDY3LjIzNVY3NS4wMTk0QzQ3Ljg4MDYgNzkuMzI0NiA1MS4zNzA3IDgyLjgxNDcgNTUuNjc1OSA4Mi44MTQ3SDg2LjgzNTNDOTEuMTQwNSA4Mi44MTQ3IDk0LjYzMDYgNzkuMzI0NiA5NC42MzA2IDc1LjAxOTRWNjcuMjM1Qzk0LjYzMDYgNjIuOTI5OCA5MS4xNDA1IDU5LjQzOTcgODYuODM1MyA1OS40Mzk3WiIgZmlsbD0iIzU3MUVGQSIvPgo8cGF0aCBkPSJNNjMuNDYwMyAyOC4yODAzSDM5LjkyMDNDMzUuNjE1MSAyOC4yODAzIDMyLjEyNSAzMS43NzA0IDMyLjEyNSAzNi4wNzU2VjQzLjg1OTlDMzIuMTI1IDQ4LjE2NTIgMzUuNjE1MSA1MS42NTUzIDM5LjkyMDMgNTEuNjU1M0g2My40NjAzQzY3Ljc2NTUgNTEuNjU1MyA3MS4yNTU2IDQ4LjE2NTIgNzEuMjU1NiA0My44NTk5VjM2LjA3NTZDNzEuMjU1NiAzMS43NzA0IDY3Ljc2NTUgMjguMjgwMyA2My40NjAzIDI4LjI4MDNaIiBmaWxsPSIjMzQxMjkxIi8+Cjwvc3ZnPgo=" + OPENPROJECT_SEED_DESIGN_HEADER__BG__COLOR: "#ffffff" + OPENPROJECT_SEED_DESIGN_HEADER__ITEM__BG__HOVER__COLOR: "#f5f5f5" + OPENPROJECT_SEED_DESIGN_LOGO: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCA4MiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuNDM1MzggMy45MDQ3OUM3LjEzMDM2IDMuOTA0NzkgOC44NTI2IDUuODgxNjIgOC44NTI2IDguMzAyOEM4Ljg1MjYgMTAuNzI0IDcuMTMwMzYgMTIuNzAwOCA0LjQzNTM4IDEyLjcwMDhDMS43NDA0IDEyLjcwMDggMCAxMC43MjQgMCA4LjMwMjhDMCA1Ljg4MTYyIDEuNzIyMjUgMy45MDQ3OSA0LjQzNTM4IDMuOTA0NzlaTTQuNDM1MzggMTEuNjI3MkM2LjQ5ODgxIDExLjYyNzIgNy41OTEzMiAxMC4wOTI4IDcuNTkxMzIgOC4zMDI4QzcuNTkxMzIgNi41MTI3NiA2LjQ5ODgxIDQuOTc4NDQgNC40MzUzOCA0Ljk3ODQ0QzIuMzcxOTUgNC45Nzg0NCAxLjI2MzEgNi41MTI3NiAxLjI2MzEgOC4zMDI4QzEuMjYzMSAxMC4wOTI4IDIuMzUzOCAxMS42MjcyIDQuNDM1MzggMTEuNjI3MloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xMC40OTIyIDQuMDc1MjZIMTEuNzU1M1Y2LjIyMjU4QzEyLjM1MjQgNC44MDc5NiAxMy42MTU1IDMuOTA0NzkgMTUuNDU3NSAzLjkwNDc5QzE3LjgyOTQgMy45MDQ3OSAxOS40MzE5IDUuNjk0ODIgMTkuNDMxOSA4LjMxOTEyQzE5LjQzMTkgMTAuOTQzNCAxNy44Mjk0IDEyLjcwMDggMTUuNDU3NSAxMi43MDA4QzEzLjU4MSAxMi43MDA4IDEyLjMzNiAxMS43NjMyIDExLjc1NTMgMTAuMzgzVjE1LjYzMzRIMTAuNDkyMlY0LjA3NTI2Wk0xNS4wNjM3IDExLjYyNzJDMTYuNzY5NiAxMS42MjcyIDE4LjE2ODggMTAuNTY5OCAxOC4xNjg4IDguMzE5MTJDMTguMTY4OCA2LjA2ODQzIDE2Ljc2OTYgNC45Nzg0NCAxNS4wNjM3IDQuOTc4NDRDMTMuMzU3OCA0Ljk3ODQ0IDExLjgwNjEgNi4wODY1NiAxMS44MDYxIDguMzE5MTJDMTEuODA2MSAxMC41NTE3IDEzLjM3NTkgMTEuNjI3MiAxNS4wNjM3IDExLjYyNzJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjQuNzg3MSAzLjkwNDY1QzI3LjIwOTggMy45MDQ2NSAyOC44MzA0IDUuNDIyNjQgMjguODMwNCA4LjAxMjQ4VjguNTIzOTJIMjIuMDI0OUMyMi4wNzU3IDEwLjI5NzYgMjIuOTc5NSAxMS42NTk3IDI0Ljg1NiAxMS42NTk3QzI2LjQwNzcgMTEuNjU5NyAyNy4zMTMzIDEwLjg0MTcgMjcuNjIgOS41Nzk0NUgyOC44NjQ5QzI4LjUwNzQgMTEuMDc5MyAyNy40ODM4IDEyLjY5ODkgMjQuODkwNSAxMi42OTg5QzIyLjE0NDcgMTIuNjk4OSAyMC44MTQ1IDEwLjY1MzEgMjAuODE0NSA4LjE4MTE1QzIwLjgxNDUgNS40NTM0NyAyMi40MDA2IDMuOTAyODMgMjQuNzg4OSAzLjkwMjgzTDI0Ljc4NzEgMy45MDQ2NVpNMjcuNTgzNyA3LjUzNTVDMjcuNDYzOSA1Ljg4MTQ4IDI2LjM1NSA0Ljk0Mzg1IDI0Ljc2ODkgNC45NDM4NUMyMy4yODQ0IDQuOTQzODUgMjIuMTc1NiA1Ljg5NzgxIDIyLjAzOTQgNy41MzU1SDI3LjU4MzdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMzAuNjAzNSA0LjA3NTI2SDMxLjg2NjZWNi40Mjc1MkMzMi4zMjc2IDQuODU4NzUgMzMuNTIxNyAzLjkwNDc5IDM1LjM4MDEgMy45MDQ3OUMzNy4yMzg0IDMuOTA0NzkgMzguNDE2MiA1LjEzMjYgMzguNDE2MiA3LjM0ODg0VjEyLjUzMDNIMzcuMTM2OFY3LjQ1MDRDMzcuMTM2OCA1LjY5NDgyIDM2LjQ1NDQgNC45Nzg0NCAzNC45NTM2IDQuOTc4NDRDMzMuMDQyNiA0Ljk3ODQ0IDMxLjg2NjYgNi41ODE2OCAzMS44NjY2IDguODQ4N1YxMi41MzAzSDMwLjYwMzVWNC4wNzUyNloiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik00MC41NDg4IDAuNTExMjNINDQuOTY3OUM0Ni4yMTgzIDAuNTExMjMgNDcuMzIxNyAwLjY2NTM4NiA0OC4yNzgxIDAuOTcxODg3QzQ5LjIzMjcgMS4yNzgzOSA1MC4wMTQ4IDEuODc1MDcgNTAuNjIyOCAyLjc2MTkyQzUxLjIzMDggMy42NDg3OCA1MS41MzU2IDQuODk4MzYgNTEuNTM1NiA2LjUxMjQ4QzUxLjUzNTYgOC4xMjY2IDUxLjIzMDggOS4zOTQzMSA1MC42MjI4IDEwLjI3OTRDNTAuMDE0OCAxMS4xNjYyIDQ5LjIzMjcgMTEuNzYyOSA0OC4yNzgxIDEyLjA2OTRDNDcuMzIxNyAxMi4zNzU5IDQ2LjIyMDEgMTIuNTMwMSA0NC45Njc5IDEyLjUzMDFINDAuNTQ4OFYwLjUxMTIzWk00NC45Njc5IDEwLjEyN0M0NS44MzE3IDEwLjEyNyA0Ni41MjMyIDEwLjA1ODEgNDcuMDQwNCA5LjkyMjA3QzQ3LjU1NzYgOS43ODYwNSA0Ny45Nzg2IDkuNDU5NiA0OC4zMDM1IDguOTQwOTFDNDguNjI4MyA4LjQyNDAzIDQ4Ljc4OTggNy42MTMzNCA0OC43ODk4IDYuNTEyNDhDNDguNzg5OCA1LjQxMTYyIDQ4LjYyNDcgNC42MTU0NCA0OC4yOTYyIDQuMDkxM0M0Ny45NjU5IDMuNTY4OTggNDcuNTQ0OSAzLjIzODkxIDQ3LjAzMzEgMy4xMDI4OEM0Ni41MjEzIDIuOTY2ODYgNDUuODMzNSAyLjg5Nzk1IDQ0Ljk2OTcgMi44OTc5NUg0My4yODAxVjEwLjEyN0g0NC45Njk3SDQ0Ljk2NzlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNTMuMzE1OCA1LjgyMjA1QzUzLjY5NjkgNS4xNTY0NiA1NC4yMjUgNC42NDg2NSA1NC45MDE5IDQuMjk2OEM1NS41Nzg5IDMuOTQ0OTYgNTYuMzU1NiAzLjc2OTA0IDU3LjIzMDMgMy43NjkwNEM1OC42NjQgMy43NjkwNCA1OS43ODM4IDQuMTQ5OSA2MC41OTEzIDQuOTExNjJDNjEuMzk4OSA1LjY3MzM0IDYxLjgwMTggNi43MjUyMyA2MS44MDE4IDguMDY1NDlWOC43ODE4N0g1NS4zNTM4QzU1LjM5OTIgOS4zOTQ4NyA1NS41OTM0IDkuODc1NDggNTUuOTM0NiAxMC4yMjE5QzU2LjI3NTcgMTAuNTY4MyA1Ni43NDIyIDEwLjc0MjQgNTcuMzMzOCAxMC43NDI0QzU3Ljg0NTUgMTAuNzQyNCA1OC4yNjg0IDEwLjYzNTQgNTguNjA0MSAxMC40MTc4QzU4LjkzOTkgMTAuMjAxOSA1OS4xNTIyIDkuODk1NDMgNTkuMjQ0OCA5LjQ5NjQ0SDYxLjgyQzYxLjY4MzkgMTAuNDUwNCA2MS4yMjQ3IDExLjIyNDggNjAuNDQ2MiAxMS44MTQyQzU5LjY2NzYgMTIuNDA1NSA1OC42MzUgMTIuNzAxMSA1Ny4zNTAxIDEyLjcwMTFDNTYuNDA2NCAxMi43MDExIDU1LjU4NzkgMTIuNTEwNyA1NC44OTI5IDEyLjEyOThDNTQuMTk5NiAxMS43NDg5IDUzLjY2NzkgMTEuMjE3NiA1My4yOTc3IDEwLjUzNTZDNTIuOTI3NCA5Ljg1MzcyIDUyLjc0NDEgOS4wNzAyNCA1Mi43NDQxIDguMTgzMzhDNTIuNzQ0MSA3LjI5NjUyIDUyLjkzNDcgNi40ODc2NSA1My4zMTU4IDUuODIyMDVaTTU5LjI3NzQgNy4zODE3NkM1OS4yMzIxIDYuODM1ODYgNTkuMDMwNiA2LjQxNTExIDU4LjY3MTMgNi4xMTk0OUM1OC4zMTM4IDUuODIzODcgNTcuODQ5MiA1LjY3Njk2IDU3LjI4MTEgNS42NzY5NkM1Ni43MTMxIDUuNjc2OTYgNTYuMjcyMSA1LjgyNTY4IDU1LjkyNTUgNi4xMTk0OUM1NS41Nzg5IDYuNDE1MTEgNTUuMzgyOSA2LjgzNTg2IDU1LjMzNzUgNy4zODE3Nkg1OS4yNzc0WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTY0LjEwNzUgMTEuODY0N0M2My4zNTYxIDExLjMwOCA2Mi45ODA1IDEwLjQ5IDYyLjk4MDUgOS40MDkxSDY1LjU3MzhDNjUuNTczOCA5Ljg5ODc4IDY1LjcyODEgMTAuMjU5NyA2Ni4wMzQ4IDEwLjQ5MThDNjYuMzQxNSAxMC43MjU4IDY2LjgxMzMgMTAuODQxOSA2Ny40NTAzIDEwLjg0MTlDNjcuOTE2NyAxMC44NDE5IDY4LjI1NDMgMTAuNzgyIDY4LjQ2NDggMTAuNjYyM0M2OC42NzUzIDEwLjU0MjYgNjguNzgwNiAxMC4zNTIyIDY4Ljc4MDYgMTAuMDkxQzY4Ljc4MDYgOS45MDk2NiA2OC43MTg5IDkuNzYwOTQgNjguNTkzNyA5LjY0ODVDNjguNDY4NCA5LjUzNDI0IDY4LjI2ODggOS40MzgxMiA2Ny45OTY2IDkuMzU4MzJMNjUuMzY4OCA4LjY0MTk0QzY0Ljc4OCA4LjQ5NTA0IDY0LjI4ODkgOC4yMzAyNSA2My44Njc5IDcuODQ5NEM2My40NDY5IDcuNDY4NTQgNjMuMjM2NCA2Ljk0MjU5IDYzLjIzNjQgNi4yNzE1NUM2My4yMzY0IDUuNDY0NDkgNjMuNTY4NSA0Ljg0NjA1IDY0LjIzNDUgNC40MTI2QzY0LjkwMDUgMy45ODA5NiA2NS44Mjk3IDMuNzY1MTQgNjcuMDIzOSAzLjc2NTE0QzY4LjM0MzIgMy43NjUxNCA2OS4zNzIyIDQuMDI5OTIgNzAuMTEwOCA0LjU1NzY5QzcwLjg0OTUgNS4wODU0NSA3MS4yMTk3IDUuODUwNzkgNzEuMjE5NyA2Ljg1MDA5SDY4LjYyNjNDNjguNjI2MyA2LjAyMTI3IDY4LjA5ODIgNS42MDU5NiA2Ny4wNDAyIDUuNjA1OTZDNjYuNjY0NSA1LjYwNTk2IDY2LjM2ODcgNS42Njk0MyA2Ni4xNTI3IDUuNzkyNzZDNjUuOTM2OCA1LjkxNzkgNjUuODI3OSA2LjA4Mjk0IDY1LjgyNzkgNi4yODc4N0M2NS44Mjc5IDYuNjM5NzIgNjYuMTQgNi44OTU0MyA2Ni43NjYyIDcuMDU1MDNMNjguNzc4OCA3LjU1MDE1QzY5LjU2MjggNy43NDQyMSA3MC4xOTI1IDguMDQxNjQgNzAuNjY0MyA4LjQ0NjA4QzcxLjEzNjIgOC44NDg3IDcxLjM3MjEgOS40MTQ1NCA3MS4zNzIxIDEwLjE0MThDNzEuMzcyMSAxMC45NzI0IDcxLjA0IDExLjYwNTQgNzAuMzc0IDEyLjA0MjVDNjkuNzA3OSAxMi40Nzk2IDY4LjcyMjUgMTIuNjk5IDY3LjQxNCAxMi42OTlDNjUuOTU4NiAxMi42OTkgNjQuODU1MiAxMi40MTk3IDY0LjEwMzggMTEuODYyOUw2NC4xMDc1IDExLjg2NDdaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNzIuODA2NiAwSDc1LjRWNy4yNjE3MUw3OC44MjgyIDMuOTM3MzZIODIuMDAwNEw3Ny43MTkzIDguMTE0MTFMODEuOTg0MSAxMi41MzAzSDc4LjgyODJMNzUuNCA4LjkxNTczVjEyLjUzMDNINzIuODA2NlYwWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==" + OPENPROJECT_SEED_DESIGN_MAIN__MENU__BG__COLOR: "#ffffff" + OPENPROJECT_SEED_DESIGN_MAIN__MENU__BG__HOVER__BACKGROUND: "#f5f5f5" + OPENPROJECT_SEED_DESIGN_MAIN__MENU__BG__SELECTED__BACKGROUND: "#571EFA" + OPENPROJECT_SEED_DESIGN_PRIMARY__BUTTON__COLOR: "#571EFA" + OPENPROJECT_SEED_LDAP_OPENDESK_ADMIN__MAPPING: "opendeskProjectmanagementAdmin" + OPENPROJECT_SEED_LDAP_OPENDESK_BASEDN: "dc=swp-ldap,dc=internal" + OPENPROJECT_SEED_LDAP_OPENDESK_BINDPASSWORD: "9c96f85df1170aaa929a6763111ff9472b2d109f" + OPENPROJECT_SEED_LDAP_OPENDESK_BINDUSER: "uid=ldapsearch_openproject,cn=users,dc=swp-ldap,dc=internal" + OPENPROJECT_SEED_LDAP_OPENDESK_FILTER: "(&(objectClass=opendeskProjectmanagementUser)(opendeskProjectmanagementEnabled=TRUE))" + OPENPROJECT_SEED_LDAP_OPENDESK_FIRSTNAME__MAPPING: "givenName" + OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_BASE: "dc=swp-ldap,dc=internal" + OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_FILTER: "(&(objectClass=opendeskProjectmanagementGroup)(opendeskProjectmanagementEnabled=TRUE))" + OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_GROUP__ATTRIBUTE: "cn" + OPENPROJECT_SEED_LDAP_OPENDESK_GROUPFILTER_OPENDESK_SYNC__USERS: "true" + OPENPROJECT_SEED_LDAP_OPENDESK_HOST: "ums-ldap-server" + OPENPROJECT_SEED_LDAP_OPENDESK_LASTNAME__MAPPING: "sn" + OPENPROJECT_SEED_LDAP_OPENDESK_LOGIN__MAPPING: "uid" + OPENPROJECT_SEED_LDAP_OPENDESK_MAIL__MAPPING: "mailPrimaryAddress" + OPENPROJECT_SEED_LDAP_OPENDESK_PORT: "389" + OPENPROJECT_SEED_LDAP_OPENDESK_SECURITY: "plain_ldap" + OPENPROJECT_SEED_LDAP_OPENDESK_SYNC__USERS: "true" + OPENPROJECT_SMTP__ADDRESS: "postfix.yschmidt-opendesk-argo.svc.cluster.local" + OPENPROJECT_SMTP__AUTHENTICATION: "cram_md5" + OPENPROJECT_SMTP__DOMAIN: "yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: "true" + OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE: "none" + OPENPROJECT_SMTP__PASSWORD: "1884bda7fb31c726adcd094399ab63319e9ca56f" + OPENPROJECT_SMTP__PORT: "587" + OPENPROJECT_SMTP__SSL: "false" + OPENPROJECT_SMTP__USER__NAME: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + OPENPROJECT_SOUVAP__NAVIGATION__SECRET: "1e2eb0fc3815d766ef1be11fb4edba676856ba52" + OPENPROJECT_SOUVAP__NAVIGATION__URL: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/navigation.json?base=https%3A//portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + OPENPROJECT_USER__DEFAULT__TIMEZONE: "Europe/Berlin" +... +--- +# Source: openproject/templates/secret_memcached.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "openproject-memcached" + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" +data: # reset data to make sure only keys defined below remain +stringData: + OPENPROJECT_CACHE__MEMCACHE__SERVER: "memcached:11211" +... +--- +# Source: openproject/templates/secret_oidc.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "openproject-oidc" + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" +data: # reset data to make sure only keys defined below remain +stringData: + # OpenID Connect settings + + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_DISPLAY__NAME: "Keycloak" + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_HOST: "id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_IDENTIFIER: "opendesk-openproject" + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SECRET: "3621e456b58b341fe12689612e0ca7820974d274" + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_AUTHORIZATION__ENDPOINT: "/realms/opendesk/protocol/openid-connect/auth" + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_TOKEN__ENDPOINT: "/realms/opendesk/protocol/openid-connect/token" + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_USERINFO__ENDPOINT: "/realms/opendesk/protocol/openid-connect/userinfo" + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_END__SESSION__ENDPOINT: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout" + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_SCOPE: "[openid,opendesk-openproject-scope]" + + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ATTRIBUTE__MAP_ADMIN: "openproject_admin" + + OPENPROJECT_OPENID__CONNECT_KEYCLOAK_ATTRIBUTE__MAP_LOGIN: "opendesk_username" +... +--- +# Source: openproject/templates/secret_s3.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "openproject-s3" + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" +data: # reset data to make sure only keys defined below remain +stringData: + OPENPROJECT_ATTACHMENTS__STORAGE: fog + OPENPROJECT_FOG_CREDENTIALS_PROVIDER: AWS + + OPENPROJECT_FOG_CREDENTIALS_AWS__ACCESS__KEY__ID: "openproject_user" + OPENPROJECT_FOG_CREDENTIALS_AWS__SECRET__ACCESS__KEY: "200f449601dec2cd474d0695f4f802493413f322" + OPENPROJECT_FOG_CREDENTIALS_ENDPOINT: https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + OPENPROJECT_FOG_CREDENTIALS_HOST: https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + + OPENPROJECT_FOG_DIRECTORY: openproject + OPENPROJECT_FOG_CREDENTIALS_REGION: eu-west-1 + OPENPROJECT_FOG_CREDENTIALS_PATH__STYLE: "true" + OPENPROJECT_FOG_CREDENTIALS_AWS__SIGNATURE__VERSION: "4" + # remove use_iam_profile fallback after some point + OPENPROJECT_FOG_CREDENTIALS_USE__IAM__PROFILE: "false" + OPENPROJECT_FOG_CREDENTIALS_ENABLE__SIGNATURE__V4__STREAMING: "true" + OPENPROJECT_DIRECT__UPLOADS: "true" +... +--- +# Source: openproject/templates/service.yaml +apiVersion: "v1" +kind: "Service" +metadata: + name: openproject + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" +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/cron-deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: openproject-cron + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + openproject/process: cron +spec: + replicas: 0 + strategy: + type: "Recreate" + selector: + matchLabels: + app.kubernetes.io/name: openproject + app.kubernetes.io/instance: openproject + openproject/process: cron + template: + metadata: + annotations: + + # annotate pods with env value checksums so changes trigger re-deployments + + checksum/env-core: ee004f43bb526894d4f9090d581ec0e16aab3dae503d49acb1ea234b00edc426 + checksum/env-memcached: c231d3ee47049efcdc46048b6e76c6bc89d786eeae254c5c4ed76ada746aa93a + checksum/env-oidc: 05dccac126cec090a3ef987b73f69fe55db386f54cb43e6591c70eb2ffe52dfc + checksum/env-s3: 194978ace577c9f7a206e1e2487ceaac83e5586ce40b9cf41c2df22057b92af4 + checksum/env-environment: 64120ea7256045f894778bb4bd0615aab8de1a1f3ee92ac2f7b9a03daa3365c9 + checksum/env-cron-environment: cac20d0a5e2341c45cc50011b86c87bf026d9e02f1fe21c701125559ec398556 + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + openproject/process: cron + 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: null + 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: null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 + imagePullPolicy: IfNotPresent + envFrom: + - secretRef: + name: openproject-core + - secretRef: + name: openproject-oidc + - secretRef: + name: openproject-s3 + - secretRef: + name: openproject-memcached + - secretRef: + name: openproject-environment + - secretRef: + name: openproject-cron-environment + env: + + - name: OPENPROJECT_DB_PASSWORD + value: 0b4d7caf9005abcc8df53519620dd00619de27f8 + command: + - bash + - /app/docker/prod/wait-for-db + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - mountPath: /tmp + name: tmp + - mountPath: /app/tmp + name: app-tmp + containers: + - name: "cron" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 + imagePullPolicy: IfNotPresent + envFrom: + - secretRef: + name: openproject-core + - secretRef: + name: openproject-oidc + - secretRef: + name: openproject-s3 + - secretRef: + name: openproject-memcached + - secretRef: + name: openproject-environment + - secretRef: + name: openproject-cron-environment + command: + - bash + - /app/docker/prod/cron + env: + + - name: OPENPROJECT_DB_PASSWORD + value: 0b4d7caf9005abcc8df53519620dd00619de27f8 + volumeMounts: + - mountPath: /tmp + name: tmp + - mountPath: /app/tmp + name: app-tmp + resources: + requests: + memory: "256Mi" + cpu: "250m" + limits: + memory: "1Gi" + cpu: "1" +--- +# 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-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + 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: ee004f43bb526894d4f9090d581ec0e16aab3dae503d49acb1ea234b00edc426 + checksum/env-memcached: c231d3ee47049efcdc46048b6e76c6bc89d786eeae254c5c4ed76ada746aa93a + checksum/env-oidc: 05dccac126cec090a3ef987b73f69fe55db386f54cb43e6591c70eb2ffe52dfc + checksum/env-s3: 194978ace577c9f7a206e1e2487ceaac83e5586ce40b9cf41c2df22057b92af4 + checksum/env-environment: 64120ea7256045f894778bb4bd0615aab8de1a1f3ee92ac2f7b9a03daa3365c9 + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + 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: null + 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: null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 + 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: 0b4d7caf9005abcc8df53519620dd00619de27f8 + command: + - bash + - /app/docker/prod/wait-for-db + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - mountPath: /tmp + name: tmp + - mountPath: /app/tmp + name: app-tmp + containers: + - name: "openproject" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 + 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: 0b4d7caf9005abcc8df53519620dd00619de27f8 + 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-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + 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: ee004f43bb526894d4f9090d581ec0e16aab3dae503d49acb1ea234b00edc426 + checksum/env-memcached: c231d3ee47049efcdc46048b6e76c6bc89d786eeae254c5c4ed76ada746aa93a + checksum/env-oidc: 05dccac126cec090a3ef987b73f69fe55db386f54cb43e6591c70eb2ffe52dfc + checksum/env-s3: 194978ace577c9f7a206e1e2487ceaac83e5586ce40b9cf41c2df22057b92af4 + checksum/env-environment: 64120ea7256045f894778bb4bd0615aab8de1a1f3ee92ac2f7b9a03daa3365c9 + labels: + app.kubernetes.io/name: openproject + helm.sh/chart: openproject-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + 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: null + 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: null + 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: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 + 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: 0b4d7caf9005abcc8df53519620dd00619de27f8 + command: + - bash + - /app/docker/prod/wait-for-db + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + volumeMounts: + - mountPath: /tmp + name: tmp + - mountPath: /app/tmp + name: app-tmp + containers: + - name: "openproject" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1000 + runAsNonRoot: true + runAsUser: 1000 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + image: registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 + 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: 0b4d7caf9005abcc8df53519620dd00619de27f8 + - name: "OPENPROJECT_GOOD_JOB_QUEUES" + 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-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + 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-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + 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: null + 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: null + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 5Gi + initContainers: + - name: check-db-ready + image: "registry-1.docker.io/library/postgres:16.8-alpine3.20@sha256:951d0626662c85a25e1ba0a89e64f314a2b99abced2c85b4423506249c2d82b0" + 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: 0b4d7caf9005abcc8df53519620dd00619de27f8 + 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: null + seccompProfile: + type: RuntimeDefault + containers: + - name: seeder + image: "registry.opencode.de/bmi/opendesk/components/supplier/openproject/images-mirror/open_desk:15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969" + 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: 0b4d7caf9005abcc8df53519620dd00619de27f8 + 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: null + 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-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + 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: + ingressClassName: nginx + tls: + - hosts: + - "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: "opendesk-certificates-tls" + rules: + - host: "projects.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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-9.9.0 + app.kubernetes.io/instance: openproject + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/version: "15.5.0" + 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" +... + +--- +# Source: xwiki/templates/xwiki-sa.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: xwiki-sa +--- +# Source: xwiki/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: xwiki + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.4 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm + annotations: +type: Opaque +data: + DB_PASSWORD: "Y2YwMzE3MDYzNmQxZmE4OTYxNzM3MGZlNTFhZWZjNDcwMjIxYWUyOA==" +--- +# Source: xwiki/templates/configmaps.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: xwiki + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.4 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm + annotations: +data: + DB_USER: "xwiki_user" + DB_HOST: "postgresql:5432" + 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.4 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm + annotations: +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}" + + # Currently database preferences are replaced on hibernate (XML) file. + # To prevent errors with special XML chars, replace all for respective encoded alternative. + escapeXML() { + echo "$1" | sed -e 's/&/\&/g' -e 's//\>/g' -e 's/"/\"/g' -e "s/'/\'/g" + } + if [[ -n "$DB_PASSWORD" ]]; then + export DB_PASSWORD=$(escapeXML $DB_PASSWORD) + fi + if [[ -n "$JDBC_PARAMS" ]]; then + export JDBC_PARAMS=$(escapeXML $JDBC_PARAMS) + fi + + # 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' '8072148becdef928e46f5686560bbbcd9c9a4284' + + 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.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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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' 'af1243a89d9b55965b6395e3ab7cc6d004dbcdab' + + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' + + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'wikiInitializer.initialRequest.xwiki.url' 'https://wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/distribution/' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.base' 'https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.navigationEndpoint' 'https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/navigation.json' + + xwiki_replace_or_add "/usr/local/xwiki/data/xwiki.properties" 'workplaceServices.portalSecret' '1e2eb0fc3815d766ef1be11fb4edba676856ba52' + + # 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/${CONTEXT_PATH}/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/${CONTEXT_PATH}/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 '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary=#571EFA' >> 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; padding-top: 7px; padding-left: 9px; margin-top: auto; margin-bottom: auto; } div#companylogo a { display: contents; }' >> 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host=postfix.yschmidt-opendesk-argo.svc.cluster.local' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password=1884bda7fb31c726adcd094399ab63319e9ca56f' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port=587' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties=mail.smtp.starttls.enable=true' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username=opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' >> start.d/xwiki.ini + echo '-Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService=keycloak-bridge-auth' >> 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=Wissen - $!tdoc.displayTitle - openDesk' >> 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de' >> 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} -Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary=#571EFA" + 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; padding-top: 7px; padding-left: 9px; margin-top: auto; margin-bottom: auto; } div#companylogo a { display: contents; }" + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host=postfix.yschmidt-opendesk-argo.svc.cluster.local" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password=1884bda7fb31c726adcd094399ab63319e9ca56f" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port=587" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties=mail.smtp.starttls.enable=true" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username=opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + export JAVA_OPTS="${JAVA_OPTS} -Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService=keycloak-bridge-auth" + 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=Wissen - $!tdoc.displayTitle - openDesk" + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + 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 '-Dproperty:xwiki:FlamingoThemes.Iceberg^FlamingoThemesCode.ThemeClass.brand-primary="#571EFA"' >> /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; padding-top: 7px; padding-left: 9px; margin-top: auto; margin-bottom: auto; } div#companylogo a { display: contents; }"' >> /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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/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@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host="postfix.yschmidt-opendesk-argo.svc.cluster.local"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.password="1884bda7fb31c726adcd094399ab63319e9ca56f"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port="587"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties="mail.smtp.starttls.enable=true"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.username="opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"' >> /tmp/java_opts.txt + echo '-Dproperty:xwiki:XWiki.AuthService.Configuration^XWiki.AuthService.ConfigurationClass.authService="keycloak-bridge-auth"' >> /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="Wissen - $!tdoc.displayTitle - openDesk"' >> /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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"' >> /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.4 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm + annotations: +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.4 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm + annotations: +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: 25831d9af41b8f070a7aa2b0e6a84e9561f8a468e5dedc0b0eab7c4ca866077f + checksum/initialization-configmaps: 9b4efa8ff1cec573de2eaa8ea1d4ef83c9e9ac8fd0539deb8cfbe11287090f9f + labels: + app.kubernetes.io/name: xwiki + helm.sh/chart: xwiki-1.4.4 + 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.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335 + 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.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335 + imagePullPolicy: IfNotPresent + command: ["/bin/bash", "/configmaps/entrypoint"] + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 101 + runAsNonRoot: true + runAsUser: 100 + seLinuxOptions: null + 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" +--- +# 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.4 + app.kubernetes.io/instance: xwiki + app.kubernetes.io/managed-by: Helm + annotations: + haproxy-ingress.github.io/headers: X-Forwarded-Host wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + 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: + ingressClassName: nginx + tls: + - hosts: + - "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + secretName: opendesk-certificates-tls + rules: + - host: "wiki.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: xwiki + port: + number: 80 + +--- +# Source: impress/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: frontend-runtime-env + namespace: "yschmidt-opendesk-argo" +data: + runtime-env.js: | + window.RUNTIME_ENV = {"ICS_BASE_URL":"https://ics.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de","PORTAL_BASE_URL":"https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de"}; +... +--- +# Source: impress/templates/backend_svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: impress-backend + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: backend + annotations: + null +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8000 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: backend +--- +# Source: impress/templates/frontend_svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: impress-frontend + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: frontend + annotations: + null +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8080 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: frontend +--- +# Source: impress/templates/media_svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: impress-media + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: media + annotations: + null +spec: + type: ExternalName + externalName: objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de +--- +# Source: impress/templates/yprovider_svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: impress-y-provider + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: yProvider + annotations: + null +spec: + type: ClusterIP + ports: + - port: 443 + targetPort: 4444 + protocol: TCP + name: http + selector: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: yProvider +--- +# Source: impress/templates/backend_deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: impress-backend + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: backend +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: backend + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: backend + spec: + imagePullSecrets: + - name: impress-dockerconfig + shareProcessNamespace: false + containers: + - name: impress + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef" + imagePullPolicy: IfNotPresent + env: + - name: "AI_API_KEY" + value: "" + - name: "AI_BASE_URL" + value: "" + - name: "AI_MODEL" + value: "" + - name: "AWS_S3_ACCESS_KEY_ID" + value: "notes_user" + - name: "AWS_S3_ENDPOINT_URL" + value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "AWS_S3_SECRET_ACCESS_KEY" + value: "5c58820a84259ce3b869bfc267b53437f49d9902" + - name: "AWS_STORAGE_BUCKET_NAME" + value: "notes" + - name: "COLLABORATION_API_URL" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/api/" + - name: "COLLABORATION_SERVER_ORIGIN" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "COLLABORATION_SERVER_SECRET" + value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" + - name: "COLLABORATION_WS_URL" + value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/ws/" + - name: "DB_HOST" + value: "postgresql" + - name: "DB_NAME" + value: "notes" + - name: "DB_PASSWORD" + value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" + - name: "DB_PORT" + value: "5432" + - name: "DB_USER" + value: "notes_user" + - name: "DJANGO_ALLOWED_HOSTS" + value: "*" + - name: "DJANGO_CONFIGURATION" + value: "Production" + - name: "DJANGO_CSRF_TRUSTED_ORIGINS" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_EMAIL_BRAND_NAME" + value: "openDesk" + - name: "DJANGO_EMAIL_FROM" + value: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_EMAIL_HOST" + value: "postfix" + - name: "DJANGO_EMAIL_HOST_PASSWORD" + value: "1884bda7fb31c726adcd094399ab63319e9ca56f" + - name: "DJANGO_EMAIL_HOST_USER" + value: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_EMAIL_LOGO_IMG" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/entries/swp.notes.svg" + - name: "DJANGO_EMAIL_PORT" + value: "25" + - name: "DJANGO_EMAIL_USE_SSL" + value: "false" + - name: "DJANGO_EMAIL_USE_TLS" + value: "false" + - name: "DJANGO_SECRET_KEY" + value: "7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8" + - name: "DJANGO_SETTINGS_MODULE" + value: "impress.settings" + - name: "DJANGO_SITE_DOMAIN" + value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_SITE_NAME" + value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_SUPERUSER_PASSWORD" + value: "65a3226e9c23d19a7eac7573a4920d9882b5464a" + - name: "FRONTEND_THEME" + value: "openDesk" + - name: "LOGIN_REDIRECT_URL" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "LOGIN_REDIRECT_URL_FAILURE" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "LOGOUT_REDIRECT_URL" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "OIDC_AUTH_REQUEST_EXTRA_PARAMS" + value: "{}" + - name: "OIDC_OP_AUTHORIZATION_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth" + - name: "OIDC_OP_JWKS_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs" + - name: "OIDC_OP_LOGOUT_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout" + - name: "OIDC_OP_TOKEN_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token" + - name: "OIDC_OP_USER_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/userinfo" + - name: "OIDC_REDIRECT_ALLOWED_HOSTS" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*" + - name: "OIDC_RENEW_ID_TOKEN" + value: "False" + - name: "OIDC_RP_CLIENT_ID" + value: "opendesk-notes" + - name: "OIDC_RP_CLIENT_SECRET" + value: "0cbc7a3257db722ed76270a547c7dccf1f84db87" + - name: "OIDC_RP_SCOPES" + value: "openid opendesk-notes-scope" + - name: "OIDC_RP_SIGN_ALGO" + value: "RS256" + - name: "POSTGRES_DB" + value: "notes" + - name: "POSTGRES_PASSWORD" + value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" + - name: "POSTGRES_USER" + value: "notes_user" + - name: "REDIS_URL" + value: "redis://default:07c524f0d3f95b4d03fea54ea10cfb848bdb355e@redis-headless:6379/7" + - name: "USER_OIDC_ESSENTIAL_CLAIMS" + value: "email" + - name: "USER_OIDC_FIELDS_TO_FULLNAME" + value: "given_name,family_name" + - name: "USER_OIDC_FIELD_TO_SHORTNAME" + value: "given_name" + - name: "Y_PROVIDER_API_BASE_URL" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/" + - name: "Y_PROVIDER_API_KEY" + value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + ports: + - name: http + containerPort: 8000 + protocol: TCP + livenessProbe: + httpGet: + path: /__heartbeat__ + port: 8000 + initialDelaySeconds: 10 + timeoutSeconds: 1 + readinessProbe: + httpGet: + path: /__lbheartbeat__ + port: 8000 + initialDelaySeconds: 10 + timeoutSeconds: 1 + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 512Mi + volumeMounts: + - name: "tmp" + mountPath: "/tmp" + volumes: + - name: "tmp" + emptyDir: {} +--- +# Source: impress/templates/frontend_deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: impress-frontend + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: frontend +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: frontend + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: frontend + spec: + imagePullSecrets: + - name: impress-dockerconfig + shareProcessNamespace: false + containers: + - name: impress + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-frontend@sha256:98fb87ad877eb5658c6bef1c09adf4e03f816dce61867bc099838aca15890887" + imagePullPolicy: IfNotPresent + env: + - name: "NEXT_PUBLIC_API_ORIGIN" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "NEXT_PUBLIC_MEDIA_URL" + value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "NEXT_PUBLIC_Y_PROVIDER_URL" + value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/ws" + - name: "PORT" + value: "8080" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + ports: + - name: http + containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 32Mi + volumeMounts: + - name: "frontend-runtime-env" + mountPath: "/usr/share/nginx/html/runtime-env.js" + subPath: "runtime-env.js" + - name: "tmp" + mountPath: "/tmp" + volumes: + - name: "frontend-runtime-env" + configMap: + name: "frontend-runtime-env" + - name: "tmp" + emptyDir: {} +--- +# Source: impress/templates/yprovider_deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: impress-y-provider + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: yProvider +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: yProvider + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: yProvider + spec: + imagePullSecrets: + - name: impress-dockerconfig + shareProcessNamespace: false + containers: + - name: impress + image: "registry-1.docker.io/lasuite/impress-y-provider:v2.4.0@sha256:329d47f5cda80941a7f0812969c3194ba68da3e7e1ef38e3d08c266fc97555c1" + imagePullPolicy: IfNotPresent + env: + - name: "COLLABORATION_LOGGING" + value: "false" + - name: "COLLABORATION_SERVER_ORIGIN" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "COLLABORATION_SERVER_SECRET" + value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" + - name: "Y_PROVIDER_API_KEY" + value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + ports: + - name: http + containerPort: 4444 + protocol: TCP + livenessProbe: + httpGet: + path: /ping + port: 4444 + initialDelaySeconds: 10 + timeoutSeconds: 1 + resources: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 128Mi + volumeMounts: + - name: "tmp" + mountPath: "/tmp" + volumes: + - name: "tmp" + emptyDir: {} +--- +# Source: impress/templates/backend_job.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: impress-backend-migrate + namespace: "yschmidt-opendesk-argo" + annotations: + argocd.argoproj.io/sync-options: Replace=true,Force=true + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: backend +spec: + ttlSecondsAfterFinished: 60 + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: backend + spec: + imagePullSecrets: + - name: impress-dockerconfig + shareProcessNamespace: false + containers: + - name: impress + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef" + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - | + python manage.py migrate --no-input + env: + - name: "AI_API_KEY" + value: "" + - name: "AI_BASE_URL" + value: "" + - name: "AI_MODEL" + value: "" + - name: "AWS_S3_ACCESS_KEY_ID" + value: "notes_user" + - name: "AWS_S3_ENDPOINT_URL" + value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "AWS_S3_SECRET_ACCESS_KEY" + value: "5c58820a84259ce3b869bfc267b53437f49d9902" + - name: "AWS_STORAGE_BUCKET_NAME" + value: "notes" + - name: "COLLABORATION_API_URL" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/api/" + - name: "COLLABORATION_SERVER_ORIGIN" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "COLLABORATION_SERVER_SECRET" + value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" + - name: "COLLABORATION_WS_URL" + value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/ws/" + - name: "DB_HOST" + value: "postgresql" + - name: "DB_NAME" + value: "notes" + - name: "DB_PASSWORD" + value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" + - name: "DB_PORT" + value: "5432" + - name: "DB_USER" + value: "notes_user" + - name: "DJANGO_ALLOWED_HOSTS" + value: "*" + - name: "DJANGO_CONFIGURATION" + value: "Production" + - name: "DJANGO_CSRF_TRUSTED_ORIGINS" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_EMAIL_BRAND_NAME" + value: "openDesk" + - name: "DJANGO_EMAIL_FROM" + value: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_EMAIL_HOST" + value: "postfix" + - name: "DJANGO_EMAIL_HOST_PASSWORD" + value: "1884bda7fb31c726adcd094399ab63319e9ca56f" + - name: "DJANGO_EMAIL_HOST_USER" + value: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_EMAIL_LOGO_IMG" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/entries/swp.notes.svg" + - name: "DJANGO_EMAIL_PORT" + value: "25" + - name: "DJANGO_EMAIL_USE_SSL" + value: "false" + - name: "DJANGO_EMAIL_USE_TLS" + value: "false" + - name: "DJANGO_SECRET_KEY" + value: "7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8" + - name: "DJANGO_SETTINGS_MODULE" + value: "impress.settings" + - name: "DJANGO_SITE_DOMAIN" + value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_SITE_NAME" + value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_SUPERUSER_PASSWORD" + value: "65a3226e9c23d19a7eac7573a4920d9882b5464a" + - name: "FRONTEND_THEME" + value: "openDesk" + - name: "LOGIN_REDIRECT_URL" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "LOGIN_REDIRECT_URL_FAILURE" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "LOGOUT_REDIRECT_URL" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "OIDC_AUTH_REQUEST_EXTRA_PARAMS" + value: "{}" + - name: "OIDC_OP_AUTHORIZATION_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth" + - name: "OIDC_OP_JWKS_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs" + - name: "OIDC_OP_LOGOUT_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout" + - name: "OIDC_OP_TOKEN_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token" + - name: "OIDC_OP_USER_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/userinfo" + - name: "OIDC_REDIRECT_ALLOWED_HOSTS" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*" + - name: "OIDC_RENEW_ID_TOKEN" + value: "False" + - name: "OIDC_RP_CLIENT_ID" + value: "opendesk-notes" + - name: "OIDC_RP_CLIENT_SECRET" + value: "0cbc7a3257db722ed76270a547c7dccf1f84db87" + - name: "OIDC_RP_SCOPES" + value: "openid opendesk-notes-scope" + - name: "OIDC_RP_SIGN_ALGO" + value: "RS256" + - name: "POSTGRES_DB" + value: "notes" + - name: "POSTGRES_PASSWORD" + value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" + - name: "POSTGRES_USER" + value: "notes_user" + - name: "REDIS_URL" + value: "redis://default:07c524f0d3f95b4d03fea54ea10cfb848bdb355e@redis-headless:6379/7" + - name: "USER_OIDC_ESSENTIAL_CLAIMS" + value: "email" + - name: "USER_OIDC_FIELDS_TO_FULLNAME" + value: "given_name,family_name" + - name: "USER_OIDC_FIELD_TO_SHORTNAME" + value: "given_name" + - name: "Y_PROVIDER_API_BASE_URL" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/" + - name: "Y_PROVIDER_API_KEY" + value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 512Mi + volumeMounts: + - name: "tmp" + mountPath: "/tmp" + restartPolicy: Never + volumes: + - name: "tmp" + emptyDir: {} +--- +# Source: impress/templates/backend_job_createsuperuser.yaml +apiVersion: batch/v1 +kind: Job +metadata: + name: impress-backend-createsuperuser + namespace: "yschmidt-opendesk-argo" + annotations: + argocd.argoproj.io/sync-options: Replace=true,Force=true + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: backend +spec: + ttlSecondsAfterFinished: 60 + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/component: backend + spec: + imagePullSecrets: + - name: impress-dockerconfig + shareProcessNamespace: false + containers: + - name: impress + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-notes:1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef" + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - | + python manage.py createsuperuser --email default.admin@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de --password 65a3226e9c23d19a7eac7573a4920d9882b5464a + env: + - name: "AI_API_KEY" + value: "" + - name: "AI_BASE_URL" + value: "" + - name: "AI_MODEL" + value: "" + - name: "AWS_S3_ACCESS_KEY_ID" + value: "notes_user" + - name: "AWS_S3_ENDPOINT_URL" + value: "https://objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "AWS_S3_SECRET_ACCESS_KEY" + value: "5c58820a84259ce3b869bfc267b53437f49d9902" + - name: "AWS_STORAGE_BUCKET_NAME" + value: "notes" + - name: "COLLABORATION_API_URL" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/api/" + - name: "COLLABORATION_SERVER_ORIGIN" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "COLLABORATION_SERVER_SECRET" + value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" + - name: "COLLABORATION_WS_URL" + value: "wss://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/collaboration/ws/" + - name: "DB_HOST" + value: "postgresql" + - name: "DB_NAME" + value: "notes" + - name: "DB_PASSWORD" + value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" + - name: "DB_PORT" + value: "5432" + - name: "DB_USER" + value: "notes_user" + - name: "DJANGO_ALLOWED_HOSTS" + value: "*" + - name: "DJANGO_CONFIGURATION" + value: "Production" + - name: "DJANGO_CSRF_TRUSTED_ORIGINS" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_EMAIL_BRAND_NAME" + value: "openDesk" + - name: "DJANGO_EMAIL_FROM" + value: "no-reply@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_EMAIL_HOST" + value: "postfix" + - name: "DJANGO_EMAIL_HOST_PASSWORD" + value: "1884bda7fb31c726adcd094399ab63319e9ca56f" + - name: "DJANGO_EMAIL_HOST_USER" + value: "opendesk-system@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_EMAIL_LOGO_IMG" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/univention/portal/icons/entries/swp.notes.svg" + - name: "DJANGO_EMAIL_PORT" + value: "25" + - name: "DJANGO_EMAIL_USE_SSL" + value: "false" + - name: "DJANGO_EMAIL_USE_TLS" + value: "false" + - name: "DJANGO_SECRET_KEY" + value: "7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8" + - name: "DJANGO_SETTINGS_MODULE" + value: "impress.settings" + - name: "DJANGO_SITE_DOMAIN" + value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_SITE_NAME" + value: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "DJANGO_SUPERUSER_PASSWORD" + value: "65a3226e9c23d19a7eac7573a4920d9882b5464a" + - name: "FRONTEND_THEME" + value: "openDesk" + - name: "LOGIN_REDIRECT_URL" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "LOGIN_REDIRECT_URL_FAILURE" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "LOGOUT_REDIRECT_URL" + value: "https://portal.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "OIDC_AUTH_REQUEST_EXTRA_PARAMS" + value: "{}" + - name: "OIDC_OP_AUTHORIZATION_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/auth" + - name: "OIDC_OP_JWKS_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/certs" + - name: "OIDC_OP_LOGOUT_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/logout" + - name: "OIDC_OP_TOKEN_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/token" + - name: "OIDC_OP_USER_ENDPOINT" + value: "https://id.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/realms/opendesk/protocol/openid-connect/userinfo" + - name: "OIDC_REDIRECT_ALLOWED_HOSTS" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/*" + - name: "OIDC_RENEW_ID_TOKEN" + value: "False" + - name: "OIDC_RP_CLIENT_ID" + value: "opendesk-notes" + - name: "OIDC_RP_CLIENT_SECRET" + value: "0cbc7a3257db722ed76270a547c7dccf1f84db87" + - name: "OIDC_RP_SCOPES" + value: "openid opendesk-notes-scope" + - name: "OIDC_RP_SIGN_ALGO" + value: "RS256" + - name: "POSTGRES_DB" + value: "notes" + - name: "POSTGRES_PASSWORD" + value: "be74d99779cd9ad3426c25b026e0bec0784f7aff" + - name: "POSTGRES_USER" + value: "notes_user" + - name: "REDIS_URL" + value: "redis://default:07c524f0d3f95b4d03fea54ea10cfb848bdb355e@redis-headless:6379/7" + - name: "USER_OIDC_ESSENTIAL_CLAIMS" + value: "email" + - name: "USER_OIDC_FIELDS_TO_FULLNAME" + value: "given_name,family_name" + - name: "USER_OIDC_FIELD_TO_SHORTNAME" + value: "given_name" + - name: "Y_PROVIDER_API_BASE_URL" + value: "https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/" + - name: "Y_PROVIDER_API_KEY" + value: "c25d22c80c4c0728c3d3dacf268c171a1285301d" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1001 + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + resources: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 512Mi + volumeMounts: + - name: "tmp" + mountPath: "/tmp" + restartPolicy: Never + volumes: + - name: "tmp" + emptyDir: {} +--- +# Source: impress/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: impress + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm +spec: + ingressClassName: nginx + tls: + - secretName: "opendesk-certificates-tls" + hosts: + - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + rules: + - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: "/" + pathType: Prefix + backend: + service: + name: impress-frontend + port: + number: 80 + - path: /api + pathType: Prefix + backend: + service: + name: impress-backend + port: + number: 80 +--- +# Source: impress/templates/ingress_admin.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: impress-admin + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm +spec: + ingressClassName: nginx + tls: + - secretName: "opendesk-certificates-tls" + hosts: + - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + rules: + - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: "/admin" + pathType: Prefix + backend: + service: + name: impress-backend + port: + number: 80 + - path: /static + pathType: Prefix + backend: + service: + name: impress-backend + port: + number: 80 +--- +# Source: impress/templates/ingress_collaboration_api.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: impress-collaboration-api + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm +spec: + ingressClassName: nginx + tls: + - secretName: "opendesk-certificates-tls" + hosts: + - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + rules: + - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: "/collaboration/api/" + pathType: ImplementationSpecific + backend: + service: + name: impress-y-provider + port: + number: 443 + service: + name: impress-y-provider + port: + number: 443 +--- +# Source: impress/templates/ingress_collaboration_ws.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: impress-ws + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + annotations: + nginx.ingress.kubernetes.io/auth-response-headers: Authorization, X-Can-Edit, X-User-Id + nginx.ingress.kubernetes.io/auth-url: https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/v1.0/documents/collaboration-auth/ + nginx.ingress.kubernetes.io/enable-websocket: "true" + nginx.ingress.kubernetes.io/proxy-read-timeout: "86400" + nginx.ingress.kubernetes.io/proxy-send-timeout: "86400" + nginx.ingress.kubernetes.io/upstream-hash-by: $arg_room +spec: + ingressClassName: nginx + tls: + - secretName: "opendesk-certificates-tls" + hosts: + - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + rules: + - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: "/collaboration/ws/" + pathType: ImplementationSpecific + backend: + service: + name: impress-y-provider + port: + number: 443 + service: + name: impress-y-provider + port: + number: 443 +--- +# Source: impress/templates/ingress_media.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: impress-media + namespace: "yschmidt-opendesk-argo" + labels: + helm.sh/chart: impress-2.0.0 + app.kubernetes.io/name: impress + app.kubernetes.io/instance: impress + app.kubernetes.io/managed-by: Helm + annotations: + nginx.ingress.kubernetes.io/auth-response-headers: Authorization, X-Amz-Date, X-Amz-Content-SHA256 + nginx.ingress.kubernetes.io/auth-url: https://notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de/api/v1.0/documents/media-auth/ + nginx.ingress.kubernetes.io/backend-protocol: HTTPS + nginx.ingress.kubernetes.io/rewrite-target: /notes/$1 + nginx.ingress.kubernetes.io/session-cookie-path: /media + nginx.ingress.kubernetes.io/upstream-vhost: objectstore.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + nginx.ingress.kubernetes.io/use-regex: "true" +spec: + ingressClassName: nginx + tls: + - secretName: "opendesk-certificates-tls" + hosts: + - "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + rules: + - host: "notes.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + http: + paths: + - path: "/media/(.*)" + pathType: ImplementationSpecific + backend: + service: + name: impress-media + port: + number: 443 +--- +# Source: impress/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: backend + namespace: "yschmidt-opendesk-argo" + annotations: + "helm.sh/hook": pre-install,pre-upgrade + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": before-hook-creation +stringData: + DJANGO_SUPERUSER_EMAIL: default.admin@yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + DJANGO_SUPERUSER_PASSWORD: 65a3226e9c23d19a7eac7573a4920d9882b5464a + DJANGO_SECRET_KEY: 7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8 + OIDC_RP_CLIENT_ID: opendesk-notes + OIDC_RP_CLIENT_SECRET: 0cbc7a3257db722ed76270a547c7dccf1f84db87 + AI_API_KEY: + AI_BASE_URL: + +--- +# 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.2.0 + app.kubernetes.io/instance: opendesk-openproject-bootstrap + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: false +... +--- +# 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.2.0 + app.kubernetes.io/instance: opendesk-openproject-bootstrap + app.kubernetes.io/managed-by: Helm +stringData: + openprojectAdminUsername: "abbb47d550ea03225cb109388f296cbc3a4b66eb" + openprojectAdminPassword: "9e8d27af068f15dce7b940241ddac82785935239" + nextcloudAdminUsername: "nextcloud" + nextcloudAdminPassword: "d132ecf836fac6a43b19341f94d5effff7edee65" +... +--- +# 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.2.0 + 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: 60 + template: + metadata: + labels: + app.kubernetes.io/name: opendesk-openproject-bootstrap + helm.sh/chart: opendesk-openproject-bootstrap-2.2.0 + 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: null + 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "OPENPROJECT_STORAGE_NAME" + value: "Nextcloud at yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - 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.yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de" + - name: "NC_ADMIN_USERNAME" + valueFrom: + secretKeyRef: + key: "nextcloudAdminUsername" + name: "opendesk-openproject-bootstrap" + - 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" +... + +--- +# Source: opendesk-migrations/templates/serviceaccount.yaml +apiVersion: "v1" +kind: "ServiceAccount" +metadata: + name: "opendesk-migrations-post" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.6.0 + app.kubernetes.io/instance: opendesk-migrations-post + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +... +--- +# Source: opendesk-migrations/templates/secret.yaml +apiVersion: "v1" +kind: "Secret" +metadata: + name: "opendesk-migrations-post-environmentdetails" + namespace: "yschmidt-opendesk-argo" + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.6.0 + 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: | + + ai: + apiKey: "" + endpoint: "" + model: "" + annotations: + cassandra: + ingress: null + pod: null + serviceAccount: null + coco: + ingress: null + pod: null + serviceAccount: null + collabora: + ingress: null + pod: null + service: null + serviceAccount: null + cryptpad: + ingress: null + pod: null + serviceAccount: null + element: + common: null + ingress: null + pod: null + service: null + serviceAccount: null + elementMatrixNeoboardWidget: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + elementMatrixNeochoiceWidget: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + elementMatrixNeodatefixBot: + additional: null + ingress: null + persistence: null + pod: null + service: null + serviceAccount: null + elementMatrixNeodatefixBotBootstrap: + pod: null + serviceAccount: null + elementMatrixNeodatefixWidget: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + elementMatrixUserVerificationService: + additional: null + pod: null + service: null + serviceAccount: null + elementMatrixUserVerificationServiceBootstrap: + pod: null + serviceAccount: null + elementSynapse: + common: null + federationIngress: null + persistence: null + pod: null + service: null + serviceAccount: null + elementSynapseWeb: + common: null + ingress: null + pod: null + service: null + serviceAccount: null + elementWellKnown: + common: null + ingress: null + pod: null + service: null + serviceAccount: null + jitsi: + pod: null + serviceAccount: null + jitsiGlobal: + pod: null + jitsiJibri: + pod: null + jitsiJicofo: + pod: null + jitsiJigasi: + pod: null + jitsiJitsiPatchJVB: + serviceAccount: null + jitsiJvb: + metricsGrafana: null + metricsPrometheus: null + pod: null + service: null + jitsiProsody: + pod: null + jitsiWeb: + ingress: null + pod: null + nextcloudAio: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + nextcloudExporter: + additional: null + ingress: null + pod: null + serviceAccount: null + nextcloudNextcloudMgmt: + additional: null + pod: null + serviceAccount: null + notes: + ingressAdmin: null + ingressCollaborationAPI: null + ingressCollaborationWS: null + ingressMedia: null + serviceMedia: null + notesBackend: + migrateJob: null + pod: null + service: null + notesFrontend: + pod: null + service: null + notesYProvider: + pod: null + service: null + nubus: + additional: null + ingress: null + nubusGuardian: + authorizationApiPod: null + globalPod: null + ingressAuthorizationApi: null + ingressIngress: null + ingressManagementApi: null + ingressManagementUi: null + managementApiPod: null + managementUiPod: null + serviceAccount: null + nubusIntercomService: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + nubusKeycloak: + common: null + pod: null + service: null + serviceAccount: null + nubusKeycloakBootstrap: + additional: null + pod: null + service: null + serviceAccount: null + nubusKeycloakBootstrapNubus: + additional: null + pod: null + serviceAccount: null + nubusKeycloakExtensions: + handlerAdditional: null + handlerPod: null + handlerService: null + handlerServiceAccount: null + proxyAdditional: null + proxyIngress: null + proxyPod: null + proxyService: null + proxyServiceAccount: null + nubusLdapNotifier: + additional: null + pod: null + service: null + serviceAccount: null + nubusLdapServer: + additional: null + pod: null + service: null + serviceAccount: null + nubusNginxS3Gateway: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + nubusNotificationsApi: + additional: null + ingress: null + persistence: null + pod: null + service: null + serviceAccount: null + nubusOxConnector: + pod: null + serviceAccount: null + nubusPortalConsumer: + pod: null + nubusPortalFrontend: + additional: null + ingressIngress: null + ingressRedirects: null + ingressRewrites: null + persistence: null + pod: null + service: null + serviceAccount: null + nubusPortalServer: + additional: null + ingress: null + persistence: null + pod: null + service: null + serviceAccount: null + nubusProvisioning: + additional: null + apiAdditional: null + apiPod: null + dispatcherAdditional: null + dispatcherPod: null + natsAdditional: null + natsPod: null + pod: null + prefillAdditional: null + prefillPod: null + registerConsumersAdditional: null + registerConsumersPod: null + service: null + serviceAccount: null + udmTransformerAdditional: null + udmTransformerPod: null + nubusSelfserviceConsumer: + pod: null + serviceAccount: null + nubusStackDataUms: + additional: null + pod: null + serviceAccount: null + nubusUdmListener: + pod: null + serviceAccount: null + nubusUdmRestApi: + additional: null + ingress: null + persistence: null + pod: null + service: null + serviceAccount: null + nubusUmcGateway: + ingress: null + pod: null + serviceAccount: null + nubusUmcServer: + additional: null + ingress: null + pod: null + serviceAccount: null + opendeskMigrationsPost: + additional: null + pod: null + serviceAccount: null + opendeskMigrationsPre: + additional: null + pod: null + serviceAccount: null + opendeskServicesHome: + additional: null + ingress: null + opendeskServicesOtterize: + additional: null + opendeskServicesStaticFiles: + additional: null + ingress: null + pod: null + service: null + serviceAccount: null + openproject: + ingress: null + openprojectTempVolumes: null + pod: null + seederJob: null + serviceAccount: null + openprojectBootstrap: + additional: null + pod: null + openxchangeAppsuiteCoreDocumentconverter: + pod: null + openxchangeAppsuiteCoreGuidedtours: + pod: null + openxchangeAppsuiteCoreImageconverter: + pod: null + openxchangeAppsuiteCoreMw: + gotenbergPod: null + pod: null + serviceAccount: null + updatePod: null + openxchangeAppsuiteCoreUi: + pod: null + openxchangeAppsuiteCoreUiMiddleware: + pod: null + openxchangeAppsuiteCoreUserGuide: + pod: null + openxchangeAppsuiteIngress: + appsuitebase: null + caldavWellKnownRedirect: null + carddavWellKnownRedirect: null + coreHelpRoute: null + davInfostoreRoute: null + davRootRoute: null + documentsHelpRoute: null + driveClientWindowsOxRoute: null + driveHelpRoute: null + guardApiRoute: null + guardPgpRoute: null + guardSupportApiRoute: null + httpApiRoutesAjax: null + httpApiRoutesApi: null + httpApiRoutesAppRootApi: null + httpApiRoutesAppsuiteApi: null + ingress: null + officeWebRoute: null + restRoutesAdmin: null + restRoutesAdvertisement: null + restRoutesChronos: null + restRoutesPreliminary: null + restRoutesUserfeedback: null + rootredirect: null + rt2Route: null + staticRoutesInfostore: null + staticRoutesRealtime: null + staticRoutesServlet: null + staticRoutesWebservices: null + trailslash: null + wopiServerRoute: null + openxchangeBootstrap: + additional: null + serviceAccount: null + openxchangeDovecot: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + openxchangeEnterpriseContactPicker: + appsuiteCoreMw: null + appsuiteCoreMwPod: null + appsuiteCoreMwServiceAccount: null + openxchangeNextcloudIntegrationUi: + pod: null + openxchangePostfix: + pod: null + service: null + openxchangePublicSectorUi: + pod: null + servicesExternalClamavDistributed: + clamdCommon: null + clamdPod: null + clamdService: null + clamdServiceAccount: null + freshclamCommon: null + freshclamService: null + freshclamServiceAccount: null + milterCommon: null + milterPod: null + milterService: null + milterServiceAccount: null + persistence: null + servicesExternalClamavSimple: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + servicesExternalDkimpy: + additional: null + pod: null + service: null + serviceAccount: null + servicesExternalMariadb: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + servicesExternalMemcached: + common: null + pod: null + service: null + serviceAccount: null + servicesExternalMinio: + apiIngress: null + common: null + ingress: null + persistence: null + pod: null + provisioningPod: null + serviceAccount: null + serviceHeadless: null + serviceService: null + servicesExternalPostfix: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + servicesExternalPostgresql: + common: null + persistence: null + pod: null + service: null + serviceAccount: null + servicesExternalRedis: + common: null + masterMaster: null + masterPersistence: null + masterPod: null + masterService: null + masterServiceAccount: null + replicaPersistence: null + replicaPod: null + replicaReplica: null + replicaService: null + replicaServiceAccount: null + secret: null + xwiki: + common: null + ingress: null + persistence: null + service: null + serviceAccount: null + antivirus: + icap: + host: null + port: 1344 + milter: + host: null + port: 7357 + apps: + cassandra: + enabled: false + namespace: null + certificates: + enabled: true + namespace: null + clamavDistributed: + enabled: false + namespace: null + clamavSimple: + enabled: true + namespace: null + collabora: + enabled: true + namespace: null + collaboraController: + enabled: false + namespace: null + cryptpad: + enabled: true + namespace: null + dkimpy: + enabled: false + namespace: null + dovecot: + enabled: true + namespace: null + element: + enabled: true + namespace: null + elementAdmin: + enabled: false + namespace: null + elementGroupsync: + enabled: false + namespace: null + home: + enabled: true + namespace: null + jitsi: + enabled: false + namespace: null + mariadb: + enabled: true + namespace: null + memcached: + enabled: true + namespace: null + migrations: + enabled: true + namespace: null + minio: + enabled: true + namespace: null + nextcloud: + enabled: true + namespace: null + notes: + enabled: true + namespace: null + nubus: + enabled: true + namespace: null + openproject: + enabled: true + namespace: null + oxAppSuite: + enabled: true + namespace: null + postfix: + enabled: true + namespace: null + postgresql: + enabled: true + namespace: null + redis: + enabled: true + namespace: null + staticFiles: + enabled: true + namespace: null + xwiki: + enabled: true + namespace: null + cache: + intercomService: + host: redis-headless + password: "" + port: 6379 + username: default + nextcloud: + host: redis-headless + password: "" + port: 6379 + tls: false + username: default + notes: + host: redis-headless + password: "" + port: 6379 + openproject: + host: memcached + port: 11211 + oxAppSuite: + host: redis-headless + password: "" + port: 6379 + username: default + umsSelfservice: + host: memcached + port: 11211 + certificate: + issuerRef: + kind: ClusterIssuer + name: letsencrypt-prod + selfSigned: false + wildcard: "false" + charts: + cassandra: + name: cassandra + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 12.0.4 + certificates: + name: opendesk-certificates + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-certificates + verify: true + version: 3.1.1 + clamav: + name: opendesk-clamav + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav + verify: true + version: 4.0.6 + clamavSimple: + name: clamav-simple + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-clamav + verify: true + version: 4.0.6 + collabora: + name: collabora-online + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/collabora/charts-mirror + verify: true + version: 1.1.37 + collaboraController: + name: cool-controller + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/collabora/charts-mirror + verify: false + version: 1.1.2 + cryptpad: + name: cryptpad + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/charts-mirror + verify: true + version: 0.0.20 + dkimpy: + name: opendesk-dkimpy-milter + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-dkimpy-milter + verify: true + version: 1.0.0 + dovecot: + name: dovecot + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-dovecot + verify: true + version: 2.0.0 + element: + name: opendesk-element + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + elementWellKnown: + name: opendesk-well-known + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + home: + name: opendesk-home + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-home + verify: true + version: 1.0.2 + intercomService: + name: intercom-service + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/charts-mirror + verify: true + version: 2.12.0 + jitsi: + name: opendesk-jitsi + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-jitsi + verify: true + version: 3.1.0 + mariadb: + name: mariadb + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-mariadb + verify: true + version: 3.0.3 + matrixNeoboardWidget: + name: matrix-neoboard-widget + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets + verify: true + version: 3.5.1 + matrixNeochoiceWidget: + name: matrix-neochoice-widget + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets + verify: true + version: 3.5.1 + matrixNeodatefixBot: + name: matrix-neodatefix-bot + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets + verify: true + version: 3.5.1 + matrixNeodatefixWidget: + name: matrix-neodatefix-widget + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets + verify: true + version: 3.5.1 + matrixUserVerificationService: + name: opendesk-matrix-user-verification-service + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + memcached: + name: memcached + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 6.7.1 + migrations: + name: opendesk-migrations + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-migrations + verify: true + version: 1.6.0 + minio: + name: minio + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 14.10.1 + nextcloud: + name: opendesk-nextcloud + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud + verify: true + version: 4.0.3 + nextcloudManagement: + name: opendesk-nextcloud-management + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-nextcloud + verify: true + version: 4.0.3 + nginx: + name: nginx + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 15.9.3 + nginxS3Gateway: + name: nginx-s3-gateway + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/nginx-s3-gateway + verify: true + version: 1.0.1 + notes: + name: impress + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/dinum/charts/notes + verify: true + version: 2.0.0 + nubus: + name: nubus + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/charts-mirror + verify: true + version: 1.8.0 + opendeskAlerts: + name: opendesk-alerts + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-alerts + verify: true + version: 1.1.1 + opendeskDashboards: + name: opendesk-dashboards + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-dashboards + verify: true + version: 1.1.1 + opendeskKeycloakBootstrap: + name: opendesk-keycloak-bootstrap + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-keycloak-bootstrap + verify: true + version: 2.6.0 + opendeskStaticFiles: + name: opendesk-static-files + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-static-files + verify: true + version: 4.0.1 + openproject: + name: openproject + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/openproject/charts-mirror + verify: true + version: 9.9.0 + openprojectBootstrap: + name: opendesk-openproject-bootstrap + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-openproject-bootstrap + verify: true + version: 2.2.0 + otterize: + name: opendesk-otterize + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-otterize + verify: true + version: 2.1.3 + oxAppSuite: + name: appsuite-public-sector + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/charts-mirror + verify: false + version: 2.17.164 + oxAppSuiteBootstrap: + name: opendesk-open-xchange-bootstrap + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap + verify: true + version: 2.1.2 + oxConnector: + name: ox-connector + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/charts-mirror + verify: true + version: 0.19.0 + postfix: + name: postfix + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-postfix + verify: true + version: 3.0.1 + postgresql: + name: postgresql + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-postgresql + verify: true + version: 2.1.2 + redis: + name: redis + registry: registry.opencode.de + repository: bmi/opendesk/components/external/charts/bitnami-charts + verify: true + version: 18.6.1 + synapse: + name: opendesk-synapse + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + synapseAdmin: + name: opendesk-synapse-admin + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 5.0.1 + synapseAdminbotWeb: + name: opendesk-synapse-adminbot-web + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 5.0.1 + synapseCreateAccount: + name: opendesk-synapse-create-account + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + synapseGroupsync: + name: opendesk-synapse-groupsync + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 5.0.1 + synapsePipe: + name: opendesk-synapse-pipe + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 5.0.1 + synapseWeb: + name: opendesk-synapse-web + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/charts/opendesk-element + verify: true + version: 6.1.3 + xwiki: + name: xwiki + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/charts-mirror + verify: false + version: 1.4.4 + cluster: + container: + engine: cri-o + networking: + cidr: + - 10.0.0.0/8 + domain: cluster.local + incomingCIDR: [] + ingressGatewayIP: "" + ipFamilies: DualStack + loadBalancerStatusField: ip + persistence: + readWriteMany: + enabled: false + service: + type: LoadBalancer + customization: + release: + cassandra: {} + clamav: {} + clamavSimple: {} + collaboraController: {} + collaboraOnline: {} + cryptpad: {} + dovecot: {} + intercomService: {} + jitsi: {} + mariadb: {} + matrixNeoboardWidget: {} + matrixNeochoiceWidget: {} + matrixNeodatefixBot: {} + matrixNeodatefixBotBootstrap: {} + matrixNeodatefixWidget: {} + matrixUserVerificationService: {} + matrixUserVerificationServiceBootstrap: {} + memcached: {} + migrationsPost: {} + migrationsPre: {} + minio: {} + nginxS3Gateway: {} + notes: {} + opendeskAlerts: {} + opendeskCertificates: {} + opendeskDashboards: {} + opendeskDkimpyMilter: {} + opendeskElement: {} + opendeskHome: {} + opendeskKeycloakBootstrap: {} + opendeskNextcloud: {} + opendeskNextcloudManagement: {} + opendeskOpenprojectBootstrap: {} + opendeskOpenxchangeBootstrap: {} + opendeskOtterize: {} + opendeskStaticFiles: {} + opendeskSynapse: {} + opendeskSynapseAdmin: {} + opendeskSynapseAdminbotBootstrap: {} + opendeskSynapseAdminbotPipe: {} + opendeskSynapseAdminbotWeb: {} + opendeskSynapseAuditbotBootstrap: {} + opendeskSynapseAuditbotPipe: {} + opendeskSynapseGroupsync: {} + opendeskSynapseWeb: {} + opendeskWellKnown: {} + openproject: {} + openxchange: {} + oxConnector: {} + postfix: {} + postgresql: {} + redis: {} + ums: {} + xwiki: {} + databases: + defaults: + userConnectionLimit: 100 + dovecotACL: + connectionLimit: null + host: cassandra + name: dovecot_acl + password: "" + port: 9042 + type: cassandra + username: dovecot_acl_user + dovecotDictmap: + connectionLimit: null + host: cassandra + name: dovecot_dictmap + password: "" + port: 9042 + type: cassandra + username: dovecot_dictmap_user + keycloak: + connectionLimit: null + host: postgresql + name: keycloak + password: "" + port: 5432 + type: postgresql + username: keycloak_user + keycloakExtension: + connectionLimit: null + host: postgresql + name: keycloak_extensions + password: "" + port: 5432 + ssl: "false" + type: postgresql + username: keycloak_extensions_user + nextcloud: + connectionLimit: null + host: postgresql + name: nextcloud + password: "" + port: 5432 + type: postgresql + username: nextcloud_user + notes: + connectionLimit: null + host: postgresql + name: notes + password: "" + port: 5432 + type: postgresql + username: notes_user + openproject: + connectionLimit: null + host: postgresql + name: openproject + password: "" + port: 5432 + type: postgresql + username: openproject_user + oxAppSuite: + connectionLimit: null + host: mariadb + name: configdb + password: "" + port: 3306 + readHost: null + readPassword: null + readUser: null + type: mariadb + username: root + synapse: + channelBinding: prefer + clientEncoding: auto + connectTimeout: 10 + connectionLimit: null + connectionPoolMax: "5" + connectionPoolMin: "3" + gssencmode: prefer + host: postgresql + keepalives: 1 + keepalivesCount: 3 + keepalivesIdle: 10 + keepalivesInterval: 10 + name: matrix + password: "" + port: 5432 + replication: false + requireAuth: [] + sslMinProtocolVersion: TLSv1.2 + sslcompression: 0 + sslmode: prefer + type: postgresql + username: matrix_user + umsGuardianManagementApi: + connectionLimit: null + host: postgresql + name: guardianmanagementapi + password: "" + port: 5432 + type: postgresql + username: guardianmanagementapi_user + umsNotificationsApi: + connectionLimit: null + host: postgresql + name: notificationsapi + password: "" + port: 5432 + type: postgresql + username: notificationsapi_user + umsSelfservice: + connectionLimit: 10 + host: postgresql + name: selfservice + password: "" + port: 5432 + type: postgresql + username: selfservice_user + xwiki: + connectionLimit: null + host: postgresql + name: xwiki + password: "" + port: 5432 + type: postgresql + username: xwiki_user + debug: + cleanup: + deletePodsOnSuccess: true + deletePodsOnSuccessTimeout: 60 + keepPVCOnDelete: false + keepRessourceOnDelete: true + enabled: false + enterpriseFeatures: + collabora: + autoscaling: + maxReplicas: 4 + minReplicas: 1 + scaleDownDisabled: false + targetCPUUtilizationPercentage: 99 + targetMemoryUtilizationPercentage: 99 + enterpriseKeys: + nextcloud: + subscriptionData: "" + subscriptionKey: "" + openproject: + token: null + xwiki: + opendeskEnterpriseLicense: "" + proApplicationslicense: "" + functional: + admin: + portal: + deploymentTimestamp: + enabled: true + authentication: + newDeviceLoginNotification: + enabled: true + oidc: + clientScopes: null + clients: null + realmSettings: + accessTokenLifespan: 300 + clientOfflineSessionIdleTimeout: 0 + clientOfflineSessionMaxLifespan: 0 + clientSessionIdleTimeout: 0 + clientSessionMaxLifespan: 0 + offlineSessionIdleTimeout: 2592000 + offlineSessionMaxLifespan: 5184000 + offlineSessionMaxLifespanEnabled: false + revokeRefreshToken: false + ssoSessionIdleTimeout: 14400 + ssoSessionMaxLifespan: 57600 + ssoFederation: + enabled: false + enforceFederatedLogin: false + idpDetails: {} + name: My upstream IdP + twoFactor: + groups: + - foo + chat: + matrix: + profile: + allowUsersToUpdateDisplayname: true + useImmutableIdentifierForLocalpart: false + dataProtection: + jitsiRoomHistory: + enabled: true + matrixPresence: + enabled: false + externalServices: + matrix: + federation: + domainAllowList: [] + enabled: true + nubus: + udmRestApi: + enabled: true + filestore: + nextcloud: + retentionObligation: + trashbin: auto + versions: auto + quota: + default: 1 + sharing: + external: + enabled: false + enforcePasswords: false + expiry: + activeByDefault: true + defaultDays: 30 + enforced: false + sendPasswordMail: true + internal: + expiry: + activeByDefault: false + defaultDays: 90 + enforced: false + migration: + oxAppSuite: + enabled: false + portal: + enforceLogin: true + linkLegalNotice: https://opendesk.eu/impressum + linkPrivacyStatement: https://zendis.de/datenschutzerklaerung + global: + additionalMailDomains: "" + domain: yschmidt-opendesk-argo.test.rancher.falkenstein-2.potaris.de + helmRegistry: "" + hosts: + adminBot: adminbot + collabora: office + cryptpad: pad + element: chat + intercomService: ics + jitsi: meet + keycloak: id + matrixNeoBoardWidget: matrix-neoboard-widget + matrixNeoChoiceWidget: matrix-neochoice-widget + matrixNeoDateFixBot: matrix-neodatefix-bot + matrixNeoDateFixWidget: matrix-neodatefix-widget + minioApi: objectstore + minioConsole: objectstore-ui + nextcloud: files + notes: notes + nubus: portal + openproject: projects + openxchange: webmail + static: static + synapse: matrix + synapseAdmin: synapse-admin + synapseFederation: matrix-federation + whiteboard: whiteboard + xwiki: wiki + imagePullPolicy: IfNotPresent + imagePullSecrets: [] + imageRegistry: "" + mailDomain: "" + matrixDomain: "" + systemInformation: + releaseVersion: v1.3.2 + images: + bitnamiOSShell: + registry: registry-1.docker.io + repository: bitnami/os-shell + tag: 12-debian-12-r34@sha256:41e0561b0f08011c24acc5e8ad4c0d09a36062cfab35d9ec7b3fdd4cfecc01e0 + cassandra: + registry: registry-1.docker.io + repository: bitnami/cassandra + tag: 5.0.2-debian-12-r1@sha256:9f5fd6fe3a24b7e5ea215a99a0e0d6a10d11a914d6eb8c511780271a9097f5ea + cassandraExporter: + registry: registry-1.docker.io + repository: bitnami/cassandra-exporter + tag: 2.3.8-debian-12-r31@sha256:ae861f6c8712dd32c2304c680e4564802df689a62dc4aed2f4e7cfcbba8a8051 + clamd: + registry: registry-1.docker.io + repository: clamav/clamav + tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f + collabora: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk + tag: 24.04.13.3.1@sha256:f04a31d72b2b12b530b4e88b3ecb81eb96ebd98112515db59499ff71a4ec905f + collaboraController: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/collabora/images-mirror/cool-controller + tag: 1.1.1@sha256:8a5b79920fdf7a8eb9c1e781f480d6134a30c75f14fae3f1ecb0b607e016215c + cryptpad: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/images-mirror/cryptpad + tag: opendesk-20241022@sha256:3e5bf06cb9d0a7ec8257874b8b347599200eb677fc428a2e043ccab06ef2be17 + dkimpy: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/dkimpy-milter + tag: 1.1.0@sha256:f140c7fc3fd9636addc612edd6e10f6aefa69e34ff637c95ce9036a32e44555f + dovecot: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images/dovecot-public-sector + tag: 2.3.21@sha256:c76965a84d1ca527f523404eb027119f6736b199c094e4671037cb345ecad3dc + dovecotBootstrap: + registry: registry-1.docker.io + repository: alpine/k8s + tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9 + element: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/element/images-mirror/opendesk-plugin + tag: latest-250304@sha256:b997a9245c5a85ddb9935e6a9f8f8da60fed58aad17df8f1e1e2fabafdbf0dd1 + elementAdminBot: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/access_element_web + tag: v1.11.85@sha256:0e36121cbaab5a8146ef8561d8e77b38f711f855f1a353df3bb96a8d13303812 + elementGroupsync: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/groupsync + tag: v0.14.0@sha256:a8cee92b9035d8cc80cc13194e4e0118c7dfbfcbc4c0ee5ac173582d0cd55846 + elementHaProxy: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/haproxy + tag: 3.0-alpine@sha256:c22c8710886104a48b920306f063401f0d11811858e3c6b9d87d88a7556b2e61 + elementPipe: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/pipe + tag: 6.3.1@sha256:7f487af25f220d31aa987665f9d1393b42e925c6b1a7e0458daaa91e8e7bf0c4 + elementSynapseAdmin: + registry: registry.opencode.de + repository: zendis/opendesk-enterprise/components/supplier/element/images-mirror/synapse_admin + tag: v16.105.5-24.10@sha256:563979fc69162adf93f1286cf79dcbe58adf878a0e4e9332044e5ab6a7170350 + elementSyncAdmins: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-element-syncadmins + tag: 1.0.3@sha256:1dea24d5f65a6f9ac63b402c772dd81dcd07a847d24845901c8a039461043097 + freshclam: + registry: registry-1.docker.io + repository: clamav/clamav + tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f + icap: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/clamav-icap + tag: 0.5.10@sha256:891f267a6b2a304616854ad2f013dc5d23f6f6c84d535c8b46e76d124fe39b6a + intercom: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/intercom-service + tag: 2.12.0@sha256:380476d849fb353dc167ba52a6b0f6235b3fa7561c082e65c37e2242cedb0df1 + jibri: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jibri + tag: stable-9955@sha256:a07b82f2758389b2071c794810145111641e78f1b768b1bbfa6d3d1dc76d3da9 + jicofo: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jicofo + tag: stable-9955@sha256:f1a1478d231bc4891b5eea06443d72187c378d5e38403bb545aab281446f8d50 + jigasi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jigasi + tag: stable-9955@sha256:0e191ac39d3e7299d0bcc070fa1867cceb17fe8d92e9d5cd492aec4c268fa56f + jitsi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/web + tag: stable-9955@sha256:81fdcfa14287fe3358532c363875584d0cdd40ff4030695b713af6e60192d306 + jitsiKeycloakAdapter: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jitsi-keycloak-adapter + tag: v20250314@sha256:2e24db127ab266b90b8fd371ce547e7f9619b6be3fefed30906867b1ce368697 + jitsiPatchJVB: + registry: registry-1.docker.io + repository: bitnami/kubectl + tag: 1.32.0@sha256:48c81b7aaf4fabf2733a0b888960f6982181fbcd2c3f8dfcebc4a1a065631162 + jvb: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/jvb + tag: stable-9955@sha256:27753ac320910e04f5c4f4f628d20995ea969ea38523d90a9066adc52f9bc022 + mariadb: + registry: registry-1.docker.io + repository: library/mariadb + tag: 10.5@sha256:aa1ccc18000c32d1f39ac0b055117b27bffd93e622ec961d682de40fe2a1a95f + matrixNeoBoardWidget: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-neoboard-widget + tag: 2.1.0@sha256:3a386d5a7d1b0582372909e8f3714fc82304fbfb0c078807476d867f726d30f5 + matrixNeoChoiceWidget: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-poll-widget + tag: 1.5.1@sha256:00d28898e2b08d00dc7f4ed986d496779b95f0b87347b6059b76d291eb44a7eb + matrixNeoDateFixBot: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-bot + tag: 2.8.2@sha256:1266f4af93cd82554e037125a7f6d753742bcde3dd90ecbeed8f6f5f64689c96 + matrixNeoDateFixWidget: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/matrix-meetings-widget + tag: 1.7.0@sha256:a3547f064dff6b469bb3ed931acd4edba9654699e1af59a9180987bbbfd8104b + matrixUserVerificationService: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/element/images-mirror/matrix-user-verification-service + tag: v3.0.0@sha256:25e685d595785e2a72e75a525dac78cf8c782445454f8ac090d3702431c38008 + memcached: + registry: registry-1.docker.io + repository: bitnami/memcached + tag: 1.6.21-debian-11-r107@sha256:247ec29efd6030960047a623aef025021154662edf6b6d6e88c97936f164d99d + migrations: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-migrations + tag: 1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7 + milter: + registry: registry-1.docker.io + repository: clamav/clamav + tag: 1.1.1-10_base@sha256:aed8d5a3ef58352c862028fae44241215a50eae0b9acb7ba8892b1edc0a6598f + minio: + registry: registry-1.docker.io + repository: bitnami/minio + tag: 2024.12.13-debian-12-r0@sha256:2a258ab6876f6ed3cd5609836d065f20927955a2ae721fd9edde8ca388b52135 + nextcloud: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud + tag: 2.4.11@sha256:2fe6e311735c706016fe7b39c8f60a6cf0f0e735761dbc60fb4cd2eedbe135c4 + nextcloudExporter: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nextcloud-exporter + tag: 1.0.1@sha256:63e63c7420e37d3989fa0ffdbcf18a07b2a603ab9b2a849c2e7e44342dd82af0 + nginxS3Gateway: + registry: registry-1.docker.io + repository: nginxinc/nginx-s3-gateway + tag: unprivileged-oss-20241111@sha256:20d6b6ec5fc987b18c3e345de33674374a8335c593d6d0841ac64eb49ae2dea4 + notesBackend: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-notes + tag: 1.7.0-docs-v2.4.0-backend@sha256:837e09dfcb4014de97b5254956dda899e586170276d1d0b0f94cca0685f3d2ef + notesFrontend: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-notes + tag: 1.7.0-docs-v2.4.0-frontend@sha256:98fb87ad877eb5658c6bef1c09adf4e03f816dce61867bc099838aca15890887 + notesYProvider: + registry: registry-1.docker.io + repository: lasuite/impress-y-provider + tag: v2.4.0@sha256:329d47f5cda80941a7f0812969c3194ba68da3e7e1ef38e3d08c266fc97555c1 + nubusDataLoader: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/data-loader + tag: 0.89.0@sha256:3ed16810357ed01152e1e3f0d1cd66825bde53302f32d3caf700e324f7c1cffb + nubusGuardianAuthorizationApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-authorization-api + tag: 2.0.0@sha256:5f194f9385aea5a279e25a57352f7b88a6cc4fa90b3bf04c2c97b9ff2bad70a5 + nubusGuardianManagementApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-api-management-api + tag: 2.0.0@sha256:61a1ab84efebe2a87d358e8624f8b39073a6071683e7cd77b740a97d464753a2 + nubusGuardianManagementUi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-management-ui-management-ui + tag: 2.0.0@sha256:57e2503a4772f0ff656e792a98fadef4d41c248218e6c368f76ce82a892478cf + nubusGuardianProvisioning: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-init + tag: 0.17.0@sha256:56acfc53c3d3e0a20ff77fe427ae794adbf03ccc66972c95188e0da9e87c4a62 + nubusKeycloak: + registry: artifacts.software-univention.de + repository: nubus/keycloak + tag: 25.0.6-ucs6@sha256:1db8af70741bca9badeb3d5b0b145244dde1a2579fe4f966e488ce730cb07d65 + nubusKeycloakBootstrap: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-bootstrap + tag: 0.10.2@sha256:7406bfee267dff6520b8b3c0db098a79e7f9fe1b45307ea6b1edf26a2bcfc1aa + nubusKeycloakExtensionHandler: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-handler + tag: 0.11.0@sha256:aaba6527f37a7302cf54b0a689a1c11cb439bdc471e01d101726a05902714b9c + nubusKeycloakExtensionProxy: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy + tag: 0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056 + nubusLdapNotifier: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-notifier + tag: 0.34.1@sha256:02d1a0d6ce7e154738f4a1c2323f901245b62c23c8e6c27ce19a57ab44cfdaa7 + nubusLdapServer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server + tag: 0.34.1@sha256:5bb7931393d2023dc63c1338632b01d4c50372cb83192cdb329512b93e109984 + nubusLdapServerDhInitContainer: + registry: registry-1.docker.io + repository: natsio/nats-box + tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51 + nubusLdapServerLeaderElector: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ldap-server-elector + tag: 0.33.0@sha256:c1304a156094b276199fb263baf93e3704ceece478d7f663061b1b1f05f5931c + nubusNats: + registry: registry-1.docker.io + repository: library/nats + tag: 2.10.26@sha256:736d575e60135ce1d50fc206675d48d0e57dcaa0704f696f0cb4b5f6dadd49d7 + nubusNatsBox: + registry: registry-1.docker.io + repository: natsio/nats-box + tag: 0.16.0-nonroot@sha256:f486ca86dfc9b72a2310ea720994a94ce55e447ad01daccd2fb33d61f322dc51 + nubusNatsReloader: + registry: registry-1.docker.io + repository: natsio/nats-server-config-reloader + tag: 0.17.1@sha256:f364bb8330d3430666ca09f17c6a43bfaefde32f0f3e79d4a41c588c29936e99 + nubusNotificationsApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/notifications-api + tag: 0.63.0@sha256:4c2e01e609fb83df6d090c389b5c63d4b1477bdb133b910cacf2f2a1ce1c39e1 + nubusOpenPolicyAgent: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/guardian-authorization-api-opa + tag: 2.0.0@sha256:56a92a08da5addb951a2b2df09974889295ddde8526e93ad40dd973de1052ad4 + nubusOpendeskExtension: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nubus + tag: 1.13.1@sha256:eb96855b53241bcb1dd64d72d8c76f7ee080291da72e6dff39ed2fc81b8ac99b + nubusOpendeskExtensionA2gMapper: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-a2g-mapper + tag: 1.0.1@sha256:527cf7d0515df441b7ac8bc29b40f8703c87246ddc9594d9e24531571dc6359d + nubusOxExtension: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-extension + tag: 0.11.0@sha256:2cb5a9683b6ff81b995a5c71da52c2ff8177b662bb0be8f11e9cd0c6b48d8a11 + nubusPortalConsumer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-consumer + tag: 0.63.0@sha256:e331f87738e716b0a16199b6aeaec917509946ce7b7ee91e608e70091dd279cc + nubusPortalExtension: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-extension + tag: 0.59.1@sha256:c9c7faa3cca2be2f45d073517a50e8a8cc89d46c978c2f3a6be3c13d0e6ae900 + nubusPortalFrontend: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update + tag: 1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b + nubusPortalServer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/portal-server + tag: 0.63.0@sha256:04cff7bb6b565e4ff03ffd1a6b6ab6c76b98bb9ea0fb8e703551f1b586ea7c27 + nubusProvisioningDispatcher: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-dispatcher + tag: 0.49.3@sha256:1089683a7e04259b335c79c13ceca2879d5d834a13d9c93ef62315f3086c9efd + nubusProvisioningEventsAndConsumerApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-events-and-consumer-api + tag: 0.49.3@sha256:56a5ca05a570f5a0f68ac67abbf8726541455f03bf0bada0495187d1a0fe963a + nubusProvisioningPrefill: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-prefill + tag: 0.49.3@sha256:761863e5499eb702d0a606e9a58d10055c637ed286ff18998125cb5f82a7c788 + nubusProvisioningUdmListener: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-listener + tag: 0.49.3@sha256:9bd8dd7531e3247761a6347a1889640821121c56435a96c286d1f6385a3152e7 + nubusProvisioningUdmTransformer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/provisioning-udm-transformer + tag: 0.49.3@sha256:9ce6b3798fb6faba6ebfac1be19b51d12bc8b312decf87f482a2371cb961805e + nubusSelfServiceConsumer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/selfservice-invitation + tag: 0.14.0@sha256:999c50058a02f6006a8d1732b651a5c738c5ee91fc453dc8ae3fcdbb9d4192c0 + nubusUdmRestApi: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/udm-rest-api + tag: 0.29.0@sha256:2b061d1cf244aeadcb790a08cac94804a32abe73dd442382355a6657b05c0ff2 + nubusUmcGateway: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-gateway + tag: 0.38.0@sha256:5abece086fc55cc318453a23634094bdf4e0f9922debce87fbb1aa4d55b9eac1 + nubusUmcServer: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/umc-server + tag: 0.38.0@sha256:2733c21900c8f861f53cff5f65ed20a21881180ff80472491c014e1e2a9c2a9d + nubusUmcServerProxy: + registry: registry-1.docker.io + repository: library/traefik + tag: 3.0@sha256:a208c74fd80a566d4ea376053bff73d31616d7af3f1465a7747b8b89ee34d97e + nubusWaitForDependency: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/wait-for-dependency + tag: 0.28.0@sha256:816ad27b76046be360398274ba3c1f1bcec8f58c2ea5a200b2fb675aab1a5ab8 + opendeskKeycloakBootstrap: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-keycloak-bootstrap + tag: 1.3.0@sha256:f0c18be261666b7dbb1794f61aaac2321608d396060b007d18b429d0e4d703a7 + opendeskStaticFiles: + registry: registry-1.docker.io + repository: library/nginx + tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4 + openproject: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/openproject/images-mirror/open_desk + tag: 15.5.0@sha256:267f76694d0e86bc574035527b86b48ecc96c468bb6e7357d9edbc761b096969 + openprojectBootstrap: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/opendesk-openproject-bootstrap + tag: 1.1.4@sha256:2fd97a316114428849aaeef87fb8755274e675830088a93afcafac91bb048d1d + openprojectDbInit: + registry: registry-1.docker.io + repository: library/postgres + tag: 16.8-alpine3.20@sha256:951d0626662c85a25e1ba0a89e64f314a2b99abced2c85b4423506249c2d82b0 + openxchangeBootstrap: + registry: registry-1.docker.io + repository: alpine/k8s + tag: 1.31.3@sha256:77812543abe5649b286d5f0dc17a7dbaa4056433225f6f695150f329cb4b6803 + openxchangeCoreGuidedtours: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-guidedtours + tag: 8.6.14@sha256:c00546144667d2d5036fa37b2e6185f1abb53c13e9eee7b0c78ec64ac8e5250a + openxchangeCoreMW: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/middleware-public-sector + tag: 8.35.83@sha256:5c4180c1ba255193059241921e6fe0a34555592aa29104a145a0e1beb91157d2 + openxchangeCoreUI: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui + tag: 8.35.2@sha256:658563b6ec4d3d5f2e06f2987cd8e730d91b8d0c65b0206495007d347f98965f + openxchangeCoreUIMiddleware: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-ui-middleware + tag: 2.1.1@sha256:1a3e96243353a53e06bf3d90067d7d07de449e8273fa60a043d7ac4a5e6464c3 + openxchangeCoreUserGuide: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/core-user-guide + tag: 8.35.1292950@sha256:a6937222e3b07b42c7dc6a066aae0cd05b3b899325a4e4aee50ee91355c9b3b5 + openxchangeDocumentConverter: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/documentconverter + tag: 8.35.1671@sha256:0a7b9d7af9cd22562196b854ad11ca3fd477ddcc70f2ccd113e87ab3b7aad26c + openxchangeGotenberg: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/gotenberg + tag: 8.15.3@sha256:0864c9cd905264f714f0c306d5b38eec8599b908c9096e0283b5db3ff6706172 + openxchangeGuardUI: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/guard-ui + tag: 8.32.0@sha256:5c9542f9112882e46c3b8cb6f0ca2bef61585abac0e640a4fafa7d7ef60a392b + openxchangeImageConverter: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/imageconverter + tag: 8.35.77@sha256:fb67cbaf0771ea6c18b5a1b94aaec9bf72b930227613e70535d382be58940372 + openxchangeNextcloudIntegrationUI: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/nextcloud-integration-ui + tag: 1.4.0@sha256:4be267ab2dc8dbef6b8382e2de6b28f3851a7af7f68702f360d457898cb9011e + openxchangePublicSectorUI: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/open-xchange/images-mirror/public-sector-ui + tag: 2.4.0@sha256:6513e948028ed98aca633d9943ef3be5fed890e4757eee6b527b7215206d2bd6 + oxConnector: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/univention/images-mirror/ox-connector-standalone + tag: 0.19.0@sha256:447e3c3e0cdd8bf1f86004d2088c24fcf6141ff6fef78ade8dfe86f7f16ba40e + postfix: + registry: registry.opencode.de + repository: bmi/opendesk/components/platform-development/images/postfix + tag: 3.0.1@sha256:d2c6543b35b616ac3e6c8c27222d3154c0d35680813a8942ce0cc3fa9ea72a6d + postfixBootstrap: + registry: registry-1.docker.io + repository: alpine/k8s + tag: 1.32.3@sha256:eec3541331932d8613ce7b3283508063cba7f704302e9b4eda45e49b38a2a0f9 + postgresql: + registry: registry-1.docker.io + repository: library/postgres + tag: 15.4-alpine3.18@sha256:f36c528a2dc8747ea40b4cb8578da69fa75c5063fd6a71dcea3e3b2a6404ff7b + prosody: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/nordeck/images-mirror/prosody + tag: stable-9955@sha256:fa66872338c7c3b6fdb1f1a67ad770f2b62948f4193b91a58f12c0aa5ca2e783 + redis: + registry: registry-1.docker.io + repository: bitnami/redis + tag: 7.4.1-debian-12-r2@sha256:3cfa11e8fef45c006a101ed7cfaae2cdaed7a5167c8ada2a3f76a1de54488cd0 + synapse: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/element/images-mirror/synapse + tag: v1.127.1@sha256:0b0b933314ac9e1ba917a72c29d5b49c47828ab6e8df3aae3ac244ee947a89fc + synapseCreateUser: + registry: registry-1.docker.io + repository: alpine/k8s + tag: 1.32.0@sha256:6d49f7f37ae5f4c07bfe46edb44e3d3b6896974d1b87da76d8aa8d6e23b4d619 + synapseGuestModule: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/element/images-mirror/synapse-guest-module + tag: 1.0.1@sha256:a8c02b2eb4dfea9632b32d00415af8d5276870fa150fac392914f67053c161ea + synapseWeb: + registry: registry-1.docker.io + repository: rapidfort/haproxy-official + tag: 2.6.15-bullseye@sha256:47b6ca4074347788cb414fbf3db35d0c51e9e47af33be46457f95c750540887c + wellKnown: + registry: registry-1.docker.io + repository: library/nginx + tag: 1.27.3-alpine3.20@sha256:41523187cf7d7a2f2677a80609d9caa14388bf5c1fbca9c410ba3de602aaaab4 + xwikiMariadb: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki + tag: 0.25-mariadb-jetty-alpine@sha256:7175ef5e454b4eb0f6fd6a92a9503d8a680db3ca97b25c3a4eedac9c9bfbcdaf + xwikiPostgres: + registry: registry.opencode.de + repository: bmi/opendesk/components/supplier/xwiki/images-mirror/xwiki + tag: 0.25-postgres-jetty-alpine@sha256:1bfc57a65f8bc6b059d550791699b5afa33b91db8d4c75ca8f6f3d2299f7c335 + ingress: + enabled: true + ingressClassName: nginx + parameters: + bodySize: + collabora: 100M + element: 100M + nextcloud: 100M + openproject: 100M + oxAppSuite: 100M + xwiki: 100M + bodyTimeout: + collabora: 600 + element: 60 + nextcloud: 600 + openproject: 60 + oxAppSuite: 60 + xwiki: 60 + tls: + enabled: true + secretName: opendesk-certificates-tls + ldap: + baseDn: dc=swp-ldap,dc=internal + host: ums-ldap-server + notifierHost: ums-ldap-notifier + monitoring: + grafana: + dashboards: + annotations: null + enabled: false + labels: + grafana_dashboard: "1" + prometheus: + podMonitors: + enabled: false + labels: + release: kube-prometheus-stack + prometheusRules: + annotations: {} + enabled: false + labels: + release: kube-prometheus-stack + serviceMonitors: + enabled: false + labels: + release: kube-prometheus-stack + objectstores: + dovecot: + bucket: dovecot + endpoint: "" + pathStyle: true + port: 443 + region: eu-west-1 + secretKey: "" + storageClass: STANDARD + useSSL: true + username: dovecot_user + migrations: + bucket: migrations + endpoint: "" + pathStyle: true + port: 443 + region: eu-west-1 + secretKey: "" + storageClass: STANDARD + useSSL: true + username: migration_user + nextcloud: + bucket: nextcloud + endpoint: "" + pathStyle: true + port: 443 + region: eu-west-1 + secretKey: "" + storageClass: STANDARD + useSSL: true + username: nextcloud_user + notes: + bucket: notes + endpoint: "" + port: 443 + secretKey: "" + username: notes_user + nubus: + bucket: ums + endpoint: "" + region: eu-west-1 + secretKey: "" + username: ums_user + openproject: + bucket: openproject + directUploads: true + enableSignatureV4Streaming: true + endpoint: "" + pathStyle: true + region: eu-west-1 + secretKey: "" + useIamProfile: false + username: openproject_user + persistence: + storageClassNames: + RWO: "" + RWX: "" + storages: + cassandra: + commitLogsize: 256Mi + size: 1Gi + storageClassName: null + clamav: + size: 1Gi + storageClassName: null + dovecot: + size: 1Gi + storageClassName: null + mariadb: + size: 1Gi + storageClassName: null + matrixNeoDateFixBot: + size: 1Gi + storageClassName: null + minio: + size: 10Gi + storageClassName: null + nubusLdapServerData: + size: 1Gi + storageClassName: null + nubusPortalConsumer: + size: 1Gi + storageClassName: null + nubusProvisioningNats: + size: 1Gi + storageClassName: null + oxConnector: + size: 1Gi + storageClassName: null + postfix: + size: 1Gi + storageClassName: null + postgresql: + size: 1Gi + storageClassName: null + prosody: + size: 1Gi + storageClassName: null + redis: + size: 1Gi + storageClassName: null + synapse: + size: 1Gi + storageClassName: null + xwiki: + size: 1Gi + storageClassName: null + platform: + realm: opendesk + replicas: + cassandra: 1 + clamav: 1 + clamd: 1 + collabora: 1 + collaboraController: 1 + cryptpad: 1 + dkimpy: 1 + dovecot: 1 + element: 1 + freshclam: 1 + icap: 1 + intercomService: 1 + jibri: 1 + jicofo: 1 + jigasi: 1 + jitsi: 1 + jitsiKeycloakAdapter: 1 + jvb: 1 + keycloak: 1 + mariadb: 1 + matrixNeoBoardWidget: 1 + matrixNeoChoiceWidget: 1 + matrixNeoDateFixBot: 1 + matrixNeoDateFixWidget: 1 + matrixUserVerificationService: 1 + memcached: 1 + milter: 1 + minio: 1 + nextcloud: 1 + nextcloudExporter: 1 + nginxS3Gateway: 1 + notesBackend: 1 + notesFrontend: 1 + notesYProvider: 1 + opendeskStaticFiles: 1 + openprojectWeb: 1 + openprojectWorker: 1 + openxchangeCoreDocumentConverter: 1 + openxchangeCoreGuidedtours: 1 + openxchangeCoreImageConverter: 1 + openxchangeCoreMW: 1 + openxchangeCoreUI: 1 + openxchangeCoreUIMiddleware: 1 + openxchangeCoreUserGuide: 1 + openxchangeGotenberg: 1 + openxchangeGuardUI: 1 + openxchangeNextcloudIntegrationUI: 1 + openxchangePluginsUI: 1 + openxchangePublicSectorUI: 1 + oxConnector: 1 + postfix: 1 + postgres: 1 + redis: 1 + synapse: 1 + synapseWeb: 1 + umsGuardianAuthorizationApi: 1 + umsGuardianManagementApi: 1 + umsGuardianManagementUi: 1 + umsGuardianOpenPolicyAgent: 1 + umsKeycloakExtensionsHandler: 1 + umsKeycloakExtensionsProxy: 1 + umsLdapNotifier: 1 + umsLdapServerPrimary: 2 + umsLdapServerProxy: 2 + umsLdapServerSecondary: 2 + umsNotificationsApi: 1 + umsPortalConsumer: 1 + umsPortalFrontend: 1 + umsPortalServer: 1 + umsProvisioningApi: 1 + umsProvisioningDispatcher: 1 + umsProvisioningNats: 1 + umsProvisioningPrefill: 1 + umsProvisioningUdmTransformer: 1 + umsSelfserviceConsumer: 1 + umsUdmListener: 1 + umsUdmRestApi: 1 + umsUmcGateway: 1 + umsUmcServer: 1 + umsUmcServerProxy: 1 + wellKnown: 1 + xwiki: 1 + repositories: + clamav: + auth: {} + customURLs: + - scheme: https + url: ftp.swin.edu.au/sanesecurity/badmacro.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/blurl.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/foxhole_js.cdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/foxhole_js.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/hackingteam.hsb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/junk.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/jurlbl.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/jurlbla.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/lott.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/malwarehash.hsb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/phish.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/phishtank.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/porcupine.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/rogue.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/scam.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/shelter.ldb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/spamattach.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/spamimg.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/spear.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/spearl.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_malware.hdb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb + - scheme: https + url: ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb + - scheme: https + url: urlhaus.abuse.ch/downloads/urlhaus.ndb + mirror: + scheme: https + url: clamavdb.c3sl.ufpr.br + helm: + registryOpencodeDe: "" + registryOpencodeDeEnterprise: registry.opencode.de + image: + dockerHub: "" + registryOpencodeDe: "" + registryOpencodeDeEnterprise: "" + resources: + cassandra: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.1 + memory: 1Gi + clamd: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.1 + memory: 1.5Gi + collabora: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.5 + memory: 512Mi + collaboraController: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 32Mi + cryptpad: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 512Mi + dkimpy: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 128Mi + dovecot: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + element: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + freshclam: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 96Mi + icap: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 16Mi + intercomService: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 64Mi + jibri: + limits: + cpu: 99 + memory: 3Gi + requests: + cpu: 0.1 + memory: 384Mi + jicofo: + limits: + cpu: 99 + memory: 3584Mi + requests: + cpu: 0.1 + memory: 256Mi + jigasi: + limits: + cpu: 99 + memory: 3584Mi + requests: + cpu: 0.1 + memory: 256Mi + jitsi: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 32Mi + jitsiKeycloakAdapter: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.01 + memory: 48Mi + jvb: + limits: + cpu: 99 + memory: 3584Mi + requests: + cpu: 0.1 + memory: 384Mi + mariadb: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 384Mi + matrixNeoBoardWidget: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 48Mi + matrixNeoChoiceWidget: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + matrixNeoDateFixBot: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 128Mi + matrixNeoDateFixWidget: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + matrixUserVerificationService: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 128Mi + memcached: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + milter: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.1 + memory: 16Mi + minio: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.25 + memory: 256Mi + nextcloud: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 512Mi + nextcloudCron: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 512Mi + nextcloudExporter: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 32Mi + nginxS3Gateway: + limits: + cpu: 99 + memory: 64Mi + requests: + cpu: 100m + memory: 16Mi + notesBackend: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 512Mi + notesFrontend: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 32Mi + notesYProvider: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 128Mi + opendeskKeycloakBootstrap: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 256Mi + opendeskStaticFiles: + limits: + cpu: 99 + memory: 64Mi + requests: + cpu: 0.01 + memory: 16Mi + openproject: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 768Mi + openprojectAppInit: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + openprojectDbInit: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + openprojectSeederJob: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.1 + memory: 256Mi + openprojectWorkers: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.25 + memory: 512Mi + openxchangeCoreDocumentConverter: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.25 + memory: 1.25Gi + openxchangeCoreGuidedtours: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + openxchangeCoreImageConverter: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.5 + memory: 1.25Gi + openxchangeCoreMW: + limits: + cpu: 99 + memory: 8Gi + requests: + cpu: 1 + memory: 1.25Gi + openxchangeCoreUI: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + openxchangeCoreUIMiddleware: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.5 + memory: 192Mi + openxchangeCoreUIMiddlewareUpdater: + limits: + cpu: 99 + memory: 768Mi + requests: + cpu: 0.5 + memory: 192Mi + openxchangeCoreUserGuide: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.02 + memory: 32Mi + openxchangeGotenberg: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.05 + memory: 32Mi + openxchangeGuardUI: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + openxchangeNextcloudIntegrationUI: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + openxchangePluginsUI: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.05 + memory: 32Mi + openxchangePublicSectorUI: + limits: + cpu: 99 + memory: 96Mi + requests: + cpu: 0.01 + memory: 32Mi + oxConnector: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 64Mi + postfix: + limits: + cpu: 99 + memory: 128Mi + requests: + cpu: 0.1 + memory: 16Mi + postgresql: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + prosody: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 32Mi + redis: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + synapse: + limits: + cpu: 99 + memory: 4Gi + requests: + cpu: 0.5 + memory: 256Mi + synapseWeb: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 64Mi + umsGuardianAuthorizationApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsGuardianManagementApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsGuardianManagementUi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsKeycloak: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 512Mi + umsKeycloakBootstrap: + limits: + cpu: 99 + memory: 512Mi + requests: + cpu: 0.1 + memory: 256Mi + umsKeycloakExtensionHandler: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + umsKeycloakExtensionProxy: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 48Mi + umsLdapNotifier: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsLdapServer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsNotificationsApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsOpenPolicyAgent: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsPortalConsumer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsPortalConsumerDependencies: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsPortalFrontend: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsPortalServer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsProvisioningApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 100Mi + umsProvisioningDispatcher: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsProvisioningNats: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 128Mi + umsProvisioningPrefill: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsProvisioningRegisterConsumers: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + umsProvisioningUdmTransformer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 64Mi + umsSelfserviceConsumer: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsStackDataUms: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUdmListener: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUdmRestApi: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUdmRestApiInit: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUmcGateway: + limits: + cpu: 99 + memory: 1Gi + requests: + cpu: 0.1 + memory: 256Mi + umsUmcServer: + limits: + cpu: 99 + memory: 2Gi + requests: + cpu: 0.1 + memory: 256Mi + wellKnown: + limits: + cpu: 99 + memory: 256Mi + requests: + cpu: 0.1 + memory: 32Mi + xwiki: + limits: + cpu: 99 + memory: 8Gi + requests: + cpu: 0.1 + memory: 1.5Gi + sample: + withTemplating: "" + withoutTemplating: my_value + seLinuxOptions: + cassandra: null + clamav: null + clamavSimple: null + clamd: null + collabora: null + collaboraController: null + cryptpad: null + dkimpy: null + dovecot: null + element: null + freshclam: null + icap: null + intercom: null + jicofo: null + jigasi: null + jitsi: null + jitsiKeycloakAdapter: null + jitsiPatchJVB: null + jvb: null + mariadb: null + matrixNeoBoardWidget: null + matrixNeoChoiceWidget: null + matrixNeoDateFixBot: null + matrixNeoDateFixWidget: null + matrixUserVerificationService: null + memcached: null + migrations: null + milter: null + minio: null + nextcloud: null + nextcloudExporter: null + nextcloudManagement: null + notesBackend: null + notesFrontend: null + notesYProvider: null + opendeskKeycloakBootstrap: null + opendeskStaticFiles: null + openproject: null + openprojectBootstrap: null + openprojectDbInit: null + openxchangeBootstrap: null + openxchangeCoreGuidedtours: null + openxchangeCoreMW: null + openxchangeCoreUI: null + openxchangeCoreUIMiddleware: null + openxchangeCoreUserGuide: null + openxchangeDocumentConverter: null + openxchangeGotenberg: null + openxchangeGuardUI: null + openxchangeImageConverter: null + openxchangeNextcloudIntegrationUI: null + openxchangePluginsUI: null + openxchangePublicSectorUI: null + oxConnector: null + postfix: null + postgresql: null + prosody: null + redis: null + synapse: null + synapseCreateUser: null + synapseGuestModule: null + synapseWeb: null + umsGuardianAuthorizationApi: null + umsGuardianManagementApi: null + umsGuardianManagementUi: null + umsGuardianOpenPolicyAgent: null + umsKeycloak: null + umsKeycloakBootstrap: null + umsKeycloakExtensionHandler: null + umsKeycloakExtensionProxy: null + umsLdapNotifier: null + umsLdapServer: null + umsNotificationsApi: null + umsPortalConsumer: null + umsPortalFrontend: null + umsPortalServer: null + umsProvisioning: null + umsProvisioningNats: null + umsSelfserviceConsumer: null + umsStackDataUms: null + umsUdmListener: null + umsUdmRestApi: null + umsUmcGateway: null + umsUmcServer: null + wellKnown: null + xwiki: null + secrets: + cassandra: + dovecotACLUser: c89fe1500bb39e79ca949a197a7266009a861e86 + dovecotDictmapUser: 6e6db3489ebc6f39bfcd77050885196dba3899c6 + rootPassword: af7a37694032f6e8072b001b15ada3bbb315317a + centralnavigation: + apiKey: 1e2eb0fc3815d766ef1be11fb4edba676856ba52 + certificates: + password: d4434074a779300dbbef2c812c66fbba163e3818 + collabora: + adminPassword: 1f18028954368652aa70c5498a52f194e721b145 + dovecot: + doveadm: 2a9dbfe67ac0f70b60b14b55d4c144bb3605c9c9 + intercom: + secret: 3eb73e36131cd6a817564c2144363875cf63a490 + synapseAsToken: f4a859990d1d37276a77e88ccd1e67d158b5e18f + jitsi: + jibriRecorderPassword: b83c2f95314c17ce17b471dd2ec6608df5ee72ee + jibriXmppPassword: 76d4cf37e97b5fc5e637ac4b916e6c4cbb0d8abf + jicofoAuthPassword: 888d06581d177bf49018de077e5acea91fffbefb + jicofoComponentPassword: 791dc50a4a70ee7a307f01d1789a80406de63dff + jigasiXmppPassword: 457d88f74b34443bde192b0b20df915103200da4 + jvbAuthPassword: e1094c9de9dfdc7ebf32f9a442780cd50f7fa0ee + jwtAppSecret: d26cc08b285a55fb53cc6a05734beecc4d1683ab + keycloak: + adminPassword: 81d3190e7a7467137ccb11c6fdd2c296986275db + clientSecret: + as8oidc: ba9c972d28385e400bc71a5869b8219ec42afb45 + dovecot: b4b4e59939b23669b1287c722376441b0bdcddfa + guardian: cdfd791d2b9460c15334d4b8e46df698b3e3bd9f + intercom: d42f6afee33e28f01222383c86e8741b98e14924 + jitsi: 6dfdd4ee34e8b7ceebc7406b4113faea8738dc73 + matrix: b4f6604310ebd2d06b5fc8832ae1095e43481b04 + ncoidc: 9ba1ae31cafd277b67b043234aa0d0fdd53d90b8 + notes: 0cbc7a3257db722ed76270a547c7dccf1f84db87 + openproject: 3621e456b58b341fe12689612e0ca7820974d274 + xwiki: af1243a89d9b55965b6395e3ab7cc6d004dbcdab + mariadb: + nextcloudUser: 2ab459d441e9967df1d0a5d1844d230b490515ea + openxchangeUser: 9778a34a657fc40e8f7e16bea4fd84d8e64e224c + rootPassword: e6f2ebb6ccea31dfa6149c80e9908ffbc45a8f59 + xwikiUser: d6d97039490cb8fb1179f816c3220b92b8f270bb + matrixAdminBot: + backupPassphrase: 7657d0355bb64ec8051bc353bd554708c3707b7a + password: 1a5a01b8ec8961a12669d1261a8ae78211660ec4 + synapseAsToken: 614986fefd100bb4341c94a6d7bb201062eed05f + matrixAuditBot: + backupPassphrase: 12449fcf240e35921b93dc71bcf5946837c9fa0a + password: 76fd3d48911fb1e18c6e477c922339279268debd + synapseAsToken: bab5234abc7d477fed1a77166efd648f06db2f31 + matrixGroupsync: + synapseAsToken: 15a3f24e76b700ff911e24224a69098b4f0d4164 + matrixNeoDateFixBot: + password: f14e2756afd0fba205bd037f1d2363e7cedc8f89 + matrixUserVerificationService: + password: 3187b7b18610762c770a46421965e3a7e6ce93f7 + minio: + dovecotUser: a96922dd49c5ef516acca3aaf28ef92d0ae68174 + migrationsUser: 91b5990fdaffbc455d7ef7483b5cc1c7f2f371e8 + nextcloudUser: cd58fb1bf965a7605e316b394f11ae9c67b3220f + notesUser: 5c58820a84259ce3b869bfc267b53437f49d9902 + openprojectUser: 200f449601dec2cd474d0695f4f802493413f322 + rootPassword: 3c80db94b61453066c9b969361de14f66d5a611b + umsUser: 915f15805278ef774a1cf3abfa6b8623c1fa4544 + nats: + natsAdminPassword: f076a4d9fceeea85cfb81f8769f3adf01e07bdc5 + nextcloud: + adminPassword: d132ecf836fac6a43b19341f94d5effff7edee65 + metricsToken: 53514b7a8729d5b3a6acdc6295ae3694f19065f9 + notes: + collaborationSecret: c25d22c80c4c0728c3d3dacf268c171a1285301d + djangoSecretKey: 7eb1feea30089289ee42236f486a81096a6c8858708f9c3c282bcdc136c988c8 + superuser: 65a3226e9c23d19a7eac7573a4920d9882b5464a + nubus: + guardian: + udmPassword: c5f71556f038329831204aa6a6f717f8ef0da6c5 + ldapSearch: + dovecot: 40290e376095d33c0c650723efa007abec1ee3fd + element: 96380258a941863a5f9ecf74f3f88f1b563cae35 + keycloak: 6f85092e969e10c851eef49367019d1e02a4a8a0 + nextcloud: f8b83d0145aa4b01ec77d0b6b33a207b9250f5b0 + openproject: 9c96f85df1170aaa929a6763111ff9472b2d109f + ox: 57356bf92e475164a8c4522dfd8453bb162094d4 + xwiki: 8072148becdef928e46f5686560bbbcd9c9a4284 + ldapSecret: b63d4de0d8766a932cad776066f76211906f8967 + masterpassword: OpenDeskTest + portalConsumer: + provisioningApiPassword: 285e53cfa767e8788935963e6d60186f31a36879 + provisioning: + api: + adminPassword: cb586a0ffaae0ed919024f900f871979bbcd1521 + natsPassword: 95d501c0387cf0eec31aa80bb17f95f830a6251d + prefillPassword: b9a5a15f7e8c3101852f76d50e55ca9c9da7de10 + udmTransformerPassword: 4aee10e27a9997767d5c22f7915d1549b6d08c93 + dispatcherNatsPassword: b4b9a0246a4ad460f600be8b77af5861cde06201 + prefillNatsPassword: 9bb8cf0e8b7f67aaffefa424636ea8e5d688c65d + udmListenerNatsPassword: 0acadb5b0a2e885081a0ad98d44c0884c6aa517e + udmTransformerNatsPassword: 89a6741df85e8725261ad4fcc3c49ac7af505252 + selfserviceConsumer: + provisioningApiPassword: 903594f7a3da64ac8573b35933f0546f2fb4d1e0 + systemAccounts: + administratorPassword: 937393b22852fc828b0d68283dddcb9f8fb97411 + sysIdpUserPassword: ae632ba815a15fbff51ba5bfb4a9490a12293bf6 + openproject: + adminPassword: 487706602e4fedcb300a24af26a25be29bc8530c + apiAdminPassword: 9e8d27af068f15dce7b940241ddac82785935239 + apiAdminUsername: abbb47d550ea03225cb109388f296cbc3a4b66eb + oxAppSuite: + adminPassword: 818f26bf8665480c7e1e2cedfaded285ac1c8b16 + basicAuthPassword: 301711fcb8af664af271411cbf403d07f328712d + cookieHashSalt: 6da47cf7c319d398ae4c3a4823d54d6024e36fd0 + hzGroupPassword: 6e1ec5fff93ffe194feaec82ae14836c3c33fcb8 + jolokiaPassword: 2201ebdc53a32254a877e5055dcf0cf402630294 + migrationsMasterPassword: 1748a0b8a43268f79f9b5a1d27be603ca563702c + oxguardMC: MCYjJmMmY3ZjVlZTFhOGEzYzY4ZDA= + oxguardRC: RCYThlMzYwMmNlMTM3MDA3NjM3Y2Q= + sessiondEncryptionKey: 43a02b231cc7515d147729011e55d33dbb7a10ff + shareCryptKey: 91281f20e0096f5ce2794799158ac91595386521 + synapseAsToken: 5dbaa82eda85bb25f7963063b327555e3f3a821d + oxConnector: + provisioningApiPassword: 5b25d2be2690ee3acf32a4f93006e8010ff4bbd2 + postfix: + opendeskSystemPassword: 1884bda7fb31c726adcd094399ab63319e9ca56f + postgresql: + keycloakExtensionUser: a7125d58b42fc935fd603c362ddecbfafd92bca0 + keycloakUser: 2a27e8e8f1148830c04a97d765173021337b738e + matrixUser: 5cd0a266029154912dd660f748137982a924e6f5 + nextcloudUser: 0c6b73606d239fe1aba0b3f28ada476e3a58fa2f + notesUser: be74d99779cd9ad3426c25b026e0bec0784f7aff + openprojectUser: 0b4d7caf9005abcc8df53519620dd00619de27f8 + postgresUser: e5c38aa93bd3191b54a288db3e820c103ebb52e0 + umsGuardianManagementApiUser: 37b03322fc23defff213fe18e95448bd27f92652 + umsNotificationsApiUser: d1f34090031fd52de9518c2665090822a0d1e17b + umsSelfserviceUser: 09af664fe11f675880a6dc980f0276f70d001104 + xwikiUser: cf03170636d1fa89617370fe51aefc470221ae28 + redis: + password: 07c524f0d3f95b4d03fea54ea10cfb848bdb355e + synapse: + registrationSharedSecret: fc72f9f14ac53672b134f6cbfa64f90bf866dfc5 + whiteboard: + apiKey: 88f87d464a348ef695e42b91cc89f377b90892f4 + xwiki: + superadminpassword: ae3a28d06563fbc8d1e7f00485a92d38616a7551 + security: + clusterPostfix: + enabled: false + namespace: "" + ingressController: + namespace: ingress-nginx + podSelector: + matchLabels: + app.kubernetes.io/name: ingress-nginx + otterizeIntents: + enabled: false + service: + type: + dovecot: null + jitsiVideoBridge: null + postfix: null + sip: + jigasi: + enabled: false + password: null + port: "5060" + server: "" + transport: TCP + uri: "" + smtp: + dkim: + key: + secret: + key: "" + name: "" + value: "" + selector: rsa + useED25519: false + host: "" + localpartNoReply: no-reply + password: "" + port: 587 + username: "" + technical: + collabora: + numPrespawnChildren: 4 + turn: + credentials: "" + server: + host: "" + port: "3478" + tls: + host: "" + port: "5349" + transport: udp +... +--- +# 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.6.0 + 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: ["get", "patch"] + # + # run_4.py + # + # Delete StatefulSet of Nubus Portal Consumer + - apiGroups: ["apps"] + resources: ["statefulsets"] + resourceNames: ["ums-portal-consumer"] + verbs: ["delete"] + # Delete PVC of Nubus Portal Consumer to allow running as non-root + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + resourceNames: ["group-membership-cache-ums-portal-consumer-0"] + verbs: ["delete"] + # Execute slacpcat in LDAP Pod + - apiGroups: [""] + resources: ["pods/exec"] + resourceNames: ["ums-provisioning-nats-0"] + verbs: ["get", "create"] + # Restart of Deployments + - apiGroups: ["apps"] + resources: ["deployments"] + resourceNames: ["ums-provisioning-udm-transformer"] + verbs: ["update", "patch"] + # Restart of StatefulSets + - apiGroups: ["apps"] + resources: ["statefulsets"] + resourceNames: ["ums-provisioning-udm-listener"] + verbs: ["update", "patch"] + # Delete the Ingress + - apiGroups: ["networking.k8s.io"] + resources: ["ingresses"] + resourceNames: ["ums-minio-rewrites"] + verbs: ["delete"] +... +--- +# 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.6.0 + 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.6.0 + 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: 60 + template: + metadata: + annotations: + labels: + app.kubernetes.io/name: opendesk-migrations + helm.sh/chart: opendesk-migrations-1.6.0 + 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: null + seccompProfile: + type: RuntimeDefault + image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations:1.6.1@sha256:cc97de002f5821e3b3751879514f3f45a3b4ffa851d999187c3cf3dd0dee82e7" + 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: "4" + - name: "MIGRATIONS_NAMESPACE" + value: "yschmidt-opendesk-argo" + - name: "MIGRATIONS_FAIL_ON_UNEXPECTED_STATE" + value: "true" + volumes: + - name: "environmentdetails-volume" + secret: + secretName: "opendesk-migrations-post-environmentdetails" +... +