// Package sboxrun manages an embedded sing-box subprocess that // implements the actual proxy engine (TUN inbound + per-process // routing rule + SOCKS5 outbound). // // On first Start, the package extracts sing-box.exe + wintun.dll from // embedded bytes into %PROGRAMDATA%\Drover\sboxrun\ (SHA256-verified), // generates a JSON config from the GUI's proxy form, and launches // sing-box as a child process. Stop kills the child cleanly. package sboxrun import _ "embed" //go:embed assets/sing-box.exe var singBoxExe []byte //go:embed assets/wintun.dll var wintunDLL []byte // SHA256 sentinels for the embedded binaries — verified after extract. // Update both when bumping versions: // // sing-box: https://github.com/SagerNet/sing-box/releases // wintun: https://www.wintun.net/ const ( // Pinned to 1.12.25 — last release on the 1.12 line that still // accepts the legacy TUN inbound config layout. 1.13.0 removed // `address` from inbound and requires migration to rule-based // `endpoints` — when our config generator gets updated to that // shape, we can move to 1.13.x. SingBoxVersion = "1.12.25" SingBoxSHA256 = "fc7b65219abe8a0166d0b4891a2f7cabcbcc13b3adcf89e6d5913743a67aba10" WintunVersion = "0.14.1" WintunSHA256 = "e5da8447dc2c320edc0fc52fa01885c103de8c118481f683643cacc3220dafce" )