n9k
829f3f004b
Add licences
2022-03-08 16:41:47 +13:00
n9k
4cde4ea07a
Add js appearance form (not complete c.f. nojs)
2022-03-08 16:13:22 +13:00
n9k
7962de87e3
WS: combine `uptime` and `viewership` into `stats`
...
If the stream is offline, `stats` is null, otherwise it contains uptime and
viewership.
2022-03-07 12:56:08 +13:00
n9k
8589216bf1
Send new captcha over websocket with js
2022-03-07 12:54:35 +13:00
n9k
3016705783
Keep track of stream viewership (number of viewers)
2022-03-07 12:54:35 +13:00
n9k
c36d2b2c38
Catch exception when inbound websocket data is not JSON
2022-03-07 12:54:35 +13:00
n9k
8b4d6e8c09
Get stream title from disk
...
By default from `title.txt`. Also replace newlines with spaces when setting the
title in js, for parity with the nojs info iframe.
2022-03-07 12:54:35 +13:00
n9k
2f4a9739c0
Show and enforce the captcha in js
...
Also clear the chat form comment input only if the message was accepted.
2022-02-22 16:25:43 +13:00
n9k
8c9b0d9da0
Flood detection
2022-02-22 16:25:43 +13:00
n9k
6ceb553b29
Buffer new and mutated users before sending to websockets
...
By default the buffer is exhausted every 4 seconds. This should defend against
a potential DoS against clients with JavaScript enabled. Before this, any
request with no token would generate a new user and immediately broadcast the
new user to all the websockets. It's best to lock down as much as possible the
number of places a client can cause the server to broadcasts to all the
websockets.
2022-02-22 16:25:43 +13:00
n9k
b7313eec22
Captchas, require captcha initially, generalize notices to states
2022-02-22 16:25:43 +13:00
n9k
7058677000
Setup background tasks, create t_sunset_users task
2022-02-22 16:25:43 +13:00
n9k
e9a4b511a3
Formalize/tidy user presence logic
2022-02-22 16:25:43 +13:00
n9k
6109de37ec
Nojs chat: ETag, limit scrollback, timeout notice
...
Limiting scrollback is happening for the js chat too. Also reject long
comments.
2022-02-22 16:25:41 +13:00
n9k
1e6563c4a2
Some more project structure
2022-02-18 14:32:34 +13:00
n9k
43e1a33088
Nojs appearance form, tripcodes, colours
2022-02-18 11:56:51 +13:00
n9k
7dbcd43f30
Logicaler project structure, see rest of commit message
...
Incoming requests are handled in anonstream/routes/. Route handlers
mainly depend on files in anonstream/, which in turn depend on files in
anonstream/helpers/ and anonstream/utils/. Utils are pure functions and
helpers are almost pure functions; they don't mutate state but they
do depend on the global app config.
2022-02-17 13:30:09 +13:00
n9k
e77862f4ff
Nojs chat, store all user names/colors in js, forget about inactive users
...
Project structure evolving a bit
2022-02-17 13:30:05 +13:00
n9k
694c6a4995
Nojs comment submission, notify for rejected comments
...
Fix with-user wrapper (wasn't collecting users)
2022-02-15 23:11:53 +13:00
n9k
885c10b5de
Initial noscript markup for chat form & stream info
...
Use with-user decorator on routes (instead of with-token)
2022-02-14 23:16:09 +13:00
n9k
5d0cac0b0f
Concatenate segments
...
Add small js failsafe, other minor changes
2022-02-13 22:25:02 +13:00
n9k
71586420b6
Project structure, chat markup/style, websockets
2022-02-13 17:00:10 +13:00