Commit Graph
26 Commits
Author SHA1 Message Date
ian-at-strix 23db767cc1 Allow a held-back package once from the app, releasing the waiting download (#37)
* Hold a held-back download open so allowing it lets it through

* Allow a held-back package once from the app, releasing the waiting download
2026-10-23 10:55:03 -04:00
ian-at-strix 6c69036db0 Screen mirrors listed in the config file, and reject unusable config values (#73)
* Screen mirrors listed in the config file

* Reject config values the firewall cannot use
2026-10-22 18:26:59 -04:00
ian-at-strix d01ac3634b Let an allow entry lift only the age check, never the malware checks (#69) 2026-10-22 18:11:30 -04:00
ian-at-strix 91da9d68c9 Let an admin trust a held-back version of a new package (#36) 2026-10-22 17:57:31 -04:00
ian-at-strix b3f47664df Forward plain-HTTP upstreams as asked (#1)
The wrapper's forward proxy upgraded every request to HTTPS and rewrote
links in index responses. Only an HTTPS registry is downgraded to reach
us, so only that should be upgraded back and rewritten; anything else
now goes out exactly as the client sent it, port included.
2026-10-22 16:11:31 -04:00
ian-at-strixandIan Graham Martinez 7cafa16cc4 Hold the CA key in the TPM on Windows (#9)
* Hold the CA key in the TPM on Windows

A non-exportable machine key in the TPM, or in software where there is
none, signs as the Secure Enclave key does on macOS.

* Require the TPM for the Windows CA key

A failure to open the TPM fell back to a software key, which minted a new CA
and kept it for good. Fail instead, as macOS does without a Secure Enclave.

* Use the windows crate for the TPM key

---------

Co-authored-by: Ian Graham Martinez <[email protected]>
2026-10-22 10:53:51 -04:00
ian-at-strix 38d9a4500e Layer a system config over the user's, and have the extension read only the system one (#43) 2026-10-21 20:07:55 -04:00
ian-at-strix 753e21dd19 Block what could not be checked when screening fails closed (#20) 2026-10-21 17:48:29 -04:00
ian-at-strix 39729cec84 Drop the GitHub token from denylist fetches (#19) 2026-10-21 12:02:53 -04:00
ian-at-strix b4e2359a5a Let the config allow packages, optionally by version (#16) 2026-10-21 11:38:36 -04:00
ian-at-strix ba690a22e2 Block versions published under a minimum age (#17)
* Block versions published under a minimum age

* Trim comments and tidy the age filter
2026-10-21 11:09:32 -04:00
ian-at-strixandIan Graham Martinez a2e6d3f72f Sign an empty CRL and point leaves at it (#8)
schannel's revocation check, which cargo enables, fails closed on a leaf
without a reachable CRL. The CA gains cRLSign, which rcgen needs to sign
one, and leaves carry a distribution point when the platform serves it.

Co-authored-by: Ian Graham Martinez <[email protected]>
2026-10-13 11:11:25 -04:00
ian-at-strix b2e036f7c6 Run any command after firewall verbatim, -- included (#6)
bpaf always consumes `--`, so `firewall cargo run -- --release` handed
--release to cargo and our --config flags to the program. The CLI is now clap
with one trailing COMMAND argument, which keeps `--`.

Every manager's environment is set on every run, and cargo's and gem's flags
are added when the command is cargo or gem, so `firewall sh -c '…'` is
screened too. Since every command now gets HTTPS_PROXY, HTTPS to hosts that
aren't registries is tunnelled; registry hosts are still refused.
2026-10-12 16:55:27 -04:00
Ian 4638c71ba6 Incorporate Strix's feedback 2026-09-24 16:51:06 -04:00
Ian 0351ab3672 Various minor QoL changes (message text changes), main.rs & build.sh tidied-up, etc. 2026-09-24 15:09:22 -04:00
Ian 3f0b335c5f Installer/macOS UI improvements 2026-09-24 14:46:31 -04:00
Ian 8388ac1481 MacOS ca.pem + slight code cleanups 2026-09-23 16:37:23 -04:00
Ian 651e7289d2 Security Keychain -> Secure Enclave (Mac OS) 2026-09-23 15:43:41 -04:00
Ian 4140c08c09 Unblocked index requests 2026-09-23 13:17:15 -04:00
Ian d0c7a437c5 Bring back versioning support (TODO: minor complications with preleases) 2026-09-23 12:30:05 -04:00
Ian 76d52f6817 MITM Service + configability + refactors. Most of the way to MacOS on-device 2026-09-22 13:48:36 -04:00
Ian 4bcb3b5115 Fetch denylist on demand (requires GH token until repo is public) + architecture for caching/configurability 2026-09-21 12:53:18 -04:00
Ian 39839250f5 Refactor + offload escaping to more reliable third-party crates 2026-09-18 17:23:49 -04:00
Ian 961a8b71cd Refactor policies 2026-09-18 16:12:03 -04:00
Ian 5f141c729d log-levelled tracing 2026-09-18 15:41:24 -04:00
Ian 22e6e83240 Initial prototype: core functionality + aliasing, but not configurable 2026-09-18 09:33:40 -04:00