A simple, asynchronous TCP-based chat server built using Rust, Tokio, and SQLite for user account management.
- User registration and login 🔐
- Broadcasting messages to all connected users 📡
- List of all users with their online/offline status 👥
- Colorful terminal output with Colored and PrettyTable crates 🌈
- Asynchronous I/O with Tokio ⚡️
- SQLite database for user account management 🗄️
- Logging with log and env_logger 📝
- Admin account with special privileges and commands 🛡️
/help
- List all available commands/listusers
- List all users with their online/offline status and their role/history [blank, username, all]
- Show msg history/whisper <username> <message>
- Send a private message to a user/changepw <old_password> <new_password>
- Change your password/color <color_name>
- Change your username color/admin <password>
- Become an admin/ban <username>
- Ban a user/unban <username>
- Unban a user/mute <username>
- Mute a user/unmute <username>
- Unmute a user/quit
- Quit the chat
- Rust (stable) and Cargo 🦀
- SQLite 🗄️
- A terminal emulator with 256-color support (e.g. iTerm2, Alacritty, Konsole) 🖥️
To start the server download FerrumServe from the release page
$ ~/ferrum-serve 127.0.0.1:6142 admin1234
To connect to the server, use a telnet client (e.g. telnet, iTerm2, Alacritty, Konsole) and connect to the server's IP address and port.
$ telnet 127.0.0.1:6142
$ git clone https://github.com/FerrumLink/FerrumServe
$ cd FerrumServe
$ cargo build --release
By default, the server will listen on 127.0.0.1:6142. You can provide an optional IP address and port as a command-line argument.
$ ./target/release/ferrum-serve [IP:PORT]
Copyright © 2023 Simon Guglberger.