Added RNode interface initialisation

This commit is contained in:
Mark Qvist 2022-10-12 16:38:59 +02:00
parent d2c26a306e
commit 085438e812
1 changed files with 67 additions and 0 deletions

View File

@ -190,6 +190,9 @@ class SidebandCore():
self.config["connect_i2p_b32"] = "mrwqlsioq4hoo2lmeeud7dkfscnm7yxak7dmiyvsrnpfag3z5tsq.b32.i2p" self.config["connect_i2p_b32"] = "mrwqlsioq4hoo2lmeeud7dkfscnm7yxak7dmiyvsrnpfag3z5tsq.b32.i2p"
self.config["connect_i2p_ifac_netname"] = "" self.config["connect_i2p_ifac_netname"] = ""
self.config["connect_i2p_ifac_passphrase"] = "" self.config["connect_i2p_ifac_passphrase"] = ""
self.config["connect_rnode"] = False
self.config["connect_rnode_ifac_netname"] = ""
self.config["connect_rnode_ifac_passphrase"] = ""
if not os.path.isfile(self.db_path): if not os.path.isfile(self.db_path):
self.__db_init() self.__db_init()
@ -223,6 +226,12 @@ class SidebandCore():
self.config["lxmf_sync_interval"] = 43200 self.config["lxmf_sync_interval"] = 43200
if not "notifications_on" in self.config: if not "notifications_on" in self.config:
self.config["notifications_on"] = True self.config["notifications_on"] = True
if not "connect_rnode" in self.config:
self.config["connect_rnode"] = False
if not "connect_rnode_ifac_netname" in self.config:
self.config["connect_rnode_ifac_netname"] = ""
if not "connect_rnode_ifac_passphrase" in self.config:
self.config["connect_rnode_ifac_passphrase"] = ""
# Make sure we have a database # Make sure we have a database
if not os.path.isfile(self.db_path): if not os.path.isfile(self.db_path):
@ -992,6 +1001,7 @@ class SidebandCore():
else: else:
selected_level = 2 selected_level = 2
self.setstate("init.loadingstate", "Substantiating Reticulum")
self.reticulum = RNS.Reticulum(configdir=self.rns_configdir, loglevel=selected_level) self.reticulum = RNS.Reticulum(configdir=self.rns_configdir, loglevel=selected_level)
if RNS.vendor.platformutils.get_platform() == "android": if RNS.vendor.platformutils.get_platform() == "android":
@ -1001,8 +1011,10 @@ class SidebandCore():
self.interface_local = None self.interface_local = None
self.interface_tcp = None self.interface_tcp = None
self.interface_i2p = None self.interface_i2p = None
self.interface_rnode = None
if self.config["connect_local"]: if self.config["connect_local"]:
self.setstate("init.loadingstate", "Discovering Topography")
try: try:
RNS.log("Adding Auto Interface...") RNS.log("Adding Auto Interface...")
if self.config["connect_local_groupid"] == "": if self.config["connect_local_groupid"] == "":
@ -1034,6 +1046,7 @@ class SidebandCore():
self.interface_local = None self.interface_local = None
if self.config["connect_tcp"]: if self.config["connect_tcp"]:
self.setstate("init.loadingstate", "Connecting TCP Tunnel")
try: try:
RNS.log("Adding TCP Interface...") RNS.log("Adding TCP Interface...")
@ -1070,6 +1083,7 @@ class SidebandCore():
self.interface_tcp = None self.interface_tcp = None
if self.config["connect_i2p"]: if self.config["connect_i2p"]:
self.setstate("init.loadingstate", "Opening I2P Endpoints")
try: try:
if self.config["connect_i2p_b32"].endswith(".b32.i2p"): if self.config["connect_i2p_b32"].endswith(".b32.i2p"):
@ -1103,7 +1117,60 @@ class SidebandCore():
RNS.log("Error while adding I2P Interface. The contained exception was: "+str(e)) RNS.log("Error while adding I2P Interface. The contained exception was: "+str(e))
self.interface_i2p = None self.interface_i2p = None
if self.config["connect_rnode"]:
self.setstate("init.loadingstate", "Starting RNode")
try:
RNS.log("Adding RNode Interface...")
target_device = None
if len(self.owner_app.usb_devices) > 0:
# TODO: Add more intelligent selection here
target_device = self.owner_app.usb_devices[0]
if target_device:
rnode_port = target_device["port"]
rnode_frequency = None
rnode_bw = None
rnode_sf = None
rnode_cr = None
rnode_txp = None
if self.config["connect_rnode_ifac_netname"] == "":
ifac_netname = None
else:
ifac_netname = self.config["connect_rnode_ifac_netname"]
if self.config["connect_rnode_ifac_passphrase"] == "":
ifac_netkey = None
else:
ifac_netkey = self.config["connect_rnode_ifac_passphrase"]
rnodeinterface = RNS.Interfaces.Android.RNodeInterface.RNodeInterface(
RNS.Transport,
"RNodeInterface",
rnode_port,
frequency = rnode_frequency,
bandwidth = rnode_bw,
txpower = rnode_txp,
sf = rnode_sf,
cr = rnode_cr,
flow_control = None,
id_interval = None,
id_callsign = None,
)
rnodeinterface.OUT = True
self.reticulum._add_interface(rnodeinterface,ifac_netname=ifac_netname,ifac_netkey=ifac_netkey)
self.interface_rnode = rnodeinterface
except Exception as e:
RNS.log("Error while adding RNode Interface. The contained exception was: "+str(e))
self.interface_rnode = None
RNS.log("Reticulum started, activating LXMF...") RNS.log("Reticulum started, activating LXMF...")
self.setstate("init.loadingstate", "Activating LXMF Router")
self.message_router = LXMF.LXMRouter(identity = self.identity, storagepath = self.lxmf_storage, autopeer = True) self.message_router = LXMF.LXMRouter(identity = self.identity, storagepath = self.lxmf_storage, autopeer = True)
self.message_router.register_delivery_callback(self.lxmf_delivery) self.message_router.register_delivery_callback(self.lxmf_delivery)