Skip to content

Commit 902f041

Browse files
authored
Merge pull request #9 from kivattt/main
Add SHA256 checksum to verify ReIndev .jar downloads
2 parents 740b594 + edb73c4 commit 902f041

File tree

2 files changed

+61
-4
lines changed

2 files changed

+61
-4
lines changed

build.gradle

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import java.nio.file.Files
2+
import java.security.MessageDigest
3+
14
plugins {
25
id 'java-base'
36
}
@@ -105,14 +108,66 @@ File clientFile = new File(project.rootDir, "client" + File.separator +
105108
"libs" + File.separator + project['reindev.clientJar'])
106109

107110
if (!clientFile.exists()) {
108-
println("Downloading client...")
109-
download(new URL(project['reindev.clientUrl'] as String), clientFile)
111+
println("Downloading client from " + project['reindev.clientUrl'])
112+
113+
for (int i = 0; i < 2; i++) { // Max 1 retry for downloading
114+
if (i > 0) {
115+
println("Retrying download in 1 second...")
116+
Thread.sleep(1000);
117+
}
118+
119+
download(new URL(project['reindev.clientUrl'] as String), clientFile)
120+
121+
byte[] data = Files.readAllBytes(clientFile.toPath())
122+
byte[] hash = MessageDigest.getInstance("SHA-256").digest(data)
123+
String hashString = new BigInteger(1, hash).toString(16)
124+
125+
println("SHA256 hash: " + hashString)
126+
if (hashString == project['reindev.clientSHA256Sum'] as String) {
127+
println("Hash matched expected")
128+
break
129+
} else {
130+
println("Hash did not match! Expected: " + project['reindev.clientSHA256Sum'])
131+
if (clientFile.delete()) {
132+
println("Client jar file deleted")
133+
} else {
134+
println("Failed to delete client jar file")
135+
break;
136+
}
137+
}
138+
}
110139
}
111140

112141
File serverFile = new File(project.rootDir, "server" + File.separator +
113142
"libs" + File.separator + project['reindev.serverJar'])
114143

115144
if (!serverFile.exists()) {
116-
println("Downloading server...")
117-
download(new URL(project['reindev.serverUrl'] as String), serverFile)
145+
println("\nDownloading server from " + project['reindev.serverUrl'])
146+
147+
for (int i = 0; i < 2; i++) { // Max 1 retry for downloading
148+
if (i > 0) {
149+
println("Retrying download in 1 second...")
150+
Thread.sleep(1000);
151+
}
152+
153+
download(new URL(project['reindev.serverUrl'] as String), serverFile)
154+
155+
byte[] data = Files.readAllBytes(serverFile.toPath())
156+
byte[] hash = MessageDigest.getInstance("SHA-256").digest(data)
157+
String hashString = new BigInteger(1, hash).toString(16)
158+
159+
println("SHA256 hash: " + hashString)
160+
if (hashString == project['reindev.serverSHA256Sum'] as String) {
161+
println("Hash matched expected")
162+
break
163+
} else {
164+
println("Hash did not match! Expected: " + project['reindev.serverSHA256Sum'])
165+
if (serverFile.delete()) {
166+
println("Server file deleted")
167+
} else {
168+
println("Failed to delete server file")
169+
break;
170+
}
171+
}
172+
}
118173
}

gradle.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ reindev.clientUrl=https://cdn.fox2code.com/files/reindev_2.8.1_04.jar
1111
reindev.serverUrl=https://cdn.fox2code.com/files/reindev281-04_server.jar
1212
reindev.clientJar=reindev_2.8.1_04.jar
1313
reindev.serverJar=reindev281-04_server.jar
14+
reindev.clientSHA256Sum=54c8044dca694544b7a42f9ee6e80c13a8b3d1a492c8d3db150b239ab35acc80
15+
reindev.serverSHA256Sum=a51ccf171c1a45ff1c158645c31c5e97e3b7a331f99eb13ad687713ddc85ef55
1416
reindev.version=2.8.1_4
1517
reindev.version.allowFrom=2.8.1_3
1618

0 commit comments

Comments
 (0)