Accord
Instant messaging chat system in Rust over TCP with encryption
Install / Use
/learn @LoipesMas/AccordREADME
Instant messaging chat system over TCP.
Written in Rust with tokio-rs.
Packet design and handshake inspired partially by Minecraft.
Features
- Standalone server
- GUI client (using
druidUI toolkit) with customizations via config file - TUI client
- Encryption
- Sending images (via clipboard)
- Server management (banning, whitelists, etc)
GUI
Requirements
Because accord's gui client uses druid, it requires gtk on Linux and BSD.
See druid's Readme notes for more information.
Configuration
GUI's theme (and some saved data) can be edited in config.toml file.
- On Unix system it's in
$XDG_CONFIG_HOME/accord-gui/config.toml - On Windows system it's in
$LOCALAPPDATA/accord-gui/config.toml
Colors are in hexadecimal format (#rrggbb, #rrggbbaa, #rbg or #rbga).
Images from links
GUI client can automatically try to load an image from a message with a link, however this is a potential security risk (e.g. IP grabbing), so it's disabled by default.
(If you're using a VPN or a proxy, then the risk should be nonexistent and in worst-case scenario it's still less risky than clicking on a random link.)
Short-term goals
- Improve GUI experience (sidebar with active users, loading up past messages and more)
- Verify that the encryption is secure
- Add more features
Long-term goals
- Figure out long-term goals
The Stack
- Server:
- tokio-rs
- postgres
- GUI:
- tokio-rs
- druid
Setting up accord server
Using docker container
- Clone docker compose repo
git clone https://github.com/LoipesMas/accord-docker.git
cd accord-docker
- Edit
config.toml(you probably only want to change operators) docker compose up -dto run the server in the background
From source
- Compile accord-server
git clone https://github.com/LoipesMas/accord.git
cd accord
cargo b -p accord-server --release
- Set up postgresql database somewhere.
Refer to postgres instructions for how to do that. - Launch
accord-server. It will error something about connecting to the database, but we just need the default config. - Edit the config (probably located in
~/.config/accord-server/config.toml) with correct postgres credentials. - Launch
accord-serveragain, this time it should connect. - Done!
Now clients can connect.
Contributing
Contributions are very welcome! Features, ideas, bug fixes, anything.
