generated from alex/base-template
Simple finger server
- Crystal 82.2%
- Dockerfile 17.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Build and Push Container Image, redeploy service / build-and-push-1 (push) Successful in 36s
Build and Push Container Image, redeploy service / build-and-push (push) Successful in 0s
Build and Push Container Image, redeploy service / deploy-1 (push) Successful in 3s
Build and Push Container Image, redeploy service / deploy (push) Successful in 0s
|
||
| .forgejo/workflows | ||
| .gitignore | ||
| Containerfile | ||
| finger.cr | ||
| LICENSE | ||
| README.md | ||
| renovate.json | ||
finger
A minimal finger server written in a single Crystal file with no dependencies.
What it does
Listens on a TCP port and answers finger-style queries (user or user@host) by returning the contents of a file named after the user. One file per user, plain text, read from a read-only data directory — nothing is ever written.
- Query a known user → their file's content
- Empty, unknown, or invalid query → the content of a randomly chosen user's file
- No data at all →
no such user.
Configuration
| Environment variable | Default | Description |
|---|---|---|
FINGER_PORT |
1079 |
TCP port to listen on |
FINGER_DATA_DIR |
/data |
Directory containing user files |
User files must match /^[A-Za-z0-9._-]+$/. Queries are capped at 512 bytes.
Running
Build directly:
crystal build --release finger.cr
FINGER_DATA_DIR=./data ./finger
Or with the provided image:
podman run -p 1079:1079 -v "$PWD/data:/data:ro" forge.l3x.in/alex/finger:latest
Test it:
finger a@l3x.in
License
See LICENSE.