No description
Find a file
2024-10-08 19:22:38 +00:00
src adding state, sessions, and cookies 2024-10-08 18:43:32 +00:00
.gitignore initial framework 2024-09-24 22:13:08 -04:00
Cargo.toml bumped version 2024-10-08 19:22:38 +00:00
LICENSE Initial commit 2024-09-24 14:06:01 +00:00
README.md Update README.md 2024-09-24 19:47:36 +00:00

SimpleShout

A small chat box API for use on public websites.

Features:

  • Basic permissions: admin vs everyone else
  • Message creation
  • Discord style emoji: example, emojibase
  • 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