diff --git a/main/core/src/main/java/org/cryptomator/webdav/WebDavServer.java b/main/core/src/main/java/org/cryptomator/webdav/WebDavServer.java index 01cd5f876..6ae5ade87 100644 --- a/main/core/src/main/java/org/cryptomator/webdav/WebDavServer.java +++ b/main/core/src/main/java/org/cryptomator/webdav/WebDavServer.java @@ -16,6 +16,7 @@ import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.SystemUtils; import org.cryptomator.crypto.Cryptor; import org.cryptomator.webdav.jackrabbit.WebDavServlet; import org.eclipse.jetty.server.Connector; @@ -33,7 +34,7 @@ import org.slf4j.LoggerFactory; public final class WebDavServer { private static final Logger LOG = LoggerFactory.getLogger(WebDavServer.class); - private static final String LOCALHOST = "::1"; + private static final String LOCALHOST = SystemUtils.IS_OS_WINDOWS ? "::1" : "localhost"; private static final int MAX_PENDING_REQUESTS = 200; private static final int MAX_THREADS = 200; private static final int MIN_THREADS = 4; diff --git a/main/core/src/main/java/org/cryptomator/webdav/jackrabbit/DavLocatorFactoryImpl.java b/main/core/src/main/java/org/cryptomator/webdav/jackrabbit/DavLocatorFactoryImpl.java index f9aab9192..71ca8e476 100644 --- a/main/core/src/main/java/org/cryptomator/webdav/jackrabbit/DavLocatorFactoryImpl.java +++ b/main/core/src/main/java/org/cryptomator/webdav/jackrabbit/DavLocatorFactoryImpl.java @@ -15,6 +15,7 @@ import java.nio.file.Path; import java.nio.file.StandardOpenOption; import org.apache.commons.collections4.BidiMap; +import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; @@ -154,7 +155,7 @@ class DavLocatorFactoryImpl implements DavLocatorFactory, SensitiveDataSwipeList private DavResourceLocatorImpl(String prefix, String resourcePath) { this.prefix = prefix; - this.resourcePath = resourcePath; + this.resourcePath = FilenameUtils.normalizeNoEndSeparator(resourcePath, true); } @Override diff --git a/main/ui/src/main/java/org/cryptomator/ui/util/mount/LinuxGvfsWebDavMounter.java b/main/ui/src/main/java/org/cryptomator/ui/util/mount/LinuxGvfsWebDavMounter.java index 3a91eb2c7..39a1e1ddb 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/util/mount/LinuxGvfsWebDavMounter.java +++ b/main/ui/src/main/java/org/cryptomator/ui/util/mount/LinuxGvfsWebDavMounter.java @@ -40,15 +40,13 @@ final class LinuxGvfsWebDavMounter implements WebDavMounterStrategy { public WebDavMount mount(URI uri, String name) throws CommandFailedException { final Script mountScript = Script.fromLines( "set -x", - "gvfs-mount \"dav://localhost:$DAV_PORT$DAV_PATH\"", - "xdg-open \"dav://localhost:$DAV_PORT$DAV_PATH\"") - .addEnv("DAV_PORT", String.valueOf(uri.getPort())) - .addEnv("DAV_PATH", uri.getRawPath()); + "gvfs-mount \"dav:$DAV_SSP\"", + "xdg-open \"dav:$DAV_SSP\"") + .addEnv("DAV_SSP", uri.getRawSchemeSpecificPart()); final Script unmountScript = Script.fromLines( "set -x", - "gvfs-mount -u \"dav://localhost:$DAV_PORT$DAV_PATH\"") - .addEnv("DAV_PORT", String.valueOf(uri.getPort())) - .addEnv("DAV_PATH", uri.getRawPath()); + "gvfs-mount -u \"dav:$DAV_SSP\"") + .addEnv("DAV_SSP", uri.getRawSchemeSpecificPart()); mountScript.execute(); return new WebDavMount() { @Override diff --git a/main/ui/src/main/java/org/cryptomator/ui/util/mount/MacOsXWebDavMounter.java b/main/ui/src/main/java/org/cryptomator/ui/util/mount/MacOsXWebDavMounter.java index 92587f906..727e397d1 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/util/mount/MacOsXWebDavMounter.java +++ b/main/ui/src/main/java/org/cryptomator/ui/util/mount/MacOsXWebDavMounter.java @@ -31,9 +31,9 @@ final class MacOsXWebDavMounter implements WebDavMounterStrategy { final String path = "/Volumes/Cryptomator" + uri.getRawPath().replace('/', '_'); final Script mountScript = Script.fromLines( "mkdir \"$MOUNT_PATH\"", - "mount_webdav -S -v $MOUNT_NAME \"[::1]:$PORT$DAV_PATH\" \"$MOUNT_PATH\"", + "mount_webdav -S -v $MOUNT_NAME \"$DAV_AUTHORITY$DAV_PATH\" \"$MOUNT_PATH\"", "open \"$MOUNT_PATH\"") - .addEnv("PORT", String.valueOf(uri.getPort())) + .addEnv("DAV_AUTHORITY", uri.getRawAuthority()) .addEnv("DAV_PATH", uri.getRawPath()) .addEnv("MOUNT_PATH", path) .addEnv("MOUNT_NAME", name);