forked from Qortal/qortal
Added XorUpdate utility to help prepare auto-updates.
This commit is contained in:
parent
877c126ba3
commit
8727780b77
58
src/main/java/org/qora/XorUpdate.java
Normal file
58
src/main/java/org/qora/XorUpdate.java
Normal file
@ -0,0 +1,58 @@
|
||||
package org.qora;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import org.qora.controller.AutoUpdate;
|
||||
|
||||
public class XorUpdate {
|
||||
|
||||
private static final byte XOR_VALUE = AutoUpdate.XOR_VALUE;
|
||||
|
||||
public static void main(String args[]) {
|
||||
if (args.length != 2) {
|
||||
System.err.println("usage: XorUpdate <input-file> <output-file>");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
Path inPath = Paths.get(args[0]);
|
||||
if (!Files.isReadable(inPath)) {
|
||||
System.err.println(String.format("Cannot open '%s'", args[0]));
|
||||
System.exit(2);
|
||||
}
|
||||
|
||||
Path outPath = Paths.get(args[1]);
|
||||
|
||||
try (InputStream in = Files.newInputStream(inPath); OutputStream out = Files.newOutputStream(outPath)) {
|
||||
byte[] buffer = new byte[1024 * 1024];
|
||||
do {
|
||||
int nread = in.read(buffer);
|
||||
if (nread == -1)
|
||||
break;
|
||||
|
||||
for (int i = 0; i < nread; ++i)
|
||||
buffer[i] ^= XOR_VALUE;
|
||||
|
||||
out.write(buffer, 0, nread);
|
||||
} while (true);
|
||||
out.flush();
|
||||
} catch (IOException e) {
|
||||
System.err.println(e.getLocalizedMessage());
|
||||
|
||||
try {
|
||||
Files.deleteIfExists(outPath);
|
||||
} catch (IOException e1) {
|
||||
System.err.println(e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
System.exit(2);
|
||||
}
|
||||
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
}
|
@ -50,7 +50,7 @@ public class AutoUpdate extends Thread {
|
||||
private static final int EXPECTED_DATA_LENGTH = Transformer.TIMESTAMP_LENGTH + GIT_COMMIT_HASH_LENGTH + Transformer.SHA256_LENGTH;
|
||||
|
||||
/** This byte value used to hide contents from deep-inspection firewalls in case they block updates. */
|
||||
private static final byte XOR_VALUE = (byte) 0x5a;
|
||||
public static final byte XOR_VALUE = (byte) 0x5a;
|
||||
|
||||
private static AutoUpdate instance;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user