diff --git a/README.md b/README.md index 453d025..6c009ed 100755 --- a/README.md +++ b/README.md @@ -27,14 +27,14 @@ Download the latest binary releases for Mac/Windows/Linux here: https://github.c The zero-dependency distribution sizes are as follows: -OS | Uncompressed size (MB) | Compressed size (MB) | v1.17 Reproducible build SHA-256 +OS | Uncompressed size (MB) | Compressed size (MB) | v1.18 Reproducible build SHA-256 ------------ | ----------------------- | --------------------- | ------------------------------------------------------------------ -Mac | 37.8 | 26.3 | `e25c304c6f45291d03d3c303fd8d4a126ba910f9b67e205341150384b81de9cd` -Windows | 47.3 | 32.2 | `a3fa0c8b3ae2311ec8c4914d657adbf23a506256b91493d4609fc0e6f557a30b` -Linux | 61.4 | 36.2 | `298abd5bfe918581ed85f35ad9bc75261a9cdf16f576356525085dfa898a2fb6` -Mac GUI | 61.0 | 45.7 | `968af1268f2d21812a8dc8e9ba6abbb36eb472652da099228c82d81c8cbb0a86` -Windows GUI | 69.2 | 50.4 | `2296825e662dba491e428970aae87f4d9596971eb2ff9e51a52df471b354fc60` -Linux GUI | 86.5 | 56.4 | `2acbb171fa06197ecaeb1e2904e2b56b9a20adfc71d09521f6fa3545631e2b29` +Mac | 38.7 | 26.4 | `2f522910b283658604c1200820e8d55d9644e6ced315b83b0c70470717e2e413` +Windows | 48.0 | 32.4 | `7a10debc0674d2fdfc211cf478961cbaad35d03897d7d765a1ea4951d1eaac3d` +Linux | 61.6 | 36.3 | `96950ddca5898a756459a62889e54637f74ead9c5732297ae3adbf68405fa543` +Mac GUI | 61.4 | 45.8 | `8c1f2b27151351604e6a47275c5e69c1db8c898b57039f41fe4b747421dacc19` +Windows GUI | 70.5 | 50.6 | `5374e4dc015142774ba2fc7ae15f0647e0120b36c716dee218975b76f3a198f6` +Linux GUI | 86.9 | 56.5 | `7d273233962e54ab1c965e81505f861645c0f0247905cb0eab2e96cdcdd29ed7` Note: Reproducible builds are currently experimental. Due to JDK differences, Builds on Mac will consistently have different hashes than builds on Linux. Official releases will always be built using Docker. diff --git a/bin/build-launcher.sh b/bin/build-launcher.sh index 6b575a9..45b2026 100755 --- a/bin/build-launcher.sh +++ b/bin/build-launcher.sh @@ -9,7 +9,7 @@ fi source "$basedir/bin/java-config.sh" echo "*** Compiling CLI" -"$JAVA_HOME"/bin/javac --module-path "$basedir/target/modules/combined.jar" -d "$basedir/target/classes/org.getmonero.i2p.zero" $(find "$basedir/org.getmonero.i2p.zero/src" -name '*.java') +"$JAVA_HOME"/bin/javac --enable-preview -source 14 --module-path "$basedir/target/modules/combined.jar" -d "$basedir/target/classes/org.getmonero.i2p.zero" $(find "$basedir/org.getmonero.i2p.zero/src" -name '*.java') cp "$basedir/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/VERSION" "$basedir/target/classes/org.getmonero.i2p.zero/org/getmonero/i2p/zero/" echo "*** Packaging CLI as a modular jar" @@ -17,7 +17,7 @@ echo "*** Packaging CLI as a modular jar" normalizeZip "$basedir/target/org.getmonero.i2p.zero.jar" echo "*** Compiling GUI" -"$JAVA_HOME"/bin/javac --module-path "$basedir/target/org.getmonero.i2p.zero.jar:$basedir/target/modules/combined.jar:$basedir/import/javafx-sdks/linux/javafx-sdk-$JAVAFX_VERSION/lib" -d "$basedir/target/classes/org.getmonero.i2p.zero.gui" $(find "$basedir/org.getmonero.i2p.zero.gui/src" -name '*.java') +"$JAVA_HOME"/bin/javac --enable-preview -source 14 --module-path "$basedir/target/org.getmonero.i2p.zero.jar:$basedir/target/modules/combined.jar:$basedir/import/javafx-sdks/linux/javafx-sdk-$JAVAFX_VERSION/lib" -d "$basedir/target/classes/org.getmonero.i2p.zero.gui" $(find "$basedir/org.getmonero.i2p.zero.gui/src" -name '*.java') cp -r "$basedir/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/"*.{css,png,fxml,ttf} "$basedir/target/classes/org.getmonero.i2p.zero.gui/org/getmonero/i2p/zero/gui/" diff --git a/bin/convert-jars-to-modules.sh b/bin/convert-jars-to-modules.sh index 4b8c8a8..5115ae8 100755 --- a/bin/convert-jars-to-modules.sh +++ b/bin/convert-jars-to-modules.sh @@ -9,6 +9,7 @@ fi source "$basedir/bin/java-config.sh" cp "$basedir"/import/jetty-lib/*.jar "$basedir/import/lib/" +cp "$basedir"/import/org-json/*.jar "$basedir/import/lib/" rm -fr "$basedir/target/lib-combined" rm -fr "$basedir/target/lib-combined-tmp" @@ -45,7 +46,7 @@ echo 'uses org.eclipse.jetty.http.HttpFieldPreEncoder; }' >> "$basedir/target/mo echo "*** Creating new combined modular jar" -"$JAVA_HOME"/bin/javac --module-path "$combinedJarPath/combined" --patch-module combined="$combinedJarPath" "$basedir/target/module-info/combined/module-info.java" +"$JAVA_HOME"/bin/javac --enable-preview -source 14 --module-path "$combinedJarPath/combined" --patch-module combined="$combinedJarPath" "$basedir/target/module-info/combined/module-info.java" cp $combinedJarPath "$basedir/target/modules/" "$JAVA_HOME"/bin/jar uf "$basedir/target/modules/combined.jar" -C "$basedir/target/module-info/combined" module-info.class diff --git a/bin/import-packages.sh b/bin/import-packages.sh index d52f3b2..3be706a 100755 --- a/bin/import-packages.sh +++ b/bin/import-packages.sh @@ -17,7 +17,7 @@ fi cd "$basedir/import/i2p.i2p" git fetch -git checkout tags/i2p-0.9.45 +git checkout tags/i2p-0.9.47 cd .. if [ ! -d "$basedir/import/jdks" ]; then @@ -27,14 +27,14 @@ if [ ! -d "$basedir/import/jdks" ]; then wget --directory-prefix=jdks/mac $JDK_DOWNLOAD_URL_MAC wget --directory-prefix=jdks/win $JDK_DOWNLOAD_URL_WIN - tar zxvf jdks/linux/$JDK_DOWNLOAD_FILENAME_LINUX -C jdks/linux/ - tar zxvf jdks/mac/$JDK_DOWNLOAD_FILENAME_MAC -C jdks/mac/ - unzip jdks/win/$JDK_DOWNLOAD_FILENAME_WIN -d jdks/win/ + tar zxf jdks/linux/$JDK_DOWNLOAD_FILENAME_LINUX -C jdks/linux/ + tar zxf jdks/mac/$JDK_DOWNLOAD_FILENAME_MAC -C jdks/mac/ + unzip -q jdks/win/$JDK_DOWNLOAD_FILENAME_WIN -d jdks/win/ fi if [ ! -d "$basedir/import/apache-ant-1.10.7" ]; then wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.7-bin.tar.gz - tar zxvf apache-ant-1.10.7-bin.tar.gz + tar zxf apache-ant-1.10.7-bin.tar.gz fi if [ ! -d "$basedir/import/commons-compress-1.20" ]; then @@ -42,6 +42,11 @@ if [ ! -d "$basedir/import/commons-compress-1.20" ]; then wget --directory-prefix=commons-compress-1.20 https://repo1.maven.org/maven2/org/apache/commons/commons-compress/1.20/commons-compress-1.20.jar fi +if [ ! -d "$basedir/import/org-json" ]; then + mkdir -p org-json + wget --directory-prefix=org-json https://repo1.maven.org/maven2/org/json/json/20200518/json-20200518.jar +fi + if [ ! -d "$basedir/import/jetty-lib" ]; then mkdir -p jetty-lib wget --directory-prefix=jetty-lib https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-server/9.4.26.v20200117/jetty-server-9.4.26.v20200117.jar @@ -62,9 +67,9 @@ if [ ! -d "$basedir/import/javafx-sdks" ]; then wget --directory-prefix=javafx-sdks/mac $JAVAFX_SDK_DOWNLOAD_URL_MAC wget --directory-prefix=javafx-sdks/win $JAVAFX_SDK_DOWNLOAD_URL_WIN - unzip javafx-sdks/linux/`basename $JAVAFX_SDK_DOWNLOAD_URL_LINUX` -d javafx-sdks/linux/ - unzip javafx-sdks/mac/`basename $JAVAFX_SDK_DOWNLOAD_URL_MAC` -d javafx-sdks/mac/ - unzip javafx-sdks/win/`basename $JAVAFX_SDK_DOWNLOAD_URL_WIN` -d javafx-sdks/win/ + unzip -q javafx-sdks/linux/`basename $JAVAFX_SDK_DOWNLOAD_URL_LINUX` -d javafx-sdks/linux/ + unzip -q javafx-sdks/mac/`basename $JAVAFX_SDK_DOWNLOAD_URL_MAC` -d javafx-sdks/mac/ + unzip -q javafx-sdks/win/`basename $JAVAFX_SDK_DOWNLOAD_URL_WIN` -d javafx-sdks/win/ fi if [ ! -d "$basedir/import/javafx-jmods" ]; then @@ -74,14 +79,14 @@ if [ ! -d "$basedir/import/javafx-jmods" ]; then wget --directory-prefix=javafx-jmods/mac $JAVAFX_JMODS_DOWNLOAD_URL_MAC wget --directory-prefix=javafx-jmods/win $JAVAFX_JMODS_DOWNLOAD_URL_WIN - unzip javafx-jmods/linux/$JAVAFX_JMODS_DOWNLOAD_FILENAME_LINUX -d javafx-jmods/linux/ - unzip javafx-jmods/mac/$JAVAFX_JMODS_DOWNLOAD_FILENAME_MAC -d javafx-jmods/mac/ - unzip javafx-jmods/win/$JAVAFX_JMODS_DOWNLOAD_FILENAME_WIN -d javafx-jmods/win/ + unzip -q javafx-jmods/linux/$JAVAFX_JMODS_DOWNLOAD_FILENAME_LINUX -d javafx-jmods/linux/ + unzip -q javafx-jmods/mac/$JAVAFX_JMODS_DOWNLOAD_FILENAME_MAC -d javafx-jmods/mac/ + unzip -q javafx-jmods/win/$JAVAFX_JMODS_DOWNLOAD_FILENAME_WIN -d javafx-jmods/win/ fi if [ ! -d "$basedir/import/jpackage" ]; then mkdir -p jpackage/linux jpackage/win - unzip $JAVA_HOME_LINUX/jmods/jdk.incubator.jpackage.jmod -d jpackage/linux/ - unzip $JAVA_HOME_WIN/jmods/jdk.incubator.jpackage.jmod -d jpackage/win/ + unzip -q $JAVA_HOME_LINUX/jmods/jdk.incubator.jpackage.jmod -d jpackage/linux/ + unzip -q $JAVA_HOME_WIN/jmods/jdk.incubator.jpackage.jmod -d jpackage/win/ fi diff --git a/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/RouterWrapper.java b/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/RouterWrapper.java index fff7b5e..cbe0603 100644 --- a/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/RouterWrapper.java +++ b/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/RouterWrapper.java @@ -8,9 +8,7 @@ import net.i2p.router.RouterContext; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; import net.i2p.router.transport.FIFOBandwidthRefiller; import net.i2p.router.transport.TransportUtil; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; - +import org.json.*; import java.io.File; import java.nio.file.Files; import java.nio.file.Path; @@ -180,7 +178,7 @@ public class RouterWrapper { try { File configFile = new File(i2PConfigDir, "config.json"); if (configFile.exists()) { - JSONObject root = (JSONObject) new JSONParser().parse(Files.readString(configFile.toPath())); + JSONObject root = new JSONObject(Files.readString(configFile.toPath())); return ((Long) root.get("bandwidthLimitKBps")).intValue(); } else return defaultBandwidthKBps; } @@ -229,12 +227,12 @@ public class RouterWrapper { try { File configFile = new File(i2PConfigDir, "config.json"); - JSONObject root = new JSONObject();; + JSONObject root = new JSONObject(); if (configFile.exists()) { - root = (JSONObject) new JSONParser().parse(Files.readString(configFile.toPath())); + root = new JSONObject(Files.readString(configFile.toPath())); } root.put("bandwidthLimitKBps", n); - Files.writeString(configFile.toPath(), root.toJSONString()); + Files.writeString(configFile.toPath(), root.toString(2)); } catch (Exception e) { throw new RuntimeException(e); diff --git a/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/TunnelControl.java b/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/TunnelControl.java index b1daa4d..40ca8ca 100644 --- a/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/TunnelControl.java +++ b/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/TunnelControl.java @@ -13,9 +13,7 @@ import org.eclipse.jetty.server.*; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; +import org.json.*; import java.io.*; import java.math.BigInteger; @@ -77,10 +75,10 @@ public class TunnelControl implements Runnable { File tunnelControlConfigFile = new File(tunnelControlConfigDir, "tunnels.json"); if (tunnelControlConfigFile.exists()) { tunnels.clear(); - JSONObject root = (JSONObject) new JSONParser().parse(Files.readString(tunnelControlConfigFile.toPath())); - JSONArray list = (JSONArray) root.get("tunnels"); - list.stream().forEach((o)->{ - JSONObject obj = (JSONObject) o; + JSONObject root = new JSONObject(Files.readString(tunnelControlConfigFile.toPath())); + JSONArray list = root.getJSONArray("tunnels"); + for(int i=0; i