Updated filtering rules. Fixes #18.
This commit is contained in:
		
							parent
							
								
									550dfd44cb
								
							
						
					
					
						commit
						3051b6897d
					
				| @ -118,6 +118,9 @@ class Destination: | |||||||
|             identity = RNS.Identity() |             identity = RNS.Identity() | ||||||
|             aspects = aspects+(identity.hexhash,) |             aspects = aspects+(identity.hexhash,) | ||||||
| 
 | 
 | ||||||
|  |         if identity != None and self.type == Destination.PLAIN: | ||||||
|  |             raise TypeError("Selected destination type PLAIN cannot hold an identity") | ||||||
|  | 
 | ||||||
|         self.identity = identity |         self.identity = identity | ||||||
| 
 | 
 | ||||||
|         self.name = Destination.full_name(app_name, *aspects)       |         self.name = Destination.full_name(app_name, *aspects)       | ||||||
| @ -146,6 +149,9 @@ class Destination: | |||||||
|         :param app_data: *bytes* containing the app_data. |         :param app_data: *bytes* containing the app_data. | ||||||
|         :param path_response: Internal flag used by :ref:`RNS.Transport<api-transport>`. Ignore. |         :param path_response: Internal flag used by :ref:`RNS.Transport<api-transport>`. Ignore. | ||||||
|         """ |         """ | ||||||
|  |         if self.type != Destination.SINGLE: | ||||||
|  |             raise TypeError("Only SINGLE destination types can be announced") | ||||||
|  |              | ||||||
|         destination_hash = self.hash |         destination_hash = self.hash | ||||||
|         random_hash = RNS.Identity.get_random_hash()[0:5]+int(time.time()).to_bytes(5, "big") |         random_hash = RNS.Identity.get_random_hash()[0:5]+int(time.time()).to_bytes(5, "big") | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -457,7 +457,7 @@ class Transport: | |||||||
|         sent = False |         sent = False | ||||||
| 
 | 
 | ||||||
|         # Check if we have a known path for the destination in the path table |         # Check if we have a known path for the destination in the path table | ||||||
|         if packet.packet_type != RNS.Packet.ANNOUNCE and packet.destination_hash in Transport.destination_table: |         if packet.packet_type != RNS.Packet.ANNOUNCE and packet.destination.type != RNS.Destination.PLAIN and packet.destination.type != RNS.Destination.GROUP and packet.destination_hash in Transport.destination_table: | ||||||
|             outbound_interface = Transport.destination_table[packet.destination_hash][5] |             outbound_interface = Transport.destination_table[packet.destination_hash][5] | ||||||
| 
 | 
 | ||||||
|             # If there's more than one hop to the destination, and we know |             # If there's more than one hop to the destination, and we know | ||||||
| @ -572,14 +572,38 @@ class Transport: | |||||||
|             return True |             return True | ||||||
|         if packet.context == RNS.Packet.CACHE_REQUEST: |         if packet.context == RNS.Packet.CACHE_REQUEST: | ||||||
|             return True |             return True | ||||||
|  | 
 | ||||||
|         if packet.destination_type == RNS.Destination.PLAIN: |         if packet.destination_type == RNS.Destination.PLAIN: | ||||||
|  |             if packet.packet_type != RNS.Packet.ANNOUNCE: | ||||||
|  |                 if packet.hops > 1: | ||||||
|  |                     RNS.log("Dropped PLAIN packet "+RNS.prettyhexrep(packet.hash)+" with "+str(packet.hops)+" hops", RNS.LOG_DEBUG) | ||||||
|  |                     return False | ||||||
|  |                 else: | ||||||
|                     return True |                     return True | ||||||
|  |             else: | ||||||
|  |                 RNS.log("Dropped invalid PLAIN announce packet", RNS.LOG_DEBUG) | ||||||
|  |                 return False | ||||||
|  | 
 | ||||||
|  |         if packet.destination_type == RNS.Destination.GROUP: | ||||||
|  |             if packet.packet_type != RNS.Packet.ANNOUNCE: | ||||||
|  |                 if packet.hops > 1: | ||||||
|  |                     RNS.log("Dropped GROUP packet "+RNS.prettyhexrep(packet.hash)+" with "+str(packet.hops)+" hops", RNS.LOG_DEBUG) | ||||||
|  |                     return False | ||||||
|  |                 else: | ||||||
|  |                     return True | ||||||
|  |             else: | ||||||
|  |                 RNS.log("Dropped invalid GROUP announce packet", RNS.LOG_DEBUG) | ||||||
|  |                 return False | ||||||
| 
 | 
 | ||||||
|         if not packet.packet_hash in Transport.packet_hashlist: |         if not packet.packet_hash in Transport.packet_hashlist: | ||||||
|             return True |             return True | ||||||
|         else: |         else: | ||||||
|             if packet.packet_type == RNS.Packet.ANNOUNCE: |             if packet.packet_type == RNS.Packet.ANNOUNCE: | ||||||
|  |                 if packet.destination_type == RNS.Destination.SINGLE: | ||||||
|                     return True |                     return True | ||||||
|  |                 else: | ||||||
|  |                     RNS.log("Dropped invalid announce packet", RNS.LOG_DEBUG) | ||||||
|  |                     return False | ||||||
| 
 | 
 | ||||||
|         RNS.log("Filtered packet with hash "+RNS.prettyhexrep(packet.packet_hash), RNS.LOG_DEBUG) |         RNS.log("Filtered packet with hash "+RNS.prettyhexrep(packet.packet_hash), RNS.LOG_DEBUG) | ||||||
|         return False |         return False | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user