diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index cbb68f6c2a..4688264a03 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -47,6 +47,7 @@ import java.util.concurrent.CancellationException; import java.util.concurrent.CountDownLatch; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; import static org.jackhuang.hmcl.ui.FXUtils.checkFxUserThread; import static org.jackhuang.hmcl.util.Lang.thread; @@ -220,13 +221,35 @@ public final class UpdateHandler { commandline.add("-jar"); commandline.add(jar.toAbsolutePath().toString()); commandline.addAll(Arrays.asList(appArgs)); - LOG.info("Starting process: " + commandline); + LOG.info("Starting process: " + maskCommandline(commandline)); new ProcessBuilder(commandline) .directory(Paths.get("").toAbsolutePath().toFile()) .inheritIO() .start(); } + private static String maskCommandline(List commandline) { + return commandline.stream().map(str -> { + if (str.startsWith("-D")) { + int eqIdx = str.indexOf('='); + if (eqIdx != -1) { + String key = str.substring(2, eqIdx); + String value = str.substring(eqIdx + 1); + if (key.contains("http.proxy") || + key.startsWith("https.proxy") || + key.startsWith("socksProxy") || + key.equals("hmcl.microsoft.auth.id") || + key.equals("hmcl.curseforge.apikey") + ) { + return "-D" + key + "=" + (value.isEmpty() ? "" : value.charAt(0) + "*".repeat(value.length() - 1)); + } + } + } + + return str; + }).collect(Collectors.joining(" ")); + } + private static Optional tryRename(Path path, String newVersion) { String filename = path.getFileName().toString(); Matcher matcher = Pattern.compile("^(?[hH][mM][cC][lL][.-])(?\\d+(?:\\.\\d+)*)(?\\.[^.]+)$").matcher(filename);