From f9208da8f7c453b233c8f0624c7733f36627ea42 Mon Sep 17 00:00:00 2001 From: knaccc Date: Sat, 23 Mar 2019 16:54:52 +0000 Subject: [PATCH] now building with i2p version 0.9.39 wait for i2p router to fully start before attempting to build tunnels version check implemented, which will run at random intervals (on average every 24hrs) eepsite config settings save fix --- bin/build-launcher.sh | 1 + bin/import-packages.sh | 2 +- .../getmonero/i2p/zero/gui/Controller.java | 54 ++++++++++++- .../src/org/getmonero/i2p/zero/gui/gui.fxml | 2 +- .../src/org/getmonero/i2p/zero/Main.java | 10 ++- .../org/getmonero/i2p/zero/RouterWrapper.java | 8 +- .../org/getmonero/i2p/zero/UpdateCheck.java | 81 +++++++++++++++++++ .../src/org/getmonero/i2p/zero/VERSION | 1 + 8 files changed, 151 insertions(+), 8 deletions(-) create mode 100644 org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/UpdateCheck.java create mode 100644 org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/VERSION diff --git a/bin/build-launcher.sh b/bin/build-launcher.sh index e9757c3..2bb07f4 100755 --- a/bin/build-launcher.sh +++ b/bin/build-launcher.sh @@ -11,6 +11,7 @@ source "$basedir/bin/java-config.sh" echo "*** Compiling CLI" "$JAVA_HOME"/bin/javac --module-path target/modules/combined.jar -d target/classes/org.getmonero.i2p.zero $(find org.getmonero.i2p.zero/src -name '*.java') +cp org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/VERSION target/classes/org.getmonero.i2p.zero/org/getmonero/i2p/zero/ echo "*** Packaging CLI as a modular jar" "$JAVA_HOME"/bin/jar --create --file target/org.getmonero.i2p.zero.jar --main-class org.getmonero.i2p.zero.Main -C target/classes/org.getmonero.i2p.zero . diff --git a/bin/import-packages.sh b/bin/import-packages.sh index 51683e8..f36e6c3 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.38 +git checkout tags/i2p-0.9.39 cd .. if [ ! -d "$basedir/import/jdks" ]; then diff --git a/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/Controller.java b/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/Controller.java index cef5288..811f326 100644 --- a/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/Controller.java +++ b/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/Controller.java @@ -4,26 +4,37 @@ import javafx.application.Platform; import javafx.beans.binding.DoubleBinding; import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import javafx.event.ActionEvent; import javafx.event.Event; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.control.*; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; +import javafx.scene.layout.FlowPane; +import javafx.scene.text.Text; +import javafx.scene.text.TextFlow; import javafx.stage.DirectoryChooser; import javafx.stage.Modality; import javafx.stage.Stage; import org.getmonero.i2p.zero.RouterWrapper; import org.getmonero.i2p.zero.TunnelControl; +import org.getmonero.i2p.zero.UpdateCheck; import static org.getmonero.i2p.zero.TunnelControl.*; +import java.awt.*; import java.io.File; +import java.net.URI; import java.text.DecimalFormat; import java.util.Optional; import java.util.Properties; @@ -70,6 +81,7 @@ public class Controller { @FXML private CheckBox eepSiteEnableLogsCheckbox; @FXML private CheckBox eepSiteAllowDirBrowsingCheckbox; @FXML private TextField eepSiteLocalPortField; + @FXML private TextArea helpTextArea; DecimalFormat format2dp = new DecimalFormat("0.00"); @@ -84,6 +96,8 @@ public class Controller { @FXML private void initialize() { + helpTextArea.setText("You are running I2P-zero version " + UpdateCheck.currentVersion + "\n\n" + helpTextArea.getText()); + DirectoryChooser directoryChooser = new DirectoryChooser(); typeCol.setCellValueFactory(new PropertyValueFactory("type")); @@ -157,27 +171,31 @@ public class Controller { // modifying eepSiteSecretKeyField/eepSiteLocalPortField will require the eepsite tunnel to be destroyed // and later recreated whenever the user is finished editing settings and ticks the enabled box again eepSiteSecretKeyField.textProperty().addListener((observable, oldValue, newValue) -> { + eepSiteEnableCheckbox.setSelected(false); eepSiteAddrField.setText(""); String key = newValue; if(key!=null && !key.isEmpty()) { try { - eepSiteAddrField.setText("http://" + new TunnelControl.KeyPair(key).b32Dest); + KeyPair keyPair = new TunnelControl.KeyPair(key); + eepSiteAddrField.setText("http://" + keyPair.b32Dest); + getEepSiteTunnel().dest = keyPair.b32Dest; + getEepSiteTunnel().keyPair = keyPair; + save(); } catch (Exception e2) { // ignore exception. user may be part way through entering string } - eepSiteEnableCheckbox.setSelected(false); } }); eepSiteGenButton.setOnAction(ev->{ getEepSiteTunnel().keyPair = KeyPair.gen(); + save(); eepSiteSecretKeyField.setText(getEepSiteTunnel().keyPair.toString()); }); eepSiteLocalPortField.textProperty().addListener((ov, oldValue, newValue)->{ eepSiteEnableCheckbox.setSelected(false); getEepSiteTunnel().port = Integer.parseInt(newValue); save(); - eepSiteEnableCheckbox.setSelected(false); }); eepSiteEnableCheckbox.selectedProperty().addListener((ov, oldValue, newValue)->{ @@ -317,7 +335,35 @@ public class Controller { Properties routerProperties = new Properties(); routerProperties.put("router.sharePercentage", 80); params.entrySet().stream().forEach(e->routerProperties.put(e.getKey(), e.getValue())); - routerWrapper = new RouterWrapper(routerProperties); + routerWrapper = new RouterWrapper(routerProperties, ()-> { + Platform.runLater(()->{ + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.setTitle("Update available"); + alert.setHeaderText(null); + + FlowPane fp = new FlowPane(); + String updateUrl = "https://github.com/i2p-zero/i2p-zero"; + + var link = new Hyperlink(updateUrl); + TextFlow textFlow = new TextFlow( + new Text("A new version of I2P-zero is available at"), + link, + new Text("\nPlease keep your software up-to-date, as it will enhance your privacy and keep you safe from vulnerabilities") + ); + textFlow.setPrefWidth(300); + link.setOnAction((ActionEvent event) -> { + try { + Desktop.getDesktop().browse(new URI(updateUrl)); + } + catch (Exception e) { + e.printStackTrace(); + } + }); + fp.getChildren().addAll(textFlow); + alert.getDialogPane().contentProperty().set(fp); + alert.show(); + }); + }); routerWrapper.start(); } diff --git a/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/gui.fxml b/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/gui.fxml index a636c7a..741f9fe 100644 --- a/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/gui.fxml +++ b/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/gui.fxml @@ -148,7 +148,7 @@
-