You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: Hysteria2 Gecko obfs via bundled official-binary sidecar (#17)
* feat: Hysteria2 Gecko obfs via bundled official-binary sidecar
Adds Hysteria2 'Gecko' obfuscation by bundling the official apernet/hysteria
Android client as a sidecar, instead of re-platforming the sing-box core.
- HysteriaBean: add hysteria2ObfsType (none/salamander/gecko) + gecko min/max
packet size; kryo version 7->8 with backward-compatible deserialize (old HY2
profiles with a password derive as Salamander). obfuscation stays the password.
- HysteriaFmt: canUseSingBox() returns false for HY2+Gecko (forces the sidecar);
native HY2 outbound still emits Salamander; URI parse/export handle obfs type +
gecko packet sizes; new buildHysteria2SidecarConfig() emits official hysteria
client JSON with obfs.gecko + quic.sockopts.fdControlUnixSocket (reuses libcore's
existing protect_path server) + loopback SOCKS5.
- BoxInstance: init/launch branches run the bundled libhysteria2.so
(hysteria client --config <file>) for HY2+Gecko; Salamander/HY1 unchanged.
- buildScript/lib/hysteria2.sh: download official hysteria-android-* (v2.9.2) as
app/executableSo/<abi>/libhysteria2.so (all 4 ABIs).
- Executable: add libhysteria2.so to the kill-set.
- UI: obfs type selector + gecko min/max packet-size fields (HY2 only).
- Routing reuses the existing external-proxy machinery (pluginId hysteria2-plugin).
No sing-box core change; starifly core + SSR/Snell/Juicity untouched.
* fix: import buildHysteria2SidecarConfig in BoxInstance
* ci: bundle Hysteria2 sidecar binary alongside Mieru
Combine the per-workflow Mieru native-build job into a 'sidecars' job that
builds both libmieru.so (cross-compiled) and libhysteria2.so (downloaded from
apernet/hysteria v2.9.2) into app/executableSo, cached as one unit and restored
in the build job with a verify-all-ABIs-and-both-binaries guard. Adds
HYSTERIA_VERSION env. Applied across ci/build/preview/release workflows.
* ci: verify Hysteria2 binary SHA256 against official hashes.txt
* fix: clamp gecko packet sizes; clarify obfs password visibility
- buildHysteria2SidecarConfig: clamp gecko min/max to hysteria's accepted
bounds (1 <= min <= max <= 2048) to avoid emitting an invalid config.
- Document why the obfs password field is shown for both Salamander and Gecko
(Gecko requires a password too).
* ci/docs: address review - least-privilege permissions, curl retry, doc accuracy
- Add top-level permissions blocks: contents:read for ci/build/preview, contents:write
for release (it publishes via ghr). Caps the default GITHUB_TOKEN scope for the jobs
that run ./run sidecar scripts.
- hysteria2.sh: add curl --retry/--max-time to the hashes.txt fetch and binary downloads.
- Fix the design doc to describe the combined 'sidecars' CI job and the actual sidecar
launch flags (--disable-update-check --config <file> --log-level <level> client).
0 commit comments