diff --git a/main/ui/src/main/java/org/cryptomator/ui/logging/ConfigurableFileAppender.java b/main/ui/src/main/java/org/cryptomator/ui/logging/ConfigurableFileAppender.java index 97deffe41..52a1c6732 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/logging/ConfigurableFileAppender.java +++ b/main/ui/src/main/java/org/cryptomator/ui/logging/ConfigurableFileAppender.java @@ -2,11 +2,11 @@ package org.cryptomator.ui.logging; import java.io.IOException; import java.io.Serializable; -import java.net.URI; import java.net.URISyntaxException; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; +import java.util.regex.Pattern; import org.apache.commons.lang3.SystemUtils; import org.apache.logging.log4j.core.Filter; @@ -30,6 +30,7 @@ public class ConfigurableFileAppender extends AbstractOutputStreamAppender layout, Filter filter, FileManager manager) { super(name, layout, filter, true, true, manager); @@ -66,8 +67,12 @@ public class ConfigurableFileAppender extends AbstractOutputStreamAppender;0--1.ipv6-literal.net\" /f"); + final Script proxyBypassCmd = fromLines("reg add \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\" /v \"ProxyOverride\" /d \";0--1.ipv6-literal.net;0--1.ipv6-literal.net:%PORT%\" /f"); + proxyBypassCmd.addEnv("PORT", String.valueOf(serverPort)); proxyBypassCmd.execute(); - final Script mountCmd = fromLines("net use * http://0--1.ipv6-literal.net:" + serverPort + "/bill-gates-mom-uses-goto /persistent:no"); + final Script mountCmd = fromLines("net use * http://0--1.ipv6-literal.net:%PORT%/bill-gates-mom-uses-goto /persistent:no"); + mountCmd.addEnv("PORT", String.valueOf(serverPort)); mountCmd.execute(); } catch (CommandFailedException e) { // will most certainly throw an exception, because this is a fake WebDav path. But now windows has some DNS things cached :) @@ -53,13 +55,16 @@ final class WindowsWebDavMounter implements WebDavMounterStrategy { @Override public WebDavMount mount(URI uri, String name) throws CommandFailedException { + final Script proxyBypassCmd = fromLines("reg add \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\" /v \"ProxyOverride\" /d \";0--1.ipv6-literal.net;0--1.ipv6-literal.net:%PORT%\" /f"); + proxyBypassCmd.addEnv("PORT", String.valueOf(uri.getPort())); final Script mountScript = fromLines("net use * http://0--1.ipv6-literal.net:%PORT%%DAV_PATH% /persistent:no"); mountScript.addEnv("PORT", String.valueOf(uri.getPort())).addEnv("DAV_PATH", uri.getRawPath()); String driveLetter = null; // The ugliness of the following 20 lines is solely windows' fault. Deal with it. for (int i = 0; i < MAX_MOUNT_ATTEMPTS; i++) { try { - final CommandResult mountResult = mountScript.execute(10, TimeUnit.SECONDS); + proxyBypassCmd.execute(); + final CommandResult mountResult = mountScript.execute(5, TimeUnit.SECONDS); driveLetter = getDriveLetter(mountResult.getStdOut()); break; } catch (CommandFailedException ex) { @@ -67,8 +72,8 @@ final class WindowsWebDavMounter implements WebDavMounterStrategy { throw ex; } else { try { - // retry after 2s - Thread.sleep(2000); + // retry after 2.5s + Thread.sleep(2500); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }