mirror of
https://github.com/markqvist/LXMF.git
synced 2025-12-17 17:34:28 -05:00
Automatic legacy PN de-peering
This commit is contained in:
parent
c28d3b1432
commit
81a6d503a3
3 changed files with 14 additions and 15 deletions
|
|
@ -45,13 +45,13 @@ class LXMFPropagationAnnounceHandler:
|
||||||
if self.lxmrouter.propagation_node:
|
if self.lxmrouter.propagation_node:
|
||||||
data = msgpack.unpackb(app_data)
|
data = msgpack.unpackb(app_data)
|
||||||
if pn_announce_data_is_valid(data):
|
if pn_announce_data_is_valid(data):
|
||||||
metadata = data[0]
|
node_timebase = int(data[1])
|
||||||
propagation_enabled = data[1]
|
propagation_enabled = data[2]
|
||||||
node_timebase = int(data[2])
|
|
||||||
propagation_transfer_limit = int(data[3])
|
propagation_transfer_limit = int(data[3])
|
||||||
propagation_sync_limit = int(data[4])
|
propagation_sync_limit = int(data[4])
|
||||||
propagation_stamp_cost = int(data[5][0])
|
propagation_stamp_cost = int(data[5][0])
|
||||||
propagation_stamp_cost_flexibility = int(data[5][1])
|
propagation_stamp_cost_flexibility = int(data[5][1])
|
||||||
|
metadata = data[6]
|
||||||
|
|
||||||
if destination_hash in self.lxmrouter.static_peers:
|
if destination_hash in self.lxmrouter.static_peers:
|
||||||
self.lxmrouter.peer(destination_hash=destination_hash,
|
self.lxmrouter.peer(destination_hash=destination_hash,
|
||||||
|
|
|
||||||
|
|
@ -150,12 +150,11 @@ def stamp_cost_from_app_data(app_data=None):
|
||||||
def pn_announce_data_is_valid(data):
|
def pn_announce_data_is_valid(data):
|
||||||
try:
|
try:
|
||||||
if type(data) == bytes: data = msgpack.unpackb(data)
|
if type(data) == bytes: data = msgpack.unpackb(data)
|
||||||
if len(data) < 6: raise ValueError("Invalid announce data: Insufficient peer data")
|
if len(data) < 7: raise ValueError("Invalid announce data: Insufficient peer data")
|
||||||
else:
|
else:
|
||||||
if type(data[0]) != dict: raise ValueError("Invalid announce data: Could not decode peer metadata")
|
try: int(data[1])
|
||||||
if data[1] != True and data[1] != False: raise ValueError("Invalid announce data: Indeterminate propagation node status")
|
|
||||||
try: int(data[2])
|
|
||||||
except: raise ValueError("Invalid announce data: Could not decode peer timebase")
|
except: raise ValueError("Invalid announce data: Could not decode peer timebase")
|
||||||
|
if data[2] != True and data[2] != False: raise ValueError("Invalid announce data: Indeterminate propagation node status")
|
||||||
try: int(data[3])
|
try: int(data[3])
|
||||||
except: raise ValueError("Invalid announce data: Could not decode peer propagation transfer limit")
|
except: raise ValueError("Invalid announce data: Could not decode peer propagation transfer limit")
|
||||||
try: int(data[4])
|
try: int(data[4])
|
||||||
|
|
@ -165,6 +164,7 @@ def pn_announce_data_is_valid(data):
|
||||||
except: raise ValueError("Invalid announce data: Could not decode peer target stamp cost")
|
except: raise ValueError("Invalid announce data: Could not decode peer target stamp cost")
|
||||||
try: int(data[5][1])
|
try: int(data[5][1])
|
||||||
except: raise ValueError("Invalid announce data: Could not decode peer stamp cost flexibility")
|
except: raise ValueError("Invalid announce data: Could not decode peer stamp cost flexibility")
|
||||||
|
if type(data[6]) != dict: raise ValueError("Invalid announce data: Could not decode peer metadata")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
RNS.log(f"Could not validate propagation node announce data: {e}", RNS.LOG_DEBUG)
|
RNS.log(f"Could not validate propagation node announce data: {e}", RNS.LOG_DEBUG)
|
||||||
|
|
|
||||||
|
|
@ -285,14 +285,13 @@ class LXMRouter:
|
||||||
node_state = self.propagation_node and not self.from_static_only
|
node_state = self.propagation_node and not self.from_static_only
|
||||||
stamp_cost = [self.propagation_stamp_cost, self.propagation_stamp_cost_flexibility]
|
stamp_cost = [self.propagation_stamp_cost, self.propagation_stamp_cost_flexibility]
|
||||||
metadata = {}
|
metadata = {}
|
||||||
announce_data = [
|
announce_data = [ False, # Legacy LXMF PN support
|
||||||
metadata, # Node metadata
|
int(time.time()), # Current node timebase
|
||||||
node_state, # Boolean flag signalling propagation node state
|
node_state, # Boolean flag signalling propagation node state
|
||||||
int(time.time()), # Current node timebase
|
self.propagation_per_transfer_limit, # Per-transfer limit for message propagation in kilobytes
|
||||||
self.propagation_per_transfer_limit, # Per-transfer limit for message propagation in kilobytes
|
self.propagation_per_sync_limit, # Limit for incoming propagation node syncs
|
||||||
self.propagation_per_sync_limit, # Limit for incoming propagation node syncs
|
stamp_cost, # Propagation stamp cost for this node
|
||||||
stamp_cost, # Propagation stamp cost for this node
|
metadata ] # Node metadata
|
||||||
]
|
|
||||||
|
|
||||||
data = msgpack.packb(announce_data)
|
data = msgpack.packb(announce_data)
|
||||||
self.propagation_destination.announce(app_data=data)
|
self.propagation_destination.announce(app_data=data)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue