[FEATURE] MirrorHelper module

This commit is contained in:
Gravita 2022-08-28 13:36:49 +07:00
parent 230194f2a0
commit 65ae13a042

View file

@ -1,13 +1,16 @@
package pro.gravit.launcher.utils; package pro.gravit.launcher.utils;
import pro.gravit.launcher.AsyncDownloader;
import pro.gravit.launcher.Launcher; import pro.gravit.launcher.Launcher;
import pro.gravit.launcher.LauncherEngine; import pro.gravit.launcher.LauncherEngine;
import pro.gravit.launcher.LauncherInject;
import pro.gravit.launcher.events.request.LauncherRequestEvent; import pro.gravit.launcher.events.request.LauncherRequestEvent;
import pro.gravit.launcher.request.update.LauncherRequest; import pro.gravit.launcher.request.update.LauncherRequest;
import pro.gravit.utils.helper.IOHelper; import pro.gravit.utils.helper.IOHelper;
import pro.gravit.utils.helper.LogHelper; import pro.gravit.utils.helper.LogHelper;
import pro.gravit.utils.helper.SecurityHelper; import pro.gravit.utils.helper.SecurityHelper;
import javax.net.ssl.HttpsURLConnection;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.MalformedURLException; import java.net.MalformedURLException;
@ -16,11 +19,17 @@
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.StandardOpenOption; import java.nio.file.StandardOpenOption;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
public class LauncherUpdater { public class LauncherUpdater {
@LauncherInject("launcher.certificatePinning")
private static boolean isCertificatePinning;
public static void nothing() { public static void nothing() {
} }
@ -39,6 +48,14 @@ public static Path prepareUpdate(URL url) throws Exception {
Path pathToLauncher = getLauncherPath(); Path pathToLauncher = getLauncherPath();
Path tempFile = Files.createTempFile("launcher-update-", ".jar"); Path tempFile = Files.createTempFile("launcher-update-", ".jar");
URLConnection connection = url.openConnection(); URLConnection connection = url.openConnection();
if (isCertificatePinning) {
HttpsURLConnection connection1 = (HttpsURLConnection) connection;
try {
connection1.setSSLSocketFactory(AsyncDownloader.makeSSLSocketFactory());
} catch (NoSuchAlgorithmException | CertificateException | KeyStoreException | KeyManagementException e) {
throw new IOException(e);
}
}
try (InputStream in = connection.getInputStream()) { try (InputStream in = connection.getInputStream()) {
IOHelper.transfer(in, tempFile); IOHelper.transfer(in, tempFile);
} }