mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-01-13 02:03:37 +00:00
Verify existing file checksum to prevent needless downloads
This commit is contained in:
parent
525484e834
commit
9f05b182a2
@ -33,6 +33,7 @@ public class Data {
|
|||||||
public static int remoteMagiskVersionCode = -1;
|
public static int remoteMagiskVersionCode = -1;
|
||||||
public static String magiskLink;
|
public static String magiskLink;
|
||||||
public static String magiskNoteLink;
|
public static String magiskNoteLink;
|
||||||
|
public static String magiskMD5;
|
||||||
public static String remoteManagerVersionString;
|
public static String remoteManagerVersionString;
|
||||||
public static int remoteManagerVersionCode = -1;
|
public static int remoteManagerVersionCode = -1;
|
||||||
public static String managerLink;
|
public static String managerLink;
|
||||||
|
@ -68,6 +68,7 @@ public class CheckUpdates {
|
|||||||
Data.remoteMagiskVersionCode = getInt(magisk, "versionCode", -1);
|
Data.remoteMagiskVersionCode = getInt(magisk, "versionCode", -1);
|
||||||
Data.magiskLink = getString(magisk, "link", null);
|
Data.magiskLink = getString(magisk, "link", null);
|
||||||
Data.magiskNoteLink = getString(magisk, "note", null);
|
Data.magiskNoteLink = getString(magisk, "note", null);
|
||||||
|
Data.magiskMD5 = getString(magisk, "md5", null);
|
||||||
|
|
||||||
JSONObject manager = getJson(json, "app");
|
JSONObject manager = getJson(json, "app");
|
||||||
Data.remoteManagerVersionString = getString(manager, "version", null);
|
Data.remoteManagerVersionString = getString(manager, "version", null);
|
||||||
|
@ -35,6 +35,7 @@ import org.kamranzafar.jtar.TarOutputStream;
|
|||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.FilterInputStream;
|
import java.io.FilterInputStream;
|
||||||
@ -136,19 +137,28 @@ public class InstallMagisk extends ParallelTask<Void, Void, Boolean> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void extractFiles(String arch) throws IOException {
|
private void extractFiles(String arch) throws IOException {
|
||||||
console.add("- Downloading zip");
|
|
||||||
String filename = Utils.fmt("Magisk-v%s(%d).zip",
|
String filename = Utils.fmt("Magisk-v%s(%d).zip",
|
||||||
Data.remoteMagiskVersionString, Data.remoteMagiskVersionCode);
|
Data.remoteMagiskVersionString, Data.remoteMagiskVersionCode);
|
||||||
HttpURLConnection conn = WebService.mustRequest(Data.magiskLink, null);
|
|
||||||
BufferedInputStream buf = new BufferedInputStream(new ProgressStream(conn));
|
|
||||||
buf.mark(Integer.MAX_VALUE);
|
|
||||||
File zip = new File(Download.EXTERNAL_PATH, filename);
|
File zip = new File(Download.EXTERNAL_PATH, filename);
|
||||||
zip.getParentFile().mkdirs();
|
zip.getParentFile().mkdirs();
|
||||||
try (OutputStream out = new FileOutputStream(zip)) {
|
BufferedInputStream buf;
|
||||||
ShellUtils.pump(buf, out);
|
|
||||||
|
if (!ShellUtils.checkSum("MD5", zip, Data.magiskMD5)) {
|
||||||
|
console.add("- Downloading zip");
|
||||||
|
HttpURLConnection conn = WebService.mustRequest(Data.magiskLink, null);
|
||||||
|
buf = new BufferedInputStream(new ProgressStream(conn), conn.getContentLength());
|
||||||
|
buf.mark(Integer.MAX_VALUE);
|
||||||
|
try (OutputStream out = new FileOutputStream(zip)) {
|
||||||
|
ShellUtils.pump(buf, out);
|
||||||
|
}
|
||||||
buf.reset();
|
buf.reset();
|
||||||
|
conn.disconnect();
|
||||||
|
} else {
|
||||||
|
console.add("- Existing zip found");
|
||||||
|
buf = new BufferedInputStream(new FileInputStream(zip), (int) zip.length());
|
||||||
|
buf.mark(Integer.MAX_VALUE);
|
||||||
}
|
}
|
||||||
conn.disconnect();
|
|
||||||
console.add("- Extracting files");
|
console.add("- Extracting files");
|
||||||
try (InputStream in = buf) {
|
try (InputStream in = buf) {
|
||||||
ZipUtils.unzip(in, installDir, arch + "/", true);
|
ZipUtils.unzip(in, installDir, arch + "/", true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user