# Reef A shared library for Hammerhead, Blacktip, Bamboo and Sandbar Shared types and building blocks for the sharks stack: [Hammerhead](https://git.veillax.com/Veillax/hammerhead) (control plane), [Blacktip](https://git.veillax.com/Veillax/blacktip) (edge) and [Bamboo](https://git.veillax.com/Veillax/bamboo) (site agent). Reef holds the code all three programs agree on, so each can be built and released from its own repository. | Package | What it is | |---|---| | `model` | The data types passed between the programs: edges, sites, ports, mail egress, DKIM keys, alert-relevant status and reports | | `tunnel` | The wire format used inside the WireGuard tunnel, and the helper that pipes two connections together | | `wg` | wireguard-go with a userspace network stack: no root, no kernel interface, works on Windows, macOS and Linux | | `authtoken` | Signed, expiring login tokens with a revocation epoch | | `netguard` | Refuses internal addresses for anything that connects out on a user's behalf (webhooks, mail delivery), and dials the address it checked | | `docker` | Lists running containers through the Docker Engine API, with no SDK | | `dotenv` | Loads a `.env` file into the environment without overriding real variables | | `secretbox` | AES-256-GCM sealing of small secrets (`enc1:` values) before they are written to a database | ## Using it ``` go env -w GOPRIVATE=git.veillax.com # once, so Go fetches straight from this server go get git.veillax.com/Veillax/reef@latest ``` ## Tests ``` go test ./... ``` ## License AGPL-3.0. See `LICENSE`.