mirror of
				https://github.com/liberatedsystems/Sideband_CE.git
				synced 2024-09-03 04:13:27 +02:00 
			
		
		
		
	Re-init AutoInterface periodically if no suitable PHY IFs exist at start
This commit is contained in:
		
							parent
							
								
									a0a6745b35
								
							
						
					
					
						commit
						c77fb4ce20
					
				@ -150,6 +150,7 @@ class SidebandCore():
 | 
				
			|||||||
        self.saving_configuration = False
 | 
					        self.saving_configuration = False
 | 
				
			||||||
        self.last_lxmf_announce = 0
 | 
					        self.last_lxmf_announce = 0
 | 
				
			||||||
        self.last_if_change_announce = 0
 | 
					        self.last_if_change_announce = 0
 | 
				
			||||||
 | 
					        self.interface_local_adding = False
 | 
				
			||||||
        self.next_auto_announce = time.time() + 60*(random.random()*(SidebandCore.AUTO_ANNOUNCE_RANDOM_MAX-SidebandCore.AUTO_ANNOUNCE_RANDOM_MIN))
 | 
					        self.next_auto_announce = time.time() + 60*(random.random()*(SidebandCore.AUTO_ANNOUNCE_RANDOM_MAX-SidebandCore.AUTO_ANNOUNCE_RANDOM_MIN))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.getstate_cache = {}
 | 
					        self.getstate_cache = {}
 | 
				
			||||||
@ -1808,6 +1809,19 @@ class SidebandCore():
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        self.interface_local.had_peers = have_peers
 | 
					                        self.interface_local.had_peers = have_peers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if len(self.interface_local.adopted_interfaces) == 0:
 | 
				
			||||||
 | 
					                            if not self.interface_local_adding:
 | 
				
			||||||
 | 
					                                RNS.log("No suitable interfaces on AutoInterface, scheduling re-init", RNS.LOG_DEBUG)
 | 
				
			||||||
 | 
					                                if self.interface_local in RNS.Transport.interfaces:
 | 
				
			||||||
 | 
					                                    RNS.Transport.interfaces.remove(self.interface_local)
 | 
				
			||||||
 | 
					                                del self.interface_local
 | 
				
			||||||
 | 
					                                self.interface_local = None
 | 
				
			||||||
 | 
					                                def job():
 | 
				
			||||||
 | 
					                                    self.__add_localinterface(delay=60)
 | 
				
			||||||
 | 
					                                threading.Thread(target=job, daemon=True).start()
 | 
				
			||||||
 | 
					                        else:
 | 
				
			||||||
 | 
					                            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    for interface in RNS.Transport.interfaces:
 | 
					                    for interface in RNS.Transport.interfaces:
 | 
				
			||||||
                        if not hasattr(self, "interface_local") or interface != self.interface_local:
 | 
					                        if not hasattr(self, "interface_local") or interface != self.interface_local:
 | 
				
			||||||
                            if hasattr(interface, "was_online"):
 | 
					                            if hasattr(interface, "was_online"):
 | 
				
			||||||
@ -1973,40 +1987,11 @@ class SidebandCore():
 | 
				
			|||||||
            if self.config["telemetry_enabled"]:
 | 
					            if self.config["telemetry_enabled"]:
 | 
				
			||||||
                self.latest_telemetry = self.run_telemetry()
 | 
					                self.latest_telemetry = self.run_telemetry()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __start_jobs_immediate(self):
 | 
					    def __add_localinterface(self, delay=None):
 | 
				
			||||||
        if self.log_verbose:
 | 
					        self.interface_local_adding = True
 | 
				
			||||||
            selected_level = 7
 | 
					        if delay:
 | 
				
			||||||
        else:
 | 
					            time.sleep(delay)
 | 
				
			||||||
            selected_level = 2
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.setstate("init.loadingstate", "Substantiating Reticulum")
 | 
					 | 
				
			||||||
        self.reticulum = RNS.Reticulum(configdir=self.rns_configdir, loglevel=selected_level)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if self.is_service:
 | 
					 | 
				
			||||||
            self.__start_rpc_listener()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if RNS.vendor.platformutils.get_platform() == "android":
 | 
					 | 
				
			||||||
            # TODO: Just log to console for, but add option to export log
 | 
					 | 
				
			||||||
            # files at some point.
 | 
					 | 
				
			||||||
            # if self.config["debug"]:
 | 
					 | 
				
			||||||
            #     self.reticulum.logdest = RNS.LOG_FILE
 | 
					 | 
				
			||||||
            #     if not self.reticulum.is_connected_to_shared_instance:
 | 
					 | 
				
			||||||
            #         self.reticulum.logfile = self.log_dir+"sideband_service.log"
 | 
					 | 
				
			||||||
            #     else:
 | 
					 | 
				
			||||||
            #         self.reticulum.logfile = self.log_dir+"sideband_core.log"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if not self.reticulum.is_connected_to_shared_instance:
 | 
					 | 
				
			||||||
                RNS.log("Running as master or standalone instance, adding interfaces")
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                self.interface_local  = None
 | 
					 | 
				
			||||||
                self.interface_tcp    = None
 | 
					 | 
				
			||||||
                self.interface_i2p    = None
 | 
					 | 
				
			||||||
                self.interface_rnode  = None
 | 
					 | 
				
			||||||
                self.interface_modem  = None
 | 
					 | 
				
			||||||
                self.interface_serial = None
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if self.config["connect_local"]:
 | 
					 | 
				
			||||||
                    self.setstate("init.loadingstate", "Discovering Topography")
 | 
					 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            RNS.log("Adding Auto Interface...", RNS.LOG_DEBUG)
 | 
					            RNS.log("Adding Auto Interface...", RNS.LOG_DEBUG)
 | 
				
			||||||
            if self.config["connect_local_groupid"] == "":
 | 
					            if self.config["connect_local_groupid"] == "":
 | 
				
			||||||
@ -2046,10 +2031,49 @@ class SidebandCore():
 | 
				
			|||||||
                
 | 
					                
 | 
				
			||||||
            self.reticulum._add_interface(autointerface, mode = if_mode, ifac_netname = ifac_netname, ifac_netkey = ifac_netkey)
 | 
					            self.reticulum._add_interface(autointerface, mode = if_mode, ifac_netname = ifac_netname, ifac_netkey = ifac_netkey)
 | 
				
			||||||
            self.interface_local = autointerface
 | 
					            self.interface_local = autointerface
 | 
				
			||||||
 | 
					            self.interface_local_adding = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        except Exception as e:
 | 
					        except Exception as e:
 | 
				
			||||||
            RNS.log("Error while adding AutoInterface. The contained exception was: "+str(e))
 | 
					            RNS.log("Error while adding AutoInterface. The contained exception was: "+str(e))
 | 
				
			||||||
            self.interface_local = None
 | 
					            self.interface_local = None
 | 
				
			||||||
 | 
					            self.interface_local_adding = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    def __start_jobs_immediate(self):
 | 
				
			||||||
 | 
					        if self.log_verbose:
 | 
				
			||||||
 | 
					            selected_level = 7
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            selected_level = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.setstate("init.loadingstate", "Substantiating Reticulum")
 | 
				
			||||||
 | 
					        self.reticulum = RNS.Reticulum(configdir=self.rns_configdir, loglevel=selected_level)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if self.is_service:
 | 
				
			||||||
 | 
					            self.__start_rpc_listener()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if RNS.vendor.platformutils.get_platform() == "android":
 | 
				
			||||||
 | 
					            # TODO: Just log to console for, but add option to export log
 | 
				
			||||||
 | 
					            # files at some point.
 | 
				
			||||||
 | 
					            # if self.config["debug"]:
 | 
				
			||||||
 | 
					            #     self.reticulum.logdest = RNS.LOG_FILE
 | 
				
			||||||
 | 
					            #     if not self.reticulum.is_connected_to_shared_instance:
 | 
				
			||||||
 | 
					            #         self.reticulum.logfile = self.log_dir+"sideband_service.log"
 | 
				
			||||||
 | 
					            #     else:
 | 
				
			||||||
 | 
					            #         self.reticulum.logfile = self.log_dir+"sideband_core.log"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if not self.reticulum.is_connected_to_shared_instance:
 | 
				
			||||||
 | 
					                RNS.log("Running as master or standalone instance, adding interfaces")
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                self.interface_local  = None
 | 
				
			||||||
 | 
					                self.interface_tcp    = None
 | 
				
			||||||
 | 
					                self.interface_i2p    = None
 | 
				
			||||||
 | 
					                self.interface_rnode  = None
 | 
				
			||||||
 | 
					                self.interface_modem  = None
 | 
				
			||||||
 | 
					                self.interface_serial = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if self.config["connect_local"]:
 | 
				
			||||||
 | 
					                    self.setstate("init.loadingstate", "Discovering Topography")
 | 
				
			||||||
 | 
					                    self.__add_localinterface()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if self.config["connect_tcp"]:
 | 
					                if self.config["connect_tcp"]:
 | 
				
			||||||
                    self.setstate("init.loadingstate", "Connecting TCP Tunnel")
 | 
					                    self.setstate("init.loadingstate", "Connecting TCP Tunnel")
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user