Added announce frequency stats

This commit is contained in:
Mark Qvist 2023-09-30 19:13:58 +02:00
parent 0fd75cb819
commit 136713eec1
3 changed files with 13 additions and 2 deletions

View File

@ -217,7 +217,7 @@ class Identity:
return Identity.truncated_hash(os.urandom(Identity.TRUNCATED_HASHLENGTH//8)) return Identity.truncated_hash(os.urandom(Identity.TRUNCATED_HASHLENGTH//8))
@staticmethod @staticmethod
def validate_announce(packet): def validate_announce(packet, only_validate_signature=False):
try: try:
if packet.packet_type == RNS.Packet.ANNOUNCE: if packet.packet_type == RNS.Packet.ANNOUNCE:
destination_hash = packet.destination_hash destination_hash = packet.destination_hash
@ -238,6 +238,10 @@ class Identity:
announced_identity.load_public_key(public_key) announced_identity.load_public_key(public_key)
if announced_identity.pub != None and announced_identity.validate(signature, signed_data): if announced_identity.pub != None and announced_identity.validate(signature, signed_data):
if only_validate_signature:
del announced_identity
return True
hash_material = name_hash+announced_identity.hash hash_material = name_hash+announced_identity.hash
expected_hash = RNS.Identity.full_hash(hash_material)[:RNS.Reticulum.TRUNCATED_HASHLENGTH//8] expected_hash = RNS.Identity.full_hash(hash_material)[:RNS.Reticulum.TRUNCATED_HASHLENGTH//8]

View File

@ -1143,6 +1143,8 @@ class Reticulum:
ifstats["name"] = str(interface) ifstats["name"] = str(interface)
ifstats["rxb"] = interface.rxb ifstats["rxb"] = interface.rxb
ifstats["txb"] = interface.txb ifstats["txb"] = interface.txb
ifstats["incoming_announce_frequency"] = interface.incoming_announce_frequency()
ifstats["outgoing_announce_frequency"] = interface.outgoing_announce_frequency()
ifstats["status"] = interface.online ifstats["status"] = interface.online
ifstats["mode"] = interface.mode ifstats["mode"] = interface.mode

View File

@ -887,6 +887,8 @@ class Transport:
# thread.start() # thread.start()
Transport.transmit(interface, packet.raw) Transport.transmit(interface, packet.raw)
if packet.packet_type == RNS.Packet.ANNOUNCE:
interface.sent_announce()
sent = True sent = True
if sent: if sent:
@ -1227,8 +1229,11 @@ class Transport:
# announces, queueing rebroadcasts of these, and removal # announces, queueing rebroadcasts of these, and removal
# of queued announce rebroadcasts once handed to the next node. # of queued announce rebroadcasts once handed to the next node.
if packet.packet_type == RNS.Packet.ANNOUNCE: if packet.packet_type == RNS.Packet.ANNOUNCE:
if interface != None and RNS.Identity.validate_announce(packet, only_validate_signature=True):
interface.received_announce()
local_destination = next((d for d in Transport.destinations if d.hash == packet.destination_hash), None) local_destination = next((d for d in Transport.destinations if d.hash == packet.destination_hash), None)
if local_destination == None and RNS.Identity.validate_announce(packet): if local_destination == None and RNS.Identity.validate_announce(packet):
if packet.transport_id != None: if packet.transport_id != None:
received_from = packet.transport_id received_from = packet.transport_id