# RustProxy OPNsense packaging repository This repository contains only the OPNsense plugin and build/release automation. The RustProxy application source is **not vendored here**. The Debian scheduler downloads it dynamically from: `https://git.linuxiarz.pl/gru/RustProxy` ## What is included - `opnsense-plugin/www/rustproxy/` - OPNsense plugin source. - `builder/debian/` - hourly scheduler and optional cross-build helper. - `builder/freebsd/` - native FreeBSD release builder and repository signing helper. - `ci/build-release.sh` - Debian-to-FreeBSD orchestration and publishing. - `deploy/opnsense/` - custom package repository install/update helpers. - `docs/` - setup and architecture notes. ## Source/update flow ```text Packaging repository RustProxy upstream (plugin + scripts) https://git.linuxiarz.pl/gru/RustProxy | | +------------------+-------------------+ v Debian cron, hourly | detects either commit change | v FreeBSD 15.1 amd64 builder | cargo test + cargo build | OPNsense make package | v signed pkg repository | v OPNsense ``` By default `APP_REPO_REF=HEAD`, so every cron run follows the current default branch of the RustProxy repository. You can instead pin a branch/tag/ref in `/etc/rustproxy-opnsense-builder.env`. A release rebuild is triggered when either the packaging repository commit or the RustProxy upstream commit changes. The package version is read at build time from the dynamically downloaded `Cargo.toml`. ## Recommended release build Use the Debian VM only as scheduler/orchestrator and a FreeBSD 15.1 amd64 VM as compiler/packager. The included Docker/cross path (`BUILD_MODE=cross-binary`) is for development validation only and does not publish production `.pkg` files. ## Quick validation ```sh ./scripts/check.sh ``` ## Quick setup Read `docs/FIRST_RUN.md`, copy `builder.env.example` to `/etc/rustproxy-opnsense-builder.env` on Debian and fill in your packaging-repository, SSH and publication settings. `APP_REPO_URL` is already set to your RustProxy repository. ## OPNsense UI scope The plugin currently exposes only Enabled / Disabled. RustProxy is supervised by FreeBSD `daemon(8)`, runs as user `rustproxy`, and uses `/var/db/rustproxy` as its private data directory. ## License RustProxy's `Cargo.toml` currently does not declare a license and the supplied source snapshot did not contain LICENSE/COPYING, so the plugin manifest remains `UNKNOWN`. Set the correct license before public redistribution.