VincentFoulon80 / accord

Instant messaging chat system in Rust over TCP with encryption

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


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 druid UI 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

  1. Obtain accord-server binary.
    Currently only method is to compile it yourself.
git clone https://github.com/LoipesMas/accord.git
cd accord
cargo b -p accord-server --release
  1. Set up postgresql database somewhere.
    Refer to postgres instructions for how to do that.
  2. Launch accord-server. It will error something about connecting to the database, but we just need the default config.
  3. Edit the config (probably located in ~/.config/accord-server/config.toml) with correct postgres credentials.
  4. Launch accord-server again, this time it should connect.
  5. Done!
    Now clients can connect.

Contributing

Contributions are very welcome! Features, ideas, bug fixes, anything.

About

Instant messaging chat system in Rust over TCP with encryption

License:GNU General Public License v2.0


Languages

Language:Rust 100.0%