mirror of
https://github.com/okhsunrog/vpnhide.git
synced 2026-05-05 10:20:35 +00:00
refactor: drive VPN-iface matching from a single TOML source of truth (#90)
The kernel module, zygisk, lsposed-native, and the LSPosed Kotlin module each had their own hand-written list of VPN interface name prefixes, and the four had drifted: kmod/zygisk/HookEntry knew utun/l2tp/gre while lsposed-native and DiagnosticsScreen only knew tun/wg/ppp/tap/ ipsec/xfrm. So the self-test could PASS while the hooks were actually hiding more interfaces. Move the rules to data/interfaces.toml and render four matchers from it via scripts/codegen-interfaces.py — one per language target. A new lint job re-runs the codegen and fails if anything drifts. The match grammar is intentionally tiny so each codegen target implements it without depending on regex (kernel C can't): exact / prefix / prefix+digits / contains. Side effect: native diagnostics now agree with the hooks, so the self-test in DiagnosticsScreen will recognize utun*, l2tp*, gre* and *vpn* substrings as VPN tunnels (previously it would silently PASS on those). The /proc/net/route check also moved from raw substring to whitespace-tokenized matching, which avoids matching VPN-prefix substrings that show up by chance inside hex-encoded IP addresses. Existing zygisk filter unit tests still pass unchanged — public API of is_vpn_iface_bytes / is_vpn_iface_cstr is preserved, only the body now delegates to the generated matches_vpn(). Cargo.lock files updated incidentally (synced with Cargo.toml versions that were already 0.7.1 in the manifests).
This commit is contained in:
parent
41342e51e8
commit
daa98f3138
18 changed files with 868 additions and 112 deletions
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
|
|
@ -38,6 +38,16 @@ jobs:
|
|||
- name: Mark workspace safe
|
||||
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
|
||||
# Codegen
|
||||
- name: Verify generated iface lists are up to date
|
||||
run: |
|
||||
python3 scripts/codegen-interfaces.py
|
||||
if ! git diff --quiet; then
|
||||
echo "::error::data/interfaces.toml is out of sync with generated files. Run scripts/codegen-interfaces.py and commit the result." >&2
|
||||
git --no-pager diff
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Rust
|
||||
- name: rustfmt
|
||||
run: |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue