コミットグラフ

106 コミット

作成者 SHA1 メッセージ 日付
n9k f40637b786 WS: don't close because no pings if already closed 2022-06-13 22:04:59 +00:00
n9k 5751297f10 Control socket: delete chat messages 2022-06-13 21:25:25 +00:00
n9k 36666f8cdf Catch all OSErrors when reading title.txt
Previously we only caught FileNotFoundError. If there was a
PermissionError for example, it would have percolated up and
stopped some background tasks.
2022-06-13 03:46:53 +00:00
n9k 588ecc4c02 Control socket: progress 2022-06-13 03:46:02 +00:00
n9k e491f54b24 Control socket (WIP) 2022-06-12 22:26:48 +00:00
n9k 7f2e75bc98 Read config.toml more organizedly 2022-06-12 22:26:46 +00:00
n9k 98d1beb1b0 v1.1.0 2022-06-12 04:53:57 +00:00
n9k d621f8ceda Reorder chat form inputs so submit has priority
When you press enter to submit a form and there are multiple submittable
inputs (e.g. type="image" / type="submit"), Firefox chooses the one that
appears first in markup. Before this commit the image input (aka the "I
want a new captcha" button) appeared before the submit button which
meant pressing enter just reloaded the captcha instead of submitting the
comment.
2022-06-11 23:14:49 +00:00
n9k 971ab4769a Use accesskey 'r' for reload stream button 2022-06-11 23:14:16 +00:00
n9k 667e35bf16 Handle OSErrors reading playlist, give reasons for offline 2022-06-11 23:14:16 +00:00
n9k ae6c1ba5a9 Reject whitespace-only comments 2022-06-11 23:14:16 +00:00
n9k 542d6c9ae5 Detect chat flooding by counting lines
Reject comments by line count. Ratelimit users by number of lines sent
in chat.
2022-06-11 23:14:16 +00:00
n9k 9e91349ca9 m3u8 init_section may not exist 2022-06-11 23:14:16 +00:00
n9k 31b82a9983 Websocket: ping immediately 2022-06-11 23:14:16 +00:00
n9k 57053b5eca Chat insignia: solid orangered background 2022-06-11 23:14:16 +00:00
n9k 77d68629b6 CSS: fullheight mobile chat, remove iframe margins 2022-06-11 23:14:16 +00:00
n9k 95f12fa632 Send <!doctype html> in responses when auth fails 2022-06-11 23:14:16 +00:00
n9k 2c899cc18d Add timeout for each ASGI http.response.body message
Ensures that if a client becomes idle the segment generator is exited
within a constant amount of time (probably more than this timeout
because of the ASGI server's write buffer and the OS's socket write
buffer, but still constant).
2022-06-11 23:14:16 +00:00
n9k c0de94bc5d Remove redundant failsafe `websocket.close()`
Ping timeouts should do the same thing.
2022-06-11 23:14:16 +00:00
n9k 4b68023cf2 Add websocket ping/pong
Client and server both close the connection if they don't hear from the
other party after a timeout period. This is a failsafe and should
improve reliability.
2022-06-11 23:14:16 +00:00
n9k a7bfab4f26 Offline screen 2022-06-11 23:14:12 +00:00
n9k 6a4e16eaf4 Use &times; instead of &cross;
Tor Browser on Linux prefers &times;
2022-06-09 01:34:59 +00:00
n9k 0aad555408 Info iframe: properly show uptime text-only fallback 2022-06-09 01:34:59 +00:00
n9k 0352358611 Compress some responses
Adds dependency `quart-compress`
2022-06-09 01:34:59 +00:00
n9k 73824f70d7 Lock js chat scroll when not at bottom 2022-06-09 01:34:59 +00:00
n9k dab389abcc More precise debug messages when segment generator exits 2022-06-09 01:34:45 +00:00
n9k 4eaf9b56f7 Try to ensure websocket is closed when forgetting about it
Might not be necessary, but if it is then it prevents a sitation where a
websocket is still open but we've forgotten about it, so we will never
broadcast any new messages to it and the client will be practically frozen in
time until they disconnect and open a new websocket.

Also update the user's last_seen when the websocket is closed. This prevents a
user with js enabled who's actually idle being considered absent and being
rotated when their websocket accidentally closes for a few seconds.
2022-03-10 07:47:57 +13:00
n9k 88fc9493cf v1.0.1 2022-03-10 07:47:46 +13:00
n9k ca669833e3 CSS: add `white-space: pre-wrap;` to chat messages 2022-03-10 07:46:53 +13:00
n9k cda687294e Nojs chat: fix users names/tripcodes having wrong colors 2022-03-10 07:45:56 +13:00
n9k 66eabd67af CSS: add `overflow: hidden;` to chat messages
Stops messages being able to obscure other messages with weird unicode
characters.
2022-03-09 17:42:44 +13:00
n9k 4c491e5318 v1.0.0 2022-03-09 16:57:59 +13:00
n9k 829f3f004b Add licences 2022-03-08 16:41:47 +13:00
n9k 4bab173237 Add Content Security Policy meta tags 2022-03-08 16:13:22 +13:00
n9k 5bd5d7ff6d Nojs chat form: more accesskeys 2022-03-08 16:13:22 +13:00
n9k 4cde4ea07a Add js appearance form (not complete c.f. nojs) 2022-03-08 16:13:22 +13:00
n9k ce5b7ba0ba Fix js memory leak
Already existing tripcode css rules were being re-inserted because of a typo.
2022-03-08 16:13:22 +13:00
n9k 55c16d7214 Nojs chat form: use `:checked` instead of `:target`
This works around a bug in mobile Firefox where under certain cirucmstances two
elements inside an iframe both become the iframe's target elment at the same
time, which breaks the CSS logic so instead of exactly one form being displayed,
nothing is displayed.
2022-03-08 16:13:22 +13:00
n9k 9c5fc4bc71 Keyboard accessible js captcha 2022-03-08 16:13:22 +13:00
n9k f48a27525e Autofocus chat form textarea 2022-03-08 16:13:22 +13:00
n9k 0ce1902918 Show notice from websocket in js chat form 2022-03-08 16:13:22 +13:00
n9k 5153f5d112 Add config option for old tripcode algorithm 2022-03-08 16:13:22 +13:00
n9k ade3ca4e9e Add broadcaster insignia
Also surrounded users' name tags in <b> (HTML) tags.
2022-03-08 16:13:21 +13:00
n9k 9ebcf57de5 Nojs uptime counter 2022-03-07 16:36:36 +13:00
n9k 5590fbbdbe Chat: use breaking space between name and message 2022-03-07 12:56:08 +13:00
n9k 2bb23ab4c4 Rename templates & routes to fit naming scheme 2022-03-07 12:56:08 +13:00
n9k c103de9849 Add meta viewport tags 2022-03-07 12:56:08 +13:00
n9k bb3002ffd5 Nojs chat: add fallback meta refresh to redirect url
Hacky workaround of weird behaviour in Firefox where on a page whose url has a
fragment/hash/anchor in it, sometimes a urlless meta refresh tag will jump to
the element instead of refreshing the page. Same thing happens if the meta
refresh tag's url component is the same as the page's url.
2022-03-07 12:56:08 +13:00
n9k 46fce9c393 Add nojs 'Reload stream' button
The nojs button appears when the stream is online and the user is not watching.
The js button appears when the stream is online and the media element either
(1) is not using the network or (2) fires an error event.
2022-03-07 12:56:08 +13:00
n9k 2763891a4e Nojs chat: only deverify user when they leave a message
Matches the behaviour of the js chat. Makes it so if you submit an empty
message but with a correct captcha, you won't be deverified and given another
captcha until you successfully send a message (and exceed the flood threshold).
Previously you could fill in the captcha with no message and be given back a
new captcha, which doesn't make that much sense.
2022-03-07 12:56:08 +13:00