From eb4d39e8b481a5c16996b3002d318b1bb42f9f8d Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Tue, 12 Sep 2023 13:34:55 +0200 Subject: [PATCH 1/8] introduce 'errorCode' parameter in request --- src/main/java/org/cryptomator/ui/error/ErrorController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/error/ErrorController.java b/src/main/java/org/cryptomator/ui/error/ErrorController.java index 3feb3ff44..deb114116 100644 --- a/src/main/java/org/cryptomator/ui/error/ErrorController.java +++ b/src/main/java/org/cryptomator/ui/error/ErrorController.java @@ -42,7 +42,7 @@ public class ErrorController implements FxController { private static final ObjectMapper JSON = new ObjectMapper(); private static final Logger LOG = LoggerFactory.getLogger(ErrorController.class); - private static final String ERROR_CODES_URL = "https://api.cryptomator.org/desktop/error-codes.json"; + private static final String ERROR_CODES_URL = "https://api.cryptomator.org/desktop/error-codes.json?error-code=%s"; private static final String SEARCH_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/categories/errors?discussions_q=category:Errors+%s"; private static final String REPORT_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/new?category=Errors&title=Error+%s&body=%s"; private static final String SEARCH_ERRORCODE_DELIM = " OR "; @@ -146,7 +146,7 @@ public class ErrorController implements FxController { askedForLookupDatabasePermission.set(true); HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build(); HttpRequest httpRequest = HttpRequest.newBuilder()// - .uri(URI.create(ERROR_CODES_URL))// + .uri(URI.create(ERROR_CODES_URL.formatted(errorCode.toString())))// .build(); httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofInputStream())// .thenAcceptAsync(this::loadHttpResponse, executorService)// From 666cd4a4f05367a4a5723d1fcec9b3517bd6c451 Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Tue, 12 Sep 2023 17:14:45 +0200 Subject: [PATCH 2/8] enhanced request URI with URLEncoder for errorCode --- src/main/java/org/cryptomator/ui/error/ErrorController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/ui/error/ErrorController.java b/src/main/java/org/cryptomator/ui/error/ErrorController.java index deb114116..686d219e1 100644 --- a/src/main/java/org/cryptomator/ui/error/ErrorController.java +++ b/src/main/java/org/cryptomator/ui/error/ErrorController.java @@ -146,7 +146,7 @@ public class ErrorController implements FxController { askedForLookupDatabasePermission.set(true); HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build(); HttpRequest httpRequest = HttpRequest.newBuilder()// - .uri(URI.create(ERROR_CODES_URL.formatted(errorCode.toString())))// + .uri(URI.create(ERROR_CODES_URL.formatted(URLEncoder.encode(errorCode.toString(),StandardCharsets.UTF_8))))// .build(); httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofInputStream())// .thenAcceptAsync(this::loadHttpResponse, executorService)// From 5d7906972b0c59d877c391573d44ed8b9c64e1f4 Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Tue, 12 Sep 2023 17:59:08 +0200 Subject: [PATCH 3/8] added user-agent header with / to HttpRequest --- .../org/cryptomator/ui/error/ErrorController.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/error/ErrorController.java b/src/main/java/org/cryptomator/ui/error/ErrorController.java index 686d219e1..856d8599f 100644 --- a/src/main/java/org/cryptomator/ui/error/ErrorController.java +++ b/src/main/java/org/cryptomator/ui/error/ErrorController.java @@ -6,6 +6,7 @@ import org.cryptomator.common.Environment; import org.cryptomator.common.ErrorCode; import org.cryptomator.common.Nullable; import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.fxapp.UpdateChecker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +43,8 @@ public class ErrorController implements FxController { private static final ObjectMapper JSON = new ObjectMapper(); private static final Logger LOG = LoggerFactory.getLogger(ErrorController.class); - private static final String ERROR_CODES_URL = "https://api.cryptomator.org/desktop/error-codes.json?error-code=%s"; + private static final String USER_AGENT_VERSION_FORMAT = "Cryptomator/%s"; + private static final String ERROR_CODES_URL_FORMAT = "https://api.cryptomator.org/desktop/error-codes.json?error-code=%s"; private static final String SEARCH_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/categories/errors?discussions_q=category:Errors+%s"; private static final String REPORT_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/new?category=Errors&title=Error+%s&body=%s"; private static final String SEARCH_ERRORCODE_DELIM = " OR "; @@ -67,6 +69,7 @@ public class ErrorController implements FxController { private final Stage window; private final Environment environment; private final ExecutorService executorService; + private final UpdateChecker updateChecker; private final BooleanProperty copiedDetails = new SimpleBooleanProperty(); private final ObjectProperty matchingErrorDiscussion = new SimpleObjectProperty<>(); @@ -75,7 +78,7 @@ public class ErrorController implements FxController { private final BooleanProperty askedForLookupDatabasePermission = new SimpleBooleanProperty(); @Inject - ErrorController(Application application, @Named("stackTrace") String stackTrace, ErrorCode errorCode, @Nullable Scene previousScene, Stage window, Environment environment, ExecutorService executorService) { + ErrorController(Application application, @Named("stackTrace") String stackTrace, ErrorCode errorCode, @Nullable Scene previousScene, Stage window, Environment environment, ExecutorService executorService, UpdateChecker updateChecker) { this.application = application; this.stackTrace = stackTrace; this.errorCode = errorCode; @@ -83,6 +86,7 @@ public class ErrorController implements FxController { this.window = window; this.environment = environment; this.executorService = executorService; + this.updateChecker = updateChecker; } @FXML @@ -146,7 +150,8 @@ public class ErrorController implements FxController { askedForLookupDatabasePermission.set(true); HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build(); HttpRequest httpRequest = HttpRequest.newBuilder()// - .uri(URI.create(ERROR_CODES_URL.formatted(URLEncoder.encode(errorCode.toString(),StandardCharsets.UTF_8))))// + .header("User-Agent", USER_AGENT_VERSION_FORMAT.formatted(updateChecker.getCurrentVersion())) + .uri(URI.create(ERROR_CODES_URL_FORMAT.formatted(URLEncoder.encode(errorCode.toString(),StandardCharsets.UTF_8))))// .build(); httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofInputStream())// .thenAcceptAsync(this::loadHttpResponse, executorService)// From 4c836178470b2d1635fdab3a947bd09aed8b7556 Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Tue, 12 Sep 2023 18:07:30 +0200 Subject: [PATCH 4/8] fixed build error --- .../java/org/cryptomator/ui/error/ErrorController.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/error/ErrorController.java b/src/main/java/org/cryptomator/ui/error/ErrorController.java index 856d8599f..8fcc01ea8 100644 --- a/src/main/java/org/cryptomator/ui/error/ErrorController.java +++ b/src/main/java/org/cryptomator/ui/error/ErrorController.java @@ -6,7 +6,6 @@ import org.cryptomator.common.Environment; import org.cryptomator.common.ErrorCode; import org.cryptomator.common.Nullable; import org.cryptomator.ui.common.FxController; -import org.cryptomator.ui.fxapp.UpdateChecker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -69,7 +68,6 @@ public class ErrorController implements FxController { private final Stage window; private final Environment environment; private final ExecutorService executorService; - private final UpdateChecker updateChecker; private final BooleanProperty copiedDetails = new SimpleBooleanProperty(); private final ObjectProperty matchingErrorDiscussion = new SimpleObjectProperty<>(); @@ -78,7 +76,7 @@ public class ErrorController implements FxController { private final BooleanProperty askedForLookupDatabasePermission = new SimpleBooleanProperty(); @Inject - ErrorController(Application application, @Named("stackTrace") String stackTrace, ErrorCode errorCode, @Nullable Scene previousScene, Stage window, Environment environment, ExecutorService executorService, UpdateChecker updateChecker) { + ErrorController(Application application, @Named("stackTrace") String stackTrace, ErrorCode errorCode, @Nullable Scene previousScene, Stage window, Environment environment, ExecutorService executorService) { this.application = application; this.stackTrace = stackTrace; this.errorCode = errorCode; @@ -86,7 +84,6 @@ public class ErrorController implements FxController { this.window = window; this.environment = environment; this.executorService = executorService; - this.updateChecker = updateChecker; } @FXML @@ -150,7 +147,7 @@ public class ErrorController implements FxController { askedForLookupDatabasePermission.set(true); HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build(); HttpRequest httpRequest = HttpRequest.newBuilder()// - .header("User-Agent", USER_AGENT_VERSION_FORMAT.formatted(updateChecker.getCurrentVersion())) + .header("User-Agent", USER_AGENT_VERSION_FORMAT.formatted(environment.getAppVersion())) .uri(URI.create(ERROR_CODES_URL_FORMAT.formatted(URLEncoder.encode(errorCode.toString(),StandardCharsets.UTF_8))))// .build(); httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofInputStream())// From 9d640b57cee557541b5b46db46a8cde234fbe10a Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Wed, 13 Sep 2023 12:31:53 +0200 Subject: [PATCH 5/8] added build number to user-agent header --- src/main/java/org/cryptomator/ui/error/ErrorController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/error/ErrorController.java b/src/main/java/org/cryptomator/ui/error/ErrorController.java index 8fcc01ea8..5009229b5 100644 --- a/src/main/java/org/cryptomator/ui/error/ErrorController.java +++ b/src/main/java/org/cryptomator/ui/error/ErrorController.java @@ -42,7 +42,7 @@ public class ErrorController implements FxController { private static final ObjectMapper JSON = new ObjectMapper(); private static final Logger LOG = LoggerFactory.getLogger(ErrorController.class); - private static final String USER_AGENT_VERSION_FORMAT = "Cryptomator/%s"; + private static final String USER_AGENT_VERSION_FORMAT = "Cryptomator/%s (Build %s)"; private static final String ERROR_CODES_URL_FORMAT = "https://api.cryptomator.org/desktop/error-codes.json?error-code=%s"; private static final String SEARCH_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/categories/errors?discussions_q=category:Errors+%s"; private static final String REPORT_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/new?category=Errors&title=Error+%s&body=%s"; @@ -147,7 +147,7 @@ public class ErrorController implements FxController { askedForLookupDatabasePermission.set(true); HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build(); HttpRequest httpRequest = HttpRequest.newBuilder()// - .header("User-Agent", USER_AGENT_VERSION_FORMAT.formatted(environment.getAppVersion())) + .header("User-Agent", USER_AGENT_VERSION_FORMAT.formatted(environment.getAppVersion(),environment.getBuildNumber().orElse("undefined"))) .uri(URI.create(ERROR_CODES_URL_FORMAT.formatted(URLEncoder.encode(errorCode.toString(),StandardCharsets.UTF_8))))// .build(); httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofInputStream())// From d6a7efcb7f0b98aeddfc6b263a999437685057af Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Tue, 19 Sep 2023 14:00:45 +0200 Subject: [PATCH 6/8] added OS_NAME, OS_VERSION and OS_ARCH to user-agent --- .../org/cryptomator/ui/error/ErrorController.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/error/ErrorController.java b/src/main/java/org/cryptomator/ui/error/ErrorController.java index 5009229b5..0ca8c9dcd 100644 --- a/src/main/java/org/cryptomator/ui/error/ErrorController.java +++ b/src/main/java/org/cryptomator/ui/error/ErrorController.java @@ -2,6 +2,7 @@ package org.cryptomator.ui.error; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.Environment; import org.cryptomator.common.ErrorCode; import org.cryptomator.common.Nullable; @@ -42,7 +43,7 @@ public class ErrorController implements FxController { private static final ObjectMapper JSON = new ObjectMapper(); private static final Logger LOG = LoggerFactory.getLogger(ErrorController.class); - private static final String USER_AGENT_VERSION_FORMAT = "Cryptomator/%s (Build %s)"; + private static final String USER_AGENT_VERSION_FORMAT = "Cryptomator/%s (Build %s) %s %s (%s)"; private static final String ERROR_CODES_URL_FORMAT = "https://api.cryptomator.org/desktop/error-codes.json?error-code=%s"; private static final String SEARCH_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/categories/errors?discussions_q=category:Errors+%s"; private static final String REPORT_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/new?category=Errors&title=Error+%s&body=%s"; @@ -143,11 +144,17 @@ public class ErrorController implements FxController { @FXML public void lookUpSolution() { + String userAgent = USER_AGENT_VERSION_FORMAT.formatted( // + environment.getAppVersion(), // + environment.getBuildNumber().orElse("undefined"), // + SystemUtils.OS_NAME, // + SystemUtils.OS_VERSION, // + SystemUtils.OS_ARCH); // isLoadingHttpResponse.set(true); askedForLookupDatabasePermission.set(true); HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build(); HttpRequest httpRequest = HttpRequest.newBuilder()// - .header("User-Agent", USER_AGENT_VERSION_FORMAT.formatted(environment.getAppVersion(),environment.getBuildNumber().orElse("undefined"))) + .header("User-Agent", userAgent) .uri(URI.create(ERROR_CODES_URL_FORMAT.formatted(URLEncoder.encode(errorCode.toString(),StandardCharsets.UTF_8))))// .build(); httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofInputStream())// From 830970cb75726db8b484e834743cd62cff6f32cc Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Tue, 19 Sep 2023 16:29:12 +0200 Subject: [PATCH 7/8] improved format and naming --- src/main/java/org/cryptomator/ui/error/ErrorController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/error/ErrorController.java b/src/main/java/org/cryptomator/ui/error/ErrorController.java index 0ca8c9dcd..aded9f8b8 100644 --- a/src/main/java/org/cryptomator/ui/error/ErrorController.java +++ b/src/main/java/org/cryptomator/ui/error/ErrorController.java @@ -43,7 +43,7 @@ public class ErrorController implements FxController { private static final ObjectMapper JSON = new ObjectMapper(); private static final Logger LOG = LoggerFactory.getLogger(ErrorController.class); - private static final String USER_AGENT_VERSION_FORMAT = "Cryptomator/%s (Build %s) %s %s (%s)"; + private static final String USER_AGENT_FORMAT = "Cryptomator/%s (Build %s) (%s %s %s)"; private static final String ERROR_CODES_URL_FORMAT = "https://api.cryptomator.org/desktop/error-codes.json?error-code=%s"; private static final String SEARCH_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/categories/errors?discussions_q=category:Errors+%s"; private static final String REPORT_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/new?category=Errors&title=Error+%s&body=%s"; @@ -144,7 +144,7 @@ public class ErrorController implements FxController { @FXML public void lookUpSolution() { - String userAgent = USER_AGENT_VERSION_FORMAT.formatted( // + String userAgent = USER_AGENT_FORMAT.formatted( // environment.getAppVersion(), // environment.getBuildNumber().orElse("undefined"), // SystemUtils.OS_NAME, // From 7a0d50ecca4b777ba17d3979fd515ec9bf293aae Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 20 Sep 2023 10:48:26 +0200 Subject: [PATCH 8/8] removed unnecessary import --- .../java/org/cryptomator/ui/error/ErrorController.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/error/ErrorController.java b/src/main/java/org/cryptomator/ui/error/ErrorController.java index aded9f8b8..61f2b0e10 100644 --- a/src/main/java/org/cryptomator/ui/error/ErrorController.java +++ b/src/main/java/org/cryptomator/ui/error/ErrorController.java @@ -2,7 +2,6 @@ package org.cryptomator.ui.error; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.Environment; import org.cryptomator.common.ErrorCode; import org.cryptomator.common.Nullable; @@ -147,9 +146,9 @@ public class ErrorController implements FxController { String userAgent = USER_AGENT_FORMAT.formatted( // environment.getAppVersion(), // environment.getBuildNumber().orElse("undefined"), // - SystemUtils.OS_NAME, // - SystemUtils.OS_VERSION, // - SystemUtils.OS_ARCH); // + System.getProperty("os.name"), // + System.getProperty("os.version"), // + System.getProperty("os.arch")); isLoadingHttpResponse.set(true); askedForLookupDatabasePermission.set(true); HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).build();