Merge pull request #9936 from f321x/nwc_incoming_event_filtering
plugin: nwc: improve filtering of expired requests
This commit is contained in:
@@ -16,8 +16,8 @@ certifi==2025.4.26 \
|
|||||||
--hash=sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6
|
--hash=sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6
|
||||||
dnspython==2.4.2 \
|
dnspython==2.4.2 \
|
||||||
--hash=sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984
|
--hash=sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984
|
||||||
electrum-aionostr==0.0.10 \
|
electrum-aionostr==0.0.11 \
|
||||||
--hash=sha256:494dd0c260f2957cd6f011a1224e2d0fd021bd94c1e44badfe01d3a3d42fb3af
|
--hash=sha256:0eeb1d01e55d4bab2c116268965a0b2c11490659e969fd864c453104558bcf81
|
||||||
electrum-ecc==0.0.5 \
|
electrum-ecc==0.0.5 \
|
||||||
--hash=sha256:f733b8596a0f7b25c8371d08af61ef79c7b871d5b40f05a5b95d2d05eb2fb7d2
|
--hash=sha256:f733b8596a0f7b25c8371d08af61ef79c7b871d5b40f05a5b95d2d05eb2fb7d2
|
||||||
frozenlist==1.6.0 \
|
frozenlist==1.6.0 \
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ aiohttp_socks>=0.9.2
|
|||||||
certifi
|
certifi
|
||||||
jsonpatch
|
jsonpatch
|
||||||
electrum_ecc>=0.0.4,<0.1
|
electrum_ecc>=0.0.4,<0.1
|
||||||
electrum_aionostr>=0.0.8,<0.1
|
electrum_aionostr>=0.0.11,<0.1
|
||||||
|
|
||||||
# - upper limit to avoid needing hatchling at build-time :/
|
# - upper limit to avoid needing hatchling at build-time :/
|
||||||
# (however newer versions should work at runtime)
|
# (however newer versions should work at runtime)
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ class NWCServer(Logger, EventListener):
|
|||||||
query = {
|
query = {
|
||||||
"authors": list(self.connections.keys()), # the pubkeys of the client connections
|
"authors": list(self.connections.keys()), # the pubkeys of the client connections
|
||||||
"kinds": [self.REQUEST_EVENT_KIND],
|
"kinds": [self.REQUEST_EVENT_KIND],
|
||||||
"limit": 0,
|
"limit": 0, # requests only new events after creating this subscription
|
||||||
"since": int(time.time())
|
"since": int(time.time())
|
||||||
}
|
}
|
||||||
async for event in self.manager.get_events(query, single_event=False, only_stored=False):
|
async for event in self.manager.get_events(query, single_event=False, only_stored=False):
|
||||||
@@ -291,8 +291,16 @@ class NWCServer(Logger, EventListener):
|
|||||||
await self.send_error(event, "NOT_IMPLEMENTED")
|
await self.send_error(event, "NOT_IMPLEMENTED")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if event.created_at < int(time.time()) - 15:
|
# if the request has an explicitly set expiration tag, ignore it if it is expired
|
||||||
|
# otherwise ignore requests older than 30 sec to not handle requests the user may
|
||||||
|
# already expect to have timed out
|
||||||
|
if event.expires_at() is not None:
|
||||||
|
if event.is_expired():
|
||||||
|
self.logger.debug(f"expired nwc request event: {event.content}")
|
||||||
|
continue
|
||||||
|
elif event.created_at < int(time.time()) - 30:
|
||||||
self.logger.debug(f"old nwc request event: {event.content}")
|
self.logger.debug(f"old nwc request event: {event.content}")
|
||||||
|
await self.send_error(event, "OTHER", f"not handling too old request")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# decrypt the requests content
|
# decrypt the requests content
|
||||||
|
|||||||
Reference in New Issue
Block a user