From cb2be5077e124b135dadd284609111d1268e63a8 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Sat, 15 Oct 2022 19:12:39 +0200 Subject: [PATCH] Enabled running Reticulum Transport instance on Android --- sbapp/main.py | 3 +++ sbapp/services/sidebandservice.py | 37 ++++++++++++++++++++++++++++++- sbapp/sideband/core.py | 17 +++++++++++--- sbapp/ui/layouts.py | 4 ++-- 4 files changed, 55 insertions(+), 6 deletions(-) diff --git a/sbapp/main.py b/sbapp/main.py index ccb4d7e..c477ea0 100644 --- a/sbapp/main.py +++ b/sbapp/main.py @@ -1045,6 +1045,7 @@ class SidebandApp(MDApp): self.widget_hide(self.root.ids.connectivity_serial_fields, collapse) def save_connectivity(sender=None, event=None): + self.sideband.config["connect_transport"] = self.root.ids.connectivity_enable_transport.active self.sideband.config["connect_local"] = self.root.ids.connectivity_use_local.active self.sideband.config["connect_local_groupid"] = self.root.ids.connectivity_local_groupid.text self.sideband.config["connect_local_ifac_netname"] = self.root.ids.connectivity_local_ifac_netname.text @@ -1111,6 +1112,7 @@ class SidebandApp(MDApp): info += "For changes to connectivity to take effect, you must shut down and restart Sideband.\n" self.root.ids.connectivity_info.text = info + self.root.ids.connectivity_enable_transport.active = self.sideband.config["connect_transport"] self.root.ids.connectivity_use_local.active = self.sideband.config["connect_local"] con_collapse_local(collapse=not self.root.ids.connectivity_use_local.active) self.root.ids.connectivity_local_groupid.text = self.sideband.config["connect_local_groupid"] @@ -1149,6 +1151,7 @@ class SidebandApp(MDApp): self.root.ids.connectivity_serial_ifac_netname.text = self.sideband.config["connect_serial_ifac_netname"] self.root.ids.connectivity_serial_ifac_passphrase.text = self.sideband.config["connect_serial_ifac_passphrase"] + self.root.ids.connectivity_enable_transport.bind(active=save_connectivity) self.root.ids.connectivity_use_local.bind(active=save_connectivity) self.root.ids.connectivity_local_groupid.bind(on_text_validate=save_connectivity) self.root.ids.connectivity_local_ifac_netname.bind(on_text_validate=save_connectivity) diff --git a/sbapp/services/sidebandservice.py b/sbapp/services/sidebandservice.py index cea8b65..3e0680a 100644 --- a/sbapp/services/sidebandservice.py +++ b/sbapp/services/sidebandservice.py @@ -245,7 +245,42 @@ class SidebandService(): else: i2s = "Connecting to I2P" - stat += "[b]I2P[/b]\n{i2s}".format(i2s=i2s) + stat += "[b]I2P[/b]\n{i2s}\n\n".format(i2s=i2s) + + total_rxb = 0 + total_txb = 0 + + if self.sideband.interface_local != None: + total_rxb += self.sideband.interface_local.rxb + total_txb += self.sideband.interface_local.txb + + if self.sideband.interface_rnode != None: + total_rxb += self.sideband.interface_rnode.rxb + total_txb += self.sideband.interface_rnode.txb + + if self.sideband.interface_modem != None: + total_rxb += self.sideband.interface_modem.rxb + total_txb += self.sideband.interface_modem.txb + + if self.sideband.interface_serial != None: + total_rxb += self.sideband.interface_serial.rxb + total_txb += self.sideband.interface_serial.txb + + if self.sideband.interface_tcp != None: + total_rxb += self.sideband.interface_tcp.rxb + total_txb += self.sideband.interface_tcp.txb + + if self.sideband.interface_i2p != None: + total_rxb += self.sideband.interface_i2p.rxb + total_txb += self.sideband.interface_i2p.txb + + if RNS.Reticulum.transport_enabled(): + stat += "[b]Transport Instance[/b]\nRouting Traffic\n\n" + + stat += "[b]Traffic[/b]\nIn: {inb}\nOut: {outb}\n\n".format(inb=RNS.prettysize(total_rxb), outb=RNS.prettysize(total_txb)) + + if stat.endswith("\n\n"): + stat = stat[:-2] return stat diff --git a/sbapp/sideband/core.py b/sbapp/sideband/core.py index 75454d2..e3fd79b 100644 --- a/sbapp/sideband/core.py +++ b/sbapp/sideband/core.py @@ -135,8 +135,16 @@ class SidebandCore(): os.makedirs(self.rns_configdir) RNS.log("Configuring Reticulum instance...") + if self.config["connect_transport"]: + RNS.log("Enabling Reticulum Transport") + generated_config = rns_config.replace("TRANSPORT_IS_ENABLED", "Yes") + else: + RNS.log("Not enabling Reticulum Transport") + generated_config = rns_config.replace("TRANSPORT_IS_ENABLED", "No") + + config_file = open(self.rns_configdir+"/config", "wb") - config_file.write(rns_config) + config_file.write(generated_config.encode("utf-8")) config_file.close() except Exception as e: @@ -176,6 +184,7 @@ class SidebandCore(): self.config["last_lxmf_propagation_node"] = None self.config["nn_home_node"] = None # Connectivity + self.config["connect_transport"] = False self.config["connect_local"] = True self.config["connect_local_groupid"] = "" self.config["connect_local_ifac_netname"] = "" @@ -254,6 +263,8 @@ class SidebandCore(): self.config["lxmf_sync_interval"] = 43200 if not "notifications_on" in self.config: self.config["notifications_on"] = True + if not "connect_transport" in self.config: + self.config["connect_transport"] = False if not "connect_rnode" in self.config: self.config["connect_rnode"] = False if not "connect_rnode_ifac_netname" in self.config: @@ -1577,7 +1588,7 @@ class SidebandCore(): rns_config = """ [reticulum] -enable_transport = False +enable_transport = TRANSPORT_IS_ENABLED share_instance = Yes shared_instance_port = 37428 instance_control_port = 37429 @@ -1586,4 +1597,4 @@ panic_on_interface_error = No [logging] loglevel = 3 -""".encode("utf-8") +""" \ No newline at end of file diff --git a/sbapp/ui/layouts.py b/sbapp/ui/layouts.py index 1b70de8..2e3cb96 100644 --- a/sbapp/ui/layouts.py +++ b/sbapp/ui/layouts.py @@ -531,13 +531,13 @@ MDNavigationLayout: id: connectivity_transport_label text: "Enable Reticulum Transport" font_style: "H6" - disabled: True + # disabled: True MDSwitch: id: connectivity_enable_transport active: False pos_hint: {"center_y": 0.3} - disabled: True + # disabled: True MDScreen: