Added option to configure shared instance access

This commit is contained in:
Mark Qvist 2025-05-15 01:38:40 +02:00
parent 98c64acb3b
commit 137c0b284e
3 changed files with 37 additions and 7 deletions

View file

@ -3540,6 +3540,7 @@ class SidebandApp(MDApp):
def save_connectivity(sender=None, event=None): def save_connectivity(sender=None, event=None):
self.sideband.config["connect_transport"] = self.connectivity_screen.ids.connectivity_enable_transport.active self.sideband.config["connect_transport"] = self.connectivity_screen.ids.connectivity_enable_transport.active
self.sideband.config["connect_share_instance"] = self.connectivity_screen.ids.connectivity_share_instance.active
self.sideband.config["connect_local"] = self.connectivity_screen.ids.connectivity_use_local.active self.sideband.config["connect_local"] = self.connectivity_screen.ids.connectivity_use_local.active
self.sideband.config["connect_local_groupid"] = self.connectivity_screen.ids.connectivity_local_groupid.text self.sideband.config["connect_local_groupid"] = self.connectivity_screen.ids.connectivity_local_groupid.text
self.sideband.config["connect_local_ifac_netname"] = self.connectivity_screen.ids.connectivity_local_ifac_netname.text self.sideband.config["connect_local_ifac_netname"] = self.connectivity_screen.ids.connectivity_local_ifac_netname.text
@ -3697,6 +3698,10 @@ class SidebandApp(MDApp):
self.connectivity_screen.ids.connectivity_enable_transport.active = self.sideband.config["connect_transport"] self.connectivity_screen.ids.connectivity_enable_transport.active = self.sideband.config["connect_transport"]
con_collapse_transport(collapse=not self.sideband.config["connect_transport"]) con_collapse_transport(collapse=not self.sideband.config["connect_transport"])
self.connectivity_screen.ids.connectivity_enable_transport.bind(active=save_connectivity) self.connectivity_screen.ids.connectivity_enable_transport.bind(active=save_connectivity)
self.connectivity_screen.ids.connectivity_share_instance.active = self.sideband.config["connect_share_instance"]
self.connectivity_screen.ids.connectivity_share_instance.bind(active=save_connectivity)
self.connectivity_screen.ids.connectivity_local_ifmode.text = self.sideband.config["connect_ifmode_local"].capitalize() self.connectivity_screen.ids.connectivity_local_ifmode.text = self.sideband.config["connect_ifmode_local"].capitalize()
self.connectivity_screen.ids.connectivity_tcp_ifmode.text = self.sideband.config["connect_ifmode_tcp"].capitalize() self.connectivity_screen.ids.connectivity_tcp_ifmode.text = self.sideband.config["connect_ifmode_tcp"].capitalize()
self.connectivity_screen.ids.connectivity_i2p_ifmode.text = self.sideband.config["connect_ifmode_i2p"].capitalize() self.connectivity_screen.ids.connectivity_i2p_ifmode.text = self.sideband.config["connect_ifmode_i2p"].capitalize()
@ -3776,7 +3781,8 @@ class SidebandApp(MDApp):
dialog.dismiss() dialog.dismiss()
yes_button.bind(on_release=dl_yes) yes_button.bind(on_release=dl_yes)
rpc_string = "rpc_key = "+RNS.hexrep(self.sideband.reticulum.rpc_key, delimit=False) rpc_string = "shared_instance_type = tcp\n"
rpc_string += "rpc_key = "+RNS.hexrep(self.sideband.reticulum.rpc_key, delimit=False)
Clipboard.copy(rpc_string) Clipboard.copy(rpc_string)
dialog.open() dialog.open()

View file

@ -663,6 +663,8 @@ class SidebandCore():
self.config["config_template"] = None self.config["config_template"] = None
if not "connect_transport" in self.config: if not "connect_transport" in self.config:
self.config["connect_transport"] = False self.config["connect_transport"] = False
if not "connect_share_instance" in self.config:
self.config["connect_share_instance"] = False
if not "connect_rnode" in self.config: if not "connect_rnode" in self.config:
self.config["connect_rnode"] = False self.config["connect_rnode"] = False
if not "connect_rnode_ifac_netname" in self.config: if not "connect_rnode_ifac_netname" in self.config:
@ -4114,7 +4116,11 @@ class SidebandCore():
self.setstate("init.loadingstate", "Substantiating Reticulum") self.setstate("init.loadingstate", "Substantiating Reticulum")
try: try:
if RNS.vendor.platformutils.is_android() and self.config["connect_share_instance"] == True:
self.reticulum = RNS.Reticulum(configdir=self.rns_configdir, loglevel=selected_level, logdest=self._log_handler, shared_instance_type="tcp")
else:
self.reticulum = RNS.Reticulum(configdir=self.rns_configdir, loglevel=selected_level, logdest=self._log_handler) self.reticulum = RNS.Reticulum(configdir=self.rns_configdir, loglevel=selected_level, logdest=self._log_handler)
if RNS.vendor.platformutils.is_android(): if RNS.vendor.platformutils.is_android():
if self.is_service: if self.is_service:
if os.path.isfile(self.rns_configdir+"/config_template_invalid"): if os.path.isfile(self.rns_configdir+"/config_template_invalid"):

View file

@ -641,15 +641,33 @@ MDScreen:
# font_size: dp(24) # font_size: dp(24)
# # disabled: True # # disabled: True
# MDLabel:
# text: "Shared Instance Access\\n"
# id: connectivity_shared_access_label
# font_style: "H5"
MDBoxLayout:
orientation: "horizontal"
padding: [0,0,dp(24),0]
size_hint_y: None
height: dp(24)
MDLabel: MDLabel:
text: "Shared Instance Access\\n" id: connectivity_shared_label
id: connectivity_shared_access_label text: "Share Reticulum Instance"
font_style: "H5" font_style: "H6"
# disabled: True
MDSwitch:
id: connectivity_share_instance
active: False
pos_hint: {"center_y": 0.3}
# disabled: True
MDLabel: MDLabel:
id: connectivity_shared_access id: connectivity_shared_access
markup: True markup: True
text: "The Reticulum instance launched by Sideband will be available for other programs on this system. By default, this grants connectivity to other local Reticulum-based programs, but no access to management, interface status and path information.\\n\\nIf you want to allow full functionality and ability to manage the running instance, you will need to configure other programs to use the correct RPC key for this instance.\\n\\nThis can be very useful for using other tools related to Reticulum, for example via command-line programs running in Termux. To do this, use the button below to copy the RPC key configuration line, and paste it into the Reticulum configuration file within the Termux environment, or other program.\\n\\nPlease note! [b]It is not necessary[/b] to enable Reticulum Transport for this to work!\\n\\n" text: "You can make the Reticulum instance launched by Sideband available for other programs on this system. By default, this grants connectivity to other local Reticulum-based programs, but no access to management, interface status and path information.\\n\\nIf you want to allow full functionality and ability to manage the running instance, you will need to configure other programs to use the correct RPC key for this instance.\\n\\nThis can be very useful for using other tools related to Reticulum, for example via command-line programs running in Termux. To do this, use the button below to copy the RPC key configuration line, and paste it into the Reticulum configuration file within the Termux environment, or other program.\\n\\nPlease note! [b]It is not necessary[/b] to enable Reticulum Transport for this to work!\\n\\n"
size_hint_y: None size_hint_y: None
text_size: self.width, None text_size: self.width, None
height: self.texture_size[1] height: self.texture_size[1]