mirror of
https://github.com/okhsunrog/vpnhide.git
synced 2026-07-25 08:53:52 +00:00
The app writes a per-app Java hook selection as a string array ("java":
["lsposed_network", ...]), the same shape as "native". The Rust activator
typed "java" as a plain bool, so serde rejected the whole canonical with
'invalid type: sequence, expected a boolean'. Because the native activator
parses the entire config, a partial Java selection for a single app silently
disabled the kmod/KPM/Zygisk backend for every app.
The activator never acts on "java" (LSPosed self-reads and owns Java hook
selection), it only needs to parse it. Accept both the bool and the array
form, collapsing to enabled-ness.
- activator: de_bool_or_hook_list deserializer for the java field; regression
test covering the array form (and an empty array = disabled), asserting
native projection is unaffected
- testdata/storage_config_v1.json: give org.example.proxy a per-hook java
array so the shared Rust+Kotlin parity fixture exercises the shape that
previously slipped through; update both fixture assertions
15 lines
581 B
JSON
15 lines
581 B
JSON
{
|
|
"version": 1,
|
|
"debug": true,
|
|
"apps": {
|
|
"com.example.bank": { "java": true, "native": true, "appHiding": false, "ports": false },
|
|
"dev.okhsunrog.vpnhide": { "java": true, "native": true, "appHiding": false, "ports": false, "hidden": true },
|
|
"org.example.proxy": { "java": ["lsposed_network_capabilities", "lsposed_network_info"], "native": ["fib_route_seq_show", "sock_ioctl"], "appHiding": true, "ports": true }
|
|
},
|
|
"settings": {
|
|
"rememberSuperkey": true,
|
|
"autoHideVpnServices": true,
|
|
"autoHideVpnName": false,
|
|
"autoHiddenPackages": []
|
|
}
|
|
}
|