diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServer.java b/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServer.java index 5a4fb7c5..17682490 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServer.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/LaunchServer.java @@ -163,6 +163,7 @@ public AuthProviderPair getAuthProviderPair() { public boolean enabledRadon; public boolean stripLineNumbers; public boolean deleteTempFiles; + public boolean zipDownload; public String startScript; @@ -768,6 +769,7 @@ private void generateConfigIfNotExists(boolean testEnv) throws IOException { newConfig.stripLineNumbers = true; newConfig.deleteTempFiles = true; newConfig.isWarningMissArchJava = true; + newConfig.zipDownload = true; newConfig.components = new HashMap<>(); AuthLimiterComponent authLimiterComponent = new AuthLimiterComponent(); @@ -880,7 +882,7 @@ public void syncProfilesDir() throws IOException { public void syncUpdatesDir(Collection dirs) throws IOException { LogHelper.info("Syncing updates dir"); - boolean start = updatesDirMap == null; + boolean work = updatesDirMap != null; Map> newUpdatesDirMap = new HashMap<>(16); try (DirectoryStream dirStream = Files.newDirectoryStream(updatesDir)) { for (final Path updateDir : dirStream) { @@ -906,7 +908,7 @@ public void syncUpdatesDir(Collection dirs) throws IOException { // Sync and sign update dir LogHelper.info("Syncing '%s' update dir", name); HashedDir updateHDir = new HashedDir(updateDir, null, true, true); - if (!start) processUpdate(updateDir, updateHDir, name); + if (work && config.zipDownload) processUpdate(updateDir, updateHDir, name); newUpdatesDirMap.put(name, new SignedObjectHolder<>(updateHDir, privateKey)); } } diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/binary/JAConfigurator.java b/LaunchServer/src/main/java/pro/gravit/launchserver/binary/JAConfigurator.java index c190062f..3fabb866 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/binary/JAConfigurator.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/binary/JAConfigurator.java @@ -134,6 +134,12 @@ public void setWarningMissArchJava(boolean b) { body.append(";"); } + public void setIsUseBetterUpdate(boolean b) { + body.append("this.isUseBetterUpdate = "); + body.append(b ? "true" : "false"); + body.append(";"); + } + public void setGuardLicense(String name, String key, String encryptKey) { body.append("this.guardLicenseName = \""); body.append(name); diff --git a/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/MainBuildTask.java b/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/MainBuildTask.java index b1a9d83a..b77aec0c 100644 --- a/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/MainBuildTask.java +++ b/LaunchServer/src/main/java/pro/gravit/launchserver/binary/tasks/MainBuildTask.java @@ -137,6 +137,7 @@ public Path process(Path inputJar) throws IOException { jaConfigurator.setGuardType(server.config.launcher.guardType); jaConfigurator.setWarningMissArchJava(server.config.isWarningMissArchJava); jaConfigurator.setEnv(server.config.env); + jaConfigurator.setIsUseBetterUpdate(server.config.zipDownload); if (server.runtime.oemUnlockKey == null) server.runtime.oemUnlockKey = SecurityHelper.randomStringToken(); jaConfigurator.setOemUnlockKey(server.runtime.oemUnlockKey); server.buildHookManager.registerAllClientModuleClass(jaConfigurator); diff --git a/LauncherAPI/src/main/java/pro/gravit/launcher/AutogenConfig.java b/LauncherAPI/src/main/java/pro/gravit/launcher/AutogenConfig.java index 8827a7cf..c34e554f 100644 --- a/LauncherAPI/src/main/java/pro/gravit/launcher/AutogenConfig.java +++ b/LauncherAPI/src/main/java/pro/gravit/launcher/AutogenConfig.java @@ -6,6 +6,7 @@ public class AutogenConfig { public int clientPort; @SuppressWarnings("unused") private boolean isInitModules; + public boolean isUseBetterUpdate; public String guardType; public String secretKeyClient; public String oemUnlockKey; diff --git a/LauncherAPI/src/main/java/pro/gravit/launcher/downloader/UpdateData.java b/LauncherAPI/src/main/java/pro/gravit/launcher/downloader/UpdateData.java index b8a716c0..3937f5d0 100644 --- a/LauncherAPI/src/main/java/pro/gravit/launcher/downloader/UpdateData.java +++ b/LauncherAPI/src/main/java/pro/gravit/launcher/downloader/UpdateData.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.math.BigDecimal; +import pro.gravit.launcher.LauncherConfig; import pro.gravit.launcher.hasher.HashedDir; import pro.gravit.launcher.hasher.HashedEntry; import pro.gravit.utils.helper.IOHelper; @@ -37,7 +38,7 @@ public static boolean needsZipUpdate(HashedDir origd, HashedDir entryd) { if (!needsZip(orig)) return false; double coffSize = BigDecimal.valueOf(entry.size).divide(BigDecimal.valueOf(orig.size)).doubleValue(); double coffCnt = BigDecimal.valueOf(entry.cnt).divide(BigDecimal.valueOf(orig.cnt)).doubleValue(); - return coffSize >= SIMPLE_DOWNLOAD_SIZE_COFF && SIMPLE_DOWNLOAD_FILE_COPF <= coffCnt; + return LauncherConfig.getAutogenConfig().isUseBetterUpdate && coffSize >= SIMPLE_DOWNLOAD_SIZE_COFF && SIMPLE_DOWNLOAD_FILE_COPF <= coffCnt; } private static Pair count(HashedDir hDir) {