Improved AutoInterface handling on Android
This commit is contained in:
		
							parent
							
								
									1d2564cedb
								
							
						
					
					
						commit
						f3d04ba90f
					
				| @ -22,6 +22,7 @@ class AutoInterface(Interface): | |||||||
|     PEERING_TIMEOUT    = 6.0 |     PEERING_TIMEOUT    = 6.0 | ||||||
| 
 | 
 | ||||||
|     DARWIN_IGNORE_IFS  = ["awdl0", "llw0", "lo0", "en5"] |     DARWIN_IGNORE_IFS  = ["awdl0", "llw0", "lo0", "en5"] | ||||||
|  |     ANDROID_IGNORE_IFS = ["dummy0", "lo", "tun0"] | ||||||
| 
 | 
 | ||||||
|     def __init__(self, owner, name, group_id=None, discovery_scope=None, discovery_port=None, data_port=None, allowed_interfaces=None, ignored_interfaces=None): |     def __init__(self, owner, name, group_id=None, discovery_scope=None, discovery_port=None, data_port=None, allowed_interfaces=None, ignored_interfaces=None): | ||||||
|         import importlib |         import importlib | ||||||
| @ -101,10 +102,12 @@ class AutoInterface(Interface): | |||||||
| 
 | 
 | ||||||
|         suitable_interfaces = 0 |         suitable_interfaces = 0 | ||||||
|         for ifname in self.netifaces.interfaces(): |         for ifname in self.netifaces.interfaces(): | ||||||
|             if RNS.vendor.platformutils.get_platform() == "darwin" and ifname in AutoInterface.DARWIN_IGNORE_IFS: |             if RNS.vendor.platformutils.is_darwin() and ifname in AutoInterface.DARWIN_IGNORE_IFS and not ifname in self.allowed_interfaces: | ||||||
|                 RNS.log(str(self)+" skipping Darwin AWDL or tethering interface "+str(ifname), RNS.LOG_EXTREME) |                 RNS.log(str(self)+" skipping Darwin AWDL or tethering interface "+str(ifname), RNS.LOG_EXTREME) | ||||||
|             elif RNS.vendor.platformutils.get_platform() == "darwin" and ifname == "lo0": |             elif RNS.vendor.platformutils.is_darwin() and ifname == "lo0": | ||||||
|                 RNS.log(str(self)+" skipping Darwin loopback interface "+str(ifname), RNS.LOG_EXTREME) |                 RNS.log(str(self)+" skipping Darwin loopback interface "+str(ifname), RNS.LOG_EXTREME) | ||||||
|  |             elif RNS.vendor.platformutils.is_android() and ifname in AutoInterface.ANDROID_IGNORE_IFS and not ifname in self.allowed_interfaces: | ||||||
|  |                 RNS.log(str(self)+" skipping Android system interface "+str(ifname), RNS.LOG_EXTREME) | ||||||
|             elif ifname in self.ignored_interfaces: |             elif ifname in self.ignored_interfaces: | ||||||
|                 RNS.log(str(self)+" ignoring disallowed interface "+str(ifname), RNS.LOG_EXTREME) |                 RNS.log(str(self)+" ignoring disallowed interface "+str(ifname), RNS.LOG_EXTREME) | ||||||
|             else: |             else: | ||||||
|  | |||||||
| @ -281,30 +281,35 @@ class Reticulum: | |||||||
|                     try: |                     try: | ||||||
|                         if ("interface_enabled" in c) and c.as_bool("interface_enabled") == True: |                         if ("interface_enabled" in c) and c.as_bool("interface_enabled") == True: | ||||||
|                             if c["type"] == "AutoInterface": |                             if c["type"] == "AutoInterface": | ||||||
|                                 group_id        = c["group_id"] if "group_id" in c else None |                                 if not RNS.vendor.platformutils.is_windows(): | ||||||
|                                 discovery_scope = c["discovery_scope"] if "discovery_scope" in c else None |                                     group_id        = c["group_id"] if "group_id" in c else None | ||||||
|                                 discovery_port  = int(c["discovery_port"]) if "discovery_port" in c else None |                                     discovery_scope = c["discovery_scope"] if "discovery_scope" in c else None | ||||||
|                                 data_port  = int(c["data_port"]) if "data_port" in c else None |                                     discovery_port  = int(c["discovery_port"]) if "discovery_port" in c else None | ||||||
|                                 allowed_interfaces = c.as_list("devices") if "devices" in c else None |                                     data_port  = int(c["data_port"]) if "data_port" in c else None | ||||||
|                                 ignored_interfaces = c.as_list("ignored_devices") if "ignored_devices" in c else None |                                     allowed_interfaces = c.as_list("devices") if "devices" in c else None | ||||||
|  |                                     ignored_interfaces = c.as_list("ignored_devices") if "ignored_devices" in c else None | ||||||
| 
 | 
 | ||||||
|                                 interface = AutoInterface.AutoInterface( |                                     interface = AutoInterface.AutoInterface( | ||||||
|                                     RNS.Transport, |                                         RNS.Transport, | ||||||
|                                     name, |                                         name, | ||||||
|                                     group_id, |                                         group_id, | ||||||
|                                     discovery_scope, |                                         discovery_scope, | ||||||
|                                     discovery_port, |                                         discovery_port, | ||||||
|                                     data_port, |                                         data_port, | ||||||
|                                     allowed_interfaces, |                                         allowed_interfaces, | ||||||
|                                     ignored_interfaces |                                         ignored_interfaces | ||||||
|                                 ) |                                     ) | ||||||
| 
 | 
 | ||||||
|                                 if "outgoing" in c and c.as_bool("outgoing") == True: |                                     if "outgoing" in c and c.as_bool("outgoing") == True: | ||||||
|                                     interface.OUT = True |                                         interface.OUT = True | ||||||
|  |                                     else: | ||||||
|  |                                         interface.OUT = False | ||||||
|  | 
 | ||||||
|  |                                     RNS.Transport.interfaces.append(interface) | ||||||
|                                 else: |                                 else: | ||||||
|                                     interface.OUT = False |                                     RNS.log("AutoInterface is not currently supported on Windows, disabling interface.", RNS.LOG_ERROR); | ||||||
| 
 |                                     RNS.log("Please remove this AutoInterface instance from your configuration file.", RNS.LOG_ERROR); | ||||||
|                                 RNS.Transport.interfaces.append(interface) |                                     RNS.log("You will have to manually configure other interfaces for connectivity.", RNS.LOG_ERROR); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|                             if c["type"] == "UDPInterface": |                             if c["type"] == "UDPInterface": | ||||||
| @ -536,6 +541,8 @@ class Reticulum: | |||||||
|                     except Exception as e: |                     except Exception as e: | ||||||
|                         RNS.log("The interface \""+name+"\" could not be created. Check your configuration file for errors!", RNS.LOG_ERROR) |                         RNS.log("The interface \""+name+"\" could not be created. Check your configuration file for errors!", RNS.LOG_ERROR) | ||||||
|                         RNS.log("The contained exception was: "+str(e), RNS.LOG_ERROR) |                         RNS.log("The contained exception was: "+str(e), RNS.LOG_ERROR) | ||||||
|  |                         # TODO: Remove | ||||||
|  |                         raise e | ||||||
|                         RNS.panic() |                         RNS.panic() | ||||||
|                 else: |                 else: | ||||||
|                     RNS.log("The interface name \""+name+"\" was already used. Check your configuration file for errors!", RNS.LOG_ERROR) |                     RNS.log("The interface name \""+name+"\" was already used. Check your configuration file for errors!", RNS.LOG_ERROR) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user