66 lines
No EOL
1.7 KiB
Markdown
66 lines
No EOL
1.7 KiB
Markdown
# SimpleShout
|
|
|
|
A small chat box API for use on public websites.
|
|
|
|
## Features:
|
|
|
|
- Basic permissions: admin vs everyone else
|
|
- Message creation
|
|
- Discord style emoji: [example](https://github.com/NervN/discord-emojis/blob/main/assets/UnicodeEmojis.json), [emojibase](https://emojibase.dev/)
|
|
- Message deletion (admin)
|
|
- Message sanitization
|
|
- Keyword filtering
|
|
- Responsive web UI
|
|
- Embed/iframe-able
|
|
|
|
## Deps
|
|
- rocket
|
|
- sled
|
|
- snowflake id
|
|
|
|
|
|
## API
|
|
|
|
- init: takes a cookie, returns a session (previous username, current channel, etc) if exits, else require login
|
|
- login: takes a username and IP, returns a session cookie
|
|
- create_channel: takes a cookie, channel name, and motd, returns a channel id
|
|
- channels: takes a cookie returns a list of channels and a preview message for each
|
|
- join: takes a cookie and channel id, returns `init_scrollback` previous messages, a sync rate, and a client identifier, or an error if username exists/is not allowed, or channel does not exist
|
|
- sync: takes a cookie and a last message id and returns all unseen messages.
|
|
- send: sends a message, returns a status
|
|
- login: accepts password, gives client admin perms if password is correct
|
|
- delete: takes an admin client identifier and a message id
|
|
- ban: bans a client
|
|
|
|
## Structs
|
|
|
|
- config
|
|
- admin_password
|
|
- ratelimit (req/min)
|
|
- `[reserved_username:ip_address]`
|
|
- `[banned_words]`
|
|
- `[banned_usernames]`
|
|
- `[banned_ips]`
|
|
- init_scrollback
|
|
- sync_rate
|
|
|
|
- channel
|
|
- id
|
|
- name
|
|
- motd
|
|
|
|
- message
|
|
- id
|
|
- channel_id
|
|
- client_id
|
|
- timestamp
|
|
- body
|
|
|
|
- client
|
|
- client_id
|
|
- username
|
|
- ip_address
|
|
- admin_perms
|
|
- banned
|
|
- ratelimit
|
|
- last_channel_id |