This is an optimized version of the classify client endpoint in Normandy.
This is a normal Cargo project, so after cloning the repository, you can build and run it with
$ cargo build $ cargo run
This project should run on the latest stable version of Rust. Unstable features are not allowed.
A GeoIP database will be downloaded automatically during the build.
Note: It relies on
build.rsfor insights about how to obtain the file manually in case the
.mmdbfile does not show up in the current folder.
Via environment variables:
DEBUG: Set to
"true"to enable extra debugging options, such as a
/debugendpoint that shows internal server state (default:
GEOIP_DB_PATH: path to GeoIP database (default:
HOST: host to bind to (default:
HUMAN_LOGS: set to
"true"to use human readable logging (default: MozLog as JSON)
METRICS_TARGET: The host and port to send statsd metrics to. May be a hostname like
"metrics.example.com:8125"or an IP like
"127.0.0.1:8125". Port is required. (default:
PORT: port number to bind to (default:
SENTRY_DSN: report errors to a Sentry instance (default:
TRUSTED_PROXY_LIST: A comma-separated list of CIDR ranges that trusted proxies will be in. Supports both IPv4 and IPv6.
VERSION_FILE: path to
Tests can be run with Cargo as well
$ cargo test
Linting is handled via
Therapist. After installing it,
enable the git hooks using either
therapist install or
therapist install --fix. The
--fix variant will automatically format your code upon commit.
The variant without
--fix will simply show an error and ask you to reformat
the code using other means before committing. Therapist runs in CI.
The checks Therapist runs are:
- Clippy, using the