diff options
Diffstat (limited to 'notes/chatty.md')
-rw-r--r-- | notes/chatty.md | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/notes/chatty.md b/notes/chatty.md new file mode 100644 index 0000000..77a3886 --- /dev/null +++ b/notes/chatty.md @@ -0,0 +1,76 @@ +# Chatty +The idea is the following: +- tcp server that you can send messages to +- history upon connecting +- date of messages sent +- client for reading the messages and sending them at the same time +- rooms +- encryption +- authentication + +## client +- [ ] BUG: text is not appearing after typing +- [ ] BUG: when connecting two clients of the same account +- [ ] BUG: wrapping does not work and displays nothing if there is no screen space +- [ ] BUG: reconnect does not work when server does not know id +- [ ] TODO: Convert tabs to spaces +- [ ] BUG: when using lots of markup characters +- [ ] TODO: Newline support + - [ ] resizable box + +## server +- [ ] check that fds arena does not overflow + - free clients which disconnected and use free list to give them space +- [ ] check if when sending and the client is offline (due to connection loss) what happens +- [ ] timeout on recv? +- [ ] use threads to handle clients/ timeout when receiving because a client could theoretically + stall the entire server. +- [ ] do not crash on errors from clients + - implement error message? + - timeout on recv with setsockopt +- [ ] theoretically two clients can connect at the same time. The uni/bi connections should be + negotiated. + +## common +- [ ] use IP address / domain +- [ ] chat history +- [ ] rooms +- [ ] compression + +## Protocol +- see `protocol.h` for more info +- The null terminator must be sent with the string. +- The text can be arbitrary length + +### To Read +#### C Programming +- https://www.youtube.com/watch?v=wvtFGa6XJDU +- https://nullprogram.com/blog/2023/02/11/ +- https://nullprogram.com/blog/2023/02/13/ +- https://nullprogram.com/blog/2023/10/08/ +#### Encryption w/ Compression +- https://en.wikipedia.org/wiki/BREACH +- https://en.wikipedia.org/wiki/CRIME +- https://crypto.stackexchange.com/questions/2283/crypto-compression-algorithms +- openpgp https://www.rfc-editor.org/rfc/rfc4880 +- https://security.stackexchange.com/questions/19911/crime-how-to-beat-the-beast-successor +- https://blog.qualys.com/product-tech/2012/09/14/crime-information-leakage-attack-against-ssltls +- Algorithms: + *Symmetric* + - AESI + - Blowfish + - Twofish + - Rivest Cipher (RC4) + *Assymetric* + - Data Encryption Standard (DES) + - ECDSA + - RSA + - Diffie-Hellman + - PGP + _Hash_ + - Deflate + - Huffman Coding + - LZ77 + Other + - ChaCha20-Poly1305 + - AES(-GCM) |