Skip to content

Commit 6cd8ffc

Browse files
Merge branch 'hotfix/1.4.3'
2 parents 93e2123 + af65dc8 commit 6cd8ffc

11 files changed

Lines changed: 119 additions & 49 deletions

File tree

CHANGELOG.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.4.3](https://github.com/cryptomator/hub/compare/1.4.2...1.4.3)
9+
10+
### Changed
11+
12+
- Updated Keycloak to 26.2.5
13+
- Updated to Quarkus 3.20.1 LTS
14+
15+
### Fixed
16+
17+
- Health check in Docker Compose not working due to curl missing from native images (#344, #249)
18+
- Bumped build time dependencies (fixes CVE-2025-5889, CVE-2025-46565, neither affected any Hub release)
19+
20+
821
## [1.4.2](https://github.com/cryptomator/hub/compare/1.4.1...1.4.2)
922

1023
### Fixed
@@ -191,4 +204,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
191204

192205
- CVE-2023-45133: Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code
193206
- CVE-2024-4068: Uncontrolled resource consumption in braces
194-
- CVE-2024-39338: Server-Side Request Forgery in axios
207+
- CVE-2024-39338: Server-Side Request Forgery in axios

backend/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>org.cryptomator</groupId>
66
<artifactId>hub-backend</artifactId>
7-
<version>1.4.2</version>
7+
<version>1.4.3</version>
88

99
<properties>
1010
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1111
<project.jdk.version>21</project.jdk.version>
1212
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
13-
<quarkus.platform.version>3.15.4</quarkus.platform.version>
13+
<quarkus.platform.version>3.20.1</quarkus.platform.version>
1414
<jwt.version>4.5.0</jwt.version>
1515
<compiler-plugin.version>3.14.0</compiler-plugin.version>
1616
<dependency-plugin.version>3.8.1</dependency-plugin.version>

backend/src/main/docker/Dockerfile.native

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,17 @@ RUN ./mvnw -B quarkus:go-offline --no-transfer-progress
99
COPY src /code/src
1010
RUN ./mvnw -B package -Dnative -DskipTests --no-transfer-progress --strict-checksums
1111

12+
# install additional packages
13+
FROM registry.access.redhat.com/ubi9 AS installer
14+
RUN mkdir -p /mnt/rootfs
15+
RUN dnf install --installroot /mnt/rootfs curl --releasever 9 --setopt install_weak_deps=false --nodocs -y \
16+
&& dnf --installroot /mnt/rootfs clean all \
17+
&& rpm --root /mnt/rootfs -e --nodeps setup
18+
1219
## Stage 2 : create the docker final image
1320
FROM quay.io/quarkus/quarkus-micro-image:2.0
1421
COPY --from=builder /code/target/*-runner /work/application
22+
COPY --from=installer /mnt/rootfs /
1523
WORKDIR /work/
1624

1725
# set up permissions for user `1001`

backend/src/main/resources/application.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ hub.keycloak.realm=cryptomator
1717

1818
hub.managed-instance=false
1919

20-
quarkus.resteasy-reactive.path=/api
21-
%test.quarkus.resteasy-reactive.path=/
20+
quarkus.rest.path=/api
21+
%test.quarkus.rest.path=/
2222

2323
quarkus.http.port=8080
2424

@@ -33,7 +33,7 @@ hub.keycloak.oidc.cryptomator-client-id=cryptomator
3333
%dev.quarkus.keycloak.devservices.start-command=start-dev
3434
%dev.quarkus.keycloak.devservices.port=8180
3535
%dev.quarkus.keycloak.devservices.service-name=quarkus-cryptomator-hub
36-
%dev.quarkus.keycloak.devservices.image-name=ghcr.io/cryptomator/keycloak:26.1.5
36+
%dev.quarkus.keycloak.devservices.image-name=ghcr.io/cryptomator/keycloak:26.2.5
3737
%dev.quarkus.oidc.devui.grant.type=code
3838
# OIDC will be mocked during unit tests. Use fake auth url to prevent dev services to start:
3939
%test.quarkus.oidc.auth-server-url=http://localhost:43210/dev/null

frontend/package-lock.json

Lines changed: 80 additions & 33 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"type": "module",
33
"name": "cryptomator-hub",
4-
"version": "1.4.2",
4+
"version": "1.4.3",
55
"description": "Web-Frontend for Cryptomator Hub",
66
"author": "Skymatic GmbH",
77
"license": "AGPL-3.0-or-later",
@@ -48,17 +48,18 @@
4848
"ts-node": "^10.9.2",
4949
"typescript": "^5.8.3",
5050
"typescript-eslint": "^8.29.1",
51-
"vite": "^6.2.6",
51+
"vite": "^6.3.5",
5252
"vue-tsc": "^2.2.8"
5353
},
5454
"dependencies": {
55+
"@headlessui/tailwindcss": "^0.2.2",
5556
"@headlessui/vue": "^1.7.23",
5657
"@heroicons/vue": "^2.2.0",
5758
"axios": "^1.8.4",
5859
"file-saver": "^2.0.5",
5960
"jdenticon": "^3.3.0",
6061
"jszip": "^3.10.1",
61-
"keycloak-js": "^26.1.5",
62+
"keycloak-js": "^26.2.0",
6263
"miscreant": "^0.3.2",
6364
"rfc4648": "^1.5.4",
6465
"semver": "^7.7.1",

frontend/src/common/jwe.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ export class JWEBuilder {
150150
apu: base64url.stringify(apu, { pad: false }),
151151
apv: base64url.stringify(apv, { pad: false })
152152
})();
153-
const encryptedKey = (async () => Uint8Array.of())(); // empty for Direct Key Agreement as per spec
153+
const encryptedKey = Promise.resolve(Uint8Array.of()); // empty for Direct Key Agreement as per spec
154154
const cek = (async () => ECDH_ES.deriveContentKey(recipientPublicKey, (await ephemeralKey).privateKey, 384, 32, await header))();
155155
return new JWEBuilder(header, encryptedKey, cek);
156156
}

frontend/src/components/AuditLog.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,12 @@
105105
<ListboxOption
106106
v-for="(label, key) in eventTypeOptions"
107107
:key="key"
108-
v-slot="{ selected }"
108+
v-slot="{ active, selected }"
109109
class="relative cursor-default select-none py-2 pl-3 pr-9 ui-not-active:text-gray-900 ui-active:text-white ui-active:bg-primary"
110110
:value="key"
111111
>
112112
<span :class="[selected ? 'font-semibold' : 'font-normal', 'block truncate']">{{ label }}</span>
113-
<span v-if="selected" :class="['absolute inset-y-0 right-0 flex items-center pr-4', selected ? 'text-primary' : 'text-gray-400']">
113+
<span v-if="selected" :class="[active ? 'text-white' : 'text-primary', 'absolute inset-y-0 right-0 flex items-center pr-4']">
114114
<CheckIcon class="h-5 w-5" aria-hidden="true" />
115115
</span>
116116
</ListboxOption>

frontend/src/components/UserProfile.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@
3535
<ListboxOptions class="absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 shadow-lg ring-1 ring-black/5 focus:outline-hidden text-sm">
3636
<ListboxOption v-slot="{ active, selected }" :value="browserLocale" class="relative cursor-default select-none py-2 pl-3 pr-9 ui-not-active:text-gray-900 ui-active:text-white ui-active:bg-primary" @click="saveLanguage(undefined)">
3737
<span :class="[selected || active ? 'font-semibold' : 'font-normal', 'block truncate']">{{ t('userProfile.actions.changeLanguage.entry.browser') }}</span>
38-
<span v-if="selected" :class="['absolute inset-y-0 right-0 flex items-center pr-4', selected ? 'text-primary' : 'text-gray-400']">
38+
<span v-if="selected" :class="[active ? 'text-white' : 'text-primary', 'absolute inset-y-0 right-0 flex items-center pr-4']">
3939
<CheckIcon class="h-5 w-5" aria-hidden="true" />
4040
</span>
4141
</ListboxOption>
4242
<ListboxOption v-for="availableLocale in Locale" :key="availableLocale" v-slot="{ active, selected }" class="relative cursor-default select-none py-2 pl-3 pr-9 ui-not-active:text-gray-900 ui-active:text-white ui-active:bg-primary" :value="availableLocale" @click="saveLanguage(availableLocale)">
4343
<span :class="[selected || active ? 'font-semibold' : 'font-normal', 'block truncate']">{{ t(`locale.${availableLocale}`) }}</span>
44-
<span v-if="selected" :class="['absolute inset-y-0 right-0 flex items-center pr-4', selected ? 'text-primary' : 'text-gray-400']">
44+
<span v-if="selected" :class="[active ? 'text-white' : 'text-primary', 'absolute inset-y-0 right-0 flex items-center pr-4']">
4545
<CheckIcon class="h-5 w-5" aria-hidden="true" />
4646
</span>
4747
</ListboxOption>

frontend/src/index.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
@import 'tailwindcss';
22

33
@plugin '@tailwindcss/forms';
4+
@plugin '@headlessui/tailwindcss';
45

56
@theme {
67
--font-*: initial;

0 commit comments

Comments
 (0)