diff --git a/nomadnet/NomadNetworkApp.py b/nomadnet/NomadNetworkApp.py index 522a77c..50b4c6d 100644 --- a/nomadnet/NomadNetworkApp.py +++ b/nomadnet/NomadNetworkApp.py @@ -155,6 +155,7 @@ class NomadNetworkApp: self.rrc_history_per_room_cap = 500 self.rrc_filter_loaded_history = True + self.rrc_max_accepted_resource_size = 256*1024 self.rrc_ephemeral_notices = 600 self.rrc_nick_colors = True self.rrc_nick_colors_theme = None @@ -994,6 +995,12 @@ class NomadNetworkApp: except Exception: value = True self.rrc_filter_loaded_history = value + if option == "max_accepted_resource_size": + try: value = self.config["rrc"].as_int(option) + except Exception: value = None + if value is not None and value >= 0: + self.rrc_max_accepted_resource_size = value*1024 + if option == "ephemeral_notices": try: value = self.config["rrc"].as_float(option) except Exception: value = 0 @@ -1397,6 +1404,14 @@ history_per_room_cap = 500 # loaded. filter_loaded_history = yes +# Maximum size in kilobytes of a resource +# transfer that will be accepted from a +# hub. Lower this on low-bandwidth links +# to automatically reject transfers that +# would take too long to receive. Set to +# 0 to reject all resource transfers. +max_accepted_resource_size = 256 + # You can choose whether notices and sys # messages persist indefinitely, or are # removed from the message history after diff --git a/nomadnet/RRC.py b/nomadnet/RRC.py index 70afa79..e764b3b 100644 --- a/nomadnet/RRC.py +++ b/nomadnet/RRC.py @@ -1213,7 +1213,12 @@ class RRCHub: size = getattr(resource, "size", 0) except Exception: return False - if size > 262144: + try: + max_size = int(getattr(self.manager.app, "rrc_max_accepted_resource_size", 262144)) + except Exception: + max_size = 262144 + if max_size <= 0 or size > max_size: + self._log("rejecting resource transfer of "+str(size)+" bytes (max accepted is "+str(max_size)+" bytes)", RNS.LOG_DEBUG) return False return True