From bd8d2c11c629d82266c2a774171f902b787a6454 Mon Sep 17 00:00:00 2001 From: ninya9k Date: Wed, 19 May 2021 06:16:13 +0000 Subject: [PATCH] add route /debug showing all the variables; actually put hls_time in index.html; make nonces shorter to distinguish them --- website/chat.py | 2 +- website/routes.py | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/website/chat.py b/website/chat.py index bfa51dc..f0731af 100644 --- a/website/chat.py +++ b/website/chat.py @@ -23,7 +23,7 @@ def behead_chat(): def new_nonce(): now = int(time.time()) - nonce = secrets.token_hex(8) + nonce = secrets.token_hex(6) with viewership.lock: remove_expired_nonces() nonces[nonce] = now diff --git a/website/routes.py b/website/routes.py index c8eaf95..779690a 100644 --- a/website/routes.py +++ b/website/routes.py @@ -41,7 +41,8 @@ def index(token=None): response = render_template('index.html', token=token, use_videojs=use_videojs, - start_number=resolve_segment_offset() if stream.is_online() else 0) + start_number=resolve_segment_offset() if stream.is_online() else 0, + hls_time=HLS_TIME) response = Response(response) # TODO: add a view of the chat only, either as an arg here or another route response.set_cookie('token', token) return response @@ -338,6 +339,37 @@ def add_header(response): pass return response +@current_app.route('/debug') +@current_app.auth.login_required +def debug(): + import copy + + with viewership.lock: + # necessary because we store colours as bytes and json can't bytes; + # and infinities are allowed by json.dumps but browsers don't like it + json_safe_viewers = copy.deepcopy(viewership.viewers) + for token in json_safe_viewers: + json_safe_viewers[token]['colour'] = f'#{json_safe_viewers[token]["colour"].hex()}' + for key in json_safe_viewers[token]: + if json_safe_viewers[token][key] == float('-inf'): + json_safe_viewers[token][key] = None + + result = { + 'viewership': { + 'segment_views': viewership.segment_views, + 'video_was_corrupted': list(viewership.video_was_corrupted), + 'viewers': json_safe_viewers, + 'preset_comment_iframe': viewership.preset_comment_iframe + }, + 'chat': { + 'captchas': chat.captchas, + 'messages': list(chat.messages), + 'nonces': chat.nonces + } + } + + return result + @current_app.route('/teapot') def teapot(): return {'short': True, 'stout': True}, 418