From ed314824e858772ab435302f19b2bf796fc74b01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Ro=C3=9Fner?= Date: Wed, 26 Feb 2025 14:59:34 +0100 Subject: [PATCH] fix(notes): Avoid access for unauthorized user --- .gitlab-ci.yml | 9 +- .gitlab/common/common.yml | 4 +- README-EE.md | 4 +- dev/README.md | 32 ++-- dev/charts-local.py | 49 ++--- docs/debugging.md | 2 +- docs/migrations.md | 34 ++++ docs/requirements.md | 2 +- docs/security-context.md | 95 ++++++---- .../apps/collabora/helmfile-child.yaml.gotmpl | 12 +- .../values-coco-enterprise.yaml.gotmpl | 2 +- .../collabora/values-enterprise.yaml.gotmpl | 2 +- helmfile/apps/collabora/values.yaml.gotmpl | 4 +- .../apps/cryptpad/helmfile-child.yaml.gotmpl | 4 +- .../apps/element/helmfile-child.yaml.gotmpl | 64 +++---- .../apps/element/values-synapse.yaml.gotmpl | 8 +- .../apps/jitsi/helmfile-child.yaml.gotmpl | 4 +- .../apps/nextcloud/helmfile-child.yaml.gotmpl | 12 +- .../values-nextcloud-mgmt.yaml.gotmpl | 10 +- .../apps/notes/helmfile-child.yaml.gotmpl | 4 +- .../apps/nubus/helmfile-child.yaml.gotmpl | 16 +- helmfile/apps/nubus/values-nubus.yaml.gotmpl | 12 +- ...es-opendesk-keycloak-bootstrap.yaml.gotmpl | 8 +- .../open-xchange/helmfile-child.yaml.gotmpl | 39 ++-- .../values-dovecot-enterprise.yaml.gotmpl | 45 +++++ .../open-xchange/values-dovecot.yaml.gotmpl | 5 +- .../values-openxchange.yaml.gotmpl | 4 +- .../helmfile-child.yaml.gotmpl | 8 +- .../helmfile-child.yaml.gotmpl | 4 +- .../helmfile-child.yaml.gotmpl | 4 +- .../helmfile-child.yaml.gotmpl | 18 +- .../values-certificates.yaml.gotmpl | 22 +-- .../values-opendesk-alerts.yaml.gotmpl | 40 ++--- .../values-opendesk-dashboards.yaml.gotmpl | 40 ++--- .../values-otterize.yaml.gotmpl | 42 ++--- .../openproject/helmfile-child.yaml.gotmpl | 4 +- helmfile/apps/openproject/values.yaml.gotmpl | 4 +- .../helmfile-child.yaml.gotmpl | 40 ++--- .../values-minio.yaml.gotmpl | 29 ++- .../values-postfix.yaml.gotmpl | 6 +- .../apps/xwiki/helmfile-child.yaml.gotmpl | 4 +- helmfile/apps/xwiki/values.yaml.gotmpl | 6 +- helmfile/bases/environments.yaml.gotmpl | 8 +- .../charts.yaml.gotmpl | 8 +- .../images.yaml.gotmpl | 6 +- .../objectstores.yaml.gotmpl | 15 ++ .../environments/default/charts.yaml.gotmpl | 10 -- .../default/global.generated.yaml.gotmpl | 2 +- .../environments/default/images.yaml.gotmpl | 12 +- .../default/opendesk_main.yaml.gotmpl | 169 +++++++++--------- .../environments/default/replicas.yaml.gotmpl | 2 + .../environments/default/theme.yaml.gotmpl | 55 +++--- .../dummy_circle.svg => _dev/empty.svg} | 0 .../favicon.svg} | 0 .../favicon.svg} | 0 .../favicon.svg} | 0 .../favicon.svg} | 0 .../admin_user.svg => admin_user/favicon.svg} | 0 helmfile/files/theme/chat/favicon.ico | Bin 50222 -> 51122 bytes helmfile/files/theme/chat/favicon.png | Bin 0 -> 1488 bytes helmfile/files/theme/chat/favicon.svg | 5 + .../favicon.svg} | 0 .../favicon.svg} | 0 .../favicon.svg} | 0 helmfile/files/theme/files/favicon.ico | Bin 50222 -> 51122 bytes helmfile/files/theme/files/favicon.png | Bin 1256 -> 1281 bytes helmfile/files/theme/files/favicon.svg | 5 + helmfile/files/theme/groupware/favicon.svg | 5 - .../theme/groupware_calendar/favicon.ico | Bin 0 -> 51122 bytes .../theme/groupware_calendar/favicon.png | Bin 0 -> 1068 bytes .../theme/groupware_calendar/favicon.svg | 8 + .../theme/groupware_contacts/favicon.ico | Bin 0 -> 51122 bytes .../theme/groupware_contacts/favicon.png | Bin 0 -> 2156 bytes .../theme/groupware_contacts/favicon.svg | 7 + .../files/theme/groupware_mail/favicon.ico | Bin 0 -> 51122 bytes .../files/theme/groupware_mail/favicon.png | Bin 0 -> 1561 bytes .../files/theme/groupware_mail/favicon.svg | 5 + .../favicon.ico | Bin 50222 -> 51122 bytes .../files/theme/groupware_tasks/favicon.png | Bin 0 -> 1746 bytes .../files/theme/groupware_tasks/favicon.svg | 7 + helmfile/files/theme/knowledge/favicon.ico | Bin 0 -> 51122 bytes helmfile/files/theme/knowledge/favicon.png | Bin 1515 -> 1662 bytes helmfile/files/theme/knowledge/favicon.svg | 8 +- helmfile/files/theme/login/favicon.ico | Bin 50222 -> 51122 bytes helmfile/files/theme/login/favicon.png | Bin 0 -> 1916 bytes helmfile/files/theme/login/favicon.svg | 5 + helmfile/files/theme/notes/favicon.ico | Bin 50222 -> 51122 bytes helmfile/files/theme/notes/favicon.png | Bin 0 -> 1267 bytes helmfile/files/theme/notes/favicon.svg | 5 + .../theme/portal-tiles/admin_context.svg | 1 - .../theme/portal-tiles/anonymous_login.svg | 16 -- .../theme/portal-tiles/fileshare_activity.svg | 16 -- .../theme/portal-tiles/fileshare_files.svg | 16 -- .../theme/portal-tiles/groupware_calendar.svg | 19 -- .../theme/portal-tiles/groupware_contacts.svg | 18 -- .../theme/portal-tiles/groupware_mail.svg | 16 -- .../theme/portal-tiles/groupware_tasks.svg | 18 -- .../portal-tiles/management_knowledge.svg | 16 -- .../theme/portal-tiles/management_project.svg | 17 -- .../files/theme/portal-tiles/misc_notes.svg | 16 -- .../portal-tiles/realtime_collaboration.svg | 16 -- .../portal-tiles/realtime_videoconference.svg | 16 -- .../selfservice_changepassword.svg | 1 - .../portal-tiles/selfservice_editprofile.svg | 1 - .../selfservice_protectaccount.svg | 1 - helmfile/files/theme/portal/favicon.ico | Bin 50222 -> 51122 bytes helmfile/files/theme/portal/favicon.png | Bin 0 -> 1916 bytes helmfile/files/theme/portal/favicon.svg | 5 + helmfile/files/theme/portal/stylesheet.css | 6 +- helmfile/files/theme/projects/favicon.ico | Bin 0 -> 51122 bytes helmfile/files/theme/projects/favicon.png | Bin 0 -> 1531 bytes helmfile/files/theme/projects/favicon.svg | 10 +- .../files/theme/videoconference/favicon.ico | Bin 0 -> 51122 bytes .../files/theme/videoconference/favicon.png | Bin 0 -> 1541 bytes .../files/theme/videoconference/favicon.svg | 8 +- helmfile/shared/migrations.yaml.gotmpl | 2 +- 116 files changed, 679 insertions(+), 660 deletions(-) create mode 100644 helmfile/apps/open-xchange/values-dovecot-enterprise.yaml.gotmpl create mode 100644 helmfile/environments/default-enterprise-overrides/objectstores.yaml.gotmpl rename helmfile/files/theme/{portal-tiles/dummy_circle.svg => _dev/empty.svg} (100%) rename helmfile/files/theme/{portal-tiles/admin_announcement.svg => admin_announcements/favicon.svg} (100%) rename helmfile/files/theme/{portal-tiles/admin_functionalmailbox.svg => admin_functionalmailbox/favicon.svg} (100%) rename helmfile/files/theme/{portal-tiles/admin_group.svg => admin_groups/favicon.svg} (100%) rename helmfile/files/theme/{portal-tiles/admin_resource.svg => admin_resource/favicon.svg} (100%) rename helmfile/files/theme/{portal-tiles/admin_user.svg => admin_user/favicon.svg} (100%) create mode 100644 helmfile/files/theme/chat/favicon.png create mode 100644 helmfile/files/theme/chat/favicon.svg rename helmfile/files/theme/{portal-tiles/fileshare_directdoc_odp.svg => directdocs_odp/favicon.svg} (100%) rename helmfile/files/theme/{portal-tiles/fileshare_directdoc_ods.svg => directdocs_ods/favicon.svg} (100%) rename helmfile/files/theme/{portal-tiles/fileshare_directdoc_odt.svg => directdocs_odt/favicon.svg} (100%) create mode 100644 helmfile/files/theme/files/favicon.svg delete mode 100644 helmfile/files/theme/groupware/favicon.svg create mode 100644 helmfile/files/theme/groupware_calendar/favicon.ico create mode 100644 helmfile/files/theme/groupware_calendar/favicon.png create mode 100644 helmfile/files/theme/groupware_calendar/favicon.svg create mode 100644 helmfile/files/theme/groupware_contacts/favicon.ico create mode 100644 helmfile/files/theme/groupware_contacts/favicon.png create mode 100644 helmfile/files/theme/groupware_contacts/favicon.svg create mode 100644 helmfile/files/theme/groupware_mail/favicon.ico create mode 100644 helmfile/files/theme/groupware_mail/favicon.png create mode 100644 helmfile/files/theme/groupware_mail/favicon.svg rename helmfile/files/theme/{groupware => groupware_tasks}/favicon.ico (61%) create mode 100644 helmfile/files/theme/groupware_tasks/favicon.png create mode 100644 helmfile/files/theme/groupware_tasks/favicon.svg create mode 100644 helmfile/files/theme/knowledge/favicon.ico create mode 100644 helmfile/files/theme/login/favicon.png create mode 100644 helmfile/files/theme/login/favicon.svg create mode 100644 helmfile/files/theme/notes/favicon.png create mode 100644 helmfile/files/theme/notes/favicon.svg delete mode 100644 helmfile/files/theme/portal-tiles/admin_context.svg delete mode 100644 helmfile/files/theme/portal-tiles/anonymous_login.svg delete mode 100644 helmfile/files/theme/portal-tiles/fileshare_activity.svg delete mode 100644 helmfile/files/theme/portal-tiles/fileshare_files.svg delete mode 100644 helmfile/files/theme/portal-tiles/groupware_calendar.svg delete mode 100644 helmfile/files/theme/portal-tiles/groupware_contacts.svg delete mode 100644 helmfile/files/theme/portal-tiles/groupware_mail.svg delete mode 100644 helmfile/files/theme/portal-tiles/groupware_tasks.svg delete mode 100644 helmfile/files/theme/portal-tiles/management_knowledge.svg delete mode 100644 helmfile/files/theme/portal-tiles/management_project.svg delete mode 100644 helmfile/files/theme/portal-tiles/misc_notes.svg delete mode 100644 helmfile/files/theme/portal-tiles/realtime_collaboration.svg delete mode 100644 helmfile/files/theme/portal-tiles/realtime_videoconference.svg delete mode 100644 helmfile/files/theme/portal-tiles/selfservice_changepassword.svg delete mode 100644 helmfile/files/theme/portal-tiles/selfservice_editprofile.svg delete mode 100644 helmfile/files/theme/portal-tiles/selfservice_protectaccount.svg create mode 100644 helmfile/files/theme/portal/favicon.png create mode 100644 helmfile/files/theme/portal/favicon.svg create mode 100644 helmfile/files/theme/projects/favicon.ico create mode 100644 helmfile/files/theme/projects/favicon.png create mode 100644 helmfile/files/theme/videoconference/favicon.ico create mode 100644 helmfile/files/theme/videoconference/favicon.png diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2eb8e9fe..3d6848f6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -73,6 +73,12 @@ variables: options: - "yes" - "no" + OPENDESK_ENTERPRISE: + description: "Set to `true` if you want to deploy openDesk EE (but be sure you provide the required EE keys/tokens for the application)" + value: "false" + options: + - "true" + - "false" DEPLOY_ALL_COMPONENTS: description: "Enable all component deployment (overwrites 'no' setting on component level)." value: "no" @@ -286,7 +292,7 @@ env-start: after_script: # Set credentials for openDesk Enterprise Registry - | - if [[ -n "${OPENDESK_ENTERPRISE}" ]]; then + if [ "${OPENDESK_ENTERPRISE}" = "true" ]; then kubectl create secret --namespace "${NAMESPACE}" docker-registry enterprise-registry @@ -575,6 +581,7 @@ run-tests: \"screenshot_redirect_step\": \"yes\", \ \"testset\": \"${TESTS_TESTSET}\", \ \"testprofile\": \"Namespace\", \ + \"OPENDESK_ENTERPRISE\": \"${OPENDESK_ENTERPRISE}\", \ \"GRACE_PERIOD\": \"${TESTS_GRACE_PERIOD}\", \ \"NUMBER_OF_THREADS\": \"${TESTS_NUMBER_OF_THREADS}\" \ } \ diff --git a/.gitlab/common/common.yml b/.gitlab/common/common.yml index 32819590..cc45afe7 100644 --- a/.gitlab/common/common.yml +++ b/.gitlab/common/common.yml @@ -2,8 +2,8 @@ # SPDX-License-Identifier: Apache-2.0 --- variables: - OPENDESK_CI_CLI_IMAGE: "registry.opencode.de/bmi/opendesk/tooling/opendesk-ci-cli:2.7.1\ - @sha256:f09e36a4ad4b3a3a9ed260d6f36293002e39866a877c0a6b1efa16a88b8fd107" + OPENDESK_CI_CLI_IMAGE: "registry.opencode.de/bmi/opendesk/tooling/opendesk-ci-cli:2.7.2\ + @sha256:e33a6327b9c8f89f6e86d13804d5d81e9fdf6974a2f280874d6901067c22fd83" OPENDESK_LINT_IMAGE: "registry.opencode.de/bmi/opendesk/components/platform-development/images/ci-lint:1.0.14\ @sha256:34d2a96e5fc25155abd48fef4d335b131c71d8cbc00ad531df0cae9918b9f2ab" diff --git a/README-EE.md b/README-EE.md index 0718aca4..c919b6b4 100644 --- a/README-EE.md +++ b/README-EE.md @@ -38,10 +38,10 @@ The following components have - at least partially - Enterprise specific artifac # Enabling the Enterprise deployment -To enable the oD EE deployment you must set the environment variable `OPENDESK_ENTERPRISE` to any value. +To enable the oD EE deployment you must set the environment variable `OPENDESK_ENTERPRISE` to any value that does not evaluate to boolean *false* for [Helm flow control](https://helm.sh/docs/chart_template_guide/control_structures/#ifelse), e.g. `"true"`, `"yes"` or `"1"`: ```shell -OPENDESK_ENTERPRISE=any_value +OPENDESK_ENTERPRISE=true ``` # Configuring the oD EE deployment for self-hosted installations diff --git a/dev/README.md b/dev/README.md index 91a4371e..2bc55f0d 100644 --- a/dev/README.md +++ b/dev/README.md @@ -7,30 +7,40 @@ SPDX-License-Identifier: Apache-2.0 * [charts-local.py](#charts-localpy) * [Commandline parameter](#commandline-parameter) - * [`--branch`](#--branch) + * [`--match `](#--match-your_string) * [`--revert`](#--revert) + * [`--branch` (deprecated)](#--branch-deprecated) # charts-local.py -This script helps you on cloning the platform development Helm charts and referencing them directly in the openDesk -Helmfile deployment for comfortable local test and development. The charts will be cloned into a directory -parallel created next to the `opendesk` repo containing this documentation and the `charts-local.py` script. -The name of the chart directory is derived from the branch name you are working with in this `opendesk` repo. +This script helps you with cloning/pulling Helm charts and referencing them directly in the openDesk +Helmfile deployment for comfortable local test and development. The charts will be cloned/pulled into a directory +created next to the `opendesk` repo containing this documentation and the `charts-local.py` script. -The script will create `.bak` copies of the helmfiles that have been touched. +The name of the directory containing the charts is based on the (currently) selected branch of the openDesk +repo prefixed with `charts-`. + +The script will create `.bak` copies of the helmfiles that have been touched that can easily be reverted to +using the `--revert` option. Run the script with `-h` to get information about the script's parameter on commandline. ## Commandline parameter -### `--branch` +### `--match ` + +Will only fetch repos or pull images for charts which name matches ``. + +### `--revert` + +Reverts the changes in the helmfiles pointing to the local Helm charts by copying the backup files created by the +scripts itself back to their original location. + +### `--branch` (deprecated) Optional parameter: Defines a branch for the `opendesk` repo to work with. The script will create the branch if it does not exist yet. Otherwise it will switch to defined branch. If parameter is omitted the current branch of the `opendesk` repo will be used. -### `--revert` - -Reverts the changes in the helmfiles pointing to the local Helm charts by copying the backup files created by the -scripts itself back to their original location. +As this parameter was used rarely, we might remove the support in a later version. diff --git a/dev/charts-local.py b/dev/charts-local.py index e0375429..947399f5 100755 --- a/dev/charts-local.py +++ b/dev/charts-local.py @@ -18,7 +18,6 @@ p.add('--branch', env_var='CHART_DEV_BRANCH', help='The branch you want to work p.add('--git_hostname', env_var='GIT_HOSTNAME', default='git@gitlab.opencode.de', help='Set the hostname for the chart git checkouts.') p.add('--revert', default=False, action='store_true', help='Set this parameter if you want to revert the referencing of the local helm chart checkout paths in the helmfiles.') p.add('--match', default='', help="Clone/pull only charts that contain the given string in their name.") -p.add('--pull', default=False, action='store_true', help='Will also pull and unpack Helm charts that are not developed by product development.') p.add('--loglevel', env_var='LOGLEVEL', default='DEBUG', help='Set the loglevel: DEBUG, INFO, WARNING, ERROR, CRITICAL-') options = p.parse_args() @@ -78,13 +77,10 @@ def create_path_if_not_exists(path): Path(path).mkdir(parents=True, exist_ok=True) def clone_charts_locally(branch, charts): - charts_clone_path = script_path+'/../../chart-repo/'+branch.replace('/', '_') - charts_pull_path = script_path+'/../../chart-pull/'+branch.replace('/', '_') + charts_path = script_path+'/../../charts-'+branch.replace('/', '_') charts_dict = {} doublette_dict = {} - create_path_if_not_exists(charts_clone_path) - if options.pull: - create_path_if_not_exists(charts_pull_path) + create_path_if_not_exists(charts_path) for chart in charts['charts']: tag = charts['charts'][chart]['version'] @@ -92,41 +88,41 @@ def clone_charts_locally(branch, charts): registry = charts['charts'][chart]['registry'] name = charts['charts'][chart]['name'] logging.debug(f"Working on {chart} / tag {tag} / repo {repository}") + chart_local_path = charts_path+'/'+name if not options.match in name: logging.info(f"Chart name {name} does not match {options.match} - skipping...") + continue elif registry == '': logging.info("Empty registry definition - skipping...") + continue + if os.path.isdir(chart_local_path): + logging.debug(f"Found pre-existing {chart_local_path} skipping clone/pull, but will still reference chart in Helmfile...") + charts_dict[chart] = chart_local_path + continue elif 'opendesk/components/platform-development/charts' in repository: logging.info("Cloning the charts repo") git_url = options.git_hostname+':'+repository - chart_repo_path = charts_clone_path+'/'+charts['charts'][chart]['name'] if git_url in doublette_dict: logging.debug(f"{chart} located at {git_url} is already checked out to {doublette_dict[git_url]}") charts_dict[chart] = doublette_dict[git_url] else: - if os.path.isdir(chart_repo_path): - logging.debug(f"Already exists {chart_repo_path} leaving it unmodified") - else: - logging.debug(f"Cloning into {chart_repo_path}") - Repo.clone_from(git_url, chart_repo_path) - chart_repo = Repo(path=chart_repo_path) - chart_repo.git.checkout('v'+charts['charts'][chart]['version']) - doublette_dict[git_url] = chart_repo_path - charts_dict[chart] = chart_repo_path - elif options.pull: + logging.debug(f"Cloning into {chart_local_path}") + Repo.clone_from(git_url, chart_local_path) + chart_repo = Repo(path=chart_local_path) + chart_repo.git.checkout('v'+charts['charts'][chart]['version']) + doublette_dict[git_url] = chart_local_path + charts_dict[chart] = chart_local_path + else: logging.info("Pulling the chart") - helm_command = f"helm pull oci://{registry}/{repository}/{name} --version {tag} --untar --destination {charts_pull_path}" + helm_command = f"helm pull oci://{registry}/{repository}/{name} --version {tag} --untar --destination {charts_path}" logging.debug(f"CLI command: {helm_command}") try: - output = subprocess.check_output(helm_command, shell = True) + subprocess.check_output(helm_command, shell = True) except subprocess.CalledProcessError: sys.exit(f"! CLI command '{helm_command}' failed") - else: - logging.debug("Not a product development chart and `--pull` option not enabled - skipping...") - + charts_dict[chart] = chart_local_path return charts_dict - def grep_yaml(file): with open(file, 'r') as file: content = '' @@ -156,7 +152,12 @@ def process_the_helmfiles(charts_dict, charts): for chart_ident in charts_dict: if '.Values.charts.'+chart_ident+'.name' in line: logging.debug(f"found match with {chart_ident} in {line.strip()}") - line = chart_def_prefix+charts_dict[chart_ident]+'/charts/'+charts['charts'][chart_ident]['name']+'" # replaced by local-dev script'+"\n" + line = charts_dict[chart_ident] + if os.path.isdir(line+'/charts/'+chart_ident): + line += '/charts/'+charts['charts'][chart_ident]['name'] + elif not os.path.isdir(line): + sys.exit(f"! Did not find directory to reference in Helmfile: '{line}'") + line = chart_def_prefix+line+'" # replaced by local-dev script'+"\n" child_helmfile_updated = True break output.append(line) diff --git a/docs/debugging.md b/docs/debugging.md index 44069b34..3fe53aa0 100644 --- a/docs/debugging.md +++ b/docs/debugging.md @@ -168,7 +168,7 @@ While you will find all the details for the CLI tool in [the online documentatio `occ` is the CLI for Nextcloud; all the details can be found in the [upstream documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html). -You can run occ commands in the `opendesk-nextcloud-php` pod like this: `php /var/www/html/occ config:list` +You can run occ commands in the `opendesk-nextcloud-aio` pod like this: `php /var/www/html/occ config:list` ## OpenProject diff --git a/docs/migrations.md b/docs/migrations.md index e8d4c172..2c652fac 100644 --- a/docs/migrations.md +++ b/docs/migrations.md @@ -9,6 +9,9 @@ SPDX-License-Identifier: Apache-2.0 * [Disclaimer](#disclaimer) * [Automated migrations - Overview and mandatory upgrade path](#automated-migrations---overview-and-mandatory-upgrade-path) * [Manual checks/actions](#manual-checksactions) + * [From v1.1.1](#from-v111) + * [Pre-upgrade from v1.1.1](#pre-upgrade-from-v111) + * [Helmfile feature update: App settings wrapped in `apps.` element](#helmfile-feature-update-app-settings-wrapped-in-apps-element) * [From v1.1.0](#from-v110) * [Pre-upgrade from v1.1.0](#pre-upgrade-from-v110) * [Helmfile feature update: Component specific `storageClassName`](#helmfile-feature-update-component-specific-storageclassname) @@ -86,6 +89,37 @@ When interested in more details about the automated migrations, please read sect Be sure you check all the sections for the releases your are going to update your current deployment from. +## From v1.1.1 + +### Pre-upgrade from v1.1.1 + +#### Helmfile feature update: App settings wrapped in `apps.` element + +We require now [Helmfile v1.0.0-rc.8](https://github.com/helmfile/helmfile/releases/tag/v1.0.0-rc.8) for the deployment. This enables openDesk to lay the foundation for some significant cleanups where the information for the different apps especially on their `enabled` state is needed. + +Therefore it was required to introduce the `apps` level in [`opendesk_main.yaml.gotmpl`](../helmfile/environments/default/opendesk_main.yaml.gotmpl). + +If you have a deployment where you specify settings that can be found in the aforementioned file, usually to disable components or enable others, please ensure you insert the top-level attribute `apps` like shown in the following example: + +So a setting of: + +``` +certificates: + enabled: false +notes: + enabled: true +``` + +needs to be changed to: + +``` +apps: + certificates: + enabled: false + notes: + enabled: true +``` + ## From v1.1.0 ### Pre-upgrade from v1.1.0 diff --git a/docs/requirements.md b/docs/requirements.md index e1a3c353..31c26951 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -26,7 +26,7 @@ openDesk is a Kubernetes-only solution and requires an existing Kubernetes (K8s) - Domain and DNS Service - Ingress controller (Ingress NGINX) - [Helm](https://helm.sh/) >= v3.9.0 -- [Helmfile](https://helmfile.readthedocs.io/en/latest/) >= **v1.0.0-rc5** +- [Helmfile](https://helmfile.readthedocs.io/en/latest/) >= **v1.0.0-rc8** - [HelmDiff](https://github.com/databus23/helm-diff) >= 3.6.0 - Volume provisioner supporting RWO (read-write-once) - Certificate handling with [cert-manager](https://cert-manager.io/) diff --git a/docs/security-context.md b/docs/security-context.md index f678e17d..e941d1bf 100644 --- a/docs/security-context.md +++ b/docs/security-context.md @@ -1,8 +1,7 @@ -

Kubernetes Security Context

@@ -63,7 +62,7 @@ containerSecurityContext: ## privileged -Privileged Pods disable most security mechanisms and must be disallowed. +Privileged Pods eliminate most security mechanisms and must be disallowed. ```yaml containerSecurityContext: @@ -93,7 +92,7 @@ containerSecurityContext: ## seccompProfile -Seccomp profile must be explicitly set to one of the allowed values. An unconfined profile and the complete absence of the profile are prohibited. +The seccompProfile must be explicitly set to one of the allowed values. An unconfined profile and the complete absence of the profile are prohibited. ```yaml containerSecurityContext: @@ -113,7 +112,7 @@ containerSecurityContext: ## readOnlyRootFilesystem -Containers should have an immutable file systems, so that attackers could not modify application code or download malicious code. +Containers should have an immutable file systems, so that attackers can not modify application code or download malicious code. ```yaml containerSecurityContext: @@ -133,10 +132,10 @@ containerSecurityContext: # Status quo -openDesk aims to achieve that all security relevant settings are explicitly templated and comply with security recommendations. +openDesk aims to ensure that all security relevant settings are explicitly templated and comply with security recommendations. -The rendered manifests are also validated against Kyverno [policies](/.kyverno/policies) in CI to ensure that the provided values inside openDesk are also properly templated by the given Helm charts. +The rendered manifests are also validated against Kyverno [policies](/.kyverno/policies) in CI to ensure that the provided values inside openDesk are properly templated by the Helm charts. This list gives you an overview of templated security settings and if they comply with security standards: @@ -144,11 +143,11 @@ This list gives you an overview of templated security settings and if they compl - **yes**: Value is set to `true` - **no**: Value is set to `false` - - **n/a**: No explicitly templated in openDesk and default is used. + - **n/a**: Not explicitly templated in openDesk; default is used. | process | status | allowPrivilegeEscalation | privileged | readOnlyRootFilesystem | runAsNonRoot | runAsUser | runAsGroup | seccompProfile | capabilities | | ------- | ------ | ------------------------ | ---------- | ---------------------- | ------------ | --------- | ---------- | -------------- | ------------ | -| **collabora**/collabora-online | :x: | yes | no | no | yes | 100 | 101 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT","MKNOD"] | +| **collabora**/collabora-online | :x: | yes | no | no | yes | 100 | 101 | yes | no ["CHOWN","FOWNER","SYS_CHROOT"] | | **cryptpad**/cryptpad | :x: | no | no | no | yes | 4001 | 4001 | yes | yes | | **element**/matrix-neoboard-widget | :white_check_mark: | no | no | yes | yes | 101 | 101 | yes | yes | | **element**/matrix-neochoice-widget | :white_check_mark: | no | no | yes | yes | 101 | 101 | yes | yes | @@ -169,10 +168,36 @@ This list gives you an overview of templated security settings and if they compl | **jitsi**/jitsi/jitsi/prosody | :x: | no | no | no | no | 0 | 0 | yes | no | | **jitsi**/jitsi/jitsi/web | :x: | no | no | no | no | 0 | 0 | yes | no | | **jitsi**/jitsi/patchJVB | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | -| **nextcloud**/opendesk-nextcloud-management | :x: | no | no | no | yes | 65532 | 65532 | yes | yes | -| **nextcloud**/opendesk-nextcloud/apache2 | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes | +| **nextcloud**/opendesk-nextcloud-management | :x: | no | no | no | yes | 101 | 101 | yes | yes | +| **nextcloud**/opendesk-nextcloud/aio | :white_check_mark: | no | no | yes | yes | 101 | 101 | yes | yes | | **nextcloud**/opendesk-nextcloud/exporter | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes | -| **nextcloud**/opendesk-nextcloud/php | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes | +| **notes**/impress/backend | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | +| **notes**/impress/frontend | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | +| **notes**/impress/yProvider | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | +| **nubus**/intercom-service | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/intercom-service/provisioning | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no | +| **nubus**/opendesk-keycloak-bootstrap | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/keycloak | :x: | no | n/a | no | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusGuardian/authorizationApi | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusGuardian/managementApi | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusGuardian/managementUi | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusGuardian/openPolicyAgent | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusKeycloakBootstrap | :x: | no | n/a | no | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusKeycloakExtensions/handler | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no | +| **nubus**/ums/nubusKeycloakExtensions/proxy | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no | +| **nubus**/ums/nubusLdapNotifier | :x: | no | n/a | yes | yes | 101 | 102 | yes | yes | +| **nubus**/ums/nubusNotificationsApi | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusPortalConsumer | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no | +| **nubus**/ums/nubusPortalFrontend | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusPortalServer | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusProvisioning | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusProvisioning/nats | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusSelfServiceConsumer | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusStackDataUms | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusUdmListener | :x: | no | n/a | yes | yes | 102 | 65534 | yes | yes | +| **nubus**/ums/nubusUdmRestApi | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusUmcGateway | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **nubus**/ums/nubusUmcServer | :x: | no | n/a | yes | no | 0 | 0 | yes | yes | | **open-xchange**/dovecot | :x: | no | n/a | yes | n/a | n/a | n/a | yes | no ["CHOWN","DAC_OVERRIDE","KILL","NET_BIND_SERVICE","SETGID","SETUID","SYS_CHROOT"] | | **open-xchange**/open-xchange/appsuite/core-documentconverter | :x: | no | no | no | yes | 987 | 1000 | yes | yes | | **open-xchange**/open-xchange/appsuite/core-guidedtours | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | @@ -184,34 +209,26 @@ This list gives you an overview of templated security settings and if they compl | **open-xchange**/open-xchange/appsuite/guard-ui | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | | **open-xchange**/open-xchange/nextcloud-integration-ui | :x: | no | no | no | yes | 1000 | 1000 | yes | yes | | **open-xchange**/open-xchange/public-sector-ui | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **open-xchange**/opendesk-open-xchange-bootstrap | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes | +| **opendesk-migrations-post**/opendesk-migrations-post | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **opendesk-migrations-pre**/opendesk-migrations-pre | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **opendesk-openproject-bootstrap**/opendesk-openproject-bootstrap | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | +| **opendesk-services**/opendesk-static-files | :x: | no | n/a | yes | yes | 101 | 101 | yes | yes | | **openproject**/openproject | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | -| **openproject-bootstrap**/opendesk-openproject-bootstrap | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | -| **open-xchange**/ox-connector | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] | -| **services**/clamav | :x: | no | no | yes | no | 0 | 0 | yes | no | -| **services**/clamav-simple | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | -| **services**/clamav/clamd | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | -| **services**/clamav/freshclam | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | -| **services**/clamav/icap | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | -| **services**/clamav/milter | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | -| **services**/mariadb | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | -| **services**/memcached | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | -| **services**/minio | :x: | no | no | no | yes | 1000 | 0 | yes | yes | -| **services**/postfix | :x: | yes | yes | no | no | 0 | 0 | yes | no | -| **services**/postgresql | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | -| **services**/redis/master | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | -| **univention-management-stack**/intercom-service | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | -| **univention-management-stack**/opendesk-keycloak-bootstrap | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | -| **univention-management-stack**/ums/keycloak | :x: | no | no | no | yes | 1000 | 1000 | yes | yes | -| **univention-management-stack**/ums/keycloak-bootstrap | :x: | no | no | no | yes | 1000 | 1000 | yes | yes | -| **univention-management-stack**/ums/keycloak-extensions/handler | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | -| **univention-management-stack**/ums/keycloak-extensions/proxy | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes | -| **univention-management-stack**/ums/ldap-notifier | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no | -| **univention-management-stack**/ums/portal-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] | -| **univention-management-stack**/ums/selfservice-listener | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] | -| **univention-management-stack**/ums/stack-data-swp | :x: | no | no | no | no | 0 | 0 | yes | yes | -| **univention-management-stack**/ums/stack-gateway | :x: | no | no | no | yes | 1001 | 0 | yes | yes | -| **univention-management-stack**/ums/umc-gateway | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] | -| **univention-management-stack**/ums/umc-server | :x: | no | no | no | no | 0 | 0 | yes | no ["CHOWN","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","SETPCAP","NET_BIND_SERVICE","NET_RAW","SYS_CHROOT"] | +| **services-external**/cassandra | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | +| **services-external**/clamav | :x: | no | no | yes | no | 0 | 0 | yes | no | +| **services-external**/clamav-simple | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | +| **services-external**/clamav/clamd | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | +| **services-external**/clamav/freshclam | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | +| **services-external**/clamav/icap | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | +| **services-external**/clamav/milter | :white_check_mark: | no | no | yes | yes | 100 | 101 | yes | yes | +| **services-external**/mariadb | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | +| **services-external**/memcached | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | +| **services-external**/minio | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | +| **services-external**/opendesk-dkimpy-milter | :x: | yes | no | yes | yes | 1000 | 1000 | yes | no | +| **services-external**/postfix | :x: | yes | yes | no | no | 0 | 0 | yes | no | +| **services-external**/postgresql | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | +| **services-external**/redis/master | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes | | **xwiki**/xwiki | :x: | no | no | no | yes | 100 | 101 | yes | yes | diff --git a/helmfile/apps/collabora/helmfile-child.yaml.gotmpl b/helmfile/apps/collabora/helmfile-child.yaml.gotmpl index 48cc73b3..adb23c5f 100644 --- a/helmfile/apps/collabora/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/collabora/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.collabora.registry }}/{{ .Values.charts.collabora.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.collabora.registry }}/{{ .Values.charts.collabora.repository }}" # Collabora Controller - Enterprise Only # Source: https://github.com/CollaboraOnline/online @@ -20,7 +20,7 @@ repositories: username: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.collaboraController.registry }}/{{ .Values.charts.collaboraController.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDeEnterprise .Values.global.helmRegistry | default .Values.charts.collaboraController.registry }}/{{ .Values.charts.collaboraController.repository }}" releases: - name: "collabora-online" @@ -28,24 +28,24 @@ releases: version: "{{ .Values.charts.collabora.version }}" values: - "values.yaml.gotmpl" - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} - "values-enterprise.yaml.gotmpl" {{- end }} {{- range .Values.customization.release.collaboraOnline }} - {{ . }} {{- end }} - installed: {{ .Values.collabora.enabled }} + installed: {{ .Values.apps.collabora.enabled }} - name: "collabora-controller" chart: "collabora-controller-repo/{{ .Values.charts.collaboraController.name }}" version: "{{ .Values.charts.collaboraController.version }}" values: - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} - "values-coco-enterprise.yaml.gotmpl" {{- end }} {{- range .Values.customization.release.collaboraController }} - {{ . }} {{- end }} - installed: {{ .Values.collaboraController.enabled }} + installed: {{ .Values.apps.collaboraController.enabled }} commonLabels: deployStage: "050-components" diff --git a/helmfile/apps/collabora/values-coco-enterprise.yaml.gotmpl b/helmfile/apps/collabora/values-coco-enterprise.yaml.gotmpl index 1826ef0d..89ee6005 100644 --- a/helmfile/apps/collabora/values-coco-enterprise.yaml.gotmpl +++ b/helmfile/apps/collabora/values-coco-enterprise.yaml.gotmpl @@ -12,7 +12,7 @@ controller: # Therefore we use the default of `collabora-online` for the `resourceName` resourceName: "collabora-online" statsInterval: 2000 - watchNamespace: {{ (.Values.collabora.namespace | default .Release.Namespace | quote) }} + watchNamespace: {{ (.Values.apps.collabora.namespace | default .Release.Namespace | quote) }} documentMigrator: enabled: true diff --git a/helmfile/apps/collabora/values-enterprise.yaml.gotmpl b/helmfile/apps/collabora/values-enterprise.yaml.gotmpl index 7e9e4a74..7b8198d6 100644 --- a/helmfile/apps/collabora/values-enterprise.yaml.gotmpl +++ b/helmfile/apps/collabora/values-enterprise.yaml.gotmpl @@ -6,7 +6,7 @@ SPDX-License-Identifier: Apache-2.0 image: repository: "{{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.collabora.registry }}/{{ .Values.images.collabora.repository }}" autoscaling: - enabled: {{ .Values.collaboraController.enabled }} + enabled: {{ .Values.apps.collaboraController.enabled }} minReplicas: {{ .Values.enterpriseFeatures.collabora.autoscaling.minReplicas }} maxReplicas: {{ .Values.enterpriseFeatures.collabora.autoscaling.maxReplicas }} targetMemoryUtilizationPercentage: {{ .Values.enterpriseFeatures.collabora.autoscaling.targetMemoryUtilizationPercentage }} diff --git a/helmfile/apps/collabora/values.yaml.gotmpl b/helmfile/apps/collabora/values.yaml.gotmpl index 3f434f32..b5914529 100644 --- a/helmfile/apps/collabora/values.yaml.gotmpl +++ b/helmfile/apps/collabora/values.yaml.gotmpl @@ -27,7 +27,7 @@ collabora: {{- else }} --o:logging.anonymize.anonymize_user_data=true {{- end }} - {{- if .Values.collaboraController.enabled }} + {{- if .Values.apps.collaboraController.enabled }} --o:indirection_endpoint.url=https://{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}/controller/routeToken --o:monitors.monitor[0]=wss://{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}/controller/ws --o:monitors.monitor[0][@retryInterval]=5 @@ -49,7 +49,7 @@ imagePullSecrets: ingress: annotations: - {{- if .Values.collaboraController.enabled }} + {{- if .Values.apps.collaboraController.enabled }} nginx.ingress.kubernetes.io/upstream-hash-by: "$arg_RouteToken" {{- else }} nginx.ingress.kubernetes.io/upstream-hash-by: "$arg_WOPISrc" diff --git a/helmfile/apps/cryptpad/helmfile-child.yaml.gotmpl b/helmfile/apps/cryptpad/helmfile-child.yaml.gotmpl index 2f5f5d06..a47baf4d 100644 --- a/helmfile/apps/cryptpad/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/cryptpad/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.cryptpad.registry }}/{{ .Values.charts.cryptpad.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.cryptpad.registry }}/{{ .Values.charts.cryptpad.repository }}" releases: - name: "cryptpad" @@ -21,7 +21,7 @@ releases: {{- range .Values.customization.release.cryptpad }} - {{ . }} {{- end }} - installed: {{ .Values.cryptpad.enabled }} + installed: {{ .Values.apps.cryptpad.enabled }} commonLabels: deployStage: "050-components" diff --git a/helmfile/apps/element/helmfile-child.yaml.gotmpl b/helmfile/apps/element/helmfile-child.yaml.gotmpl index 5568fb07..3790563e 100644 --- a/helmfile/apps/element/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/element/helmfile-child.yaml.gotmpl @@ -10,35 +10,35 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.element.registry }}/{{ .Values.charts.element.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.element.registry }}/{{ .Values.charts.element.repository }}" - name: "element-well-known-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.elementWellKnown.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.elementWellKnown.registry }}/{{ .Values.charts.elementWellKnown.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.elementWellKnown.registry }}/{{ .Values.charts.elementWellKnown.repository }}" - name: "synapse-web-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.synapseWeb.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseWeb.registry }}/{{ .Values.charts.synapseWeb.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.synapseWeb.registry }}/{{ .Values.charts.synapseWeb.repository }}" - name: "synapse-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.synapse.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.synapse.registry }}/{{ .Values.charts.synapse.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.synapse.registry }}/{{ .Values.charts.synapse.repository }}" - name: "synapse-create-account-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.synapseCreateAccount.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseCreateAccount.registry }}/{{ .Values.charts.synapseCreateAccount.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.synapseCreateAccount.registry }}/{{ .Values.charts.synapseCreateAccount.repository }}" # openDesk Matrix Widgets # Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-matrix-widgets @@ -48,35 +48,35 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixUserVerificationService.registry }}/{{ .Values.charts.matrixUserVerificationService.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.matrixUserVerificationService.registry }}/{{ .Values.charts.matrixUserVerificationService.repository }}" - name: "matrix-neoboard-widget-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.matrixNeoboardWidget.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/{{ .Values.charts.matrixNeoboardWidget.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/{{ .Values.charts.matrixNeoboardWidget.repository }}" - name: "matrix-neochoice-widget-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.matrixNeoboardWidget.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/{{ .Values.charts.matrixNeoboardWidget.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.matrixNeoboardWidget.registry }}/{{ .Values.charts.matrixNeoboardWidget.repository }}" - name: "matrix-neodatefix-widget-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.matrixNeodatefixWidget.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixWidget.registry }}/{{ .Values.charts.matrixNeodatefixWidget.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixWidget.registry }}/{{ .Values.charts.matrixNeodatefixWidget.repository }}" - name: "matrix-neodatefix-bot-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.matrixNeodatefixBot.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixBot.registry }}/{{ .Values.charts.matrixNeodatefixBot.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.matrixNeodatefixBot.registry }}/{{ .Values.charts.matrixNeodatefixBot.repository }}" # openDesk Enterprise Repositories @@ -88,28 +88,28 @@ repositories: username: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseAdmin.registry }}/{{ .Values.charts.synapseAdmin.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDeEnterprise .Values.global.helmRegistry | default .Values.charts.synapseAdmin.registry }}/{{ .Values.charts.synapseAdmin.repository }}" - name: "synapse-adminbot-web-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.synapseAdminbotWeb.verify }} username: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseAdminbotWeb.registry }}/{{ .Values.charts.synapseAdminbotWeb.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDeEnterprise .Values.global.helmRegistry | default .Values.charts.synapseAdminbotWeb.registry }}/{{ .Values.charts.synapseAdminbotWeb.repository }}" - name: "synapse-groupsync-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.synapseGroupsync.verify }} username: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.synapseGroupsync.registry }}/{{ .Values.charts.synapseGroupsync.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDeEnterprise .Values.global.helmRegistry | default .Values.charts.synapseGroupsync.registry }}/{{ .Values.charts.synapseGroupsync.repository }}" - name: "synapse-pipe-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.synapsePipe.verify }} username: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_ENTERPRISE_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.synapsePipe.registry }}/{{ .Values.charts.synapsePipe.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDeEnterprise .Values.global.helmRegistry | default .Values.charts.synapsePipe.registry }}/{{ .Values.charts.synapsePipe.repository }}" releases: - name: "opendesk-element" @@ -120,7 +120,7 @@ releases: {{- range .Values.customization.release.opendeskElement }} - {{ . }} {{- end }} - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "opendesk-well-known" @@ -131,7 +131,7 @@ releases: {{- range .Values.customization.release.opendeskWellKnown }} - {{ . }} {{- end }} - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "opendesk-synapse-web" @@ -142,7 +142,7 @@ releases: {{- range .Values.customization.release.opendeskSynapseWeb }} - {{ . }} {{- end }} - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "opendesk-synapse" @@ -153,7 +153,7 @@ releases: {{- range .Values.customization.release.opendeskSynapse }} - {{ . }} {{- end }} - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "opendesk-matrix-user-verification-service-bootstrap" @@ -161,7 +161,7 @@ releases: version: "{{ .Values.charts.synapseCreateAccount.version }}" values: - "values-matrix-user-verification-service-bootstrap.yaml.gotmpl" - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "opendesk-matrix-user-verification-service" @@ -169,7 +169,7 @@ releases: version: "{{ .Values.charts.matrixUserVerificationService.version }}" values: - "values-matrix-user-verification-service.yaml.gotmpl" - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "matrix-neoboard-widget" @@ -177,7 +177,7 @@ releases: version: "{{ .Values.charts.matrixNeoboardWidget.version }}" values: - "values-matrix-neoboard-widget.yaml.gotmpl" - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "matrix-neochoice-widget" @@ -185,7 +185,7 @@ releases: version: "{{ .Values.charts.matrixNeochoiseWidget.version }}" values: - "values-matrix-neochoice-widget.yaml.gotmpl" - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "matrix-neodatefix-widget" @@ -193,7 +193,7 @@ releases: version: "{{ .Values.charts.matrixNeodatefixWidget.version }}" values: - "values-matrix-neodatefix-widget.yaml.gotmpl" - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "matrix-neodatefix-bot-bootstrap" @@ -201,7 +201,7 @@ releases: version: "{{ .Values.charts.synapseCreateAccount.version }}" values: - "values-matrix-neodatefix-bot-bootstrap.yaml.gotmpl" - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 - name: "matrix-neodatefix-bot" @@ -209,7 +209,7 @@ releases: version: "{{ .Values.charts.matrixNeodatefixBot.version }}" values: - "values-matrix-neodatefix-bot.yaml.gotmpl" - installed: {{ .Values.element.enabled }} + installed: {{ .Values.apps.element.enabled }} timeout: 900 # openDesk Enterprise Releases @@ -221,7 +221,7 @@ releases: {{- range .Values.customization.release.opendeskSynapseAdmin }} - {{ . }} {{- end }} - installed: {{ .Values.elementAdmin.enabled }} + installed: {{ .Values.apps.elementAdmin.enabled }} timeout: 900 - name: "opendesk-synapse-adminbot-bootstrap" @@ -232,7 +232,7 @@ releases: {{- range .Values.customization.release.opendeskSynapseAdminbotBootstrap }} - {{ . }} {{- end }} - installed: {{ .Values.elementAdmin.enabled }} + installed: {{ .Values.apps.elementAdmin.enabled }} timeout: 900 - name: "opendesk-synapse-adminbot-pipe" @@ -243,7 +243,7 @@ releases: {{- range .Values.customization.release.opendeskSynapseAdminbotPipe }} - {{ . }} {{- end }} - installed: {{ .Values.elementAdmin.enabled }} + installed: {{ .Values.apps.elementAdmin.enabled }} timeout: 900 - name: "opendesk-synapse-adminbot-web" @@ -254,7 +254,7 @@ releases: {{- range .Values.customization.release.opendeskSynapseAdminbotWeb }} - {{ . }} {{- end }} - installed: {{ .Values.elementAdmin.enabled }} + installed: {{ .Values.apps.elementAdmin.enabled }} timeout: 900 - name: "opendesk-synapse-auditbot-bootstrap" @@ -265,7 +265,7 @@ releases: {{- range .Values.customization.release.opendeskSynapseAuditbotBootstrap }} - {{ . }} {{- end }} - installed: {{ .Values.elementAdmin.enabled }} + installed: {{ .Values.apps.elementAdmin.enabled }} timeout: 900 - name: "opendesk-synapse-auditbot-pipe" @@ -276,7 +276,7 @@ releases: {{- range .Values.customization.release.opendeskSynapseAuditbotPipe }} - {{ . }} {{- end }} - installed: {{ .Values.elementAdmin.enabled }} + installed: {{ .Values.apps.elementAdmin.enabled }} timeout: 900 - name: "opendesk-synapse-groupsync" @@ -287,7 +287,7 @@ releases: {{- range .Values.customization.release.opendeskSynapseGroupsync }} - {{ . }} {{- end }} - installed: {{ .Values.elementGroupsync.enabled }} + installed: {{ .Values.apps.elementGroupsync.enabled }} timeout: 900 commonLabels: diff --git a/helmfile/apps/element/values-synapse.yaml.gotmpl b/helmfile/apps/element/values-synapse.yaml.gotmpl index 82a36927..4270786f 100644 --- a/helmfile/apps/element/values-synapse.yaml.gotmpl +++ b/helmfile/apps/element/values-synapse.yaml.gotmpl @@ -69,8 +69,8 @@ configuration: regex: "@.*" url: null sender_localpart: ox-appsuite - {{- if (env "OPENDESK_ENTERPRISE") }} - {{- if .Values.elementAdmin.enabled }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} + {{- if .Values.apps.elementAdmin.enabled }} - as_token: {{ .Values.secrets.matrixAdminBot.synapseAsToken | quote }} hs_token: {{ .Values.secrets.matrixAdminBot.synapseAsToken | quote }} id: "element-adminbot-pipe" @@ -106,7 +106,7 @@ configuration: rate_limited: false sender_localpart: "auditbot-sendernotinuse" {{- end }} - {{- if .Values.elementGroupsync.enabled }} + {{- if .Values.apps.elementGroupsync.enabled }} - as_token: {{ .Values.secrets.matrixGroupsync.synapseAsToken | quote }} hs_token: {{ .Values.secrets.matrixGroupsync.synapseAsToken | quote }} id: "gps" @@ -132,7 +132,7 @@ configuration: smtp: senderAddress: "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.domain }}" - host: {{ printf "%s.%s.svc.%s" "postfix" (.Values.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} + host: {{ printf "%s.%s.svc.%s" "postfix" (.Values.apps.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} port: 25 tls: false starttls: false diff --git a/helmfile/apps/jitsi/helmfile-child.yaml.gotmpl b/helmfile/apps/jitsi/helmfile-child.yaml.gotmpl index 017530f7..05ecfdb7 100644 --- a/helmfile/apps/jitsi/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/jitsi/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.jitsi.registry }}/{{ .Values.charts.jitsi.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.jitsi.registry }}/{{ .Values.charts.jitsi.repository }}" releases: - name: "jitsi" @@ -21,7 +21,7 @@ releases: {{- range .Values.customization.release.jitsi }} - {{ . }} {{- end }} - installed: {{ .Values.jitsi.enabled }} + installed: {{ .Values.apps.jitsi.enabled }} timeout: 900 commonLabels: diff --git a/helmfile/apps/nextcloud/helmfile-child.yaml.gotmpl b/helmfile/apps/nextcloud/helmfile-child.yaml.gotmpl index 4cfbca83..a4a33799 100644 --- a/helmfile/apps/nextcloud/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/nextcloud/helmfile-child.yaml.gotmpl @@ -10,14 +10,14 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloudManagement.registry }}/{{ .Values.charts.nextcloudManagement.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.nextcloudManagement.registry }}/{{ .Values.charts.nextcloudManagement.repository }}" - name: "nextcloud-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.nextcloud.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.nextcloud.registry }}/{{ .Values.charts.nextcloud.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.nextcloud.registry }}/{{ .Values.charts.nextcloud.repository }}" releases: - name: "opendesk-nextcloud-management" @@ -25,7 +25,7 @@ releases: version: "{{ .Values.charts.nextcloudManagement.version }}" values: - "values-nextcloud-mgmt.yaml.gotmpl" - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} - "values-nextcloud-mgmt-enterprise.yaml.gotmpl" {{- end }} {{- range .Values.customization.release.opendeskNextcloudManagement }} @@ -33,14 +33,14 @@ releases: {{- end }} waitForJobs: true wait: true - installed: {{ .Values.nextcloud.enabled }} + installed: {{ .Values.apps.nextcloud.enabled }} timeout: 900 - name: "opendesk-nextcloud" chart: "nextcloud-repo/{{ .Values.charts.nextcloud.name }}" version: "{{ .Values.charts.nextcloud.version }}" values: - "values-nextcloud.yaml.gotmpl" - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} - "values-nextcloud-enterprise.yaml.gotmpl" {{- end }} {{- range .Values.customization.release.opendeskNextcloud }} @@ -48,7 +48,7 @@ releases: {{- end }} needs: - "opendesk-nextcloud-management" - installed: {{ .Values.nextcloud.enabled }} + installed: {{ .Values.apps.nextcloud.enabled }} commonLabels: deployStage: "050-components" diff --git a/helmfile/apps/nextcloud/values-nextcloud-mgmt.yaml.gotmpl b/helmfile/apps/nextcloud/values-nextcloud-mgmt.yaml.gotmpl index 9c6c4b22..8589198b 100644 --- a/helmfile/apps/nextcloud/values-nextcloud-mgmt.yaml.gotmpl +++ b/helmfile/apps/nextcloud/values-nextcloud-mgmt.yaml.gotmpl @@ -31,9 +31,9 @@ configuration: host: {{ .Values.antivirus.icap.host | quote }} port: {{ .Values.antivirus.icap.port | quote }} {{- else }} - {{- if .Values.clamavDistributed.enabled }} + {{- if .Values.apps.clamavDistributed.enabled }} host: "clamav-icap" - {{- else if .Values.clamavSimple.enabled }} + {{- else if .Values.apps.clamavSimple.enabled }} host: "clamav-simple" {{- end }} port: 1344 @@ -55,13 +55,13 @@ configuration: contacts: enabled: false cryptpad: - enabled: {{ .Values.cryptpad.enabled }} + enabled: {{ .Values.apps.cryptpad.enabled }} filesZip: enabled: true groupfolders: enabled: true integrationOpenproject: - enabled: {{ .Values.openproject.enabled }} + enabled: {{ .Values.apps.openproject.enabled }} spreed: enabled: true circles: @@ -147,7 +147,7 @@ configuration: value: "" password: value: "" - host: {{ printf "%s.%s.svc.%s" "postfix" (.Values.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} + host: {{ printf "%s.%s.svc.%s" "postfix" (.Values.apps.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} port: 25 fromAddress: {{ .Values.smtp.localpartNoReply | quote }} mailDomain: "{{ .Values.global.domain }}" diff --git a/helmfile/apps/notes/helmfile-child.yaml.gotmpl b/helmfile/apps/notes/helmfile-child.yaml.gotmpl index 77974ca0..3730090f 100644 --- a/helmfile/apps/notes/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/notes/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.notes.registry }}/{{ .Values.charts.notes.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.notes.registry }}/{{ .Values.charts.notes.repository }}" releases: - name: "impress" @@ -22,7 +22,7 @@ releases: {{- range .Values.customization.release.notes }} - {{ . }} {{- end }} - installed: {{ .Values.notes.enabled }} + installed: {{ .Values.apps.notes.enabled }} timeout: 1800 commonLabels: diff --git a/helmfile/apps/nubus/helmfile-child.yaml.gotmpl b/helmfile/apps/nubus/helmfile-child.yaml.gotmpl index 7bd479fa..58fb46d8 100644 --- a/helmfile/apps/nubus/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/nubus/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true url: - "{{ .Values.global.helmRegistry | default .Values.charts.nubus.registry }}/{{ .Values.charts.nubus.repository }}" + "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.nubus.registry }}/{{ .Values.charts.nubus.repository }}" # Intercom Service # Source: https://gitlab.souvap-univention.de/souvap/tooling/charts/intercom-service - name: "intercom-service-repo" @@ -19,7 +19,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.intercomService.registry }}/{{ .Values.charts.intercomService.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.intercomService.registry }}/{{ .Values.charts.intercomService.repository }}" # openDesk Keycloak Bootstrap Chart - name: "opendesk-keycloak-bootstrap-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" @@ -27,7 +27,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskKeycloakBootstrap.registry }}/{{ .Values.charts.opendeskKeycloakBootstrap.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.opendeskKeycloakBootstrap.registry }}/{{ .Values.charts.opendeskKeycloakBootstrap.repository }}" # NGINX S3 Gateway Chart - name: "nginx-s3-gateway-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" @@ -35,7 +35,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.nginxS3Gateway.registry }}/{{ .Values.charts.nginxS3Gateway.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.nginxS3Gateway.registry }}/{{ .Values.charts.nginxS3Gateway.repository }}" releases: # Univention Management Stack Umbrella Chart @@ -47,7 +47,7 @@ releases: {{- range .Values.customization.release.ums }} - {{ . }} {{- end }} - installed: {{ .Values.nubus.enabled }} + installed: {{ .Values.apps.nubus.enabled }} timeout: 900 # Intercom-Service - name: "intercom-service" @@ -58,7 +58,7 @@ releases: {{- range .Values.customization.release.intercomService }} - {{ . }} {{- end }} - installed: {{ .Values.nubus.enabled }} + installed: {{ .Values.apps.nubus.enabled }} # openDesk Keycloak Bootstrap Chart - name: "opendesk-keycloak-bootstrap" @@ -71,7 +71,7 @@ releases: {{- end }} needs: - "ums" - installed: {{ .Values.nubus.enabled }} + installed: {{ .Values.apps.nubus.enabled }} timeout: 900 # NGINX S3 Gateway (when cluster minio is not used) @@ -83,7 +83,7 @@ releases: {{- range .Values.customization.release.nginxS3Gateway }} - {{ . }} {{- end }} - installed: {{ not .Values.minio.enabled }} + installed: {{ not .Values.apps.minio.enabled }} timeout: 900 commonLabels: diff --git a/helmfile/apps/nubus/values-nubus.yaml.gotmpl b/helmfile/apps/nubus/values-nubus.yaml.gotmpl index 09fc098f..223ac430 100644 --- a/helmfile/apps/nubus/values-nubus.yaml.gotmpl +++ b/helmfile/apps/nubus/values-nubus.yaml.gotmpl @@ -119,7 +119,7 @@ global: ingress: # temporary fix - {{- if not .Values.minio.enabled }} + {{- if not .Values.apps.minio.enabled }} enabled: false {{- end }} certManager: @@ -377,6 +377,7 @@ nubusGuardian: imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }} nubusNotificationsApi: + enabled: false additionalAnnotations: intents.otterize.com/service-name: "ums-notifications-api" containerSecurityContext: @@ -524,7 +525,7 @@ nubusKeycloakExtensions: password: "umcKeycloakExtensionsDatabasePassword" smtp: connection: - host: {{ printf "%s.%s.svc.%s" "postfix" (.Values.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} + host: {{ printf "%s.%s.svc.%s" "postfix" (.Values.apps.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} port: 25 ssl: false starttls: false @@ -736,6 +737,7 @@ nubusUdmRestApi: imagePullSecrets: {{ .Values.global.imagePullSecrets | toYaml | nindent 4 }} ingress: + enabled: {{ .Values.functional.externalServices.nubus.udmRestApi.enabled }} certManager: enabled: false tls: @@ -1095,7 +1097,7 @@ nubusStackDataUms: umcMemcachedUsername: "" externalMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain }} umcHtmlTitle: "Portal - {{ .Values.theme.texts.productName }}" - smtpHost: {{ printf "%s.%s.svc.%s" "postfix" (.Values.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} + smtpHost: {{ printf "%s.%s.svc.%s" "postfix" (.Values.apps.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} smtpPort: 25 smtpUser: "" smtpStartTls: false @@ -1118,7 +1120,7 @@ nubusStackDataUms: portalTitleEN: "Portal - {{ .Values.theme.texts.productName }}" oxDefaultContext: "1" componentEnabled: - notes: {{ .Values.notes.enabled }} + notes: {{ .Values.apps.notes.enabled }} ldapSearchUsers: {{- range $username, $password := .Values.secrets.nubus.ldapSearch }} - username: {{ printf "ldapsearch_%s" $username | quote }} @@ -1151,7 +1153,7 @@ nubusStackDataUms: portaltileGroupNotes: - 'cn=managed-by-attribute-Notes,cn=groups,{{ .Values.ldap.baseDn }}' systemInformation: - releaseVersion: "Release: {{ .Values.global.systemInformation.releaseVersion }}{{ if (env "OPENDESK_ENTERPRISE") }}-ee{{ end }}" + releaseVersion: "Release: {{ .Values.global.systemInformation.releaseVersion }}{{ if eq (env "OPENDESK_ENTERPRISE") "true" }}-ee{{ end }}" {{- if .Values.functional.admin.portal.deploymentTimestamp.enabled }} deployDate: "Deployed: {{ now | date "2006-01-02T15:04:05-0700" }}" {{- else }} diff --git a/helmfile/apps/nubus/values-opendesk-keycloak-bootstrap.yaml.gotmpl b/helmfile/apps/nubus/values-opendesk-keycloak-bootstrap.yaml.gotmpl index b0105176..975cedd5 100644 --- a/helmfile/apps/nubus/values-opendesk-keycloak-bootstrap.yaml.gotmpl +++ b/helmfile/apps/nubus/values-opendesk-keycloak-bootstrap.yaml.gotmpl @@ -57,7 +57,7 @@ config: scope: "opendesk-dovecot-scope" role: "opendesk-dovecot-access-control" group: "managed-by-attribute-Groupware" - {{- if .Values.notes.enabled }} + {{- if .Values.apps.notes.enabled }} notes: client: "opendesk-notes" scope: "opendesk-notes-scope" @@ -66,7 +66,7 @@ config: {{- end }} componentEnabled: - notes: {{ .Values.notes.enabled }} + notes: {{ .Values.apps.notes.enabled }} custom: clientScopes: {{ .Values.functional.authentication.oidc.clientScopes | toYaml | nindent 6 }} @@ -431,7 +431,7 @@ config: access.token.claim: true claim.name: "opendesk_username" jsonType.label: "String" -{{ if .Values.notes.enabled }} +{{ if .Values.apps.notes.enabled }} - name: "opendesk-notes-scope" description: "Scope for the claims required by openDesk's Notes instance." protocol: "openid-connect" @@ -522,7 +522,7 @@ config: jsonType.label: "String" defaultClientScopes: - "offline_access" -{{ if .Values.notes.enabled }} +{{ if .Values.apps.notes.enabled }} - name: "opendesk-notes" clientId: "opendesk-notes" protocol: "openid-connect" diff --git a/helmfile/apps/open-xchange/helmfile-child.yaml.gotmpl b/helmfile/apps/open-xchange/helmfile-child.yaml.gotmpl index 8e8247c6..3de049e8 100644 --- a/helmfile/apps/open-xchange/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/open-xchange/helmfile-child.yaml.gotmpl @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH +# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- repositories: @@ -7,19 +7,31 @@ repositories: - name: "dovecot-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.dovecot.verify }} + oci: true + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} + username: {{ env "ENTERPRISE_PRIVATE_REGISTRY_USERNAME" | quote }} + password: {{ env "ENTERPRISE_PRIVATE_REGISTRY_PASSWORD" | quote }} + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDeEnterprise .Values.global.helmRegistry | default .Values.charts.dovecot.registry }}/{{ .Values.charts.dovecot.repository }}" + {{- else }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} - oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.dovecot.registry }}/{{ .Values.charts.dovecot.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.dovecot.registry }}/{{ .Values.charts.dovecot.repository }}" + {{- end }} # Open-Xchange - name: "open-xchange-repo" keyring: "../../files/gpg-pubkeys/open-xchange-com.gpg" verify: {{ .Values.charts.oxAppSuite.verify }} + oci: true + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} + username: {{ env "ENTERPRISE_PRIVATE_REGISTRY_USERNAME" | quote }} + password: {{ env "ENTERPRISE_PRIVATE_REGISTRY_PASSWORD" | quote }} + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDeEnterprise .Values.global.helmRegistry | default .Values.charts.oxAppSuite.registry }}/{{ .Values.charts.oxAppSuite.repository }}" + {{- else }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} - oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.oxAppSuite.registry }}/{{ .Values.charts.oxAppSuite.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.oxAppSuite.registry }}/{{ .Values.charts.oxAppSuite.repository }}" + {{- end }} # openDesk Open-Xchange Bootstrap # Source: @@ -30,14 +42,14 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.oxAppSuiteBootstrap.registry }}/{{ .Values.charts.oxAppSuiteBootstrap.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.oxAppSuiteBootstrap.registry }}/{{ .Values.charts.oxAppSuiteBootstrap.repository }}" # OX Connector - name: "ox-connector-repo" username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.oxConnector.registry }}/{{ .Values.charts.oxConnector.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.oxConnector.registry }}/{{ .Values.charts.oxConnector.repository }}" releases: - name: "dovecot" @@ -45,10 +57,13 @@ releases: version: "{{ .Values.charts.dovecot.version }}" values: - "values-dovecot.yaml.gotmpl" + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} + - "values-dovecot-enterprise.yaml.gotmpl" + {{- end }} {{- range .Values.customization.release.dovecot }} - {{ . }} {{- end }} - installed: {{ .Values.dovecot.enabled }} + installed: {{ .Values.apps.dovecot.enabled }} timeout: 900 - name: "open-xchange" @@ -57,13 +72,13 @@ releases: values: - "values-openxchange.yaml.gotmpl" - "values-openxchange-contact-picker.yaml.gotmpl" - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} - "values-openxchange-enterprise.yaml.gotmpl" {{- end }} {{- range .Values.customization.release.openxchange }} - {{ . }} {{- end }} - installed: {{ .Values.oxAppSuite.enabled }} + installed: {{ .Values.apps.oxAppSuite.enabled }} timeout: 900 - name: "opendesk-open-xchange-bootstrap" @@ -74,7 +89,7 @@ releases: {{- range .Values.customization.release.opendeskOpenxchangeBootstrap }} - {{ . }} {{- end }} - installed: {{ .Values.oxAppSuite.enabled }} + installed: {{ .Values.apps.oxAppSuite.enabled }} timeout: 900 - name: "ox-connector" @@ -85,7 +100,7 @@ releases: {{- range .Values.customization.release.oxConnector }} - {{ . }} {{- end }} - installed: {{ .Values.oxAppSuite.enabled }} + installed: {{ .Values.apps.oxAppSuite.enabled }} needs: - "open-xchange" diff --git a/helmfile/apps/open-xchange/values-dovecot-enterprise.yaml.gotmpl b/helmfile/apps/open-xchange/values-dovecot-enterprise.yaml.gotmpl new file mode 100644 index 00000000..d6607638 --- /dev/null +++ b/helmfile/apps/open-xchange/values-dovecot-enterprise.yaml.gotmpl @@ -0,0 +1,45 @@ +{{/* +SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH +SPDX-License-Identifier: Apache-2.0 +*/}} +--- +image: + registry: {{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.dovecot.registry | quote }} + repository: {{ .Values.images.dovecot.repository | quote }} + tag: {{ .Values.images.dovecot.tag | quote }} + pullPolicy: {{ .Values.global.imagePullPolicy | quote }} + +imageInitCassandra: + registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.cassandra.registry | quote }} + repository: {{ .Values.images.cassandra.repository | quote }} + tag: {{ .Values.images.cassandra.tag | quote }} + pullPolicy: {{ .Values.global.imagePullPolicy | quote }} + +imagePullSecrets: + {{ .Values.global.imagePullSecrets | toYaml | nindent 2 }} + +dovecot: + dictmap: + enabled: true + host: {{ .Values.databases.dovecotDictmap.host | quote }} + port: {{ .Values.databases.dovecotDictmap.port }} + username: {{ .Values.databases.dovecotDictmap.username | quote }} + password: {{ .Values.secrets.cassandra.dovecotDictmapUser | quote }} + keyspace: {{ .Values.databases.dovecotDictmap.name | quote }} + sharedMailboxes: + enabled: false + host: {{ .Values.databases.dovecotACL.host | quote }} + port: {{ .Values.databases.dovecotACL.port }} + username: {{ .Values.databases.dovecotACL.username | quote }} + password: {{ .Values.secrets.cassandra.dovecotACLUser | quote }} + keyspace: {{ .Values.databases.dovecotACL.name | quote }} + objectStorage: + encryption: + privateKey: + value: {{ env "DOVECOT_CRYPT_PRIVATE_KEY" | quote }} + publicKey: + value: {{ env "DOVECOT_CRYPT_PUBLIC_KEY" | quote }} + fqdn: {{ .Values.objectstores.dovecot.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }} + username: {{ .Values.objectstores.dovecot.username | quote }} + password: {{ .Values.secrets.minio.dovecotUser | quote }} +... diff --git a/helmfile/apps/open-xchange/values-dovecot.yaml.gotmpl b/helmfile/apps/open-xchange/values-dovecot.yaml.gotmpl index ae6390ab..360873ff 100644 --- a/helmfile/apps/open-xchange/values-dovecot.yaml.gotmpl +++ b/helmfile/apps/open-xchange/values-dovecot.yaml.gotmpl @@ -1,5 +1,5 @@ {{/* -SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH +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 */}} @@ -34,11 +34,10 @@ dovecot: introspectionPath: "/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token/introspect" usernameAttribute: "opendesk_username" loginTrustedNetworks: {{ join " " .Values.cluster.networking.cidr | quote }} - submission: enabled: true ssl: "no" - host: "{{ printf "%s.%s.svc.%s" "postfix" (.Values.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain }}:25" + host: "{{ printf "%s.%s.svc.%s" "postfix" (.Values.apps.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain }}:25" certificate: secretName: {{ .Values.ingress.tls.secretName | quote }} diff --git a/helmfile/apps/open-xchange/values-openxchange.yaml.gotmpl b/helmfile/apps/open-xchange/values-openxchange.yaml.gotmpl index 6ceb7576..29579f67 100644 --- a/helmfile/apps/open-xchange/values-openxchange.yaml.gotmpl +++ b/helmfile/apps/open-xchange/values-openxchange.yaml.gotmpl @@ -340,9 +340,9 @@ appsuite: com.openexchange.antivirus.server: {{ .Values.antivirus.icap.host | quote }} com.openexchange.antivirus.port: {{ .Values.antivirus.icap.port | quote }} {{- else }} - {{- if .Values.clamavDistributed.enabled }} + {{- if .Values.apps.clamavDistributed.enabled }} com.openexchange.antivirus.server: "clamav-icap" - {{- else if .Values.clamavSimple.enabled }} + {{- else if .Values.apps.clamavSimple.enabled }} com.openexchange.antivirus.server: "clamav-simple" {{- end }} com.openexchange.antivirus.port: "1344" diff --git a/helmfile/apps/opendesk-migrations-post/helmfile-child.yaml.gotmpl b/helmfile/apps/opendesk-migrations-post/helmfile-child.yaml.gotmpl index 3669867b..823d7ff8 100644 --- a/helmfile/apps/opendesk-migrations-post/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/opendesk-migrations-post/helmfile-child.yaml.gotmpl @@ -4,17 +4,17 @@ repositories: # openDesk Migrations # Source: - - name: "openproject-migrations-repo" + - name: "opendesk-migrations-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.migrations.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.migrations.registry }}/{{ .Values.charts.migrations.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.migrations.registry }}/{{ .Values.charts.migrations.repository }}" releases: - name: "opendesk-migrations-post" - chart: "openproject-migrations-repo/{{ .Values.charts.migrations.name }}" + chart: "opendesk-migrations-repo/{{ .Values.charts.migrations.name }}" version: "{{ .Values.charts.migrations.version }}" wait: true waitForJobs: true @@ -24,7 +24,7 @@ releases: {{- range .Values.customization.release.migrationsPost }} - {{ . }} {{- end }} - installed: {{ .Values.migrations.enabled }} + installed: {{ .Values.apps.migrations.enabled }} timeout: 900 commonLabels: diff --git a/helmfile/apps/opendesk-migrations-pre/helmfile-child.yaml.gotmpl b/helmfile/apps/opendesk-migrations-pre/helmfile-child.yaml.gotmpl index fc470311..0c6b6944 100644 --- a/helmfile/apps/opendesk-migrations-pre/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/opendesk-migrations-pre/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.migrations.registry }}/{{ .Values.charts.migrations.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.migrations.registry }}/{{ .Values.charts.migrations.repository }}" releases: - name: "opendesk-migrations-pre" @@ -24,7 +24,7 @@ releases: {{- range .Values.customization.release.migrationsPre }} - {{ . }} {{- end }} - installed: {{ .Values.migrations.enabled }} + installed: {{ .Values.apps.migrations.enabled }} timeout: 900 commonLabels: diff --git a/helmfile/apps/opendesk-openproject-bootstrap/helmfile-child.yaml.gotmpl b/helmfile/apps/opendesk-openproject-bootstrap/helmfile-child.yaml.gotmpl index aac1d7c6..c98a8880 100644 --- a/helmfile/apps/opendesk-openproject-bootstrap/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/opendesk-openproject-bootstrap/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.openprojectBootstrap.registry }}/{{ .Values.charts.openprojectBootstrap.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.openprojectBootstrap.registry }}/{{ .Values.charts.openprojectBootstrap.repository }}" releases: - name: "opendesk-openproject-bootstrap" @@ -23,7 +23,7 @@ releases: {{- range .Values.customization.release.opendeskOpenprojectBootstrap }} - {{ . }} {{- end }} - installed: {{ .Values.openproject.enabled }} + installed: {{ .Values.apps.openproject.enabled }} timeout: 900 commonLabels: diff --git a/helmfile/apps/opendesk-services/helmfile-child.yaml.gotmpl b/helmfile/apps/opendesk-services/helmfile-child.yaml.gotmpl index bedf8cba..8f3cfb01 100644 --- a/helmfile/apps/opendesk-services/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/opendesk-services/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.otterize.registry }}/{{ .Values.charts.otterize.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.otterize.registry }}/{{ .Values.charts.otterize.repository }}" # openDesk Home # Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-home @@ -20,7 +20,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.home.registry }}/{{ .Values.charts.home.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.home.registry }}/{{ .Values.charts.home.repository }}" # openDesk Certificates # Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-certificates @@ -30,7 +30,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.certificates.registry }}/{{ .Values.charts.certificates.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.certificates.registry }}/{{ .Values.charts.certificates.repository }}" # openDesk Alerts # https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-alerts @@ -40,7 +40,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskAlerts.registry }}/{{ .Values.charts.opendeskAlerts.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.opendeskAlerts.registry }}/{{ .Values.charts.opendeskAlerts.repository }}" # openDesk Grafana Dashboards # https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-dashboards @@ -50,7 +50,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskDashboards.registry }}/{{ .Values.charts.opendeskDashboards.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.opendeskDashboards.registry }}/{{ .Values.charts.opendeskDashboards.repository }}" # openDesk Static Files # https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-static-files @@ -60,7 +60,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.opendeskStaticFiles.registry }}/{{ .Values.charts.opendeskStaticFiles.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.opendeskStaticFiles.registry }}/{{ .Values.charts.opendeskStaticFiles.repository }}" releases: - name: "opendesk-otterize" @@ -82,7 +82,7 @@ releases: {{- range .Values.customization.release.opendeskHome }} - {{ . }} {{- end }} - installed: {{ .Values.home.enabled }} + installed: {{ .Values.apps.home.enabled }} - name: "opendesk-certificates" chart: "certificates-repo/{{ .Values.charts.certificates.name }}" @@ -92,7 +92,7 @@ releases: {{- range .Values.customization.release.opendeskCertificates }} - {{ . }} {{- end }} - installed: {{ .Values.certificates.enabled }} + installed: {{ .Values.apps.certificates.enabled }} timeout: 900 - name: "opendesk-alerts" @@ -125,7 +125,7 @@ releases: {{- range .Values.customization.release.opendeskStaticFiles }} - {{ . }} {{- end }} - installed: {{ .Values.staticFiles.enabled }} + installed: {{ .Values.apps.staticFiles.enabled }} timeout: 900 commonLabels: diff --git a/helmfile/apps/opendesk-services/values-certificates.yaml.gotmpl b/helmfile/apps/opendesk-services/values-certificates.yaml.gotmpl index 2e4f2814..0dc49039 100644 --- a/helmfile/apps/opendesk-services/values-certificates.yaml.gotmpl +++ b/helmfile/apps/opendesk-services/values-certificates.yaml.gotmpl @@ -7,13 +7,13 @@ SPDX-License-Identifier: Apache-2.0 global: domain: {{ .Values.global.domain | quote }} hosts: - {{- if .Values.collabora.enabled }} + {{- if .Values.apps.collabora.enabled }} collabora: {{ .Values.global.hosts.collabora }} {{- end }} - {{- if .Values.cryptpad.enabled }} + {{- if .Values.apps.cryptpad.enabled }} cryptpad: {{ .Values.global.hosts.cryptpad }} {{- end }} - {{- if .Values.element.enabled }} + {{- if .Values.apps.element.enabled }} element: {{ .Values.global.hosts.element }} matrixNeoBoardWidget: {{ .Values.global.hosts.matrixNeoBoardWidget }} matrixNeoChoiceWidget: {{ .Values.global.hosts.matrixNeoChoiceWidget }} @@ -23,30 +23,30 @@ global: synapseFederation: {{ .Values.global.hosts.synapseFederation }} whiteboard: {{ .Values.global.hosts.whiteboard }} {{- end }} - {{- if .Values.nubus.enabled }} + {{- if .Values.apps.nubus.enabled }} intercomService: {{ .Values.global.hosts.intercomService }} {{- end }} - {{- if .Values.jitsi.enabled }} + {{- if .Values.apps.jitsi.enabled }} jitsi: {{ .Values.global.hosts.jitsi }} {{- end }} - {{- if .Values.minio.enabled }} + {{- if .Values.apps.minio.enabled }} minioApi: {{ .Values.global.hosts.minioApi }} minioConsole: {{ .Values.global.hosts.minioConsole }} {{- end }} - {{- if .Values.nextcloud.enabled }} + {{- if .Values.apps.nextcloud.enabled }} nextcloud: {{ .Values.global.hosts.nextcloud }} {{- end }} - {{- if .Values.openproject.enabled }} + {{- if .Values.apps.openproject.enabled }} openproject: {{ .Values.global.hosts.openproject }} {{- end }} - {{- if .Values.oxAppSuite.enabled }} + {{- if .Values.apps.oxAppSuite.enabled }} openxchange: {{ .Values.global.hosts.openxchange }} {{- end }} - {{- if .Values.nubus.enabled }} + {{- if .Values.apps.nubus.enabled }} keycloak: {{ .Values.global.hosts.keycloak }} nubus: {{ .Values.global.hosts.nubus }} {{- end }} - {{- if .Values.xwiki.enabled }} + {{- if .Values.apps.xwiki.enabled }} xwiki: {{ .Values.global.hosts.xwiki }} {{- end }} diff --git a/helmfile/apps/opendesk-services/values-opendesk-alerts.yaml.gotmpl b/helmfile/apps/opendesk-services/values-opendesk-alerts.yaml.gotmpl index c7c08ed0..ce373c6b 100644 --- a/helmfile/apps/opendesk-services/values-opendesk-alerts.yaml.gotmpl +++ b/helmfile/apps/opendesk-services/values-opendesk-alerts.yaml.gotmpl @@ -10,43 +10,43 @@ additionalLabels: config: collabora: - enable: {{ .Values.collabora.enabled }} + enable: {{ .Values.apps.collabora.enabled }} selectors: - namespace: {{ .Values.collabora.namespace | quote }} + namespace: {{ .Values.apps.collabora.namespace | quote }} matrix: - enable: {{ .Values.element.enabled }} + enable: {{ .Values.apps.element.enabled }} selectors: - namespace: {{ .Values.element.namespace | quote }} + namespace: {{ .Values.apps.element.namespace | quote }} diagrams: - enable: {{ .Values.cryptpad.enabled }} + enable: {{ .Values.apps.cryptpad.enabled }} selectors: - namespace: {{ .Values.cryptpad.namespace | quote }} + namespace: {{ .Values.apps.cryptpad.namespace | quote }} nextcloud: - enable: {{ .Values.nextcloud.enabled }} + enable: {{ .Values.apps.nextcloud.enabled }} selectors: - namespace: {{ .Values.nextcloud.namespace | quote }} + namespace: {{ .Values.apps.nextcloud.namespace | quote }} openXChange: - enable: {{ .Values.oxAppSuite.enabled }} + enable: {{ .Values.apps.oxAppSuite.enabled }} selectors: - namespace: {{ .Values.oxAppSuite.namespace | quote }} + namespace: {{ .Values.apps.oxAppSuite.namespace | quote }} xwiki: - enable: {{ .Values.xwiki.enabled }} + enable: {{ .Values.apps.xwiki.enabled }} selectors: - namespace: {{ .Values.xwiki.namespace | quote }} + namespace: {{ .Values.apps.xwiki.namespace | quote }} nubus: - enable: {{ .Values.nubus.enabled }} + enable: {{ .Values.apps.nubus.enabled }} selectors: - namespace: {{ .Values.nubus.namespace | quote }} + namespace: {{ .Values.apps.nubus.namespace | quote }} openProject: - enable: {{ .Values.openproject.enabled }} + enable: {{ .Values.apps.openproject.enabled }} selectors: - namespace: {{ .Values.openproject.namespace | quote }} + namespace: {{ .Values.apps.openproject.namespace | quote }} jitsi: - enable: {{ .Values.jitsi.enabled }} + enable: {{ .Values.apps.jitsi.enabled }} selectors: - namespace: {{ .Values.jitsi.namespace | quote }} + namespace: {{ .Values.apps.jitsi.namespace | quote }} collabora: - enable: {{ .Values.collabora.enabled }} + enable: {{ .Values.apps.collabora.enabled }} selectors: - namespace: {{ .Values.collabora.namespace | quote }} + namespace: {{ .Values.apps.collabora.namespace | quote }} diff --git a/helmfile/apps/opendesk-services/values-opendesk-dashboards.yaml.gotmpl b/helmfile/apps/opendesk-services/values-opendesk-dashboards.yaml.gotmpl index 119b7311..8602dd57 100644 --- a/helmfile/apps/opendesk-services/values-opendesk-dashboards.yaml.gotmpl +++ b/helmfile/apps/opendesk-services/values-opendesk-dashboards.yaml.gotmpl @@ -12,43 +12,43 @@ additionalLabels: config: apps: collabora: - enable: {{ .Values.collabora.enabled }} + enable: {{ .Values.apps.collabora.enabled }} selectors: - namespace: {{ .Values.collabora.namespace | quote }} + namespace: {{ .Values.apps.collabora.namespace | quote }} matrixElement: - enable: {{ .Values.element.enabled }} + enable: {{ .Values.apps.element.enabled }} selectors: - namespace: {{ .Values.element.namespace | quote }} + namespace: {{ .Values.apps.element.namespace | quote }} diagrams: - enable: {{ .Values.cryptpad.enabled }} + enable: {{ .Values.apps.cryptpad.enabled }} selectors: - namespace: {{ .Values.cryptpad.namespace | quote }} + namespace: {{ .Values.apps.cryptpad.namespace | quote }} nextcloud: - enable: {{ .Values.nextcloud.enabled }} + enable: {{ .Values.apps.nextcloud.enabled }} selectors: - namespace: {{ .Values.nextcloud.namespace | quote }} + namespace: {{ .Values.apps.nextcloud.namespace | quote }} openxchange: - enable: {{ .Values.oxAppSuite.enabled }} + enable: {{ .Values.apps.oxAppSuite.enabled }} selectors: - namespace: {{ .Values.oxAppSuite.namespace | quote }} + namespace: {{ .Values.apps.oxAppSuite.namespace | quote }} xwiki: - enable: {{ .Values.xwiki.enabled }} + enable: {{ .Values.apps.xwiki.enabled }} selectors: - namespace: {{ .Values.xwiki.namespace | quote }} + namespace: {{ .Values.apps.xwiki.namespace | quote }} nubus: - enable: {{ .Values.nubus.enabled }} + enable: {{ .Values.apps.nubus.enabled }} selectors: - namespace: {{ .Values.nubus.namespace | quote }} + namespace: {{ .Values.apps.nubus.namespace | quote }} openproject: - enable: {{ .Values.openproject.enabled }} + enable: {{ .Values.apps.openproject.enabled }} selectors: - namespace: {{ .Values.openproject.namespace | quote }} + namespace: {{ .Values.apps.openproject.namespace | quote }} jitsi: - enable: {{ .Values.jitsi.enabled }} + enable: {{ .Values.apps.jitsi.enabled }} selectors: - namespace: {{ .Values.jitsi.namespace | quote }} + namespace: {{ .Values.apps.jitsi.namespace | quote }} collabora: - enable: {{ .Values.collabora.enabled }} + enable: {{ .Values.apps.collabora.enabled }} selectors: - namespace: {{ .Values.collabora.namespace | quote }} + namespace: {{ .Values.apps.collabora.namespace | quote }} ... diff --git a/helmfile/apps/opendesk-services/values-otterize.yaml.gotmpl b/helmfile/apps/opendesk-services/values-otterize.yaml.gotmpl index 7dc317df..56bc22e0 100644 --- a/helmfile/apps/opendesk-services/values-otterize.yaml.gotmpl +++ b/helmfile/apps/opendesk-services/values-otterize.yaml.gotmpl @@ -10,47 +10,47 @@ global: apps: clamavDistributed: - enabled: {{ .Values.clamavDistributed.enabled }} + enabled: {{ .Values.apps.clamavDistributed.enabled }} clamavSimple: - enabled: {{ .Values.clamavSimple.enabled }} + enabled: {{ .Values.apps.clamavSimple.enabled }} collabora: - enabled: {{ .Values.collabora.enabled }} + enabled: {{ .Values.apps.collabora.enabled }} cryptpad: - enabled: {{ .Values.cryptpad.enabled }} + enabled: {{ .Values.apps.cryptpad.enabled }} dkimpy: - enabled: {{ .Values.dkimpy.enabled }} + enabled: {{ .Values.apps.dkimpy.enabled }} dovecot: - enabled: {{ .Values.dovecot.enabled }} + enabled: {{ .Values.apps.dovecot.enabled }} element: - enabled: {{ .Values.element.enabled }} + enabled: {{ .Values.apps.element.enabled }} jitsi: - enabled: {{ .Values.jitsi.enabled }} + enabled: {{ .Values.apps.jitsi.enabled }} mariadb: - enabled: {{ .Values.mariadb.enabled }} + enabled: {{ .Values.apps.mariadb.enabled }} memcached: - enabled: {{ .Values.memcached.enabled }} + enabled: {{ .Values.apps.memcached.enabled }} migrations: - enabled: {{ .Values.migrations.enabled }} + enabled: {{ .Values.apps.migrations.enabled }} minio: - enabled: {{ .Values.minio.enabled }} + enabled: {{ .Values.apps.minio.enabled }} nextcloud: - enabled: {{ .Values.nextcloud.enabled }} + enabled: {{ .Values.apps.nextcloud.enabled }} notes: - enabled: {{ .Values.notes.enabled }} + enabled: {{ .Values.apps.notes.enabled }} nubus: - enabled: {{ .Values.nubus.enabled }} + enabled: {{ .Values.apps.nubus.enabled }} openproject: - enabled: {{ .Values.openproject.enabled }} + enabled: {{ .Values.apps.openproject.enabled }} oxAppsuite: - enabled: {{ .Values.oxAppSuite.enabled }} + enabled: {{ .Values.apps.oxAppSuite.enabled }} postfix: - enabled: {{ .Values.postfix.enabled }} + enabled: {{ .Values.apps.postfix.enabled }} postgresql: - enabled: {{ .Values.postgresql.enabled }} + enabled: {{ .Values.apps.postgresql.enabled }} redis: - enabled: {{ .Values.redis.enabled }} + enabled: {{ .Values.apps.redis.enabled }} xwiki: - enabled: {{ .Values.xwiki.enabled }} + enabled: {{ .Values.apps.xwiki.enabled }} ingressController: {{ .Values.security.ingressController | toYaml | nindent 2 }} diff --git a/helmfile/apps/openproject/helmfile-child.yaml.gotmpl b/helmfile/apps/openproject/helmfile-child.yaml.gotmpl index a5aa8a9f..fe3a5702 100644 --- a/helmfile/apps/openproject/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/openproject/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.openproject.registry }}/{{ .Values.charts.openproject.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.openproject.registry }}/{{ .Values.charts.openproject.repository }}" releases: - name: "openproject" @@ -23,7 +23,7 @@ releases: {{- range .Values.customization.release.openproject }} - {{ . }} {{- end }} - installed: {{ .Values.openproject.enabled }} + installed: {{ .Values.apps.openproject.enabled }} timeout: 1800 commonLabels: diff --git a/helmfile/apps/openproject/values.yaml.gotmpl b/helmfile/apps/openproject/values.yaml.gotmpl index ca7a0013..30453edf 100644 --- a/helmfile/apps/openproject/values.yaml.gotmpl +++ b/helmfile/apps/openproject/values.yaml.gotmpl @@ -38,7 +38,7 @@ dbInit: {{ .Values.resources.openprojectDbInit | toYaml | nindent 4 }} environment: - {{- if and (env "OPENDESK_ENTERPRISE") .Values.enterpriseKeys.openproject.token }} + {{- if and (eq (env "OPENDESK_ENTERPRISE") "true") .Values.enterpriseKeys.openproject.token }} OPENPROJECT_ENTERPRISE__TOKEN: {{ .Values.enterpriseKeys.openproject.token | quote }} {{- end }} # For more details and more options see @@ -80,7 +80,7 @@ environment: OPENPROJECT_SMTP__PASSWORD: "" OPENPROJECT_SMTP__PORT: 25 OPENPROJECT_SMTP__SSL: "false" # (default=false) - OPENPROJECT_SMTP__ADDRESS: {{ printf "%s.%s.svc.%s" "postfix" (.Values.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} + OPENPROJECT_SMTP__ADDRESS: {{ printf "%s.%s.svc.%s" "postfix" (.Values.apps.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} OPENPROJECT_SMTP__AUTHENTICATION: "none" OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO: "false" OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE: "none" diff --git a/helmfile/apps/services-external/helmfile-child.yaml.gotmpl b/helmfile/apps/services-external/helmfile-child.yaml.gotmpl index 6e116c29..2ba6b6c4 100644 --- a/helmfile/apps/services-external/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/services-external/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.postgresql.registry }}/{{ .Values.charts.postgresql.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.postgresql.registry }}/{{ .Values.charts.postgresql.repository }}" # openDesk MariaDB # Source: https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-mariadb @@ -20,7 +20,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.mariadb.registry }}/{{ .Values.charts.mariadb.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.mariadb.registry }}/{{ .Values.charts.mariadb.repository }}" # openDesk dkimpy-milter # https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-dkimpy-milter @@ -30,7 +30,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.dkimpy.registry }}/{{ .Values.charts.dkimpy.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.dkimpy.registry }}/{{ .Values.charts.dkimpy.repository }}" # openDesk Postfix # https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-postfix @@ -40,7 +40,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.postfix.registry }}/{{ .Values.charts.postfix.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.postfix.registry }}/{{ .Values.charts.postfix.repository }}" # openDesk ClamAV # https://gitlab.opencode.de/bmi/opendesk/components/platform-development/charts/opendesk-clamav @@ -50,14 +50,14 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.clamav.registry }}/{{ .Values.charts.clamav.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.clamav.registry }}/{{ .Values.charts.clamav.repository }}" - name: "clamav-simple-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.clamavSimple.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.clamavSimple.registry }}/{{ .Values.charts.clamavSimple.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.clamavSimple.registry }}/{{ .Values.charts.clamavSimple.repository }}" # VMWare Bitnami # Source: https://github.com/bitnami/charts/ @@ -67,21 +67,21 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.memcached.registry }}/{{ .Values.charts.memcached.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.memcached.registry }}/{{ .Values.charts.memcached.repository }}" - name: "redis-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.redis.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.redis.registry }}/{{ .Values.charts.redis.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.redis.registry }}/{{ .Values.charts.redis.repository }}" - name: "minio-repo" keyring: "../../files/gpg-pubkeys/opencode.gpg" verify: {{ .Values.charts.minio.verify }} username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.minio.registry }}/{{ .Values.charts.minio.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.minio.registry }}/{{ .Values.charts.minio.repository }}" # openDesk Enterprise # Cassandra @@ -92,7 +92,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.cassandra.registry }}/{{ .Values.charts.cassandra.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.cassandra.registry }}/{{ .Values.charts.cassandra.repository }}" releases: - name: "redis" @@ -103,7 +103,7 @@ releases: {{- range .Values.customization.release.redis }} - {{ . }} {{- end }} - installed: {{ .Values.redis.enabled }} + installed: {{ .Values.apps.redis.enabled }} timeout: 900 - name: "memcached" @@ -114,7 +114,7 @@ releases: {{- range .Values.customization.release.memcached }} - {{ . }} {{- end }} - installed: {{ .Values.memcached.enabled }} + installed: {{ .Values.apps.memcached.enabled }} timeout: 900 - name: "postgresql" @@ -125,7 +125,7 @@ releases: {{- range .Values.customization.release.postgresql }} - {{ . }} {{- end }} - installed: {{ .Values.postgresql.enabled }} + installed: {{ .Values.apps.postgresql.enabled }} timeout: 900 - name: "mariadb" @@ -136,7 +136,7 @@ releases: {{- range .Values.customization.release.mariadb }} - {{ . }} {{- end }} - installed: {{ .Values.mariadb.enabled }} + installed: {{ .Values.apps.mariadb.enabled }} timeout: 900 - name: "postfix" @@ -147,7 +147,7 @@ releases: {{- range .Values.customization.release.postfix }} - {{ . }} {{- end }} - installed: {{ .Values.postfix.enabled }} + installed: {{ .Values.apps.postfix.enabled }} timeout: 900 - name: "opendesk-dkimpy-milter" @@ -158,7 +158,7 @@ releases: {{- range .Values.customization.release.opendeskDkimpyMilter }} - {{ . }} {{- end }} - installed: {{ .Values.dkimpy.enabled }} + installed: {{ .Values.apps.dkimpy.enabled }} timeout: 900 - name: "clamav" @@ -169,7 +169,7 @@ releases: {{- range .Values.customization.release.clamav }} - {{ . }} {{- end }} - installed: {{ .Values.clamavDistributed.enabled }} + installed: {{ .Values.apps.clamavDistributed.enabled }} timeout: 900 - name: "clamav-simple" @@ -180,7 +180,7 @@ releases: {{- range .Values.customization.release.clamavSimple }} - {{ . }} {{- end }} - installed: {{ .Values.clamavSimple.enabled }} + installed: {{ .Values.apps.clamavSimple.enabled }} timeout: 900 - name: "minio" @@ -191,7 +191,7 @@ releases: {{- range .Values.customization.release.minio }} - {{ . }} {{- end }} - installed: {{ .Values.minio.enabled }} + installed: {{ .Values.apps.minio.enabled }} timeout: 900 # openDesk Enterprise Releases @@ -203,7 +203,7 @@ releases: {{- range .Values.customization.release.cassandra }} - {{ . }} {{- end }} - installed: {{ .Values.cassandra.enabled }} + installed: {{ .Values.apps.cassandra.enabled }} timeout: 900 commonLabels: diff --git a/helmfile/apps/services-external/values-minio.yaml.gotmpl b/helmfile/apps/services-external/values-minio.yaml.gotmpl index e3e22b09..2e58fdee 100644 --- a/helmfile/apps/services-external/values-minio.yaml.gotmpl +++ b/helmfile/apps/services-external/values-minio.yaml.gotmpl @@ -1,5 +1,5 @@ {{/* -SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH +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 */}} @@ -116,6 +116,11 @@ provisioning: - name: {{ .Values.objectstores.nubus.bucket | quote }} versioning: "Suspended" withLock: false + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} + - name: {{ .Values.objectstores.dovecot.bucket | quote }} + versioning: "Suspended" + withLock: false + {{- end }} policies: - name: "migrations-bucket-policy" statements: @@ -177,6 +182,20 @@ provisioning: effect: "Allow" actions: - "s3:*" + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} + - name: "dovecot-bucket-policy" + statements: + - resources: + - "arn:aws:s3:::dovecot" + effect: "Allow" + actions: + - "s3:*" + - resources: + - "arn:aws:s3:::dovecot/*" + effect: "Allow" + actions: + - "s3:*" + {{- end }} users: - username: {{ .Values.objectstores.migrations.username | quote }} password: {{ .Values.secrets.minio.migrationsUser | quote }} @@ -208,6 +227,14 @@ provisioning: policies: - "ums-bucket-policy" setPolicies: true + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} + - username: {{ .Values.objectstores.dovecot.username | quote }} + password: {{ .Values.secrets.minio.dovecotUser | quote }} + disabled: false + policies: + - "dovecot-bucket-policy" + setPolicies: true + {{- end }} resources: {{ .Values.resources.minio | toYaml | nindent 4 }} diff --git a/helmfile/apps/services-external/values-postfix.yaml.gotmpl b/helmfile/apps/services-external/values-postfix.yaml.gotmpl index c6957d8a..c3e8762d 100644 --- a/helmfile/apps/services-external/values-postfix.yaml.gotmpl +++ b/helmfile/apps/services-external/values-postfix.yaml.gotmpl @@ -52,7 +52,7 @@ postfix: - fileName: "sasl_passwd.map" content: - {{ printf "%s %s:%s" .Values.smtp.host .Values.smtp.username .Values.smtp.password | quote }} - {{- if .Values.dkimpy.enabled }} + {{- if .Values.apps.dkimpy.enabled }} dkimpyHost: "opendesk-dkimpy-milter.{{ .Release.Namespace }}.svc.{{.Values.cluster.networking.domain }}:8892" {{- end }} rspamdHost: "" @@ -71,9 +71,9 @@ postfix: {{- if .Values.antivirus.milter.host }} smtpdMilters: "inet:{{ .Values.antivirus.milter.host }}:{{ .Values.antivirus.milter.port }}" {{- else }} - {{- if .Values.clamavDistributed.enabled }} + {{- if .Values.apps.clamavDistributed.enabled }} smtpdMilters: "inet:clamav-milter:7357" - {{- else if .Values.clamavSimple.enabled }} + {{- else if .Values.apps.clamavSimple.enabled }} smtpdMilters: "inet:clamav-simple:7357" {{- end }} {{- end }} diff --git a/helmfile/apps/xwiki/helmfile-child.yaml.gotmpl b/helmfile/apps/xwiki/helmfile-child.yaml.gotmpl index 52741801..e2bd8998 100644 --- a/helmfile/apps/xwiki/helmfile-child.yaml.gotmpl +++ b/helmfile/apps/xwiki/helmfile-child.yaml.gotmpl @@ -10,7 +10,7 @@ repositories: username: {{ env "OD_PRIVATE_REGISTRY_USERNAME" | quote }} password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }} oci: true - url: "{{ .Values.global.helmRegistry | default .Values.charts.xwiki.registry }}/{{ .Values.charts.xwiki.repository }}" + url: "{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.xwiki.registry }}/{{ .Values.charts.xwiki.repository }}" releases: - name: "xwiki" @@ -22,7 +22,7 @@ releases: {{- range .Values.customization.release.xwiki }} - {{ . }} {{- end }} - installed: {{ .Values.xwiki.enabled }} + installed: {{ .Values.apps.xwiki.enabled }} timeout: 1800 commonLabels: diff --git a/helmfile/apps/xwiki/values.yaml.gotmpl b/helmfile/apps/xwiki/values.yaml.gotmpl index b48d7517..665fb075 100644 --- a/helmfile/apps/xwiki/values.yaml.gotmpl +++ b/helmfile/apps/xwiki/values.yaml.gotmpl @@ -18,7 +18,7 @@ image: imagePullSecrets: {{ .Values.global.imagePullSecrets }} javaOpts: - {{- if and (env "OPENDESK_ENTERPRISE") .Values.enterprise.xwiki.opendeskEnterpriseLicense .Values.enterprise.xwiki.proApplicationslicense }} + {{- if and (eq (env "OPENDESK_ENTERPRISE") "true") .Values.enterpriseKeys.xwiki.opendeskEnterpriseLicense .Values.enterpriseKeys.xwiki.proApplicationslicense }} - "-Dlicenses={{ .Values.enterpriseKeys.xwiki.opendeskEnterpriseLicense }},{{ .Values.enterpriseKeys.xwiki.proApplicationslicense }}" {{- end }} {{- if .Values.certificate.selfSigned }} @@ -86,7 +86,7 @@ customConfigs: xwiki.authentication.ldap.fields_mapping: "last_name=sn,first_name=givenName,email=mailPrimaryAddress" xwiki.properties: - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} distribution.defaultUI: "com.xwiki.projects.swp:xwiki-swp-flavor-enterprise-main" {{- end }} wikiInitializer.initialRequest.xwiki.url: "https://{{ .Values.global.hosts.xwiki }}.{{ .Values.global.domain }}/distribution/" @@ -165,7 +165,7 @@ properties: "property:xwiki:XWiki.XWikiPreferences^XWiki.XWikiPreferences.ldap_group_mapping": "xwiki:XWiki.XWikiAdminGroup=cn=managed-by-attribute-KnowledgemanagementAdmin,cn=groups,dc=swp-ldap,dc=internal" ## SMTP settings "property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.from": "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.domain }}" - "property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host": {{ printf "%s.%s.svc.%s" "postfix" (.Values.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} + "property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.host": {{ printf "%s.%s.svc.%s" "postfix" (.Values.apps.postfix.namespace | default .Release.Namespace) .Values.cluster.networking.domain | quote }} "property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.port": 25 "property:xwiki:Mail.MailConfig^Mail.SendMailConfigClass.properties": "mail.smtp.starttls.enable=false" ## Link LDAP users and users authenticated through OIDC diff --git a/helmfile/bases/environments.yaml.gotmpl b/helmfile/bases/environments.yaml.gotmpl index 4e5834b1..b845bcd6 100644 --- a/helmfile/bases/environments.yaml.gotmpl +++ b/helmfile/bases/environments.yaml.gotmpl @@ -5,27 +5,27 @@ environments: default: values: - "../../environments/default/*.yaml.gotmpl" - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} - "../../environments/default-enterprise-overrides/*.yaml.gotmpl" {{- end }} dev: values: - "../../environments/default/*.yaml.gotmpl" - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} - "../../environments/default-enterprise-overrides/*.yaml.gotmpl" {{- end }} - "../../environments/dev/*.yaml.gotmpl" test: values: - "../../environments/default/*.yaml.gotmpl" - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} - "../../environments/default-enterprise-overrides/*.yaml.gotmpl" {{- end }} - "../../environments/test/*.yaml.gotmpl" prod: values: - "../../environments/default/*.yaml.gotmpl" - {{- if (env "OPENDESK_ENTERPRISE") }} + {{- if eq (env "OPENDESK_ENTERPRISE") "true" }} - "../../environments/default-enterprise-overrides/*.yaml.gotmpl" {{- end }} - "../../environments/prod/*.yaml.gotmpl" diff --git a/helmfile/environments/default-enterprise-overrides/charts.yaml.gotmpl b/helmfile/environments/default-enterprise-overrides/charts.yaml.gotmpl index 2d619211..d50490c5 100644 --- a/helmfile/environments/default-enterprise-overrides/charts.yaml.gotmpl +++ b/helmfile/environments/default-enterprise-overrides/charts.yaml.gotmpl @@ -1,7 +1,13 @@ -# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH +# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH # SPDX-License-Identifier: Apache-2.0 --- charts: + dovecot: + registry: "registry.opencode.de" + repository: "zendis/opendesk-enterprise/components/product-development/charts/opendesk-dovecot-pro" + name: "dovecot" + version: "1.0.0" + verify: true oxAppSuite: registry: "registry.opencode.de" repository: "zendis/opendesk-enterprise/components/supplier/open-xchange/charts-mirror" diff --git a/helmfile/environments/default-enterprise-overrides/images.yaml.gotmpl b/helmfile/environments/default-enterprise-overrides/images.yaml.gotmpl index 87543f0f..93f66a45 100644 --- a/helmfile/environments/default-enterprise-overrides/images.yaml.gotmpl +++ b/helmfile/environments/default-enterprise-overrides/images.yaml.gotmpl @@ -6,10 +6,14 @@ images: registry: "registry.opencode.de" repository: "zendis/opendesk-enterprise/components/supplier/collabora/images/collabora-online-for-opendesk" tag: "24.04.9.4.2@sha256:7c38f2568855ec33c11296d65384766230ea3097a245a60b9e8b0b62cb9cc17f" + dovecot: + registry: "registry.opencode.de" + repository: "zendis/opendesk-enterprise/components/supplier/open-xchange/images-mirror/dovecot-pro" + tag: "3.0.1-rev3@sha256:b87f16562dd486c0f97e8147a797af16a54f25f1ac64826f4f53bd8177ec9a33" nextcloud: registry: "registry.opencode.de" repository: "zendis/opendesk-enterprise/components/supplier/nextcloud/images/opendesk-nextcloud" - tag: "1.0.5@sha256:a541b29dad10deb99dbae6c3a463e994a054ac5c7ffc0a5c524c7b0f65544748" + tag: "1.0.7@sha256:3c0afeb7fb41e3ffa32ab3d3b96b41f5afd7a2b066a27b4478a64e06d2f0bd06" openxchangeCoreMW: registry: "registry.opencode.de" repository: "zendis/opendesk-enterprise/components/supplier/open-xchange/images-mirror/core-mw" diff --git a/helmfile/environments/default-enterprise-overrides/objectstores.yaml.gotmpl b/helmfile/environments/default-enterprise-overrides/objectstores.yaml.gotmpl new file mode 100644 index 00000000..9288d543 --- /dev/null +++ b/helmfile/environments/default-enterprise-overrides/objectstores.yaml.gotmpl @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH +# SPDX-License-Identifier: Apache-2.0 +--- +objectstores: + dovecot: + bucket: "dovecot" + endpoint: "" + region: "eu-west-1" + secretKey: "" + username: "dovecot_user" + storageClass: "STANDARD" + useSSL: true + pathStyle: true + port: 443 +... diff --git a/helmfile/environments/default/charts.yaml.gotmpl b/helmfile/environments/default/charts.yaml.gotmpl index e82c7aaf..459ab385 100644 --- a/helmfile/environments/default/charts.yaml.gotmpl +++ b/helmfile/environments/default/charts.yaml.gotmpl @@ -111,16 +111,6 @@ charts: name: "opendesk-element" version: "6.0.2" verify: true - elementWeb: - # providerCategory: "Platform" - # providerResponsible: "openDesk" - # upstreamRegistry: "https://registry.opencode.de" - # upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-element/opendesk-element" - registry: "registry.opencode.de" - repository: "bmi/opendesk/components/platform-development/charts/opendesk-element" - name: "opendesk-element-web" - version: "6.0.2" - verify: true elementWellKnown: # providerCategory: "Platform" # providerResponsible: "openDesk" diff --git a/helmfile/environments/default/global.generated.yaml.gotmpl b/helmfile/environments/default/global.generated.yaml.gotmpl index 27ac704e..b73f6ab3 100644 --- a/helmfile/environments/default/global.generated.yaml.gotmpl +++ b/helmfile/environments/default/global.generated.yaml.gotmpl @@ -3,5 +3,5 @@ --- global: systemInformation: - releaseVersion: "v1.1.1" + releaseVersion: "v1.1.2" ... diff --git a/helmfile/environments/default/images.yaml.gotmpl b/helmfile/environments/default/images.yaml.gotmpl index 5e2bccd5..dbfabf40 100644 --- a/helmfile/environments/default/images.yaml.gotmpl +++ b/helmfile/environments/default/images.yaml.gotmpl @@ -294,7 +294,7 @@ images: # upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-migrations" registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/images/opendesk-migrations" - tag: "1.4.0@sha256:0c74011e4c1216857b73695741196908afcacc2f531fd1c894b8f574ac98f9a2" + tag: "1.4.1@sha256:c831f3bb27da483cbf46239d8f96df9597f710fbe3804f198ee1d89b1be71936" milter: # providerCategory: "Community" # providerResponsible: "openDesk" @@ -318,7 +318,7 @@ images: # upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-nextcloud" registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/images/opendesk-nextcloud" - tag: "2.4.0@sha256:03d3273b49a3a51fc2d418302070657ad4198ee014f15ff4320e2164625431a1" + tag: "2.4.2@sha256:1f5d1378ac2cb00f6918fa49298bffe7da5e8c1eb02ae1ab3783870df2250841" nextcloudExporter: # providerCategory: "Platform" # providerResponsible: "openDesk" @@ -350,7 +350,7 @@ images: # upstreamRepository: "lasuite/impress-frontend" registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/images/opendesk-notes" - tag: "1.5.1@sha256:dad7dd60a5eb39b71b4911558cf7eac9ed6dc050593a046f5da0eaa75c65d344" + tag: "1.6.0-new-ui@sha256:96273e429d9ae6ebfb3173e09357f32d7b6cbe8189c12eacd149ed6da387d75d" notesYProvider: # providerCategory: "Supplier" # providerResponsible: "DINUM" @@ -448,7 +448,7 @@ images: # upstreamMirrorStartFrom: ["0", "0", "3"] registry: "registry.opencode.de" repository: "bmi/opendesk/components/supplier/univention/images-mirror/keycloak-proxy" - tag: "0.11.0@sha256:9b2079ed4078daee00d95ac2de4d72497131e699b967943db5be1c655048edb0" + tag: "0.15.3@sha256:087a8f242ac40f01bdc8326b220ec5b0034b64b3a3be6cf3968563c3d48eb056" nubusLdapNotifier: # providerCategory: "Supplier" # providerResponsible: "Univention" @@ -528,7 +528,7 @@ images: # upstreamRepository: "bmi/opendesk/components/platform-development/images/opendesk-nubus" registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/images/opendesk-nubus" - tag: "1.9.1@sha256:4cc4d4bc39167d7dc305ab1787763fd1091fa1284ddf373e081c595d4dce39a9" + tag: "1.9.1-trossner-improve-notes-permission@sha256:784a4fd2e49ca35d497ba5deddb11635d074e72708d729bc2cc19d1fac1feaef" nubusOpenPolicyAgent: # providerCategory: "Supplier" # providerResponsible: "Univention" @@ -576,7 +576,7 @@ images: # upstreamRepository: "nubus/images/portal-frontend" registry: "registry.opencode.de" repository: "bmi/opendesk/components/platform-development/images/opendesk-nubus-portal-update" - tag: "1.10.13@sha256:2f84f50af5d6ed31587e5ea9d043c9c30599d91350e13ea1ca31c9c9737a32cc" + tag: "1.10.14@sha256:fbdec057958fd7e728431cf96896b8453c2f5b390ce3d2f169a7766f49926b1b" nubusPortalServer: # providerCategory: "Supplier" # providerResponsible: "Univention" diff --git a/helmfile/environments/default/opendesk_main.yaml.gotmpl b/helmfile/environments/default/opendesk_main.yaml.gotmpl index ba8003da..179bbbdb 100644 --- a/helmfile/environments/default/opendesk_main.yaml.gotmpl +++ b/helmfile/environments/default/opendesk_main.yaml.gotmpl @@ -4,88 +4,89 @@ # # Note: Currently only single namespace deployments are supported. --- -cassandra: - enabled: {{ if (env "OPENDESK_ENTERPRISE") }}true{{ else }}false{{ end }} - namespace: ~ -certificates: - enabled: true - namespace: ~ -clamavDistributed: - enabled: false - namespace: ~ -clamavSimple: - enabled: true - namespace: ~ -collabora: - enabled: true - namespace: ~ -collaboraController: - enabled: {{ if (env "OPENDESK_ENTERPRISE") }}true{{ else }}false{{ end }} - namespace: ~ -cryptpad: - enabled: true - namespace: ~ -dkimpy: - enabled: false - namespace: ~ -dovecot: - enabled: true - namespace: ~ -element: - enabled: true - namespace: ~ -elementAdmin: - enabled: {{ if (env "OPENDESK_ENTERPRISE") }}true{{ else }}false{{ end }} - namespace: ~ -elementGroupsync: - enabled: {{ if (env "OPENDESK_ENTERPRISE") }}true{{ else }}false{{ end }} - namespace: ~ -home: - enabled: true - namespace: ~ -jitsi: - enabled: true - namespace: ~ -mariadb: - enabled: true - namespace: ~ -memcached: - enabled: true - namespace: ~ -migrations: - enabled: true - namespace: ~ -minio: - enabled: true - namespace: ~ -nextcloud: - enabled: true - namespace: ~ -notes: - enabled: false - namespace: ~ -nubus: - enabled: true - namespace: ~ -openproject: - enabled: true - namespace: ~ -oxAppSuite: - enabled: true - namespace: ~ -postfix: - enabled: true - namespace: ~ -postgresql: - enabled: true - namespace: ~ -redis: - enabled: true - namespace: ~ -staticFiles: - enabled: true - namespace: ~ -xwiki: - enabled: true - namespace: ~ +apps: + cassandra: + enabled: {{ if eq (env "OPENDESK_ENTERPRISE") "true" }}true{{ else }}false{{ end }} + namespace: ~ + certificates: + enabled: true + namespace: ~ + clamavDistributed: + enabled: false + namespace: ~ + clamavSimple: + enabled: true + namespace: ~ + collabora: + enabled: true + namespace: ~ + collaboraController: + enabled: {{ if eq (env "OPENDESK_ENTERPRISE") "true" }}true{{ else }}false{{ end }} + namespace: ~ + cryptpad: + enabled: true + namespace: ~ + dkimpy: + enabled: false + namespace: ~ + dovecot: + enabled: true + namespace: ~ + element: + enabled: true + namespace: ~ + elementAdmin: + enabled: {{ if eq (env "OPENDESK_ENTERPRISE") "true" }}true{{ else }}false{{ end }} + namespace: ~ + elementGroupsync: + enabled: {{ if eq (env "OPENDESK_ENTERPRISE") "true" }}true{{ else }}false{{ end }} + namespace: ~ + home: + enabled: true + namespace: ~ + jitsi: + enabled: true + namespace: ~ + mariadb: + enabled: true + namespace: ~ + memcached: + enabled: true + namespace: ~ + migrations: + enabled: true + namespace: ~ + minio: + enabled: true + namespace: ~ + nextcloud: + enabled: true + namespace: ~ + notes: + enabled: false + namespace: ~ + nubus: + enabled: true + namespace: ~ + openproject: + enabled: true + namespace: ~ + oxAppSuite: + enabled: true + namespace: ~ + postfix: + enabled: true + namespace: ~ + postgresql: + enabled: true + namespace: ~ + redis: + enabled: true + namespace: ~ + staticFiles: + enabled: true + namespace: ~ + xwiki: + enabled: true + namespace: ~ ... diff --git a/helmfile/environments/default/replicas.yaml.gotmpl b/helmfile/environments/default/replicas.yaml.gotmpl index af6622d4..67f198a2 100644 --- a/helmfile/environments/default/replicas.yaml.gotmpl +++ b/helmfile/environments/default/replicas.yaml.gotmpl @@ -100,6 +100,8 @@ replicas: # -- scalable: true umsLdapServerSecondary: 0 # -- scalable: true + # -- comment: The LDAP proxy is only required in situations where there are clients outside of UDM writing into the + # LDAP like Samba. This is not a use case within openDesk so the LDAP Proxy's replica count should be kept at `0` umsLdapServerProxy: 0 # -- scalable: tbd umsNotificationsApi: 1 diff --git a/helmfile/environments/default/theme.yaml.gotmpl b/helmfile/environments/default/theme.yaml.gotmpl index c1c98577..35fda541 100644 --- a/helmfile/environments/default/theme.yaml.gotmpl +++ b/helmfile/environments/default/theme.yaml.gotmpl @@ -55,8 +55,8 @@ theme: logoSvg: {{ readFile "./../../files/theme/login/logo.svg" | b64enc | quote }} groupware: - faviconIco: {{ readFile "./../../files/theme/groupware/favicon.ico" | b64enc | quote }} - faviconSvg: {{ readFile "./../../files/theme/groupware/favicon.svg" | b64enc | quote }} + faviconIco: {{ readFile "./../../files/theme/groupware_mail/favicon.ico" | b64enc | quote }} + faviconSvg: {{ readFile "./../../files/theme/groupware_mail/favicon.svg" | b64enc | quote }} knowledge: faviconSvg: {{ readFile "./../../files/theme/knowledge/favicon.svg" | b64enc | quote }} @@ -70,31 +70,32 @@ theme: waitingSpinnerSvg: {{ readFile "./../../files/theme/portal/waiting-spinner.svg" | b64enc }} backgroundSvg: {{ readFile "./../../files/theme/portal/background.svg" | b64enc | quote }} portalTiles: - adminAnnouncement: {{ readFile "./../../files/theme/portal-tiles/admin_announcement.svg" | b64enc | quote }} - adminContext: {{ readFile "./../../files/theme/portal-tiles/admin_context.svg" | b64enc | quote }} - adminFunctionalmailbox: {{ readFile "./../../files/theme/portal-tiles/admin_functionalmailbox.svg" | b64enc | quote }} - adminGroup: {{ readFile "./../../files/theme/portal-tiles/admin_group.svg" | b64enc | quote }} - adminResource: {{ readFile "./../../files/theme/portal-tiles/admin_resource.svg" | b64enc | quote }} - adminUser: {{ readFile "./../../files/theme/portal-tiles/admin_user.svg" | b64enc | quote }} - anonymousLogin: {{ readFile "./../../files/theme/portal-tiles/anonymous_login.svg" | b64enc | quote }} - dummyCircle: {{ readFile "./../../files/theme/portal-tiles/dummy_circle.svg" | b64enc | quote }} - fileshareActivity: {{ readFile "./../../files/theme/portal-tiles/fileshare_activity.svg" | b64enc | quote }} - fileshareDirectdocOdp: {{ readFile "./../../files/theme/portal-tiles/fileshare_directdoc_odp.svg" | b64enc | quote }} - fileshareDirectdocOds: {{ readFile "./../../files/theme/portal-tiles/fileshare_directdoc_ods.svg" | b64enc | quote }} - fileshareDirectdocOdt: {{ readFile "./../../files/theme/portal-tiles/fileshare_directdoc_odt.svg" | b64enc | quote }} - fileshareFiles: {{ readFile "./../../files/theme/portal-tiles/fileshare_files.svg" | b64enc | quote }} - groupwareCalendar: {{ readFile "./../../files/theme/portal-tiles/groupware_calendar.svg" | b64enc | quote }} - groupwareContacts: {{ readFile "./../../files/theme/portal-tiles/groupware_contacts.svg" | b64enc | quote }} - groupwareMail: {{ readFile "./../../files/theme/portal-tiles/groupware_mail.svg" | b64enc | quote }} - groupwareTasks: {{ readFile "./../../files/theme/portal-tiles/groupware_tasks.svg" | b64enc | quote }} - managementKnowledge: {{ readFile "./../../files/theme/portal-tiles/management_knowledge.svg" | b64enc | quote }} - managementProject: {{ readFile "./../../files/theme/portal-tiles/management_project.svg" | b64enc | quote }} - notes: {{ readFile "./../../files/theme/portal-tiles/misc_notes.svg" | b64enc | quote }} - realtimeCollaboration: {{ readFile "./../../files/theme/portal-tiles/realtime_collaboration.svg" | b64enc | quote }} - realtimeVideoconference: {{ readFile "./../../files/theme/portal-tiles/realtime_videoconference.svg" | b64enc | quote }} - selfserviceChangepassword: {{ readFile "./../../files/theme/portal-tiles/selfservice_changepassword.svg" | b64enc | quote }} - selfserviceEditprofile: {{ readFile "./../../files/theme/portal-tiles/selfservice_editprofile.svg" | b64enc | quote }} - selfserviceProtectaccount: {{ readFile "./../../files/theme/portal-tiles/selfservice_protectaccount.svg" | b64enc | quote }} + adminAnnouncement: {{ readFile "./../../files/theme/admin_announcements/favicon.svg" | b64enc | quote }} + adminFunctionalmailbox: {{ readFile "./../../files/theme/admin_functionalmailbox/favicon.svg" | b64enc | quote }} + adminGroup: {{ readFile "./../../files/theme/admin_groups/favicon.svg" | b64enc | quote }} + adminResource: {{ readFile "./../../files/theme/admin_resource/favicon.svg" | b64enc | quote }} + adminUser: {{ readFile "./../../files/theme/admin_user/favicon.svg" | b64enc | quote }} + anonymousLogin: {{ readFile "./../../files/theme/login/favicon.svg" | b64enc | quote }} + fileshareDirectdocOdp: {{ readFile "./../../files/theme/directdocs_odp/favicon.svg" | b64enc | quote }} + fileshareDirectdocOds: {{ readFile "./../../files/theme/directdocs_ods/favicon.svg" | b64enc | quote }} + fileshareDirectdocOdt: {{ readFile "./../../files/theme/directdocs_odt/favicon.svg" | b64enc | quote }} + fileshareFiles: {{ readFile "./../../files/theme/files/favicon.svg" | b64enc | quote }} + groupwareCalendar: {{ readFile "./../../files/theme/groupware_calendar/favicon.svg" | b64enc | quote }} + groupwareContacts: {{ readFile "./../../files/theme/groupware_contacts/favicon.svg" | b64enc | quote }} + groupwareMail: {{ readFile "./../../files/theme/groupware_mail/favicon.svg" | b64enc | quote }} + groupwareTasks: {{ readFile "./../../files/theme/groupware_tasks/favicon.svg" | b64enc | quote }} + managementKnowledge: {{ readFile "./../../files/theme/knowledge/favicon.svg" | b64enc | quote }} + managementProject: {{ readFile "./../../files/theme/projects/favicon.svg" | b64enc | quote }} + notes: {{ readFile "./../../files/theme/notes/favicon.svg" | b64enc | quote }} + realtimeCollaboration: {{ readFile "./../../files/theme/chat/favicon.svg" | b64enc | quote }} + realtimeVideoconference: {{ readFile "./../../files/theme/videoconference/favicon.svg" | b64enc | quote }} + # empty.svg + dummyCircle: {{ readFile "./../../files/theme/_dev/empty.svg" | b64enc | quote }} + fileshareActivity: {{ readFile "./../../files/theme/_dev/empty.svg" | b64enc | quote }} + adminContext: {{ readFile "./../../files/theme/_dev/empty.svg" | b64enc | quote }} + selfserviceChangepassword: {{ readFile "./../../files/theme/_dev/empty.svg" | b64enc | quote }} + selfserviceEditprofile: {{ readFile "./../../files/theme/_dev/empty.svg" | b64enc | quote }} + selfserviceProtectaccount: {{ readFile "./../../files/theme/_dev/empty.svg" | b64enc | quote }} projects: faviconSvg: {{ readFile "./../../files/theme/projects/favicon.svg" | b64enc | quote }} diff --git a/helmfile/files/theme/portal-tiles/dummy_circle.svg b/helmfile/files/theme/_dev/empty.svg similarity index 100% rename from helmfile/files/theme/portal-tiles/dummy_circle.svg rename to helmfile/files/theme/_dev/empty.svg diff --git a/helmfile/files/theme/portal-tiles/admin_announcement.svg b/helmfile/files/theme/admin_announcements/favicon.svg similarity index 100% rename from helmfile/files/theme/portal-tiles/admin_announcement.svg rename to helmfile/files/theme/admin_announcements/favicon.svg diff --git a/helmfile/files/theme/portal-tiles/admin_functionalmailbox.svg b/helmfile/files/theme/admin_functionalmailbox/favicon.svg similarity index 100% rename from helmfile/files/theme/portal-tiles/admin_functionalmailbox.svg rename to helmfile/files/theme/admin_functionalmailbox/favicon.svg diff --git a/helmfile/files/theme/portal-tiles/admin_group.svg b/helmfile/files/theme/admin_groups/favicon.svg similarity index 100% rename from helmfile/files/theme/portal-tiles/admin_group.svg rename to helmfile/files/theme/admin_groups/favicon.svg diff --git a/helmfile/files/theme/portal-tiles/admin_resource.svg b/helmfile/files/theme/admin_resource/favicon.svg similarity index 100% rename from helmfile/files/theme/portal-tiles/admin_resource.svg rename to helmfile/files/theme/admin_resource/favicon.svg diff --git a/helmfile/files/theme/portal-tiles/admin_user.svg b/helmfile/files/theme/admin_user/favicon.svg similarity index 100% rename from helmfile/files/theme/portal-tiles/admin_user.svg rename to helmfile/files/theme/admin_user/favicon.svg diff --git a/helmfile/files/theme/chat/favicon.ico b/helmfile/files/theme/chat/favicon.ico index 61e710229aaf619f58c5c0198302b9bb3f86fb37..844ffacca1d4ae07066a0c891ae2fbf73f57ef9e 100644 GIT binary patch literal 51122 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

$AX_!?XYKPVW0CBl-Ee>Fl&`kiR%Rz{-bL?y zrm;R&|3=j^MlUD;1)u;FfC5ke3P6Dh3jA5254y-w;2x#( z|M*d|EM42qWxR;?4asn_imR8M|R~_wdk? z0>eCJaT~?lYbh?=Zmz)jvq;P-@0Hx|Z5{$69V>8{$Ec`{V&8QfAMWZaa7aUP_p~Bz z+)iU|)enUcjuhBi$ENHY<-pG>c+PYLqkBh|it8g&f0XN{sve>G(yCve`oC6PUC-8M_W9?On%eazlsdBOk7es4`}{?v%IbD^ z976#p00p3cQD9^am8!6w9@+hK*5|2xp4Rj9dY|4OBD??f?0%BoZ!-Il6>zm*Sq^zW F`wt{av3>vm diff --git a/helmfile/files/theme/chat/favicon.png b/helmfile/files/theme/chat/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc431d83866069f326c65d4426848de548e3fd6 GIT binary patch literal 1488 zcmV;>1uy!EP)Dg|00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPRV53cD$#l4A6eRK3d5SdgET!*OZ zQwL7zpic0m>BB%oAuz32kY3%K4=rr1o2a;C=iJ+1{G%u>|wmoKi0_$a_vDV zHj!)82Chk)bb?FOA{1N6){Y13BX1Up&8&&Os=QzT?n1GdOyJ3Btp6)4i!%4t()Qe={0c`g)* z45&Q0xGmT76njy5f>C*bQF(&tgJJ$!`4@9v{fb|HTE?}N|BxhiZ@B}H>`LMBecN&G zj?IvcF?lTQ^h5zuCky_uZ9Mzpqj>F|r_jIUPDsUwygz?m#VZHC#AT{&WoGJU{BZsc zOq_jQY!n)4^Nt>#v07XOev`fN(u|dvp&cTZH#0Slg$v7&!orWsn3^a+B9Y7c_`UBS zjngMpo*!`%(q%oIHWw}|K^l?DyL?fexC)#;r4gyTYb*aii4UD&5sb>d)gU1SHP9&6-{zO@%G3vGLn!iu!1;<_Vo zc`B}Z5|yXo!jYIf6&IdF-xMJQzFuyVqsEv# zlbw?@<8s7RFmcUBdz-c@Yz*K$T~JxCE*^L&PCa5t zo5|Mxu|^(Q%|iv+${6|aYVT+`Vx;tWimG8KwlGcNo~ysJnLM6#;r4Ggl%y$8$&$Qv z)0hosOoJ0Szv}oeS$G7{P#n{Ax|<&mgsQfI$-r$~u9-Ndtyxk^qb|y6)P-W2Jj&wo ztxjxfp^1Ar!T4eXy8dU1Je3i8owMzTW4czHJd_u}^S5fx+TkX8;G8YT-z>fW0000 + + + + diff --git a/helmfile/files/theme/portal-tiles/fileshare_directdoc_odp.svg b/helmfile/files/theme/directdocs_odp/favicon.svg similarity index 100% rename from helmfile/files/theme/portal-tiles/fileshare_directdoc_odp.svg rename to helmfile/files/theme/directdocs_odp/favicon.svg diff --git a/helmfile/files/theme/portal-tiles/fileshare_directdoc_ods.svg b/helmfile/files/theme/directdocs_ods/favicon.svg similarity index 100% rename from helmfile/files/theme/portal-tiles/fileshare_directdoc_ods.svg rename to helmfile/files/theme/directdocs_ods/favicon.svg diff --git a/helmfile/files/theme/portal-tiles/fileshare_directdoc_odt.svg b/helmfile/files/theme/directdocs_odt/favicon.svg similarity index 100% rename from helmfile/files/theme/portal-tiles/fileshare_directdoc_odt.svg rename to helmfile/files/theme/directdocs_odt/favicon.svg diff --git a/helmfile/files/theme/files/favicon.ico b/helmfile/files/theme/files/favicon.ico index e481d2ab10f5a154511edbc96cdc3d9c423339d0..bbcf9dd7f610705c30d51e53a0276bd59784774f 100644 GIT binary patch literal 51122 zcmeI5&x;gC6vt~5@R$raQtP-L1UWnV$Z!J+nPiU9Y>kzNK$^s=B-C)%R2H zRS(RlQVaBFd0ElxC+hZHr9M_leMUx2>M0qwbGgzB52e0nty^SEWGiF=>`)C@C)TS~ zDu{xe(YS50F4-0t%KQqjeyn4=p!9QJMq_ly24pDZE5N#T=7uxjM(VRoh8QcKS6+`j z)_VeqnVPAeAa4M)Syy0XCQzA+$-8yy9%6uL3an?46sl5($dS`jl{>dp2-xT%atrY$ z$EL_g>qYocN7&zrs40KV)cud#;pa(|`YJH-`IB769#>y(>{%}_cT#(&-fqLYkpi78 zKWZO99VZkRB-xS2*yo(UHg#4+=@3YDA0{!kDNumbb(mx;})}{YAbHSJBJit zZc7gN3s++WnA=KR#XE--U~Yj!{=(H*0pq)}!j>|COi_EntS{>~e{_d`z)zrLo2XD&N$yTQ8N|EHf;Ri-A& zZujN zv)ljoWn=SXE<574d;Ld=)M=faS1}jm7RsFh#X39Q!zZoJCb#eXy=@zxb#|Qpo6Km^ z-1dII?>@UIk9c+z*z@eiooCFVI0QR)Kf{9^*iG3qkuxpjbi^Iv4sj>H1`v1hnn%xx zrbn;?JLF9HHGsI2*W5H$M)!jq*db@iuK~oJyyj8PGd+SG*db@iuK~oJyym94GP)n^ zzz#W6ehnb*+HV!=(v`!=YKvh62ifo8^P|U)8`$O-q__vu=6nH7`*fB zJdL?Vu=6zLMA&UCes1kq#p9S0VfV`ym#ne#IOasyZEyT+g`MXyC&G>gS!aB~+jicF?{Q1;DNp87t`o>?)DHltIC+6d5b& zgxT@`PmkiB0?cj6J-6ZUh+7LvIH^EOQ6bO!PI~XJ)0@nV3rW!RR|Y3%-u<6k$gb_= z4E%Mv9kCn5Uf*9SoSJz*$!)~0)eEf`(Wym)IOKP zFQ~Ws-g>u^WtCSab=JI9sGbvF%i}buji!LTuO1vH?s1dYaXY!bRuA{R^18o^`p-OgtIk5i>;>*MR ODKS8}f5jby``dr?+oab3 literal 50222 zcmeI3F>Dht6oy@a#KMpXF(Amu&>=HoV1zAOXIMd{Q&}oCY_LF92GmX+=+Lkr7Su`< zkXTwFkQk5}y1_yR5U9=N_+RKXCb{dyjh*;Tn^ORwASQEx( zhk&pYrsW*`#+MPZ1Y3r&xg{X_m5c>S8Gtxd*q+;T8C@eFtg9(f415aXSz{W|5r3=? zEYzVR@+-j_BhHi4^%D>c23|MeOU?Qjj_XWgkh(*1TpP!wQ1-mXu9+BC%^u1tVu`?iV>UBiuKc%NBB`=3i7}5{0_9}Agl9e1n-0DZII1}$ z)bu4O=8;RFDfI@gO0Fjzd?O&5)qG2e`Q#FqgGVFRiw?dK5Y4uION#mA5};>#WdtD_aOH& z2~F;E|N49}wMzSr;a+6T2)PBPS)!w87jWHm*2d&s13R{A%fXi1{*^o7tdG6lJM4EM zHrWFT`wY^nQAS^$i$iO2Pr>WgMNo9 zINeZV(Q0__1N1Hf@?Kx`4)1Xn+}gX}dvA?>5+DH*AOR8}0TLhq5+H#L0@3RaaqGd# z$SivLA|n%?HX#r-Hsgbv4@YM5Jz*Q3z$kTV%|97FVMgc>7^QBkHG5yWQR&87v!|Iv z8kKIWwc_ccjoGzX7^z!oMA|0S+*kaas}1L13Kr(kpk z1m+O)nuE9u>6So6p4cB7t(En;a3h zZZS4PxgoHuYj&tx2~%;ObHm$4RMDo?tJ|S=RT~p9h7$tSG|iH8m~qL;tPDB~fum=U zM5nYPCRiF~5{|V>U@c9ftaF%o-RkTNb`k<>7?irFW$7m8G3N0}CgT_@1eT7|ChrXIhbBpdiBf*k_PD&64YgBfk+AVbl*09JVFIHeMGKowAM+6SfH3fw9>ku!AtN zACez&Vmq2Jc} zQ|SNE`f8!Szo%cns#H_&Ur=g8@1O1O*YxYBmCEbu?)*#wBtQZr&?QjoepG6J^>jn` nPg$Rv`gN@5z3YAN{?O9>7y9>;-u{nVq+0Xt0UtUhS diff --git a/helmfile/files/theme/files/favicon.png b/helmfile/files/theme/files/favicon.png index 7e3a6cda81602ea17912cd3765ef1af7a852e3fd..3c0ce14d74e8276bf55bb26e21e97509120ac992 100644 GIT binary patch delta 1246 zcmaFC*~q2X8Q|y6%O%Cdz`(%k>ERLtr1L?TgAGVNIyx_5qM~X2G*1`DkP61PbL}&v z!)1=|S1(tI8$s}77WwgXOc+tXuj;Cc>TLSoFrLU}YEfA3E z-+zC%`hCf#36m`P)R%Iq)NlFf_)AcA*0-@#b@Rrn*XDaZ+T`w(E_);gy{hXSYpOSe(Xt*67!y197RJ*#qih;sW?T z-~IPt(w-&P<}sfXzM5B?;C^$8Y)xif&M`(qO{1K(eQ_{uvzps)zS+74OUE-AS8Epy1emR??ujFUnxK(lG#y$Rn zyYnBd-M-vG=Jf4de+9Ps*B^hi)mLUp{gZw7|JKMINxZpd(+_()9~J^$Jt zV^#l@_iwwdu++ZNg!4w#pyao%7``iwK}T(@T%9-Fz+oUcT1<-!R&_pG<8=zH7yQMBSm zM|*I(O~^Af7nM1OHqD%LoIg1xcGcs}U#(&s zDkV3V_*bSy?w7N+Jhg03PsIPppH9fZECU7<&r`{^PiSr+PB=v`|5d5Tq?O4h=A3yt z*CKY$6T6xtXX`(o`y+U+E+)%nrc&Xnp4sL(&-#lzj?A4u+ad76`4!>Mj=9V$`nGt| zkssV4h4KF^9==gxKDSTg@u8zae0#ZK{;sr}7T#e|c*T0;g9_Ad75Vx{( z{)+m)ZR^s{di>m@a+b#@c|yBN8DO5@Eg4e}jLY&({@K o*j@RYTAndg>Hq)$ delta 1221 zcmZqVdcmpK8Q|y6%O%Cdz`(%k>ERLtr1LZ-{t}R=ZS(JY6%Ne@+2~I}&arQFlRtWM$??g| zu?$IlOdXyY=QKppMY@c+j!L#Z>e(d6`6;_zY=tlDkAI@M8xxf`y#KIj-OIB)ogKl6 z`SaK-J};8H7ssuxFS;SU{@)Wz{i*iL8+I!fOVn>F%RKetam_k;3(@75-o?)5{_Xei zYjT6W{Acy^D=mB@)t8?Ae@|xFxtTle2Z`P9FMrN^F8S4*&fou*?#|D-7xdgG<}Ld! zuX{n$S8~=@%nO>XSy<^6`)t~tPm^|?={)WI%4p|_Iqg?cgJR@@p65)gJgk=Rx~#nW zpw-RupB@>n|767FzeEb?0jEN@g%*ng<^<01WlzgK;G-+eeB*4iP0p<*mqN95pA-*V z6|SEk`iEJLjg9+-{XCzGNh@=N|0>+uWg%WCp}zm1rO0--db>S*1%K!K_Hrteb-4Wf z!!el{AnVc1w^bGl#jHn5J7&&OThA9B5W_w*rTq4 z&w1!G=Uv{-`Zw5G)N-{T|Lm*TI;xydbNNlWzi!whczD~kM3pK zc#K6jeR9zbFRjy4FJJoF5V7D<-SP)=mF})%`A;@g_CKdB#|*YPoYklQDRD z-La5a_h#4&ODugST(QPmTQqZN#GOBr!l&#KoUp}6$U9hUZRjcH#R(^Ul+BNxy>ZBT z+TIMOQ_t$XUv?>ECO9pT1?G^=o0;7Yc2-Jhcx&r^Kd|Z1mkRO7w3|MBy8TNt-hAZO zp4UHFewV^sNfS4dBfMH!8ddLSU%J%VSajy|Qt4@BTuWwWv`Xhq+tj+|Ro6LIrr%3{ zD$G@g`y-L-8sT$$`lGHRN>a+_?Mzg%9zUr~T@`q_asE6%>C1x2lDQwmpLhA4<^Chn R4J?@$JYD@<);T3K0RXXPKr8?N diff --git a/helmfile/files/theme/files/favicon.svg b/helmfile/files/theme/files/favicon.svg new file mode 100644 index 00000000..c020b711 --- /dev/null +++ b/helmfile/files/theme/files/favicon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/helmfile/files/theme/groupware/favicon.svg b/helmfile/files/theme/groupware/favicon.svg deleted file mode 100644 index 822a7bd3..00000000 --- a/helmfile/files/theme/groupware/favicon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/helmfile/files/theme/groupware_calendar/favicon.ico b/helmfile/files/theme/groupware_calendar/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2cc7887c5a50be4e9d309443037ca3a42ec2dfe7 GIT binary patch literal 51122 zcmeI5v2xQu5QZ->LkS)V$_yo?3u=-Vpe1Eo(I!tooEZu#FeNk0#1#cl@dU1bE@{$Y zKLRB~62z`ie6k{+BXWR(ILk`+xtt3L^$%w&d5rfswBd&HHc0JTS&Q5|dlz zhnU{i@p3f%!|RtMNjhS?VuxaVtP}&qN%87ERyJ7GQ z*}#RsFh@xxR{~NaU8t^Z?yM4F=^{xBy{(R$Dmx9U@F#)jZ&lD-{TgTglXUcXlCil6 zEPVcyl<9Gs%bR94Dyp4wzqi?GlU<5HFVCOcpMXvj2u!lvNyhZKC}^7{IqQ3JXE3|V zMGOcGuC*u0QZHj*%;tEe+=<(Pc5K!Lw5#>v&76IiA z?kpZLUBO*UY|ZBick_6}PA3!=nmc0 zRZa8t=nmbXyXHEo8v)&+J9Jl9HO<$fJ9LNcn(L@;1a#L@-CgV*C%)~nKXiWn^c_Io zduqJ0cMF|Kt!J{4?$(nsyQT=hUA!L!xP!ZR5r{W)bO(3wA`oxp=&q&QeSh^X@oncH zzBtib*T3P?pa1mzTi@n9tb4MN?%v*iocOlSPoFz8R_yA&^ITm_b=No# z>z;(Wihm~tcjY=ocW$v|X3-tG^Vav!T}D~%OLT|s&|Uf&;5l<~vEXNf88*~RY9=+4 znwjvNIjf0f7t~B@CN-0qNzE*)ly;t)NzJ5YQZuQUwkDQcQ8THT)J$q7HM6Wz+Ieaw zHItf2&7@}9npk$#sAiT0XFezba2FKbpuyoTD7-;~!(C8#g9eAYpzsC_4tGJ}4H_Ko zg2Ed#INSw=H)wFU3kq-0;BXfd-k`yiJN^IZ8Sx>YyzR!9HW{b9bwDCY1Ug2BWIm2E z`}QV%s=VnC2nOwiA7xuVC-06Ku{bV!JZ*3N}^p@vRP&;ZZa_c?#QJ#xsd^v(Xe^NtN!=>Wve4bpA z!+nW67GwBFU@Rf`m*J((_sAZq!#84MF~;%;jOAMuNAEhT!l&%p5!(?v5Ie$3F;JX# z#5z^*b*)K~+3Z&GN1iQz&3v1wC)bCsWw))mJTjI-aJH)xPo-r?s$%HrNi7`L3 z^V`Nuvi{wh{wOGZx^prwfgF}}M_)$E)e-c?47?=-wx;TbZFuuKG?=M^^bNu7^#$!iadJ+#m ziJ0ke<;anRxk)lHF3p9Lh1A_1Gas-i)!jAErr@LC%ITv-d3Wlt|b+;F1 zdau{LGxeVO&pngm!xuOlntgx$UVBvsw_dm8V`iz+`*;-(A31r0x9I_gB#Q+zci6VG z%+lTg8+4MSC-&-cOFo?9CwhKSXzu2wYd(`}j+$kO6&7F7m(Ywex_oV6#&gAOfg3wM zZm{;_-QC>!Im0?&$7i8iH~j0~GcP^2=Sk;@wqC82pjT#Lm*?I1(mTE7^UZA>Gq=QU znRZc_@$$5@{sB7{ec+S+Ygecgx9OUmW7m>f?+rI(-`rx|vh8NONa)hy`VHmJ-a2%x z$^N$Wv8we0#U&?Bc`je}ZBwTFm#0Q8BC#pn=|}TT(&LI)R9g%*)c4*x{fw){vp9dj z&YY~1ON4J^|$}E^Xvap%FkZEJg{oczwLisos@s` zH$x$Retq1L$joOTU097GAUN&irTt&OmrvY&I$V$U&!0nY8M5=2O*H?%uUW@_{;`AW z|LFfcedzzf1KwZ$M5`v48C`$mBIh|mYNdyYdI-;{NX%N`3HdiE+rfW_`}6365lyJhVYe=;Qs{ha-{ zqLgE@ZvADu?MeN$*4s3lyUtBNQ@Q`*&iUI}69cUGT`Ua?-n{<9t{@f_ zr(d|uYAHv??p0~EkIwOb*(-5m+IipGYaF^36YgBR9{%>f@3i-fUwEGf`E&jhR|yX7Z=C$Fzwqjog1jZ%3b~TJ7o*&qPwa5b zXzgyhTexKM#(z5MH}^-h@+I|qrzBskJ3lq>&`#snsvP5uIkQ*w3Ykc6?zm{B86a;O zvHZ;SUiI@neW^M*gS3j3^P6 + + + + + + + diff --git a/helmfile/files/theme/groupware_contacts/favicon.ico b/helmfile/files/theme/groupware_contacts/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8c60831e6ba8db542359ee3799870b3fd2555e48 GIT binary patch literal 51122 zcmeI5J&fE$6vrnZQNoIXG723GBqfm$QVzt21d(zg2m}S$NE9FfIT`{e z;*NqtBB=P@BoTveG zf?ge~APi4N<<3xCqw%pmza^O1tSi-Mj*1AG-nzl|W@OlXc7N7D@qS3M^-k7$xb1(ngl4>h9P@BVfZ! zWS01wJ2oaIEt~M86G{JOqNe*irTrh7gYl#Ue-$Vkf0D`4$N9?*mi6-5PTD{3x7lLd zP=Wa@KiWSKb%Ib}kY+~~OFtI`wvmyeevkGnj`qrj5ENL{zDLGNdl>?;#KwzYN6AjI zOFjjp0JzNsWUrW-C;)B?Nm4!qqyV^e1F~04O%wn(VVCF;(kEdT60LDth26LwA*F;} zNVLXn6?Wr#gp?9?A<-JQRoIQ|5mHLng+y!IR$(`;M@T7Q7ZR;;TN|-kfBQt_TipEn z%6JWjsVhJK7M*|neeYtfv1U6Pv0L4~H}WlRe0wRk=9jA|c(`JzuWlYJFnQSJ^yZLbmL(y%kng4hm*JNd*pMQ zSN|`o=ja%GukA651)oEGtgypeMw{)Xsn2PEZTp@DpR>jeC))V5*9yP2y@xfDO52lr zo@u4+ytMLJB|A$pTk$)6{HgzkYJcS|5mO0Y1$bSlMa2@l35Y zLt?gm)a<@nm)CTA{*4c6GX%4S^OUCMJ7K4d!F?cnXYHvYrSqWRyngs2Ykit7zv>o# zbM}?DO50P6bxu9@LIj_+bl+xbrc-u#MxpQ8ICm*3dRHOuJ8kX*pUdC;7|)HiX$O_v zI=hzZA9C@+E?j!TPS}O3K)9BR-wC^L6$saI@jGExNde52tsg%f#qZ|czyHQ_hn!?U;+_tv|eXcbxv|*b4XDS5Xa|`dvJ~Y5FcTF~xj# zn*sC4U}W-s3%K5_^D6MOI?wgso3@`DOu8Q8=L*EagjqHZ{LoQw;&+YTMSAE(XZ*nJ z<6X_3=UIA}XwoIX&aSS%ZSheD{A_U3e(1peSlOX}+rps1y05D5gH5_{v&Zp1iPql6 zHst4b9BaI|o;P5eVS`ut91Yj`WG}63n$7QQ`<(V)tUclgwtY@BWb{2Yc4*(U-d4AC z@4yjE?*%jy(=FcPWeRNUIND2n4Zx>u2Ka_4i>mn;+f6oht29rdwYI%2T2o$^C+Avp z_%l=BW7l9jIf->h?BJ(NLD-S7oPHM~JI?+tB)ziT`XR?_Bjv_VzJAg1{l=f~LE zOs?M%SbOqK4s`U6 z>q!{bkw6Akb|_$#)>};)^BWzvu-*>#lm*Bgtj)q2t+MtJ%pCbz+HB|S z(uKpPuzqXf%kOV&v6jp5H*V7Baq$`cgtc3Uf1K{cTgGQ|CRJ*cor!^xr%(Z5S1675 z2ZWvXhzbo9c7@V-e?ZuIkEqZ9}0=hE?HO@{mEynTui>?_cxQ|_z7rOJ1x z4EW(uihYU_>MPKvuR=%berCdx%I#2`rFekiA&C<;fKIa%J0|*;<%y!v(QVNtjV-T@ z(rOmzL6W`$>28v~73n0Ywo#h?CV>*`NlK|#l}epnsa;B4O&{N`)F7R{eQUaxK7N~0 z*>pF3{1&AqrPJBvvnU`6hypjW0^M}w4BE$DI)6@kJ4heTX|J>Gd$#@0_7Bu$B!Lpy Y{$)%5Gf1+>{Zp!dxc^E{5chA_0hP;f!~g&Q literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/groupware_contacts/favicon.png b/helmfile/files/theme/groupware_contacts/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..492c530b025495a55577cffcdf21c8d11be5aeab GIT binary patch literal 2156 zcmV-y2$T1TP)Dg|00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP;(9}0) zc*O~Nf(GtMmX^jvdX>;Qm!^<{-klej-fh3{?98>d?%vMs{GOTl!SjK++1uM)m-)=| z%gk>bb5^1CDev}oP=Un&ej%-#cq-hVpIl7SVHX-{47}6KR`Bqy>ScwkjpjD)z#PVlPnQAniDbxS)uu z?V@wshooTSISr9|wbhak7R_o~Rj6T;SDqsd(e@+>VbeyLG43*ch%yPslg&Wd zR8JyZ#z}}eDU~{_@W75dX9Oiqf(axXUju1#B?%^B_Xg~=DJj!9ER{MZ$DGlW8zh*< zSfouENimZIdf&J7Jrgd}gP|L193X=WX+vxQ~V@cw`p~hcm&El`!l z>$2Vx!yPr@fa|0HZ1Ol;hMnh0D?Q!+5*Jq)y9_cgt+>_o519y?yb+8eL?cF%Rz{9~ zfVjZeCl_q;FfPf(IL%|7kIxuKTuhz8H|xMA4>JQC;H1E`kxnM4fn=@-d5rPIV3Rj% zKF>#UofHd~O(PBx3#SkltdYlYpljCieC5~H=r5L9IAN8C$kQbd(rVu3?b*DgaU!*DBmbl%I|32C5Xaf|$Oh@tk3dA+hL2vLAP8&?3&1SH zXKGFkgUiJjp`z@S^@!T=27xe5)Ufq?Pg6x`nAB~2hP8o`Lo!f#E|7on?QkqLR@&qj; z!^=s6Z$zHKh&+Q4c?Ki$3`XP`OsFMZ?$SVak5QDMMpDWF{k&UUx9!ztc0Z4C9?%Pc z%0qcq`*&%(lkRrT^AVpOqe*I;JwHaX=7pCW&VF;5Qb#)I#NiIQaw-2P3*=$89A#eE zf-Lh2q>~P5So-c|SS%MrVr7lmmJSP~)C*CCVw1))S35)Gay2lGaxZ3hM_Bww%LNh_ ztd6NUJ-u^;*+AOPt*5mtQTIE*?EyY{kk<66{=yKX)C~=K3ofy?GP(9^mIbny8p2Ei z1Nw)@uoN9L2OQ!67V~Dx#z+fTEsg3Ru9eM*WR!bx6r5<6hXbp-Iw%*kPTyN_$M>pi zR~&aCWU8fu*1Y(oc7a;u?MwEt7eKo7s^h(_uCMF}vL)Fe1-jM4rKjJcAK=1_OB( z2_|Ae-c1rr#KOSz81>)=38pc&A{L7w@+=Ze!h$!q!E%rUlStu*E3cUZlh}(N1Jlmx z+IL*-5+p<&q|C{9kloMQOM(d`-3Nmfd`R>~o`I+Xxg#t|5~561_Ai6vDXS?Gfl(!? z{8-sfF`ltVYiV#W#bTQptFUZ*- + + + + + + diff --git a/helmfile/files/theme/groupware_mail/favicon.ico b/helmfile/files/theme/groupware_mail/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..96c4cd9e1d56106457d051752030199483217717 GIT binary patch literal 51122 zcmeI5Ka3ki6vpR3q68}iWfVG!NVrHBi90%))R7QU3>QcW`<$f;jjb|^l{?c0asBTf+p*lp()qr(ky?V8R zD0niuZlCIi>LFE>>I$%atYg2R^p$s`YYeDPsiM@c0P8xa3@772I%l6M=2-o_TxT4! z-We!Lb<=rP)1?7uWjRMRK?2I0gT3{!MRx($xOX?vh0y{~xlDUFiQV&TH z*h!+5%oXgCdPs`EP7_`Zh|4$m1oDC($6&b?=KEEUkW-0!LA%T=EIy^g`dsw zT(qBk_-un+adr!jbaAu$LU}0I<+F2nq|M6J4&k9-x0>B5k90A!`+R#S*k!XT>X9}t zSKF6|g56nmRXozg%@pS3fEpKoAZ$JcM_hv%>AhcCXRPk))@9g^5yhlj?_u8K!8C+0Qd#_YIWd_|vp zF;4Kw3)c0}nAuhGNaDks65JO2=#}SUC=ZR1U6uRDghyJeoD2hbXl(3i^T<4Y0X#G& zc0N4PIqxj4K0P!BcHTYGV&!D%$wRx&E|^E=@$=xJU1ryWM>^-7#kEck?IOFzJ*1d)Z#mL%)CfgS^LX z>u&e{{milnI-f^2&98!omK}G6{aeM3pBJxs9_eLXm3UuN@z4rPiXPGmcBP(2meAS@ z>k1xP6h_JY8fVu^kIZ|2w8KLiW!H9(%$v6jduSuLqk$L=@@z9{` zqX%J-Gj1QWO{OYtdDQp)W=uf?L=i} zWxofr&|;0(M%b;9FAg;dfSu7oS_|x?5i|LMozX&C3+$v3Gx>s@(L!1a?4%Jh`GTF% zLRt&#q!Bauf}PPqS_|x?5i|LMozX&C3+$v3Gx;(*{{QJwC|(&vj(qe#xf#2@$PvVwbbrBaKKCZ^N+D|G6Pw$d-9Xd` z;!SptW;f?|FJ4JRjC^^IlIBO*W8G^v!o)h~;5Te{`q5^$lV;_LNu9lD6>8_e_gtK^ z`e+DP``W=VbB)Vl$NiN0UOUo{Hj7g8EzOct+l^MaW(U5TW>F=kA@KbtJTweT)_LXq zWJQM8=)4oEDD^8ap;KO~!lleHbPb+|A5xuAMX9d9gbrmLYoBLDc+z!yR5z(^Q{6?) z)qr){q}nT@@2Y*YUT)pcr*v=mU>U1Tj;AJmisPY)ALrPFYJ+0>V+sY2Or+F1N?E5@ z>UpJ(?Cs~3n%eP`XXCNG{RySg@zCD>m{NJMy*t`a017~XE-Ns!2Uox!$M*gXzn$9K o9e$nm_q6|~*9TfMOrapXzMNTqre^oq`ea>Twtkrt%+|O608p_)LI3~& literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/groupware_mail/favicon.png b/helmfile/files/theme/groupware_mail/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9d0191b0e0dfaabb0606e8afbb018e126a5437 GIT binary patch literal 1561 zcmai!c{mdc9LMLFGiSqi#e$jz25ac&-?HDKF{}fe!ssy&+m^P!Nmz7C7~h#005*=$kS)|9rnv& zBK+jFQ+@a)ejVu%2>?hQ{AB?EB^S(J3PhekoB~w#s?PHV;mbA{8vvjxRdUZ42mk;p zQKxO(ZVD{rVS-cxz#aQFdisW_vqweYX?oZj3jm(sO`6vsVD`(j;-RNFK3OvY8W0K&WoA2ytenL z$MIE-MokNDf2AX~{DGB+x3_w+9aX|8PIp|awR#3Of!RoS08V=WGrUw3A*NrhE~u}d zzYeKRRGUYsp$>DfBDIu~15e`71PJxf?tSE1E5%IoabQwBIsqawZq|KcG@f0>vSV0y zes^q(8P~;^W8uIBQ7D#*!qI4t$_ITdqnHbhGHH=i_f4F!-)$wJVhZubN zH0J@&Qi0ej$aK4U$s&non{I8j!F|}Htee3giIi29rt6X7iz1&X^_GmqYd$)pnqx`U zB*VJa3z7bAv+vqh@K(;@N{@BG|EX+4WWwYfkG3#4(|5;&ZMt>z#hkUYb4&K~%29S% z<80T}?+f2mD!uiA zI+5G>;vP?XK&rmCI)vS}F(z9AuRgyBUOc3zxUDRn3&X}B$cfu?GxrJ?5`uHw@Hw6c zYs8gGJS+6KgbPsb4}A$1nHMwYmTqY(v>xO78<3`!lbhjG78qj+#pHtN4un3IABSD4 zta#q`&V>XdeFk^E** zl(zje8=}r&e(tJ^*4~k8s2wsekG^tz?G}gFS7(e{NOIr`aqaz0+(%&~@*uLH%UH!6 zifeiAjhJNG_%yZgB2u=L$bAO`T<8O%QF`{pY&xpU7N~@EJL5>9TlG4a+84Le38qO= zImY_O`Meb0DmhvPpSNBzEhEKs-Z+@|mFt(3(pS!=6Fz4BC8cR!10q99y>`CqZt0`y_irhWM;~Lu6 z$daK?U&EPaQv$X5sOt1>;t9rn)!wsgn;53Q)1^bCzIDivWX^*B?#s^x$$lHus5cDQ zziPY-p13XZ>%cNrCMi9g-#X)v6!z>=ek>>_J?U(!R8u35qF`I%h(M@_3O4|C0kyc21`&Px&PN4Vpvj4FCWD literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/groupware_mail/favicon.svg b/helmfile/files/theme/groupware_mail/favicon.svg new file mode 100644 index 00000000..c7c03a35 --- /dev/null +++ b/helmfile/files/theme/groupware_mail/favicon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/helmfile/files/theme/groupware/favicon.ico b/helmfile/files/theme/groupware_tasks/favicon.ico similarity index 61% rename from helmfile/files/theme/groupware/favicon.ico rename to helmfile/files/theme/groupware_tasks/favicon.ico index f44c8566b4cb99a9410e966c5d0513015a8f06a4..e29df6e8ae29eef0ae0ddc09fccdb327c5f7752f 100644 GIT binary patch literal 51122 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 diff --git a/helmfile/files/theme/groupware_tasks/favicon.png b/helmfile/files/theme/groupware_tasks/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..95593835eb235a9e5048b18ecb763d667622cdde GIT binary patch literal 1746 zcmV;@1}*uCP)Dg|00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yPDD2c^}i$2|!~3 z9g%4+MFRW90+)$)9h;W&LUB^to+Yr~tWXd}cL{74Hoqi@%L?LQy444}J41p|B zY}E!fg-t%e<-;8US*6f89^6^;mI!2-rrNhHFC2io1hPy%^yIT0Hu+5nmo9;9*548PB@!#kAQ6)ldy@I6g$a_JePot z^g*7zxRL95AiF@G#Xz3LK%T`wp2a|(#Xz3LK%T`wp2c)gO051|rPZHmWAuc~zt3d68J9v5OrvbQThm zVDzfp_@YYhj{M(JTr2Lb*XZiy3SD`1E0hZ2U`*cpbd~0=R454|8v^5FM4pJ7|2Ubr zI#LTidSlCP8-W_y@}#!timM}?oB3%ozjYYUmUs2-Ei%cCnJU7kB3ivoX{%H_CvjN* zrb1(vI`=&1kKgQ#uTMVJLnhFYck9P0rNJWCz9@MYPJd^mz$aMT55E@41X^KJ+Nd-L z#)Ikn_CZ2R-r8z<7dXw|J}79(+e|TPZEg^VAhYvQ-Ms`N(301GBGEH=lsIChLw2Ci zlJ|6uQp3$*vN{T_p+fG34jwL;pApFoI*~PRX!IF+u<;++#?ju#$P`-g^1PJuEl-V^ z?zjw%Mc2Bw-hYV>J6f?xYRAa=PBMus)M9;44ehHm`g(_d!A&uF-R#Y9kkOVWwNEa% z34vpm%-#qG9V78cF1W71b5or(b`iBM4#pany1=;YRq(wo8a&3)GrVZW4FE3ws%Ihl*BcEujXeK z?KK+%T4O|>hzqiOl5N+M_E1v2ATSC_Mz)YqRL(T=Y_Td_7v$do*-u=&^TlnT=J{ke|N8AT>jyo9ye1R}uPl*MSt>rOEl zr2hng2=uaqjw4HGKhcsG>`yU|+!V+XibiXwFmS3P_C&M_DmTUCCohwY$T-gwdMRFm zj$cea&O^4nNAcW?SVPi|O;L~Bh>L8*MZSU>+VZ64jT%bx5^3X8XzNrla;45q>2F)F z=Q>~~wK~RbbIDOi8baNiV=PVVFkv)C$x~}Df8M1mLGl(v_y>z!5SIYsyT@c#*uZd? z-vgB;qqW<$ra4fNBu|l$?SJ{R4#K1csqNbgh7m}XOcQkNEC%u{2J$Qh@+=1OEC%u{ z2J$Qh@+=1OEJoyc1Z>0;dG`s}h$l}#>f;yp2-wE44##n%=6M8c!V_=x4$JohY@#fG z>hcx{*u<>-*-BSLgq<%(KybVC13-k`irJL2&jFTXS>!3J7-u*1hPz_ z@t-DnY_&`fm{m&b$7_6}<<>0@pV#;>P9Q5Ru((%tzS&Nm%(_VXXD0I<=&-`25Kg8v z(Q;KGJW=8+#((>Zi~w4S6WT5b$rr+^iZ*b6kT$N^PMn~$U75qEOFk59%0W^ odZjKwqzWDd3*hCw+A|d%0_EWDo5~(7yZ`_I07*qoM6N<$g4Iks;{X5v literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/groupware_tasks/favicon.svg b/helmfile/files/theme/groupware_tasks/favicon.svg new file mode 100644 index 00000000..db73ffed --- /dev/null +++ b/helmfile/files/theme/groupware_tasks/favicon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/helmfile/files/theme/knowledge/favicon.ico b/helmfile/files/theme/knowledge/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ce05375f85363e10e227a98fed086b8cd2f37622 GIT binary patch literal 51122 zcmeI5KZxX19LL`(Sn6P5d0c66;1pI0?v`4drB~i4o`M|gVxgTo2Nr_jjg2CxyEYc? zRdR^fI3Rc;!Y$&0g*bzDS1n?3%%6?FUvAzclTBtaAv5`YC%@m`+vL3@FTeNwP%ASZdw3b4p)$H#tX3N?(du`3k76t-^3J4wOEdQY^;G=atrD zSM|<7u~f74(@r~qwXIx%y`?}Ub{6jrSMH&mV4ebp2_(6y(xJ_f^Hg2mw&PsDCOe5+ z7H{igljlr_dH6|3mf!NIx&D3T=09;q?;c`>Yx@mK#w70O`Ht!}1 zw37U!y>IGJDA13y6OS#=QDB=oIn8_0(wVl}3WEY2AA91g&6fHom3l9ldTac zpxkzd{54l21(e%fRJAoC1(aKx$X|0cQb4&GyGReFHDkv_Yt~m|H>(Fz&Db%~n)P+# z*!_9?hv4V;J`KKqqaED3{93rwy0&kaZ3Mgfr~ih$KDoFPeDwI!nMJoNN8Nt|jGo=e zSKkDSm?e4Y{(2m_QM1z+N^)7IuE!G_Ejx{yWjJN+OB{cc?Ed-j*HXB7p4uOwQL@wf zN3VMsOYM))=-8DVbDlk6?9s8)=Qgi*nM>`L%;?xH`#g}B?-x&9CPNp#L!i3g^0Fwh z9~nHVxV!h;A1j$JJ!kEo$f($@>ORG@BfDQQcCpVtjos>I9gDjeZK>i;^UqzP{rNqWT5QX*im8&oi=vHj#mL*&n@nZ9j^ksp2No7_@|QqrGVmvWHUJ00#ioqLqvRV>@?PpxOrd3-~EEd4~pH{>3_lC(#w$S)Gzf9$e`E_-~1Sp+hqP$ z|9}jJ-Pzywpt()wPMOm|42B(g%z1XhSKkLghw*(CmYDPW)L#IDh&!}r0?#OG3G&PU z!EW&UTNJr&%JP}(0AW}CoEbhB06m9K`7H1WVBV}e?#5qtxngd@RQ;~lDrd)*>wH|Q z-xXWs>{y-+JTt!>zI3Bvbk*lO)xhh)v@~`>VC)KqZ}oGg#a&T&#%{s0K-N5NbEeIi zMT1U`t3K|)-}_|7UG?vSDraZUcZDOba(1ZSamb1{->!aFY?ZUq@q0a(mKAf;(?hV+ z_nA!GK;FMXuw(l?8sKwin7C6%2A5vph&}NW#315MwP3m51bBboFC7?m55AiT9(xjV zK;O}XVW$@pdfo%cb8vCz9U5N2d?%!Sff-cXsWy;vC)Ql)FCjQ~A-~^yIQN~(P5c2g zNOr0dO6~*v`yYQ9!Lkea$=^*?_S`4&2Jo4s=ajaDW~UD8d^LFX`g)(+<$R#?WSk*9 zyO5v!-P`cm2W#P{=K*?#i?d3uQ?T<+hwqD46@$_*_#EkF@JlLo-s$m?e3$x#x66q` z=|}q`G)i_}XU$2Y8(%KZQF!Tb1UbzQHEl`FEqS|MX^j3MjW7KDW)|3ActRL8(B)iHYYu zO7H9I^j+nqCK7b&D+A@oI}gZ(?3$D#sISva&u$WXz4}T)HS%7Z+k{<R5W5<>4vkZAjUcvMXiZ%0dlPr)?>X zJo?VtCkUonw}Ladx4b{CyKSxaqxxf7Z%6fqwH{U7mel26WKtPLHRs-OF4nzs&pCG* z-+sZle!TwZ`Fc0L{SoJq^>%#wL(VO#$9K1NQ@|831vXiMc6@L-=ErV)|CIT*AK#ub mUnl4HlS(qboXbD`X!kHb#ZD0Buc(7Czx@x95x-CX literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/knowledge/favicon.png b/helmfile/files/theme/knowledge/favicon.png index f1509678d71cb5b5a5adcc828d35a686a754d32e..058724ac1e46d9759023d0caa0bd3aedc22a2c35 100644 GIT binary patch delta 1631 zcmV-l2B7)t3;qltiBL{Q4GJ0x0000DNk~Le0001Q0001Q2nGNE0OG}-V38p-e+Cmt zL_t(|0qvbnXdHDE$G@``3&x}=7(v^bse)kQp`g%+huyshje^xiG?!+h#6RG{60x4F zsW&milR1dmAf6f_^`Iz1HlV0zF&E>pqfJDt(55AVG}-NYv$M-)yPMtaX7=}9c^~*? zCc87c!+hqw-=F!j9$F-y&v(-#e?^6-K8$(u(dz`(e@dI5z{E*` zJxo=5<2rd!u00Gx5}9gs;HI=m3-~lS2SY09^8R3D&_S(xRh%wg!Y1c}rqk%!0LM#V`!sc@uCe~;(tL|JoiYE>q2 zLPg|pefGil2BpXx;(`x|>DM>HXdXJYgJeQH;t#W62{?XeJyvn$a7sS;>^jMWctp$N zdhMNXM{a+b+zS4_HxFG6zh5$9(^#wOKIt{5^jM?iat5=W@SfRk*_|M6MZ7&u{h~bSA?T4ds;^H z$&e>}B%=~O4J85R@(L$Wbwphe-d+i*)44pUqZjoEmfU9xf9LX+e$bUNiv+*9Kj_>? z-tRgi?+*bP!+o8%3YAD0>vS&f!U|Mk@{E=+d5Uo^ucH$x=@4+?u5)>J?1M@qTy^bS z-kp1zdf2XW_^NByIG5MkuTx&H$piWZl*;RebDYcL%glTB=@Q7>%y%2PMnqR3c|=!_ zMM}01vDf+@f6*0rL&szsY%=5xcxviC-cC-N5)hNG_|6;+NQpW|%$8_~zT{9s)Sa}V zS_-dB?hrBTRE>@vQ8ooxCT8A3z)=2k(P6)X973(Y;jmU_0S-oU+Jk4`as< zVmo>7f78dI5tZ^d`nF3Tf6o06_COkcRts}k#I)09(QCLihfBI`Fg?+YWu(3_Wm^{UpJjIwi#jv~p zhDHLGcL|0@0`BK^)67K}+Sr}&JdYzUfT4+iy%ifQXJBX|%YTaU=3r=IhX0gqJ*B#D zo+c?6(&3c3pJ&SZc{4CHFj1V@bkny*pLj}9$5f86Ou&##y8NF_^2llyCQvF9V9 zf1&ELGAMnXqR9vhDa?_$rz&5pC67m4xc<|Bt$=7`PKS=Zs8t4 zRdGzsQ$oB#6slGSx`FGsOf7LtL(hkzH0q;}MtvA@lSM&Xw%&pbos8vHPSn2`g$-iI zMV87a?dNnO;+UqM%tn!zqDh8I5*CfEH4vb1Qedu8Vdb>^SiPua%B@l#CbAI%6i$F= dx2n$?;Tk*q%??q|>JR_`002ovPDHLkV1f`DD1iU~ delta 1483 zcmV;+1vL8p4C@OaiBL{Q4GJ0x0000DNk~Le0001P0001P2nGNE0LEJ;`;j3ue+7U^ zL_t(|0qvYmXdHDE$G@`;C=rsBrg$;BIaPus6)Uvn&;&(EFCqq{7yl%96cdW#$s|2_ zk!ZUQt(7>2`gI3aN+e?Ioa;nb!mQHbLgiF^DlsAgi5J3V<$V< zk#X{b_vP>{97d)j^K!{ITjE4oRu0!BvTzvDcCJ5Z@3xmp9j9gCu#$|WBchCpv+Wif z3mn$0OEPX6juoPDb&_$KZCN-LC`!g1&cw6)SvXecQD<5zhv8V`go+!4V~r@|vT&?1 z=;CbB6G%fB!ZAk%j!9gce^FeVQCyr+T%1u{oKZS(z_@!SjAA>TT{2i5I9Tsd^WxTS zl(2F&#M)0G3TyR-q?;lyz`*GMCtsK2Dcd4V4!}1a0+;7Ev2-cK`orc<|L8LTUKW9) z6NltB%wbAg8p5hEHkrZL)FD{Hj5sZcU!O1SYQNG#Gw}28JIrLCe+hAy=S%qR!X{dQ zmF%PMoGi|ju$XI&wCMG6rRc~mkGgBsYH3@qEAkfSTK~FxfmU3*q;0*v$kUDxE0k^A z-8;ZXL;r$-FP1u@@gEzM8F%5GM_}R04>zM>2pe?bv_$S#m%kbGTo_9xl{hVt*B47* zW9d?fF6*eo{d|=xf7=q);~5(!sKhPJ^JQCtW*rkW;?{12l-ZV`S*O!(EYOHsxx$-m z2`g84-dHr^>aV47z;uo@;%*xd$8?Sq;9p*bI#tN5ciZJak@8!0Sa+?F|5dQaTPpAxL8@qf50i8bEFYxVP`SZN;r?W z)BG8C@(mZa3oS#;?VPr4OjUuZK8=p^?q$@^88AU5?(9T{HtR+wxY}TFek3NH~sdg`v}ZoPF&xy^u_f(@12u< zr@J>@d0mph&mMDeE#df3dKdcm5KLlH+zTQujjYpbe|zaQoBcDhy~?xWndrhd%M+ae z&V7=>lbtY$S#jFd>4k4bUL@_)O!PafVtxhu!98I4$5O-dm)a2-9k(q_IWSunbpBH1 z{eBbpXJhA|q#5?KOeDYZrp+E?H4fySlfV89@%KjgwzgqiM*_2LSuK3CkWqZD(kL#@ zC@#(@e=g1_F3u<}&L}Fb2*(;l7iW`#id%(ajoT{jIvi`PddAr#A5E3Zbme_H^uVz| zAqay0WH@jUjurCyCCNC=w)=1_&@UMm^(rAZbV%S?$IpUF(;HjM!Ex5zg12?76eLCx zaa&Vfan{YkVP!UvrtFxjlm~L~lF7(LakH@fe~zjFELW>fvV!Py^Ae-*=!$L9!KK7$1duw$H@;(%Hac)do)gKP*GFywXaD-yF;bT z%gSL!;ypO~iB`CoT3NQ8J#FjVCh&|z7ET%@lOMT8ge5e+A6q02qulcxL|LMS58mrj lA&f&ie!85dJ;pqm;6IM&wRNS@VX6QC002ovPDHLkV1f#p(JlZ0 diff --git a/helmfile/files/theme/knowledge/favicon.svg b/helmfile/files/theme/knowledge/favicon.svg index ff6494ed..3639dbaf 100644 --- a/helmfile/files/theme/knowledge/favicon.svg +++ b/helmfile/files/theme/knowledge/favicon.svg @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/helmfile/files/theme/login/favicon.ico b/helmfile/files/theme/login/favicon.ico index 041f0d610ad24892158e5ce0175ca1c43979a4da..90f0b212cc80cc11e8f357f2709d517554b37f54 100644 GIT binary patch literal 51122 zcmeI5zi%8x6vxLPQNmS}5hX?#Gw z&~TziBrFt5#1)7;MWO%+$pr#*zn1qM-`)+I-MiV@H@h>Z_maup%+AideV=`AW`9Ph zHTtu)rRd+M)c#$io>WRbO^J%suar;@dAF+EMt!s?^(l$)TL5-#JHsj1klI|QBtFK^E3d^a>|KDO zR57*F$?HJMyjx(q6sSyP((cf^hSI?z3mj&USY@d}iIIz}THm@eD`3+~q?Y(weQa!c zI<(OEFAwx9n2?1!nHu*{F79cF)mzg(5#ymJE^=Kw%VfI)B^1+KPvBw zb)v99-(*J`%QzPWwwaQ%agR#&W~K5Y1`F(^zDLSRyo`a^T*ou8qikzlB)=lE0Jv?| zrSJHc2MN;X+dK89?|;<&PJa8nu3fF8A8_0D*%9nD{Nf}Tyz^l)cyqV;^xnQcZYF>K z<8!y`XdB!*K01PJG_w$R<>^4j(un*qVgWaHcJQ^q?&r<>SRS)X8IG?=g`FMzEtvS2 z;Zzi}Bjv}=E*5{wa*Qy3va%bW-j5|MYXz zKBxK7+%qC!V;A)KfaRP8{BR6LB7E#VK8oM(h#ju^L?UeL(lI0U<>>Zzk)YG(<=|IY zVrQ1>Kcx5(iHP52#zJ9dcg-316hxdY(5T-DJ7;d#P}o&6U!xlfyGG4lsdHgh$$X7& zEbJOJf2GcaT_y81y0Nfp)cln?7j~7**XYKPyM+^^cPAo%0-1)?Os+%CIx*KJ!{KKI+yE%;-?qnLHeRBd#_S zPlcTWue|Yhw0ms0L@hss9TPk7)INCeS1sVE6Jf{5PWvOxQ785A6L#F}&|W?Kgq;s| z)aLM&_kG7sVdse*;-}~Ni?H*^4*WcxKL|U|>@fHAB*M-!JNTZb>n|(GZg`EZA>TT# zmTrEQ3|@Gf=NdR&Kl30f$&Pc5FnREYJ_hu;TLm8-pZvg$PuN*n6myO$eu(=I%p&Yc z7!=n_s_-k(l}%M)XJaL!4r1uw>dQ{!AoG1cK6doolJtEH+ojEO(U@bG9cwtpI|JM7 zC)zKo6Y4YT#l{ZrVAwKC>&40r5M6wa`8pXJJA5Z0Wn#OGnH}aHWqptNJe`dlzL8+d zEUgzaJDhKqWrzBV!p06dm3`+tYIgLz(JHaizIVg^n{UFdk{7c29W*KPtqx%q7CX() z^7}@@E-ZRli`;q$?%h-S+e;C zaERAcuwS^owMz5MlojVv*cDoneV$p^lj90uS70 zB_3cKMp;dE^uD7{(f9Bio_}DzcOE=Dr+a1eOu0|Ny`0kVl2|i8FSeTOU?)%Srn=rg z0BiUwqXf^+^*qYQ`y5rc4W4Cx&M$a&`uQG*u|>x;ruT86gH!A_^k#nE0qz?-J1AM@ z*{lJ*-w%IriC1{858rt}8!qFUxs6Nz*!Kkz1-nYI$~g8-Th{rTd48GVjDnqxn~u-b z)yb%+FAqKkeo?T4qE*M6BD?x7N6hsk(Xfls_h@bjy*)`Z?6Ch%*AN>V?>xRY33Ein z4hj!n{h;!k&v%?e`CI{c?>A2o4{mfehB zNd8CXFdp8I#I6=elzx})4E%5SM)~&w%KFl>`glj$(>Ywat9i?)*`+&#;~m#}m)V$o zJ@q+0?xt$gy<7=)FdBRi-v@Acx2iPLW|^hO$jY!wcL>YzH>a1el+zb!Y#q_JA3UG4 znY*#yU#DO@DQ?yR+gVn5c~bG9 zSv95ij0FzzI2D!Awlel*4A@Y%aEvQrhjP;Opdo#w+e-_S^0zEYYGOwW*@y*pvMgNk zq&eoF5<}}j2sH~gwi&Br0h`R-Pv?=V!?q@bU zsoxf*4N6;-b|fve0qnFvsbyo|MRk&7wstL<(A@IhSzc`*-=F87K)y52KZ^W3tJWw_ zf9FD((LATr4W*3cm3mI83v>MyrTS+6@rUzWbNypVW%C_#{Ub^(%bV5Zw^%?dAQo6< z3v|q#vxtvfvwlvz?VIa!;&nE@XXAf%e4rs?E|kfRFAt4B{dsjgJ{cY8@oV0I9^d{0 DwkA%{ literal 50222 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 + + + + diff --git a/helmfile/files/theme/notes/favicon.ico b/helmfile/files/theme/notes/favicon.ico index 57bfba0c3d34101005773bc781b12f906ed633df..e411ced48cc40074e2c1cac977bb48c2f4e43c63 100644 GIT binary patch literal 51122 zcmeI5v2PPG6vkbU7$IU{tQZ+Hup!a@1I!(p0Wl%9f}IA50SSqQ1qrEAJ23zg5)y2g z0Kw1>bR`iZQwIh_k{<7+xtx2wOP#xm&(Ho`UUT;O?9botY@ZSWN-fdP#)hKb*VWD! zrLHNZZctE>`boj%oSt;YFO~j^qNqW!O0h}NMx5&b`^0`VDg|NK81>tv=ujL`AQg9j z{bL`ShSnFZMt!s>`V>gjJHWoS3d6~{klJigV2)MKE33sW`<;Vgu3~DZoz(%#7Vg02 zT%b~wN!{MU6{3S#4(z3n7-gwJtdX-^wRi5o2-u_&$-;cI$Ht_mJrjP^5cW3{H|^J% zx&M(Iex5{f*MZ#UPm+v1&RuS-tedrVQhCd5*-$repq1uF<$bs#!hycdjuc~`6M=0i za=PzPNoQJ$0|^dv;<-m+v0h3bmS{X+c9d--MK}`V0CQUvq!&^X2bkMtlEslA2bf!1 zkX}el9AIu>m-r#+2<#-$I;|D#PWvG#2X>NZoz`lV-Qnx^(YrhMybT_o#blM;*Qc+d z7guk38$3RX3G6Dom%vW$yaYS2GhBDEW@61Wx>fM3Vq}wPCCod_JJWjw^{R8g>b$E? zHd-PFz)tRM0Cr#}*8#c8G4H@mt^;zFTb*~uzkWxf&xfT#uGN(*x5{q#{B87ad973o z9=xpF1fdOzW5?{lZ+y3jWCwn-*@2(k_f@Lc@6!8a!0V^jHB)C8C_gXQ1-gEE!!AI6 zUa<>|pLgs6;^!s1K=^sfE&zUBv-6yv_v}387X&*``31wyLw;7-jXr)W_1PW!Up72? z|I8{o{^Vlxrd!&7@U#CJ(6~qNi)|?TYJJ|tf-(PMCknsT#*P((Utw;1VXf>~0Qj*B zg;MS8ST*>`We0w;*@55O{G3=bb=6oubvI@nJI9XIg5OML@kuAyfnSVg=Bu;pT;a!m zr_|BpG&@)L@pqRTOwO}&f#2ZnGY8St|GtW;DRn=;93TBLm1?V=hzx=T+et6C-&nl}08~l!c^s>6HyG-1(N|s@Z z;kkzFNWnQpjBNxGM@X+ah55yaGRr7P48xPkjc2)5cz|Bi`W%&u=<}JIT`~-3H zn%%tohTG15PRB#ZO5W{v=|PUazjEt-{&yhg9M=(;yk{3P8GZU5@tQbTdwddf%w>X8 zFzf^~%99RudCs_B4tDM{%2Nn-dCs_B4tDM{%2UYf`2VLzlIH+(Ta_mpiYMF}a6+U5 z4MmBR_e81>SM)w}<3tv8!nHx<$U7(G#_XCRM-Z;)X3TCf_j=)4A!_73o!f+6OVkL$ z728U)oABEY*AfvUpFX3c`H_0;du}51Sm){;_*R-lkvt87pFgpN+F{8)&wQRN z$Z(z7?NK0A??8{5Tra|9o@=NNo`>5MJqo1a4)o|!_ObGLX2O&DZBVRGY*1_=&h>zO zTA^r|_&cjk6iv@AMaT4P`FEOEE1d5q`74}nC;5w^7JQ3lo=*Dr5-7zHLuid zrH=IT%S!e2{N=Oxu73WKQt5nKKYu}~^YVIi9K!)P00(?_psf$iV14ZB^)uGnzJ5Mq ny-u(1>GeOoKhTzuB+8`smoxiMKdC<6pR^9f`&ZJycz^p3admiY literal 50222 zcmeI3F>KR76owCh#KMpXF(Amuz>pmVM%XgJ41x_oB_vpo8a5CJGO@N30}Rc`g6M!4 zSYQB&0jYrv7CJDXCXM-Dshe|S=UnIc;*0-7ugTfxchBD^-=(xQ<`Dkfx@GXSX->Q| z=D0ED3<8JDH-sFQ)_Ak?qVgq*q84Ha(L;Pfu;n8ltc2MTqNO6kkp%NJ5nV(d!KOn% zSPIjo1OI_fBWDA#ieM|3fcR@1SWwCZ$kRq_mRl~fTLgr4J4HqAL%5#Lm<81H+iq@A zy8}^Q1JUzbC#RbvAP#b`n;1)HlMLr|q?hNpLvdUi=Vd5+-l=OQE^B9B$}@8&&`x{q zP*Vf3Ip^9qeKrAcGqKm<7}v*aW>qelEjOyl%MZ}VDjxlV?;&(Rybg|cdLe+$J_vQBzS z@(86zZ=sk<)=6(k9-;K;EfiD9I_WLRBa|M!g<>jMC%q+kgwh**{~3+G{s=p84{Rhr z0wh2JBtQZrKmsH{0{IDSzg&-oPhS;^(dUi)6LF*}fx+bm(blOe#p3MMi0)K%sw5P|X|NX(`E-N7WnM;Yd*O%&z?xwPz(agA4(Kky(`Se7eA3pPi|%xJ`piamK56UD zMR&S9eP*LOpR{%7qB~ulKC{uCPujY3(VZ?&pV{cnCvDxi=uVfX&unvZck!;z+g!-G z=H+ht^@oMz>GP)M;cnPj^?8d6JC|>F@^eBq9Rfbx(VLF5IEycLTqk4Vdapj*@$c;P zeA$`GbT_!dz0GE={k{};=Wa%lm#tg^s_xESr?(OKuFJ~SO@K0d-{g-IRAD*lDchmHd<=9}YEP(o0QNqM#GcY#>8?`Z*3ukh9Yf`BD^-0xi&?{M zr|xN4-sCv0c~(zcmALDbX>MHSa0l{Pg`YG1sT9^zKZCfO#pjVnzDHO_&>tX_*jAAH z!0Te{DeF~oB9;*w2sRx88%QJjQ8SCX=5d(^aT~FQc#HUmU~>}?PQq*%(JJaB8ji1& z_fdb`KP~;vxPMgobVdLjSMTH}@y|oA&wh#`Nv}Nn_US{;|n^$3B0=7+2pO z&i5oh0wh2JV*;J=TVrypr|b6kl=Zo9pT~N>f4$$oKMd{h_b2z0{rkF!vtL;W HWk34|Dx0lx diff --git a/helmfile/files/theme/notes/favicon.png b/helmfile/files/theme/notes/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7ce6bc02b7357dd93b2ca880ca3bfae6fd9d05c7 GIT binary patch literal 1267 zcmVDg|00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP=lk5}ojhDE*P8U@J-r{c4y7yzf-zo{c*xQv)Ga?6 z`;OzBP>LMtBL*w+;xUg!0$7@S9v+V^hV-b%dctG03NMzazNMkT=JTjB;%3qZB*Kff zw08uwEb@7j8PV^y;z+j@7*5c32yj{D@;HoM_bcnTpUui@@kvMN~ay0ws;Yo zY;7}y@@}8%)959@PSfTG0-Py{!+N`4T*8ay+C@SpRcZGg*feeO3N9}W37J~C@p!Ox z%iAGja!p%bj29h%yM#=x6gh>((Psxm~a4A#($s;((_(;3@7p z6`(&qi4OM8>FeinI{Hz+Z(`D+={bkypX&YhYdxNzZM+h+pyf9K?be8D@6Tyzbwnki z)p)h_bH+Klavee4czqTwm)5S4rmTI>O9I!lK5v1w_2lcDkd=77!o`nM2522#zi{#6 z6#-g>mliI59wmU*;0+2cem(_&R^Sa9E`DCa0oCIT3od?s29#q(6H|>hY`Dh1$Hdg) zWd$c4>;>T|Hq%mxmnGaqCQhB|@bZ9@exH(Yslv+(PMWw!#-#=?PdG^~A(@s6yu9J$ zx*zcRC~r7vY0b=+$!I)N;HKw**HfmzEv=e+f!0Voz$ME#JisN-C_KRRmN9sM>pdgz z0M}o+;{mS!a>WB&x^lw5gs1KeQB91n1VD^tAP8sG+5rg%r+1Ija-;H1KQxY9N_ zsStQJ!b#TS*$O9Fjb}5QWG$ZUaFUgHMSzp6!z&7$WEEbK;3RACiUucHfmcL0Nj+Xs z;Uv{~MTV2q;uRfEQi%t+dg|~1_rFZPIBwxt`ft}W@uOCGl_}oM+YS#x1FA3=V{Ht0 ziUXeFfTuX%DK68!&0nW~!(nTqcW#6ut1`vg{q&8hFTaqjJ%2MxFW$~lR$46Q)hY0Z(zjQylOVCwM*~ zjroFiLP%r269mB+-#8|ut??1Zab(N$32Dj~w~HN?kAyVk$&U-XZ94gnm)CGt$YN|i?Ono6CGcy5Kdwb zE04ztzs}_(a8h4it-xDii5C?f^MtK2O+M8x3T!6@Yb^EmVnlnUvRCR7Ad}=%{Q|gm d)%#hJ{sEP)u~iM^7FGZN002ovPDHLkV1nXIRYL#( literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/notes/favicon.svg b/helmfile/files/theme/notes/favicon.svg new file mode 100644 index 00000000..6bebb93a --- /dev/null +++ b/helmfile/files/theme/notes/favicon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/helmfile/files/theme/portal-tiles/admin_context.svg b/helmfile/files/theme/portal-tiles/admin_context.svg deleted file mode 100644 index d1df2396..00000000 --- a/helmfile/files/theme/portal-tiles/admin_context.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/anonymous_login.svg b/helmfile/files/theme/portal-tiles/anonymous_login.svg deleted file mode 100644 index eb76781c..00000000 --- a/helmfile/files/theme/portal-tiles/anonymous_login.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/fileshare_activity.svg b/helmfile/files/theme/portal-tiles/fileshare_activity.svg deleted file mode 100644 index fde77c18..00000000 --- a/helmfile/files/theme/portal-tiles/fileshare_activity.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/fileshare_files.svg b/helmfile/files/theme/portal-tiles/fileshare_files.svg deleted file mode 100644 index 5fabd822..00000000 --- a/helmfile/files/theme/portal-tiles/fileshare_files.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/groupware_calendar.svg b/helmfile/files/theme/portal-tiles/groupware_calendar.svg deleted file mode 100644 index 0a63b250..00000000 --- a/helmfile/files/theme/portal-tiles/groupware_calendar.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/groupware_contacts.svg b/helmfile/files/theme/portal-tiles/groupware_contacts.svg deleted file mode 100644 index 1161c7c1..00000000 --- a/helmfile/files/theme/portal-tiles/groupware_contacts.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/groupware_mail.svg b/helmfile/files/theme/portal-tiles/groupware_mail.svg deleted file mode 100644 index 96bab903..00000000 --- a/helmfile/files/theme/portal-tiles/groupware_mail.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/groupware_tasks.svg b/helmfile/files/theme/portal-tiles/groupware_tasks.svg deleted file mode 100644 index dd9954c2..00000000 --- a/helmfile/files/theme/portal-tiles/groupware_tasks.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/management_knowledge.svg b/helmfile/files/theme/portal-tiles/management_knowledge.svg deleted file mode 100644 index e69f6964..00000000 --- a/helmfile/files/theme/portal-tiles/management_knowledge.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/management_project.svg b/helmfile/files/theme/portal-tiles/management_project.svg deleted file mode 100644 index 71257abf..00000000 --- a/helmfile/files/theme/portal-tiles/management_project.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/misc_notes.svg b/helmfile/files/theme/portal-tiles/misc_notes.svg deleted file mode 100644 index 8e4821d8..00000000 --- a/helmfile/files/theme/portal-tiles/misc_notes.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/realtime_collaboration.svg b/helmfile/files/theme/portal-tiles/realtime_collaboration.svg deleted file mode 100644 index 566982ea..00000000 --- a/helmfile/files/theme/portal-tiles/realtime_collaboration.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/realtime_videoconference.svg b/helmfile/files/theme/portal-tiles/realtime_videoconference.svg deleted file mode 100644 index 6c78d501..00000000 --- a/helmfile/files/theme/portal-tiles/realtime_videoconference.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/selfservice_changepassword.svg b/helmfile/files/theme/portal-tiles/selfservice_changepassword.svg deleted file mode 100644 index f70c68eb..00000000 --- a/helmfile/files/theme/portal-tiles/selfservice_changepassword.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/selfservice_editprofile.svg b/helmfile/files/theme/portal-tiles/selfservice_editprofile.svg deleted file mode 100644 index a4805463..00000000 --- a/helmfile/files/theme/portal-tiles/selfservice_editprofile.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/helmfile/files/theme/portal-tiles/selfservice_protectaccount.svg b/helmfile/files/theme/portal-tiles/selfservice_protectaccount.svg deleted file mode 100644 index 12439bfd..00000000 --- a/helmfile/files/theme/portal-tiles/selfservice_protectaccount.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/helmfile/files/theme/portal/favicon.ico b/helmfile/files/theme/portal/favicon.ico index 041f0d610ad24892158e5ce0175ca1c43979a4da..90f0b212cc80cc11e8f357f2709d517554b37f54 100644 GIT binary patch literal 51122 zcmeI5zi%8x6vxLPQNmS}5hX?#Gw z&~TziBrFt5#1)7;MWO%+$pr#*zn1qM-`)+I-MiV@H@h>Z_maup%+AideV=`AW`9Ph zHTtu)rRd+M)c#$io>WRbO^J%suar;@dAF+EMt!s?^(l$)TL5-#JHsj1klI|QBtFK^E3d^a>|KDO zR57*F$?HJMyjx(q6sSyP((cf^hSI?z3mj&USY@d}iIIz}THm@eD`3+~q?Y(weQa!c zI<(OEFAwx9n2?1!nHu*{F79cF)mzg(5#ymJE^=Kw%VfI)B^1+KPvBw zb)v99-(*J`%QzPWwwaQ%agR#&W~K5Y1`F(^zDLSRyo`a^T*ou8qikzlB)=lE0Jv?| zrSJHc2MN;X+dK89?|;<&PJa8nu3fF8A8_0D*%9nD{Nf}Tyz^l)cyqV;^xnQcZYF>K z<8!y`XdB!*K01PJG_w$R<>^4j(un*qVgWaHcJQ^q?&r<>SRS)X8IG?=g`FMzEtvS2 z;Zzi}Bjv}=E*5{wa*Qy3va%bW-j5|MYXz zKBxK7+%qC!V;A)KfaRP8{BR6LB7E#VK8oM(h#ju^L?UeL(lI0U<>>Zzk)YG(<=|IY zVrQ1>Kcx5(iHP52#zJ9dcg-316hxdY(5T-DJ7;d#P}o&6U!xlfyGG4lsdHgh$$X7& zEbJOJf2GcaT_y81y0Nfp)cln?7j~7**XYKPyM+^^cPAo%0-1)?Os+%CIx*KJ!{KKI+yE%;-?qnLHeRBd#_S zPlcTWue|Yhw0ms0L@hss9TPk7)INCeS1sVE6Jf{5PWvOxQ785A6L#F}&|W?Kgq;s| z)aLM&_kG7sVdse*;-}~Ni?H*^4*WcxKL|U|>@fHAB*M-!JNTZb>n|(GZg`EZA>TT# zmTrEQ3|@Gf=NdR&Kl30f$&Pc5FnREYJ_hu;TLm8-pZvg$PuN*n6myO$eu(=I%p&Yc z7!=n_s_-k(l}%M)XJaL!4r1uw>dQ{!AoG1cK6doolJtEH+ojEO(U@bG9cwtpI|JM7 zC)zKo6Y4YT#l{ZrVAwKC>&40r5M6wa`8pXJJA5Z0Wn#OGnH}aHWqptNJe`dlzL8+d zEUgzaJDhKqWrzBV!p06dm3`+tYIgLz(JHaizIVg^n{UFdk{7c29W*KPtqx%q7CX() z^7}@@E-ZRli`;q$?%h-S+e;C zaERAcuwS^owMz5MlojVv*cDoneV$p^lj90uS70 zB_3cKMp;dE^uD7{(f9Bio_}DzcOE=Dr+a1eOu0|Ny`0kVl2|i8FSeTOU?)%Srn=rg z0BiUwqXf^+^*qYQ`y5rc4W4Cx&M$a&`uQG*u|>x;ruT86gH!A_^k#nE0qz?-J1AM@ z*{lJ*-w%IriC1{858rt}8!qFUxs6Nz*!Kkz1-nYI$~g8-Th{rTd48GVjDnqxn~u-b z)yb%+FAqKkeo?T4qE*M6BD?x7N6hsk(Xfls_h@bjy*)`Z?6Ch%*AN>V?>xRY33Ein z4hj!n{h;!k&v%?e`CI{c?>A2o4{mfehB zNd8CXFdp8I#I6=elzx})4E%5SM)~&w%KFl>`glj$(>Ywat9i?)*`+&#;~m#}m)V$o zJ@q+0?xt$gy<7=)FdBRi-v@Acx2iPLW|^hO$jY!wcL>YzH>a1el+zb!Y#q_JA3UG4 znY*#yU#DO@DQ?yR+gVn5c~bG9 zSv95ij0FzzI2D!Awlel*4A@Y%aEvQrhjP;Opdo#w+e-_S^0zEYYGOwW*@y*pvMgNk zq&eoF5<}}j2sH~gwi&Br0h`R-Pv?=V!?q@bU zsoxf*4N6;-b|fve0qnFvsbyo|MRk&7wstL<(A@IhSzc`*-=F87K)y52KZ^W3tJWw_ zf9FD((LATr4W*3cm3mI83v>MyrTS+6@rUzWbNypVW%C_#{Ub^(%bV5Zw^%?dAQo6< z3v|q#vxtvfvwlvz?VIa!;&nE@XXAf%e4rs?E|kfRFAt4B{dsjgJ{cY8@oV0I9^d{0 DwkA%{ literal 50222 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 + + + + diff --git a/helmfile/files/theme/portal/stylesheet.css b/helmfile/files/theme/portal/stylesheet.css index 3186cb33..5589a2f6 100644 --- a/helmfile/files/theme/portal/stylesheet.css +++ b/helmfile/files/theme/portal/stylesheet.css @@ -168,9 +168,9 @@ } .login-pf-page { - margin: 0; - padding: 0; - height: 100%; + margin: 0px; + padding: 0px; + min-height: 100%; display: flex; flex-direction: column; justify-content: center; diff --git a/helmfile/files/theme/projects/favicon.ico b/helmfile/files/theme/projects/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c3c542a415f48eb8385e927504b8cf30497e9164 GIT binary patch literal 51122 zcmeI5J!~9B6vxLzqJ$F#WfVFJB(9(WDK;HVQi6n#azY3SBH1Dm5)^nNQGoc!(S!s= z*eT)yr-DR^Xt)RoB7|fM5s3o014NU`Ad1L7dw6eid;5{yz4h+Q?Y!OpIODswyEpUZ z|JyfjcGq^4TA;7xWkuhQsY~B0^{7(najLXQ{Z5s)b9r~*zZm_dweC<|qPjxWL!GGs z>%@9>jDjfG81>tw+NZir6{WlatRL&xEhv5I!>ErQ)e%(`^9r!8z0zmH(mJO$PhND7(MAm+$CRp+;FyAZI+ zLF5+VZGLQu^t4`tA2o#hRz%JDACsH^$Q@o!qPVL-=K7OdMvilr8+$fLn>%TH&uzEi z-9&+2k{@j!K^+kajH2wwW8^sz*rrZS^B!&KPq*TY1O@s*?2)sWFC`EQecWbtWOl+$ zcqd2!=C&lrU$`17z}!|s6Ym5mz}!4R{=(Hz0p?F~O z`&yaZ{ucwi_x#z+dhqiw-Xkni3RGq{{&-XG9(^IR?tgdNl&@$ft^nA@^^jzNog`Xu zUmM5n;LkgHeCc{-{>{tHR`$JdUhm)dA+EX^t5NL6-g;)<&CAJi+4uBmZFt?*2zCcM z|LNW5-gK8+WG%<*azmvN?Dk&yKm@lSz755ncy@dZ5@;gjmGi2BBA%VJmM%#S887Sh}u?Dm557^MZbelBC^K*U!r4j6WerGScAAipn{h5`3kKKlSFn={80^3< zbA5o{1G08~gM0z%Ku9QX%e2M>gUPaaZ~o z5aJGTmt1FZu5{eFd{4~rXF;{covZhvHx_X( zde*&YKDRGC_N;UFH2Iuzywo0dtdDE4clG3Jj$`xPbAlav!arMN;(EGj8$4G!p67z| z${BX-5I?J4>z=HQ;mx-{lERJUa*7>0#O1f^1AXiL&os|nw(HlgdwT1_hW_V|zwdP} z=ev{a>M6j(_I5QxrD(E z?BpsS*K@?3Y3w^h-ePWCNP>QQWe_>? z{ylO&yROI)wAblwz-|(I!}dxcYUINxw+XwRs1dZ+*w}^(W@g`LJZ2bJvq48J?nchg4C_D=?%cPnF?vn9ooj z9Eazq4ymG)S71mVWgU&jSrMMpZ-?q4)n%%ys53QSoffHfis+knjMme=3;KZ8mUpMN zT4Z|^+7Gksh4vA)LsKn~P5;6|#yGT;dPk{9^GY38YA3q?s8XY-{m}jPAiDoSrINN6 z-T#16v+U^Mcn<}j02FAl0$y}*1?I;=^!Swdb`;&8GG8a>_vHMa%ny_@!a_zezucF9 TM&aRpeu{M9=dZ8TL>Y)~e!lD3xx_s^BBR~KE zSm5W4BBZH&WQRm=I<7BVsRx5XMfzn%@s!{?3Eo_c*~^SGC0qb*BUqiY36ubrBwP>8 z?OO8imJSV+qYgYz%~40U<{j`JlNkJVk7=Af%H>T5C?gshhl);dk4i}y#HJL+N5aWH zUzXp!O|-B7;M6+HUQB3)c(S@9jX8S*M?^Vwn?m>5m@XLH(b zvMQatE&h7w5Bt^BZ@RKZy9u-7M(52wUp*b-fApF$AhXfTCVrQ!x}nfJu}O7(m&qQ< zK@rq{D0T$zY`|Wy=0K?^-(#735f>gpZ}$apB7%san=jquZtxlMwpydr_NA!gBhi};w%(>3=DXcO|9sJkL3uY7G_zhsq=ZwT1NF}yXG9909T@ZI4j@S0=`izTo z^k8x2C+}TO2tM)}psm$e>ehJ{S01=y;pOR4q}xS?S(I#H%6TPud()}m{)Z=o7o(>K z&KM^IYh&|RCCa7L`Ps$C6M`2RGql9z%pRk%-sT6LMl~vqF=QDxBJCsRE|GND@rfB$ z^8B@f(#2gHoL7(uVm8|fZxXWXV{M{q zQheo#-~40o8m%P$&_cW7Rc5Jpf=mmMeW}tBHfEpS0YF@P*%wefm}wQeaIj|7uvI2q z>KNI;UL-^APw*)RM&Q!9#@_d_%wpf6$5=Y;8lHBY^#_W7)W6~XPL!RhvsOvT z@beF2M3bAF+)=wMs(52_v!l67PDodi)&~4UZ=-A0usxSSI68c*o0+v%Jaxrr3rr}- zs4McrZp`LBtJbF4C5$Pkm|SCG(VG6Q(e>9+hfNLTBil;W0j1+HdL>cPXgF)07b<30 zE8BdXgqCt~%{Yk-giXp9TlOd z*chq4IE1X~Qo$_uJOn-ME6&q5pw!bY06kiEXXRE<9F*v%Vcbi!mi*Ln$xRFGYBSW$ zOGr+0M){CnSISZ18E~IL#3%jrF7fdAV1BK*LCfc&=JtGAK;V~a7o>IdJZNFncND*G zf0ZZv)br$3-uq+qgFbvRgbsgWyGc0m>~nauAR=)Q(pBQHlQ~iT=usfF3@RxX+_ED5 z_q2L%djX{C&+hc9G&VxbOEqKB)w)Z?FhlZ-w@G~x{k9JMnCQG&(KE~1n9@C*d8XN2 zIpbb!b&-b-z8~lXx@k4jn-f4}3F~3$iW78QL?Jk c2wqX;zBzsQkju);)vgBkp>f_k&+s$<19Vl!iU0rr literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/projects/favicon.svg b/helmfile/files/theme/projects/favicon.svg index 2c72b7f4..30f832e5 100644 --- a/helmfile/files/theme/projects/favicon.svg +++ b/helmfile/files/theme/projects/favicon.svg @@ -1,6 +1,6 @@ - - - - - + + + + + diff --git a/helmfile/files/theme/videoconference/favicon.ico b/helmfile/files/theme/videoconference/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..aea9f48b71298d92fc0c7914c0468c4e496fcf87 GIT binary patch literal 51122 zcmeI5J&fE$6vyX4qJ$L%Wdt2XB(|UeDR*>Ggpx=IDN72FAkv*c0ztuTBnpuDSQ-)# z;*NqVARQDa4I6Gquw%IsvwMS75CYsNBKi-KKXBae^`hHgiaFnqr0^^jzNog`XWU%@V`ha?N^B+<(H3U*mNBw1i5iB{HE@9Yl0_)hOX z_paW5?3~^^cB;|JKCmx`pA54q$h5q%JNkK~_a1(sQC6kzl?Tph_EB*0!Y<-={K;^+ zCGk%_9)9zSRD90a9qs<-@gH2io=xW!A(fdY$jcA{d=VAytc zoI6VA2ZmOm9p@wOUHj=*{p0y9edV?H^yQb{&}=&_PUB8AJ4e?ISHJpRUwWpmKfLdx ze&^2nGnMx_EMOOp1)QhnDS!X*m%e!NsSGQyTg>(RJnVQp%yTNT5qExA)?s&j_aFV) z6VF?5W0qhS20P~V@rlQ+xq+P@Zan9$8h5jD8^%n3tn$|=RoL-7vWU&BZ5T8C@U&&e z`p;rCZ9mvG%dXB?nXm-A=Ge^>bIcFynqybxdLW54a|w3Mu`@Z;SqHmj*!}kTm$m08 z31_fth8^DvNEp;zf?YH0Y(KLs;|g}ou$$-FAmIsiU>D!3!u>nT`*(;tKQWX4Y_g6$ z>oYOrJGtyI&y>p!*LQN+@%-SzJrB)wjfZ)rAO5rQ9kZ)@-wxLZewZcm8XI;THwlM2 zOT?WYhBoXt_AWm9bZvfM*DO2!9%h}GRvB^UGwai-=$}(f8Pk~!eGbW z&)izZ_cN2ZUXx4PxeCXeS*pYz;x3H1Gx=>_*s{8A2fOgtF-M+%&Wb^>^TUpxCE}tm z!^hAlEz74q{_d4IUj6z9&1347*WZs~)5ZHEZo}!lS8j9f!L#!I zZu$5bhmtO=Dd+5XzE<}B4sl=IIp)GB6`#mCyXg5UkGv>{AH^K|EU-9d#~R#tuF;wB z`7t-S&!zIhF5*Y;<^5C5KmTpo7|p&3eV$P=M0jJDoPgig2j@PDII><%SN6rnoHFU} z0+-&|EwC?bI~CZ;B@T9ACszTvo+IwSPObuSJxAPuom>UvdXBgQJGlzT^&D{rc5)Sv z>p9|1Haq_R=~3htY8ASGcaD!aL zt}C(!?RC1Fu#01F)Ltn>^?YP3*TB}f)9p5P8G;JGo0l6;>j#G2oGDc3`^FzbUs;=;c04jL>0xo0wZejbR8~LUPI^LIDDJx zh$>2b1xEBz*3o&K+3=+EcBn2>U8TB?I#UDIX_;!rM&Ghyw4Ur;(nmD6ygsqjGTY0esNI7ls}UQx4h5h96!;|s>yvAMrsyv~pB`SCxWA1Gy{g^YZDxhemQ)5D|u OWSk(%UugqTe)|vJ+`xMP literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/videoconference/favicon.png b/helmfile/files/theme/videoconference/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..bc21146b1ecc19d565bb992ed5afa388d6033d26 GIT binary patch literal 1541 zcmah}do&XY7#}tjX6|V6C}O>qM|osrs%gt6v@(xwT8omA&=z*{xTYlYnxc6&Y6y{M zG%2F8t!YwS?&LXn94@2eednJ0_r2%*e&6r=e&_rC_|A9EcZcBO09Mge0RRACJPvbO zu0iYEs4S0zZFyw5YzoGmp#lJ^n(I^mWaVs;n+nv^4)%a@k^Y#x0A5BrqXB@*6xHPm zAOHZAg~y3B#KSd0K>v7XI zoVWU^P_Tnh;5`-#QD*iSa$%)#Z#}K;n)}IOKaTEp$Ryc&G1Wf16}CK@{7oo|>!m%j z<=OJ65W6GwH*9#-`-DNF1_R45?|es8M?fJ0eJeoEagT)K)V6ca_VcI)sQd9`g0C{>&Rj=_fR(2&(Oqr9m;2;>OgPvLME~N|yS!?gOW5r~SyCf3-g3{-nv8I)5Ks z+-QNE?sRA0w}_03w+ zU)*tP)jaH>Pv1%u&ojX2oL^OCZNZu(5E$^q7#hBtb#8@Udi!VH&+akMnq!0@&MiI- zC+%$zweSmt78fXgJQ458_hQu=cG@*1wN8fngC2>SikkbvD43|{lM&CGqcQii!q3m6 zc2$q1L{u!OP1#kooP1DNUDa;?1$}1MSu^W{(ktWjjn)#sIrKo}jqj~0sO4gbdf596 z>)B>{P?jP@cCwgHLD4UMiczsjKP(#>i6TsA_&Ppt zcs$PVR*8jARZ0zDci&c?{UzKO^78Qyl}hjC-5RUt`Q*ZD>%QJCgW(47uxd zybt2nqYf-K2Z7~o)lK@;Z$v#s-dFb2tAw<&WzMO=!~YmIt{FR`SWkWU!$fUO>BC?` UYMGwtxcqAa@K_g2xjmWjH!C0CM*si- literal 0 HcmV?d00001 diff --git a/helmfile/files/theme/videoconference/favicon.svg b/helmfile/files/theme/videoconference/favicon.svg index 9078559d..99d22021 100644 --- a/helmfile/files/theme/videoconference/favicon.svg +++ b/helmfile/files/theme/videoconference/favicon.svg @@ -1,5 +1,5 @@ - - - - + + + + diff --git a/helmfile/shared/migrations.yaml.gotmpl b/helmfile/shared/migrations.yaml.gotmpl index 25290ef4..bbceb5d9 100644 --- a/helmfile/shared/migrations.yaml.gotmpl +++ b/helmfile/shared/migrations.yaml.gotmpl @@ -20,7 +20,7 @@ cleanup: migrations: runId: 3 - namespace: {{ .Values.migrations.namespace | default .Release.Namespace | quote }} + namespace: {{ .Values.apps.migrations.namespace | default .Release.Namespace | quote }} loglevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"INFO"{{ end }} failOnUnexpectedState: true environmentDetails: