Finger server written in Rust.
Features:
- Config file support for users and their info
- Support for multiple users
- Support dynamic content in templates (e.g. fetch from an API)
The project is intentionally lightweight:
- Small dependency set (
ureq+serde_json) - Fast startup
- Minimal CLI argument parser using
std::env
Build
cargo build
Test
cargo test
Run as CLI
# List known users from ./users
cargo run -- --list
# Render one user profile
cargo run -- bob
Run as finger-like TCP server
# Listen on 127.0.0.1:7979 by default
cargo run -- --serve
# Custom bind and users directory
cargo run -- --serve --bind 0.0.0.0:7979 --users-dir ./users
You can query the server with tools like nc:
printf 'bob\n' | nc 127.0.0.1 7979
Config Format
Each .config file under users/ is plain text.
- The
Login:field is used to identify the user. - If
Login:is missing, the filename stem is used. - Dynamic template tokens are supported:
{{url https://example.com}}{{json_url https://example.com/data.json field_name}}
If dynamic fetches fail, the token is replaced with [unavailable].
Description
Languages
Rust
100%