No description
|
|
||
|---|---|---|
| common_utils | ||
| db_utils | ||
| dns | ||
| LICENSES | ||
| shared | ||
| src | ||
| tasker | ||
| .envrc | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| devenv.lock | ||
| devenv.nix | ||
| devenv.yaml | ||
| Makefile | ||
| README.md | ||
| renovate.json | ||
Neo
An attempt to re-write a incomplete implementation
Workspaces (components)
This repository is divided into multiple cargo workspaces (essentially multiple crates) for faster compilation and better reusability.
| Crate | Description |
|---|---|
| common_utils | utilities to work with CQRS. Might be used by other workspaces. |
| db_utils | Database utilities to create, and drop databases. Also contains an implementation with the sqlx (postgres) crate. |
| dns | LibrePages' DNS component. Create zones, and manage records. |
| dns/libwhois | fetch WHOIS data from IANA > TLD authoritative WHOIS server > Registrar's WHOIS server. Runs on best-effort basis, since some TLDs (like .app don't publish WHOIS records) |
| dns/migrations/libmigrator | Database migrations for the dns crate. Bakes in migrations using the SQLx macro. Also contains the general CQRS events table that cqrs-es crate requires. |
| dns/migrations/migrator | CLI tool to run dns crate's migrations. Uses dns/migrations/libmigrator under the hood. Used for development to set up environments. |
| dns/dnsserver/libdnsserver | Library defining traits for LibrePages to work with a DNS server |
| dns/dnsserver/libbind9 | bind9 implementation of libdnsserver |
Development Requirements
- Nightly Rust (
rustc 1.92.0-nightly (6501e64fc 2025-10-23)) - docker: optional, for dev dependencies like Postures)
- devenv, direnv via the nix-shell: optional, easy environment management
Note: A new version of Nightly Rust toolchain is released every **cough** every night. This repository is pinned to a certain version (see above) of the compiler. A later version MAY produce compilation errors, that might be rectified in the following night's toolchain release.