Skip to content

Commit f71a67a

Browse files
committed
Merge branch 'develop'
2 parents 35b5971 + b65726f commit f71a67a

File tree

7 files changed

+507
-22
lines changed

7 files changed

+507
-22
lines changed

assets/js/hubce.js

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
"use strict";
2+
3+
// requires newsletter.js
4+
const VERIFY_EMAIL_URL = API_BASE_URL + '/connect/email/verify';
5+
const REFRESH_LICENSE_URL = API_BASE_URL + '/licenses/hub/refresh';
6+
7+
class HubCE {
8+
9+
constructor(form, feedbackData, submitData, searchParams) {
10+
this._form = form;
11+
this._feedbackData = feedbackData;
12+
this._submitData = submitData;
13+
this._searchParams = searchParams;
14+
this._submitData.oldLicense = searchParams.get('oldLicense');
15+
this._submitData.returnUrl = searchParams.get('returnUrl');
16+
17+
// continue after email verified:
18+
if (searchParams.get('verifiedEmail')) {
19+
feedbackData.currentStep = 1;
20+
feedbackData.emailVerified = true;
21+
}
22+
}
23+
24+
submit() {
25+
if (this._feedbackData.currentStep === 0) {
26+
this.validateEmail();
27+
} else if (this._feedbackData.currentStep === 1) {
28+
this.sendConfirmationEmail();
29+
} else if (this._feedbackData.currentStep === 2) {
30+
this.getHubLicense();
31+
}
32+
}
33+
34+
validateEmail() {
35+
if (!$(this._form)[0].checkValidity()) {
36+
$(this._form).find(':input').addClass('show-invalid');
37+
this._feedbackData.errorMessage = 'Please fill in all required fields.';
38+
return;
39+
}
40+
this.onValidationSucceeded();
41+
}
42+
43+
onValidationFailed(error) {
44+
this._feedbackData.inProgress = false;
45+
this._feedbackData.errorMessage = error;
46+
}
47+
48+
onValidationSucceeded() {
49+
this._feedbackData.currentStep++;
50+
this._feedbackData.inProgress = false;
51+
this._feedbackData.errorMessage = '';
52+
}
53+
54+
sendConfirmationEmail() {
55+
if (!$(this._form)[0].checkValidity()) {
56+
$(this._form).find(':input').addClass('show-invalid');
57+
this._feedbackData.errorMessage = 'Please fill in all required fields.';
58+
return;
59+
}
60+
61+
this._feedbackData.success = false;
62+
this._feedbackData.inProgress = true;
63+
this._feedbackData.errorMessage = '';
64+
$.ajax({
65+
url: VERIFY_EMAIL_URL,
66+
type: 'POST',
67+
data: {
68+
email: this._submitData.email,
69+
oldLicense: this._submitData.oldLicense,
70+
returnUrl: this._submitData.returnUrl,
71+
verifyCaptcha: this._submitData.captcha,
72+
verifyEmail: this._submitData.email,
73+
verifyTarget: 'registerhubce'
74+
}
75+
}).done(_ => {
76+
this.onRequestSucceeded();
77+
if (this._submitData.acceptNewsletter) {
78+
subscribeToNewsletter(this._submitData.email, 7); // FIXME move to backend
79+
}
80+
}).fail(xhr => {
81+
this.onRequestFailed(xhr.responseJSON?.message || 'Sending confirmation email failed.');
82+
});
83+
}
84+
85+
getHubLicense() {
86+
this._feedbackData.inProgress = true;
87+
this._feedbackData.errorMessage = '';
88+
$.ajax({
89+
url: REFRESH_LICENSE_URL,
90+
type: 'POST',
91+
data: {
92+
token: this._submitData.oldLicense,
93+
captcha: this._submitData.captcha
94+
}
95+
}).done(response => {
96+
this._feedbackData.licenseText = response;
97+
this._feedbackData.inProgress = false;
98+
}).fail(xhr => {
99+
this.onRequestFailed(xhr.responseJSON?.message || 'Fetching license failed.');
100+
});
101+
}
102+
103+
onRequestFailed(error) {
104+
this._feedbackData.inProgress = false;
105+
this._feedbackData.errorMessage = error;
106+
}
107+
108+
onRequestSucceeded() {
109+
this._feedbackData.emailSent = true;
110+
this._feedbackData.inProgress = false;
111+
this._feedbackData.errorMessage = '';
112+
}
113+
114+
}

content/enterprise.de.html

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
4949
<li>Ver- und Entschlüsselung von Cryptomator-Tresoren direkt aus der Cloud</li>
5050
<li>Anwendbar für direkten Cloudzugriff ohne Synchronisierung, z.B. für Apps für Android</li>
5151
<li>High-Level-Funktionen für Ver- und Entschlüsselung</li>
52-
<li>Java 7+ kompatibel</li>
52+
<li>Java 8+ kompatibel</li>
5353
</ul>
5454
</div>
5555
</div>
@@ -64,7 +64,7 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
6464
<li>Ver- und Entschlüsselung von Cryptomator-Tresoren im lokalen Dateisystem</li>
6565
<li>Nutzbar für den Zugriff auf Daten, die in ein lokales Verzeichnis synchronisiert wurden</li>
6666
<li>Implementiert <code class="font-code text-xs">java.nio.file.spi.FileSystemProvider</code> entsprechend JSR-203 durch Nutzung von CryptoLib</li>
67-
<li>Java 8+ kompatibel</li>
67+
<li>Java 25+ kompatibel</li>
6868
</ul>
6969
</div>
7070
</div>
@@ -78,7 +78,7 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
7878
<ul class="list-primary list-primary-sm">
7979
<li>Inhalte eines lokalen Verzeichnisses (jeder <code class="font-code text-xs">java.nio.file.Path</code>) werden per WebDAV bereitgestellt</li>
8080
<li>Implementiert ein JEE-Servlet</li>
81-
<li>Java 8+ kompatibel</li>
81+
<li>Java 11+ kompatibel</li>
8282
</ul>
8383
</div>
8484
</div>
@@ -92,7 +92,7 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
9292
<ul class="list-primary list-primary-sm">
9393
<li>Laufwerkseinbindung auf Windows, macOS und Linux</li>
9494
<li>Basiert auf WebDAV-NIO-Adapter-Servlet</li>
95-
<li>Java 8+ kompatibel</li>
95+
<li>Java 21+ kompatibel</li>
9696
</ul>
9797
</div>
9898
</div>
@@ -105,24 +105,66 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
105105
<p class="font-p text-sm mb-4">Stelle ein FUSE-Laufwerk aus deiner Java-Anwendung bereit.</p>
106106
<ul class="list-primary list-primary-sm">
107107
<li>Inhalte eines lokalen Verzeichnisses (jeder <code class="font-code text-xs">java.nio.file.Path</code>) werden per FUSE bereitgestellt</li>
108-
<li>Laufwerkseinbindung auf macOS und Linux</li>
109-
<li>Java 9+ kompatibel</li>
108+
<li>Basiert auf jFUSE, Laufwerkseinbindung auf macOS, Linux und Windows</li>
109+
<li>Java 25+ kompatibel</li>
110110
</ul>
111111
</div>
112112
</div>
113-
113+
114114
<div class="white-box">
115115
<div class="px-4 py-2 border-b border-primary">
116-
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/dokany-nio-adapter" target="_blank" rel="noopener">Dokany-NIO-Adapter</a></h3>
116+
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/jfuse" target="_blank" rel="noopener">jFUSE</a></h3>
117117
</div>
118118
<div class="p-4">
119-
<p class="font-p text-sm mb-4">Stelle ein Dokany-Laufwerk aus deiner Java-Anwendung bereit.</p>
119+
<p class="font-p text-sm mb-4">Java-Bindings für FUSE ohne Abhängigkeiten über die Foreign Function &amp; Memory API.</p>
120120
<ul class="list-primary list-primary-sm">
121-
<li>Inhalte eines lokalen Verzeichnisses (jeder <code class="font-code text-xs">java.nio.file.Path</code>) werden per Dokany bereitgestellt</li>
122-
<li>Laufwerkseinbindung auf Windows</li>
121+
<li>Unterstützt macOS (macFUSE), Linux (libfuse3) und Windows (WinFsp)</li>
122+
<li>Nutzt JEP 454 (Foreign Function &amp; Memory API), kein JNI erforderlich</li>
123+
<li>JDK 25+ kompatibel</li>
124+
</ul>
125+
</div>
126+
</div>
127+
128+
<div class="white-box">
129+
<div class="px-4 py-2 border-b border-primary">
130+
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/siv-mode" target="_blank" rel="noopener">SIV-Mode</a></h3>
131+
</div>
132+
<div class="p-4">
133+
<p class="font-p text-sm mb-4">RFC 5297 SIV Authenticated Encryption für Java.</p>
134+
<ul class="list-primary list-primary-sm">
135+
<li>Keine Abhängigkeiten, besteht offizielle RFC-5297-Testvektoren</li>
136+
<li>Constant-Time-Authentifizierung, auditiert von Cure53</li>
123137
<li>Java 8+ kompatibel</li>
124138
</ul>
125139
</div>
126140
</div>
141+
142+
<div class="white-box">
143+
<div class="px-4 py-2 border-b border-primary">
144+
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/cryptolib-swift" target="_blank" rel="noopener">CryptoLib Swift</a></h3>
145+
</div>
146+
<div class="p-4">
147+
<p class="font-p text-sm mb-4">Ver- und Entschlüsselung entsprechend des <a class="text-link" href="https://docs.cryptomator.org/security/architecture/" target="_blank" rel="noopener">Cryptomator-Verschlüsselungsschemas</a> in Swift.</p>
148+
<ul class="list-primary list-primary-sm">
149+
<li>Swift-Pendant zu CryptoLib für iOS- und macOS-Apps</li>
150+
<li>Verfügbar als Swift Package</li>
151+
<li>iOS 13+, macOS 10.15+</li>
152+
</ul>
153+
</div>
154+
</div>
155+
156+
<div class="white-box">
157+
<div class="px-4 py-2 border-b border-primary">
158+
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/cloud-access-swift" target="_blank" rel="noopener">Cloud Access Swift</a></h3>
159+
</div>
160+
<div class="p-4">
161+
<p class="font-p text-sm mb-4">Zugriff auf verschiedene Cloud-Speicheranbieter aus deiner Swift-Anwendung.</p>
162+
<ul class="list-primary list-primary-sm">
163+
<li>Definiert die Cloud-Access-API von Cryptomator für iOS</li>
164+
<li>Grundlage für Tresorformat-Dekorationsschichten</li>
165+
<li>iOS 14+</li>
166+
</ul>
167+
</div>
168+
</div>
127169
</div>
128170
</section>

content/enterprise.en.html

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
4949
<li>Encrypt and decrypt Cryptomator vaults directly retrieved from the cloud</li>
5050
<li>Suitable for accessing the cloud directly without synchronization, e.g. in apps for Android</li>
5151
<li>High-level API functions for encryption and decryption</li>
52-
<li>Java 7+ compatible</li>
52+
<li>Java 8+ compatible</li>
5353
</ul>
5454
</div>
5555
</div>
@@ -64,7 +64,7 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
6464
<li>Encrypt and decrypt Cryptomator vaults that are present on the local filesystem</li>
6565
<li>Suitable for accessing data synchronized to a local directory</li>
6666
<li>Implements a <code class="font-code text-xs">java.nio.file.spi.FileSystemProvider</code> according to JSR-203 using the CryptoLib library</li>
67-
<li>Java 8+ compatible</li>
67+
<li>Java 25+ compatible</li>
6868
</ul>
6969
</div>
7070
</div>
@@ -78,7 +78,7 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
7878
<ul class="list-primary list-primary-sm">
7979
<li>Make the contents of a local directory (any <code class="font-code text-xs">java.nio.file.Path</code>) available via WebDAV</li>
8080
<li>Provides a JEE servlet</li>
81-
<li>Java 8+ compatible</li>
81+
<li>Java 11+ compatible</li>
8282
</ul>
8383
</div>
8484
</div>
@@ -92,7 +92,7 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
9292
<ul class="list-primary list-primary-sm">
9393
<li>Mounting support for Windows, macOS, and Linux</li>
9494
<li>Based on WebDAV-NIO-Adapter-Servlet</li>
95-
<li>Java 8+ compatible</li>
95+
<li>Java 21+ compatible</li>
9696
</ul>
9797
</div>
9898
</div>
@@ -105,24 +105,66 @@ <h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/crypto
105105
<p class="font-p text-sm mb-4">Provide a FUSE drive from within your Java application.</p>
106106
<ul class="list-primary list-primary-sm">
107107
<li>Make the contents of a local directory (any <code class="font-code text-xs">java.nio.file.Path</code>) available via FUSE</li>
108-
<li>Mounting support for macOS and Linux</li>
109-
<li>Java 9+ compatible</li>
108+
<li>Based on jFUSE, mounting support for macOS, Linux, and Windows</li>
109+
<li>Java 25+ compatible</li>
110110
</ul>
111111
</div>
112112
</div>
113-
113+
114114
<div class="white-box">
115115
<div class="px-4 py-2 border-b border-primary">
116-
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/dokany-nio-adapter" target="_blank" rel="noopener">Dokany-NIO-Adapter</a></h3>
116+
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/jfuse" target="_blank" rel="noopener">jFUSE</a></h3>
117117
</div>
118118
<div class="p-4">
119-
<p class="font-p text-sm mb-4">Provide a Dokany drive from within your java application.</p>
119+
<p class="font-p text-sm mb-4">Zero-dependency Java bindings for FUSE using the Foreign Function &amp; Memory API.</p>
120120
<ul class="list-primary list-primary-sm">
121-
<li>Make the contents of a local directory (any <code class="font-code text-xs">java.nio.file.Path</code>) available via Dokany</li>
122-
<li>Mounting support for Windows</li>
121+
<li>Supports macOS (macFUSE), Linux (libfuse3), and Windows (WinFsp)</li>
122+
<li>Uses JEP 454 (Foreign Function &amp; Memory API), no JNI required</li>
123+
<li>JDK 25+ compatible</li>
124+
</ul>
125+
</div>
126+
</div>
127+
128+
<div class="white-box">
129+
<div class="px-4 py-2 border-b border-primary">
130+
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/siv-mode" target="_blank" rel="noopener">SIV-Mode</a></h3>
131+
</div>
132+
<div class="p-4">
133+
<p class="font-p text-sm mb-4">RFC 5297 SIV Authenticated Encryption for Java.</p>
134+
<ul class="list-primary list-primary-sm">
135+
<li>No dependencies, passes official RFC 5297 test vectors</li>
136+
<li>Constant-time authentication, audited by Cure53</li>
123137
<li>Java 8+ compatible</li>
124138
</ul>
125139
</div>
126140
</div>
141+
142+
<div class="white-box">
143+
<div class="px-4 py-2 border-b border-primary">
144+
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/cryptolib-swift" target="_blank" rel="noopener">CryptoLib Swift</a></h3>
145+
</div>
146+
<div class="p-4">
147+
<p class="font-p text-sm mb-4">Encrypt and decrypt data according to <a class="text-link" href="https://docs.cryptomator.org/security/architecture/" target="_blank" rel="noopener">Cryptomator's encryption scheme</a> in Swift.</p>
148+
<ul class="list-primary list-primary-sm">
149+
<li>Swift counterpart to CryptoLib for iOS and macOS apps</li>
150+
<li>Available as Swift Package</li>
151+
<li>iOS 13+, macOS 10.15+</li>
152+
</ul>
153+
</div>
154+
</div>
155+
156+
<div class="white-box">
157+
<div class="px-4 py-2 border-b border-primary">
158+
<h3 class="font-h3 text-lg"><a class="text-link" href="https://github.com/cryptomator/cloud-access-swift" target="_blank" rel="noopener">Cloud Access Swift</a></h3>
159+
</div>
160+
<div class="p-4">
161+
<p class="font-p text-sm mb-4">Access various cloud storage providers from within your Swift application.</p>
162+
<ul class="list-primary list-primary-sm">
163+
<li>Defines cloud access API used by Cryptomator for iOS</li>
164+
<li>Foundation for vault format decoration layers</li>
165+
<li>iOS 14+</li>
166+
</ul>
167+
</div>
168+
</div>
127169
</div>
128170
</section>

content/hub-register.de.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Cryptomator Hub: Registrieren"
3+
url: "/de/hub/register"
4+
type: "hub-register"
5+
---

content/hub-register.en.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: "Cryptomator Hub: Register"
3+
url: "/hub/register"
4+
type: "hub-register"
5+
---

i18n/en.yaml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,45 @@
667667
- id: hub_demo_contact_us_button
668668
translation: "Contact Us"
669669

670+
# Hub CE Registration
671+
- id: hub_ce_registration_description
672+
translation: "Register your Cryptomator Hub instance for a free Community Edition license."
673+
674+
- id: hub_ce_registration_steps_title
675+
translation: "Step <span x-text=\"feedbackData.currentStep + 1\"></span> of <span x-text=\"steps.length\"></span>"
676+
- id: hub_ce_registration_steps_next
677+
translation: "Next"
678+
- id: hub_ce_registration_steps_continue
679+
translation: "Continue"
680+
681+
- id: hub_ce_registration_step_1_nav_title
682+
translation: "Email Address"
683+
- id: hub_ce_registration_step_1_title
684+
translation: "What's your email address?"
685+
- id: hub_ce_registration_step_1_email_placeholder
686+
translation: "Email address"
687+
688+
- id: hub_ce_registration_step_2_confirmation_nav_title
689+
translation: "Confirmation"
690+
- id: hub_ce_registration_step_2_confirmation_title
691+
translation: "Please confirm your email address"
692+
- id: hub_ce_registration_step_2_instructions
693+
translation: "We are going to send a confirmation email to <span x-text=\"submitData.email\"></span>"
694+
- id: hub_ce_registration_step_2_check_email
695+
translation: "Please check your e-mails."
696+
- id: hub_ce_registration_step_2_email_verified
697+
translation: "Your email has been verified successfully."
698+
699+
- id: hub_ce_registration_step_3_license_nav_title
700+
translation: "License Key"
701+
- id: hub_ce_registration_step_3_license_title
702+
translation: "Your Community Edition License Key"
703+
- id: hub_ce_registration_step_3_loading
704+
translation: "Loading license key..."
705+
- id: hub_ce_registration_step_3_success
706+
translation: "Your new license key:"
707+
708+
670709
# Hub Managed
671710
- id: hub_managed_description
672711
translation: "Request access to a managed instance of Cryptomator Hub and get your team on board with client-side encryption for your cloud storage."

0 commit comments

Comments
 (0)