Websocket: reuse timestamp in handle_inbound_pong
このコミットが含まれているのは:
コミット
4a8d8966aa
|
@ -132,8 +132,9 @@ def change_tripcode(user, password, dry_run=False):
|
||||||
def delete_tripcode(user):
|
def delete_tripcode(user):
|
||||||
user['tripcode'] = None
|
user['tripcode'] = None
|
||||||
|
|
||||||
@with_timestamp()
|
def see(user, timestamp=None):
|
||||||
def see(timestamp, user):
|
if timestamp is None:
|
||||||
|
timestamp = get_timestamp()
|
||||||
user['last']['seen'] = timestamp
|
user['last']['seen'] = timestamp
|
||||||
|
|
||||||
def watching(user, timestamp=None):
|
def watching(user, timestamp=None):
|
||||||
|
|
|
@ -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.captcha import get_random_captcha_digest_for
|
||||||
from anonstream.chat import get_all_messages_for_websocket, add_chat_message, Rejected
|
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.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.chat import generate_nonce
|
||||||
from anonstream.utils.user import identifying_string
|
from anonstream.utils.user import identifying_string
|
||||||
from anonstream.utils.websocket import parse_websocket_data, Malformed, WS
|
from anonstream.utils.websocket import parse_websocket_data, Malformed, WS
|
||||||
|
@ -49,7 +49,8 @@ async def websocket_inbound(queue, user):
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
receipt = None
|
receipt = None
|
||||||
finally:
|
finally:
|
||||||
see(user)
|
timestamp = get_timestamp()
|
||||||
|
see(user, timestamp=timestamp)
|
||||||
try:
|
try:
|
||||||
receipt_type, parsed = parse_websocket_data(receipt)
|
receipt_type, parsed = parse_websocket_data(receipt)
|
||||||
except Malformed as e:
|
except Malformed as e:
|
||||||
|
@ -68,25 +69,24 @@ async def websocket_inbound(queue, user):
|
||||||
handle = handle_inbound_captcha
|
handle = handle_inbound_captcha
|
||||||
case WS.PONG:
|
case WS.PONG:
|
||||||
handle = handle_inbound_pong
|
handle = handle_inbound_pong
|
||||||
payload = handle(queue, user, *parsed)
|
payload = handle(timestamp, queue, user, *parsed)
|
||||||
|
|
||||||
if payload is not None:
|
if payload is not None:
|
||||||
queue.put_nowait(payload)
|
queue.put_nowait(payload)
|
||||||
|
|
||||||
@with_timestamp()
|
|
||||||
def handle_inbound_pong(timestamp, queue, user):
|
def handle_inbound_pong(timestamp, queue, user):
|
||||||
print(f'[pong] {identifying_string(user)}')
|
print(f'[pong] {identifying_string(user)}')
|
||||||
reading(user, timestamp=timestamp)
|
user['last']['reading'] = timestamp
|
||||||
user['websockets'][queue] = timestamp
|
user['websockets'][queue] = timestamp
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def handle_inbound_captcha(queue, user):
|
def handle_inbound_captcha(timestamp, queue, user):
|
||||||
return {
|
return {
|
||||||
'type': 'captcha',
|
'type': 'captcha',
|
||||||
'digest': get_random_captcha_digest_for(user),
|
'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)
|
errors = try_change_appearance(user, name, color, password, want_tripcode)
|
||||||
if errors:
|
if errors:
|
||||||
return {
|
return {
|
||||||
|
@ -102,7 +102,7 @@ def handle_inbound_appearance(queue, user, name, color, password, want_tripcode)
|
||||||
#'tripcode': user['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:
|
try:
|
||||||
verification_happened = verify(user, digest, answer)
|
verification_happened = verify(user, digest, answer)
|
||||||
except BadCaptcha as e:
|
except BadCaptcha as e:
|
||||||
|
|
読み込み中…
新しいイシューから参照