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 @@
-