diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml
index f966f6b22..44ca02028 100644
--- a/.github/workflows/appimage.yml
+++ b/.github/workflows/appimage.yml
@@ -85,12 +85,12 @@ jobs:
--java-options "-Xmx256m"
--java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\""
--java-options "-Dfile.encoding=\"utf-8\""
- --java-options "-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\""
- --java-options "-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\""
- --java-options "-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\""
- --java-options "-Dcryptomator.p12Path=\"~/.config/Cryptomator/key.p12\""
- --java-options "-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\""
- --java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\""
+ --java-options "-Dcryptomator.logDir=\"@{userhome}/.local/share/Cryptomator/logs\""
+ --java-options "-Dcryptomator.pluginDir=\"@{userhome}/.local/share/Cryptomator/plugins\""
+ --java-options "-Dcryptomator.settingsPath=\"@{userhome}/.config/Cryptomator/settings.json:@{userhome}/.Cryptomator/settings.json\""
+ --java-options "-Dcryptomator.p12Path=\"@{userhome}/.config/Cryptomator/key.p12\""
+ --java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/.config/Cryptomator/ipc.socket\""
+ --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/.local/share/Cryptomator/mnt\""
--java-options "-Dcryptomator.showTrayIcon=false"
--java-options "-Dcryptomator.buildNumber=\"appimage-${{ needs.get-version.outputs.revNum }}\""
--add-launcher Cryptomator-gtk2=launcher-gtk2.properties
diff --git a/.github/workflows/debian.yml b/.github/workflows/debian.yml
index bd353a434..adec8b2c5 100644
--- a/.github/workflows/debian.yml
+++ b/.github/workflows/debian.yml
@@ -3,9 +3,6 @@ name: Build Debian Package
on:
workflow_dispatch:
inputs:
- ref:
- description: 'GitHub Ref (e.g. refs/tags/1.6.16)'
- required: true
semver:
description: 'SemVer String (e.g. 1.7.0-beta1)'
required: true
@@ -29,9 +26,6 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- with:
- ref: ${{ inputs.ref }}
- fetch-depth: 0
- id: versions
name: Get version information
run: |
@@ -141,15 +135,10 @@ jobs:
run: dput ppa:sebastian-stenzel/cryptomator-beta cryptomator_*_source.changes
# If ref is a tag, also upload to GitHub Releases:
- - name: Determine tag name
- if: startsWith(inputs.ref, 'refs/tags/')
- run: |
- REF=${{ inputs.ref }}
- echo "TAG_NAME=${REF##*/}" >> $GITHUB_ENV
- name: Publish Debian package on GitHub Releases
- if: startsWith(inputs.ref, 'refs/tags/')
+ if: startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
run: |
artifacts=$(ls | grep cryptomator*.deb)
- gh release upload ${{ env.TAG_NAME }} $artifacts
\ No newline at end of file
+ gh release upload ${{ github.ref_name }} $artifacts
\ No newline at end of file
diff --git a/.github/workflows/mac-dmg.yml b/.github/workflows/mac-dmg.yml
index bad80138b..bad7f572c 100644
--- a/.github/workflows/mac-dmg.yml
+++ b/.github/workflows/mac-dmg.yml
@@ -98,13 +98,13 @@ jobs:
--java-options "-Dapple.awt.enableTemplateImages=true"
--java-options "-Dsun.java2d.metal=true"
--java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\""
- --java-options "-Dcryptomator.logDir=\"~/Library/Logs/Cryptomator\""
- --java-options "-Dcryptomator.pluginDir=\"~/Library/Application Support/Cryptomator/Plugins\""
- --java-options "-Dcryptomator.settingsPath=\"~/Library/Application Support/Cryptomator/settings.json\""
- --java-options "-Dcryptomator.p12Path=\"~/Library/Application Support/Cryptomator/key.p12\""
- --java-options "-Dcryptomator.ipcSocketPath=\"~/Library/Application Support/Cryptomator/ipc.socket\""
+ --java-options "-Dcryptomator.logDir=\"@{userhome}/Library/Logs/Cryptomator\""
+ --java-options "-Dcryptomator.pluginDir=\"@{userhome}/Library/Application Support/Cryptomator/Plugins\""
+ --java-options "-Dcryptomator.settingsPath=\"@{userhome}/Library/Application Support/Cryptomator/settings.json\""
+ --java-options "-Dcryptomator.p12Path=\"@{userhome}/Library/Application Support/Cryptomator/key.p12\""
+ --java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/Library/Application Support/Cryptomator/ipc.socket\""
--java-options "-Dcryptomator.integrationsMac.keychainServiceName=\"Cryptomator\""
- --java-options "-Dcryptomator.mountPointsDir=\"~/Cryptomator\""
+ --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Library/Application Support/Cryptomator/mnt\""
--java-options "-Dcryptomator.showTrayIcon=true"
--java-options "-Dcryptomator.buildNumber=\"dmg-${{ needs.get-version.outputs.revNum }}\""
--mac-package-identifier org.cryptomator
diff --git a/.github/workflows/win-exe.yml b/.github/workflows/win-exe.yml
index df67c1dcb..23dcae7c5 100644
--- a/.github/workflows/win-exe.yml
+++ b/.github/workflows/win-exe.yml
@@ -112,17 +112,17 @@ jobs:
--java-options "-Xmx256m"
--java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\""
--java-options "-Dfile.encoding=\"utf-8\""
- --java-options "-Dcryptomator.logDir=\"~/AppData/Roaming/Cryptomator\""
- --java-options "-Dcryptomator.pluginDir=\"~/AppData/Roaming/Cryptomator/Plugins\""
- --java-options "-Dcryptomator.settingsPath=\"~/AppData/Roaming/Cryptomator/settings.json\""
- --java-options "-Dcryptomator.p12Path=\"~/AppData/Roaming/Cryptomator/key.p12\""
- --java-options "-Dcryptomator.ipcSocketPath=\"~/AppData/Roaming/Cryptomator/ipc.socket\""
- --java-options "-Dcryptomator.mountPointsDir=\"~/Cryptomator\""
+ --java-options "-Dcryptomator.logDir=\"@{localappdata}/Cryptomator\""
+ --java-options "-Dcryptomator.pluginDir=\"@{appdata}/Cryptomator/Plugins\""
+ --java-options "-Dcryptomator.settingsPath=\"@{appdata}/Cryptomator/settings.json:@{userhome}/AppData/Roaming/Cryptomator/settings.json\""
+ --java-options "-Dcryptomator.p12Path=\"@{appdata}/Cryptomator/key.p12:@{userhome}/AppData/Roaming/Cryptomator/key.p12\""
+ --java-options "-Dcryptomator.ipcSocketPath=\"@{localappdata}/Cryptomator/ipc.socket\""
+ --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Cryptomator\""
--java-options "-Dcryptomator.loopbackAlias=\"${{ env.LOOPBACK_ALIAS }}\""
--java-options "-Dcryptomator.showTrayIcon=true"
--java-options "-Dcryptomator.buildNumber=\"msi-${{ needs.get-version.outputs.revNum }}\""
--java-options "-Dcryptomator.integrationsWin.autoStartShellLinkName=\"Cryptomator\""
- --java-options "-Dcryptomator.integrationsWin.keychainPaths=\"~/AppData/Roaming/Cryptomator/keychain.json\""
+ --java-options "-Dcryptomator.integrationsWin.keychainPaths=\"@{appdata}/Cryptomator/keychain.json:@{userhome}/AppData/Roaming/Cryptomator/keychain.json\""
--java-options "-Djavafx.verbose=${{ inputs.isDebug }}"
--resource-dir dist/win/resources
--icon dist/win/resources/Cryptomator.ico
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index d361191e8..dd49b35b0 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -53,9 +53,10 @@
-
+
+
diff --git a/.idea/runConfigurations/Cryptomator_Linux.xml b/.idea/runConfigurations/Cryptomator_Linux.xml
index 887a5044e..3206f553a 100644
--- a/.idea/runConfigurations/Cryptomator_Linux.xml
+++ b/.idea/runConfigurations/Cryptomator_Linux.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/.idea/runConfigurations/Cryptomator_Linux_Dev.xml b/.idea/runConfigurations/Cryptomator_Linux_Dev.xml
index 1bcd27ff3..26977ca51 100644
--- a/.idea/runConfigurations/Cryptomator_Linux_Dev.xml
+++ b/.idea/runConfigurations/Cryptomator_Linux_Dev.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/.idea/runConfigurations/Cryptomator_Windows.xml b/.idea/runConfigurations/Cryptomator_Windows.xml
index 3c4ecc4a3..36d1e4e14 100644
--- a/.idea/runConfigurations/Cryptomator_Windows.xml
+++ b/.idea/runConfigurations/Cryptomator_Windows.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/.idea/runConfigurations/Cryptomator_Windows_Dev.xml b/.idea/runConfigurations/Cryptomator_Windows_Dev.xml
index 2093aee5e..778043a91 100644
--- a/.idea/runConfigurations/Cryptomator_Windows_Dev.xml
+++ b/.idea/runConfigurations/Cryptomator_Windows_Dev.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/.idea/runConfigurations/Cryptomator_macOS.xml b/.idea/runConfigurations/Cryptomator_macOS.xml
index 03e231c77..006986c2c 100644
--- a/.idea/runConfigurations/Cryptomator_macOS.xml
+++ b/.idea/runConfigurations/Cryptomator_macOS.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/.idea/runConfigurations/Cryptomator_macOS_Dev.xml b/.idea/runConfigurations/Cryptomator_macOS_Dev.xml
index 4aed7aed5..8b0de0e93 100644
--- a/.idea/runConfigurations/Cryptomator_macOS_Dev.xml
+++ b/.idea/runConfigurations/Cryptomator_macOS_Dev.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/dist/linux/appimage/build.sh b/dist/linux/appimage/build.sh
index 487a1fee0..aaa28c587 100755
--- a/dist/linux/appimage/build.sh
+++ b/dist/linux/appimage/build.sh
@@ -50,12 +50,12 @@ ${JAVA_HOME}/bin/jpackage \
--java-options "-Xmx256m" \
--app-version "${VERSION}.${REVISION_NO}" \
--java-options "-Dfile.encoding=\"utf-8\"" \
- --java-options "-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\"" \
- --java-options "-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\"" \
- --java-options "-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\"" \
- --java-options "-Dcryptomator.p12Path=\"~/.config/Cryptomator/key.p12\"" \
- --java-options "-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\"" \
- --java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\"" \
+ --java-options "-Dcryptomator.logDir=\"@{userhome}/.local/share/Cryptomator/logs\"" \
+ --java-options "-Dcryptomator.pluginDir=\"@{userhome}/.local/share/Cryptomator/plugins\"" \
+ --java-options "-Dcryptomator.settingsPath=\"@{userhome}/.config/Cryptomator/settings.json:@{userhome}/.Cryptomator/settings.json\"" \
+ --java-options "-Dcryptomator.p12Path=\"@{userhome}/.config/Cryptomator/key.p12\"" \
+ --java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/.config/Cryptomator/ipc.socket\"" \
+ --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/.local/share/Cryptomator/mnt\"" \
--java-options "-Dcryptomator.showTrayIcon=false" \
--java-options "-Dcryptomator.buildNumber=\"appimage-${REVISION_NO}\"" \
--add-launcher cryptomator-gtk2=launcher-gtk2.properties \
diff --git a/dist/linux/debian/rules b/dist/linux/debian/rules
index e0f077cc9..e1aec8068 100755
--- a/dist/linux/debian/rules
+++ b/dist/linux/debian/rules
@@ -48,12 +48,12 @@ override_dh_auto_build:
--java-options "-Xss5m" \
--java-options "-Xmx256m" \
--java-options "-Dfile.encoding=\"utf-8\"" \
- --java-options "-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\"" \
- --java-options "-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\"" \
- --java-options "-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\"" \
- --java-options "-Dcryptomator.p12Path=\"~/.config/Cryptomator/key.p12\"" \
- --java-options "-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\"" \
- --java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\"" \
+ --java-options "-Dcryptomator.logDir=\"@{userhome}/.local/share/Cryptomator/logs\"" \
+ --java-options "-Dcryptomator.pluginDir=\"@{userhome}/.local/share/Cryptomator/plugins\"" \
+ --java-options "-Dcryptomator.settingsPath=\"@{userhome}/.config/Cryptomator/settings.json:@{userhome}/.Cryptomator/settings.json\"" \
+ --java-options "-Dcryptomator.p12Path=\"@{userhome}/.config/Cryptomator/key.p12\"" \
+ --java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/.config/Cryptomator/ipc.socket\"" \
+ --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/.local/share/Cryptomator/mnt\"" \
--java-options "-Dcryptomator.showTrayIcon=false" \
--java-options "-Dcryptomator.buildNumber=\"deb-${REVISION_NUM}\"" \
--java-options "-Dcryptomator.appVersion=\"${SEMVER_STR}\"" \
diff --git a/dist/mac/dmg/build.sh b/dist/mac/dmg/build.sh
index 23917f9c5..7330a873e 100755
--- a/dist/mac/dmg/build.sh
+++ b/dist/mac/dmg/build.sh
@@ -74,13 +74,13 @@ ${JAVA_HOME}/bin/jpackage \
--java-options "-Dapple.awt.enableTemplateImages=true" \
--java-options "-Dsun.java2d.metal=true" \
--java-options "-Dcryptomator.appVersion=\"${VERSION_NO}\"" \
- --java-options "-Dcryptomator.logDir=\"~/Library/Logs/${APP_NAME}\"" \
- --java-options "-Dcryptomator.pluginDir=\"~/Library/Application Support/${APP_NAME}/Plugins\"" \
- --java-options "-Dcryptomator.settingsPath=\"~/Library/Application Support/${APP_NAME}/settings.json\"" \
- --java-options "-Dcryptomator.ipcSocketPath=\"~/Library/Application Support/${APP_NAME}/ipc.socket\"" \
- --java-options "-Dcryptomator.p12Path=\"~/Library/Application Support/${APP_NAME}/key.p12\"" \
+ --java-options "-Dcryptomator.logDir=\"@{userhome}/Library/Logs/${APP_NAME}\"" \
+ --java-options "-Dcryptomator.pluginDir=\"@{userhome}/Library/Application Support/${APP_NAME}/Plugins\"" \
+ --java-options "-Dcryptomator.settingsPath=\"@{userhome}/Library/Application Support/${APP_NAME}/settings.json\"" \
+ --java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/Library/Application Support/${APP_NAME}/ipc.socket\"" \
+ --java-options "-Dcryptomator.p12Path=\"@{userhome}/Library/Application Support/${APP_NAME}/key.p12\"" \
--java-options "-Dcryptomator.integrationsMac.keychainServiceName=\"${APP_NAME}\"" \
- --java-options "-Dcryptomator.mountPointsDir=\"~/${APP_NAME}\"" \
+ --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Library/Application Support${APP_NAME}/mnt\"" \
--java-options "-Dcryptomator.showTrayIcon=true" \
--java-options "-Dcryptomator.buildNumber=\"dmg-${REVISION_NO}\"" \
--mac-package-identifier ${PACKAGE_IDENTIFIER} \
diff --git a/dist/win/build.ps1 b/dist/win/build.ps1
index 74532a96a..b8394bf3f 100644
--- a/dist/win/build.ps1
+++ b/dist/win/build.ps1
@@ -82,15 +82,15 @@ if ($clean -and (Test-Path -Path $appPath)) {
--java-options "-Dcryptomator.appVersion=`"$semVerNo`"" `
--app-version "$semVerNo.$revisionNo" `
--java-options "-Dfile.encoding=`"utf-8`"" `
- --java-options "-Dcryptomator.logDir=`"~/AppData/Roaming/$AppName`"" `
- --java-options "-Dcryptomator.pluginDir=`"~/AppData/Roaming/$AppName/Plugins`"" `
- --java-options "-Dcryptomator.settingsPath=`"~/AppData/Roaming/$AppName/settings.json`"" `
- --java-options "-Dcryptomator.ipcSocketPath=`"~/AppData/Roaming/$AppName/ipc.socket`"" `
- --java-options "-Dcryptomator.p12Path=`"~/AppData/Roaming/$AppName/key.p12`"" `
- --java-options "-Dcryptomator.mountPointsDir=`"~/$AppName`"" `
+ --java-options "-Dcryptomator.logDir=`"@{localappdata}/$AppName`"" `
+ --java-options "-Dcryptomator.pluginDir=`"@{appdata}/$AppName/Plugins`"" `
+ --java-options "-Dcryptomator.settingsPath=`"@{appdata}/$AppName/settings.json:@{userhome}/AppData/Roaming/$AppName/settings.json`"" `
+ --java-options "-Dcryptomator.ipcSocketPath=`"@{localappdata}/$AppName/ipc.socket`"" `
+ --java-options "-Dcryptomator.p12Path=`"@{appdata}/$AppName/key.p12:@{userhome}/AppData/Roaming/$AppName/key.p12`"" `
+ --java-options "-Dcryptomator.mountPointsDir=`"@{userhome}/$AppName`"" `
--java-options "-Dcryptomator.loopbackAlias=`"$LoopbackAlias`"" `
--java-options "-Dcryptomator.integrationsWin.autoStartShellLinkName=`"$AppName`"" `
- --java-options "-Dcryptomator.integrationsWin.keychainPaths=`"~/AppData/Roaming/$AppName/keychain.json`"" `
+ --java-options "-Dcryptomator.integrationsWin.keychainPaths=`"@{appdata}/$AppName/keychain.json:@{userhome}/AppData/Roaming/$AppName/keychain.json`"" `
--java-options "-Dcryptomator.showTrayIcon=true" `
--java-options "-Dcryptomator.buildNumber=`"msi-$revisionNo`"" `
--resource-dir resources `
diff --git a/pom.xml b/pom.xml
index ed08a3d18..7063b72fc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,8 +46,8 @@
3.12.0
2.45
2.2
- 32.0.0-jre
- 2.10.1
+ 32.0.1-jre
+ 2.15.2
20.0.1
4.4.0
9.31
@@ -157,6 +157,11 @@
nimbus-jose-jwt
${nimbus-jose.version}
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
@@ -206,11 +211,6 @@
dagger
${dagger.version}
-
- com.google.code.gson
- gson
- ${gson.version}
-
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 54938a0f0..b353b7a8a 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -5,6 +5,7 @@ import org.cryptomator.common.locationpresets.DropboxWindowsLocationPresetsProvi
import org.cryptomator.common.locationpresets.GoogleDriveLocationPresetsProvider;
import org.cryptomator.common.locationpresets.ICloudMacLocationPresetsProvider;
import org.cryptomator.common.locationpresets.ICloudWindowsLocationPresetsProvider;
+import org.cryptomator.common.locationpresets.LeitzcloudLocationPresetsProvider;
import org.cryptomator.common.locationpresets.LocationPresetsProvider;
import org.cryptomator.common.locationpresets.MegaLocationPresetsProvider;
import org.cryptomator.common.locationpresets.OneDriveLinuxLocationPresetsProvider;
@@ -37,7 +38,7 @@ open module org.cryptomator.desktop {
requires ch.qos.logback.core;
requires com.auth0.jwt;
requires com.google.common;
- requires com.google.gson;
+ requires com.fasterxml.jackson.databind;
requires com.nimbusds.jose.jwt;
requires com.nulabinc.zxcvbn;
requires com.tobiasdiez.easybind;
@@ -53,11 +54,12 @@ open module org.cryptomator.desktop {
provides TrayMenuController with AwtTrayMenuController;
provides Configurator with LogbackConfiguratorFactory;
- provides LocationPresetsProvider with DropboxMacLocationPresetsProvider, //
- DropboxWindowsLocationPresetsProvider, DropboxLinuxLocationPresetsProvider, //
- ICloudMacLocationPresetsProvider, ICloudWindowsLocationPresetsProvider, //
+ provides LocationPresetsProvider with //
+ DropboxWindowsLocationPresetsProvider, DropboxMacLocationPresetsProvider, DropboxLinuxLocationPresetsProvider, //
GoogleDriveLocationPresetsProvider, //
- PCloudLocationPresetsProvider, MegaLocationPresetsProvider, //
- OneDriveLinuxLocationPresetsProvider, OneDriveWindowsLocationPresetsProvider, //
- OneDriveMacLocationPresetsProvider;
+ ICloudWindowsLocationPresetsProvider, ICloudMacLocationPresetsProvider, //
+ LeitzcloudLocationPresetsProvider, //
+ MegaLocationPresetsProvider, //
+ OneDriveWindowsLocationPresetsProvider, OneDriveMacLocationPresetsProvider, OneDriveLinuxLocationPresetsProvider, //
+ PCloudLocationPresetsProvider;
}
\ No newline at end of file
diff --git a/src/main/java/org/cryptomator/common/CommonsModule.java b/src/main/java/org/cryptomator/common/CommonsModule.java
index 8ecfa51b6..4ac07495e 100644
--- a/src/main/java/org/cryptomator/common/CommonsModule.java
+++ b/src/main/java/org/cryptomator/common/CommonsModule.java
@@ -139,9 +139,9 @@ public abstract class CommonsModule {
@Provides
@Singleton
static ObservableValue provideServerSocketAddressBinding(Settings settings) {
- return settings.port().map(port -> {
+ return settings.port.map(port -> {
String host = SystemUtils.IS_OS_WINDOWS ? "127.0.0.1" : "localhost";
- return InetSocketAddress.createUnresolved(host, settings.port().intValue());
+ return InetSocketAddress.createUnresolved(host, settings.port.intValue());
});
}
diff --git a/src/main/java/org/cryptomator/common/Environment.java b/src/main/java/org/cryptomator/common/Environment.java
index 383261119..66374fc17 100644
--- a/src/main/java/org/cryptomator/common/Environment.java
+++ b/src/main/java/org/cryptomator/common/Environment.java
@@ -18,7 +18,6 @@ import java.util.stream.StreamSupport;
public class Environment {
private static final Logger LOG = LoggerFactory.getLogger(Environment.class);
- private static final Path RELATIVE_HOME_DIR = Paths.get("~");
private static final char PATH_LIST_SEP = ':';
private static final int DEFAULT_MIN_PW_LENGTH = 8;
private static final String SETTINGS_PATH_PROP_NAME = "cryptomator.settingsPath";
@@ -80,7 +79,7 @@ public class Environment {
return getPaths(P12_PATH_PROP_NAME);
}
- public Stream ipcSocketPath() {
+ public Stream getIpcSocketPath() {
return getPaths(IPC_SOCKET_PATH_PROP_NAME);
}
@@ -89,7 +88,7 @@ public class Environment {
}
public Optional getLogDir() {
- return getPath(LOG_DIR_PROP_NAME).map(this::replaceHomeDir);
+ return getPath(LOG_DIR_PROP_NAME);
}
public Optional getLoopbackAlias() {
@@ -97,11 +96,11 @@ public class Environment {
}
public Optional getPluginDir() {
- return getPath(PLUGIN_DIR_PROP_NAME).map(this::replaceHomeDir);
+ return getPath(PLUGIN_DIR_PROP_NAME);
}
public Optional getMountPointsDir() {
- return getPath(MOUNTPOINT_DIR_PROP_NAME).map(this::replaceHomeDir);
+ return getPath(MOUNTPOINT_DIR_PROP_NAME);
}
/**
@@ -131,22 +130,9 @@ public class Environment {
}
// visible for testing
- public Path getHomeDir() {
- return getPath("user.home").orElseThrow();
- }
-
- // visible for testing
- public Stream getPaths(String propertyName) {
+ Stream getPaths(String propertyName) {
Stream rawSettingsPaths = getRawList(propertyName, PATH_LIST_SEP);
- return rawSettingsPaths.filter(Predicate.not(Strings::isNullOrEmpty)).map(Paths::get).map(this::replaceHomeDir);
- }
-
- private Path replaceHomeDir(Path path) {
- if (path.startsWith(RELATIVE_HOME_DIR)) {
- return getHomeDir().resolve(RELATIVE_HOME_DIR.relativize(path));
- } else {
- return path;
- }
+ return rawSettingsPaths.filter(Predicate.not(Strings::isNullOrEmpty)).map(Path::of);
}
private Stream getRawList(String propertyName, char separator) {
diff --git a/src/main/java/org/cryptomator/common/LicenseHolder.java b/src/main/java/org/cryptomator/common/LicenseHolder.java
index be36e6968..bc52966ea 100644
--- a/src/main/java/org/cryptomator/common/LicenseHolder.java
+++ b/src/main/java/org/cryptomator/common/LicenseHolder.java
@@ -30,7 +30,7 @@ public class LicenseHolder {
this.licenseSubject = validJwtClaims.map(DecodedJWT::getSubject);
this.validLicenseProperty = validJwtClaims.isNotNull();
- Optional claims = licenseChecker.check(settings.licenseKey().get());
+ Optional claims = licenseChecker.check(settings.licenseKey.get());
validJwtClaims.set(claims.orElse(null));
}
@@ -38,7 +38,7 @@ public class LicenseHolder {
Optional claims = licenseChecker.check(licenseKey);
validJwtClaims.set(claims.orElse(null));
if (claims.isPresent()) {
- settings.licenseKey().set(licenseKey);
+ settings.licenseKey.set(licenseKey);
return true;
} else {
return false;
diff --git a/src/main/java/org/cryptomator/common/PropertiesDecorator.java b/src/main/java/org/cryptomator/common/PropertiesDecorator.java
new file mode 100644
index 000000000..5235d50b5
--- /dev/null
+++ b/src/main/java/org/cryptomator/common/PropertiesDecorator.java
@@ -0,0 +1,171 @@
+package org.cryptomator.common;
+
+import org.jetbrains.annotations.Nullable;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.InvalidPropertiesFormatException;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.function.BiConsumer;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+
+class PropertiesDecorator extends Properties {
+
+ protected final Properties delegate;
+
+ PropertiesDecorator(Properties delegate) {
+ this.delegate = delegate;
+ }
+
+ @Override
+ public String getProperty(String key) {return delegate.getProperty(key);}
+
+ @Override
+ public String getProperty(String key, String defaultValue) {return delegate.getProperty(key, defaultValue);}
+
+ @Override
+ public synchronized Object setProperty(String key, String value) {
+ return delegate.setProperty(key, value);
+ }
+
+ @Override
+ public synchronized void load(Reader reader) throws IOException {delegate.load(reader);}
+
+ @Override
+ public synchronized void load(InputStream inStream) throws IOException {delegate.load(inStream);}
+
+ @Override
+ public void store(Writer writer, String comments) throws IOException {delegate.store(writer, comments);}
+
+ @Override
+ public void store(OutputStream out, @Nullable String comments) throws IOException {delegate.store(out, comments);}
+
+ @Override
+ public synchronized void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException {delegate.loadFromXML(in);}
+
+ @Override
+ public void storeToXML(OutputStream os, String comment) throws IOException {delegate.storeToXML(os, comment);}
+
+ @Override
+ public void storeToXML(OutputStream os, String comment, String encoding) throws IOException {delegate.storeToXML(os, comment, encoding);}
+
+ @Override
+ public void storeToXML(OutputStream os, String comment, Charset charset) throws IOException {delegate.storeToXML(os, comment, charset);}
+
+ @Override
+ public Enumeration> propertyNames() {return delegate.propertyNames();}
+
+ @Override
+ public Set stringPropertyNames() {return delegate.stringPropertyNames();}
+
+ @Override
+ public void list(PrintStream out) {delegate.list(out);}
+
+ @Override
+ public void list(PrintWriter out) {delegate.list(out);}
+
+ @Override
+ public int size() {return delegate.size();}
+
+ @Override
+ public boolean isEmpty() {return delegate.isEmpty();}
+
+ @Override
+ public Enumeration