Commit Graph
14 Commits
Author SHA1 Message Date
ian-at-strix da750007fc Show screening status in the Windows notification area (#14)
* Show screening status in the Windows notification area

firewall-tray.exe shows a tray icon: whether the service is screening,
paused or not running, with Pause/Resume and Open log. The MSI
starts it at every sign-in and closes it before replacing or removing it.

The icon is the Strix logo, white on a dark taskbar and black on a light
one like the macOS template image, and dimmed when not screening.
tray.png is assets/logo-transparent.png scaled and padded to 32x32:
sips -Z 32 logo-transparent.png --out a.png && sips -p 32 32 a.png --out tray.png

* Open the folder of dated service logs from the tray
2026-10-22 16:28:08 -04:00
ian-at-strixandIan Graham Martinez 9e457c4d69 Screen redirected registry traffic in a Windows service (#10)
* Screen redirected registry traffic in a Windows service

Each registry host gets its own loopback address, where a LocalSystem
service serves mitm_service, connecting upstream through a resolver that
ignores the hosts file. It trusts its CA machine-wide and serves the empty
CRL that schannel needs.

The service writes the hosts-file block once it listens. Pausing it removes
the block and continuing rewrites it; a stop, crash or shutdown leaves it,
so a restart fails closed and picks up a changed host list.

* Explain the data folder ACL and the root store arguments

* Use schannel for the root store

* Free the parsed security descriptor on drop instead of through a closure

* Rotate the service log daily with tracing-appender

---------

Co-authored-by: Ian Graham Martinez <[email protected]>
2026-10-22 14:49:36 -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 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 7aac325275 Regenerated Cargo.lock 2026-09-24 14:48:30 -04:00
Ian 1b65803e2e Use which-rs to find packages (needed for npm and other non-.exes) 2026-09-24 13:17:27 -04:00
Ian 0f8479b5e8 Opt-out Telemetry 2026-09-23 19:08:10 -04:00
Ian 651e7289d2 Security Keychain -> Secure Enclave (Mac OS) 2026-09-23 15:43:41 -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 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