From 4a8d8966aac5ab9d90557b0ae0d1b4799ebb08be Mon Sep 17 00:00:00 2001 From: n9k Date: Sat, 25 Jun 2022 04:14:31 +0000 Subject: [PATCH] Websocket: reuse timestamp in handle_inbound_pong --- anonstream/user.py | 5 +++-- anonstream/websocket.py | 16 ++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/anonstream/user.py b/anonstream/user.py index 112d8d3..828f0fa 100644 --- a/anonstream/user.py +++ b/anonstream/user.py @@ -132,8 +132,9 @@ def change_tripcode(user, password, dry_run=False): def delete_tripcode(user): user['tripcode'] = None -@with_timestamp() -def see(timestamp, user): +def see(user, timestamp=None): + if timestamp is None: + timestamp = get_timestamp() user['last']['seen'] = timestamp def watching(user, timestamp=None): diff --git a/anonstream/websocket.py b/anonstream/websocket.py index f358235..ef91202 100644 --- a/anonstream/websocket.py +++ b/anonstream/websocket.py @@ -10,7 +10,7 @@ from anonstream.stream import get_stream_title, get_stream_uptime_and_viewership from anonstream.captcha import get_random_captcha_digest_for from anonstream.chat import get_all_messages_for_websocket, add_chat_message, Rejected from anonstream.user import get_all_users_for_websocket, see, reading, verify, deverify, BadCaptcha, try_change_appearance -from anonstream.wrappers import with_timestamp +from anonstream.wrappers import with_timestamp, get_timestamp from anonstream.utils.chat import generate_nonce from anonstream.utils.user import identifying_string from anonstream.utils.websocket import parse_websocket_data, Malformed, WS @@ -49,7 +49,8 @@ async def websocket_inbound(queue, user): except json.JSONDecodeError: receipt = None finally: - see(user) + timestamp = get_timestamp() + see(user, timestamp=timestamp) try: receipt_type, parsed = parse_websocket_data(receipt) except Malformed as e: @@ -68,25 +69,24 @@ async def websocket_inbound(queue, user): handle = handle_inbound_captcha case WS.PONG: handle = handle_inbound_pong - payload = handle(queue, user, *parsed) + payload = handle(timestamp, queue, user, *parsed) if payload is not None: queue.put_nowait(payload) -@with_timestamp() def handle_inbound_pong(timestamp, queue, user): print(f'[pong] {identifying_string(user)}') - reading(user, timestamp=timestamp) + user['last']['reading'] = timestamp user['websockets'][queue] = timestamp return None -def handle_inbound_captcha(queue, user): +def handle_inbound_captcha(timestamp, queue, user): return { 'type': 'captcha', 'digest': get_random_captcha_digest_for(user), } -def handle_inbound_appearance(queue, user, name, color, password, want_tripcode): +def handle_inbound_appearance(timestamp, queue, user, name, color, password, want_tripcode): errors = try_change_appearance(user, name, color, password, want_tripcode) if errors: return { @@ -102,7 +102,7 @@ def handle_inbound_appearance(queue, user, name, color, password, want_tripcode) #'tripcode': user['tripcode'], } -def handle_inbound_message(queue, user, nonce, comment, digest, answer): +def handle_inbound_message(timestamp, queue, user, nonce, comment, digest, answer): try: verification_happened = verify(user, digest, answer) except BadCaptcha as e: