A simple chat server for maya's stream.
 
 
 
 
 
Go to file
~erin a01cb8b489
Remove deprecated functions
2021-07-23 09:48:57 -04:00
frontend Frontend: fixed formatting, added comments, fixed bugs. 2021-07-22 10:36:48 -07:00
src Remove deprecated functions 2021-07-23 09:48:57 -04:00
.gitignore Remove deprecated functions 2021-07-23 09:48:57 -04:00
CHANGELOG.md Add error handling to database functions, use db_read_user() 2021-07-23 09:42:33 -04:00
Cargo.lock Remove deprecated functions 2021-07-23 09:48:57 -04:00
Cargo.toml Add error handling to database functions, use db_read_user() 2021-07-23 09:42:33 -04:00
LICENSE Add Luna to license 2021-07-19 06:39:13 -04:00
README.md Add basic support for moderation actions, delete previous user before changing name 2021-07-23 07:55:24 -04:00
message.zsh Remove deprecated functions 2021-07-23 09:48:57 -04:00

README.md

Chat Registration System

The basic backend code needed to register & login to a chat system (to be built). Send it the unhashed username and pin, and it'll store it in the users.json file with the pin hashed with SHA1.

API Documentation

POST /api/register/<name>/<pin>/<pronouns> Register the username with the pin provided if it doesn't already exist Returns status & reason json.

GET /api/users/<name> Check if the user exists Returns either

{ "status": "fail", "reason": "user not found", }

or

{ "status": "ok", "user": { "name": "<name>", "pronouns": "<pronouns>", }, }

GET /api/token/<name> Check if the current token matches the user provided

DEPRECATED GET /api/users/<name>/<pin> Check if the user exists, and if the pin provided matches Returns status & reason json.

POST /api/users/change {"name":"<username>","pin":"<pin>","changed_event":"name/pin/pronouns","new_event":"<new name/pin/pronouns>" Change a users details via a json post.

eg. POST /api/users/change {"name":"example","pin":"10","changed_event":"name","new_event":"test" to change the user "example"'s name to "test"

DEPRECATED POST /api/users/change/<name>/<pin>/<new-name>/<new-pin> Change a users pin/name Returns status & reason json.

POST /api/logout {"name":"<username>"} to logout a user if the token matches

Chat Documentation

POST /api/message/send {"name":"username","body":"message body"} Post a json message. Returns status & reason json.

GET /api/message/messages.json Get a json file of all the messages

Chat Planning

Clientside js will register & check login of users, if login is correct will ask for a random token. Backend will generate token, store it, and then send it to the client to set as a cookie. Whenever user sends a message, client will send message & token and backend will check if token matches.

To-Do:

  • Basic auth API
  • Return json instead of string
    • "status" shows wether request was succesful or not, either "ok" or "fail"
    • "reason" is for more details, mainly just for debugging?
  • Basic messaging system
    • Finish up chat::create_message()
    • Create chat::fetch_messages()
    • Use unix timestamp for date
    • Create chat::delete_message()
  • Switch to using sled database to store users
    • Error handling
  • Token generation & storage
    • Sets cookie
    • Store token in json
    • Have cookie expire
    • Remove old cookie
    • Use token for most stuff
    • Logout API
    • Fail on NULL token
  • Pronouns
    • Set pronouns
    • Change pronouns
  • make changed_event Enum, use token instead of pin
  • Some form of plural support?
  • User management (banning, etc.)
    • User roles (admin, mod, etc.)
    • Commands to affect users
  • Blacklist words from chat/names
  • More advanced chat features
    • Different types of message events? eg. default, announcement, command
    • Types will display differently? eg. announcements pinned to top?
    • Have different commands?
    • Emote support?