* feat: cookie jar persistence + storage-dir + filtering fix (clean v4)
* fix: resolve build errors, add storage_dir param throughout server chain
* fix: storage_dir end-to-end, plus two test-literal field additions
Five issues found while testing PR 114 end-to-end.
Build fixes (two test literals out of sync with new struct fields):
- crates/obscura-net/src/cookies.rs: CookieInfo literal in
test_domain_matches_subdomain_without_leading_dot was missing the
same_site and expires fields added in #170.
- crates/obscura-cli/src/main.rs: Command::Fetch literal in
matcher_still_uses_fetch_variant was missing the new storage_dir
field. Without these cargo test --workspace would not compile.
run_fetch was branching between BrowserContext::with_storage (which
hardcodes proxy=None, stealth=false, user_agent=None) and
with_options (which has no storage_dir slot), so --storage-dir +
--proxy + --stealth silently dropped the proxy and stealth flags.
Same bug SGavrl flagged on dispatch.rs in the previous round, just on
the other code path. Switched to with_storage_full which carries all
four. Verified the fetch now errors out against an invalid proxy.
run_fetch --eval short-circuited the function before
context.save_cookies() ran, so cookies set during an eval session
were never persisted to {storage_dir}/cookies.json. Moved the save
above the return.
obscura serve loaded cookies on startup but never saved them
anywhere, so a session that set cookies via Network.setCookie or
navigation dropped them on shutdown. Subscribed to Ctrl-C once in
put a single save_cookies() after the loop so both the Ctrl-C path
and the channel-closed path persist cookies. Verified end-to-end.
---------
Co-authored-by: zhangyang-crazy-one <[email protected]>
Co-authored-by: SGavrl <[email protected]>
32 lines
1.0 KiB
TOML
32 lines
1.0 KiB
TOML
[package]
|
|
name = "obscura-net"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
|
|
[features]
|
|
default = []
|
|
stealth = ["wreq", "wreq-util"]
|
|
|
|
[dependencies]
|
|
reqwest = { workspace = true }
|
|
tokio = { workspace = true }
|
|
url = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
tracing = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
async-trait = "0.1"
|
|
encoding_rs = "0.8"
|
|
tempfile = "3"
|
|
wreq-util = { version = "3.0.0-rc.10", optional = true }
|
|
|
|
# `prefix-symbols` renames BoringSSL exports to avoid clashes with system OpenSSL,
|
|
# but the renaming is only correct on Linux and Android (per wreq's README).
|
|
# Enabling it on other platforms produces unresolved `build_script_main_*`
|
|
# symbols at link time (see issue #39).
|
|
[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies]
|
|
wreq = { version = "6.0.0-rc.28", optional = true, features = ["prefix-symbols"] }
|
|
|
|
[target.'cfg(not(any(target_os = "linux", target_os = "android")))'.dependencies]
|
|
wreq = { version = "6.0.0-rc.28", optional = true }
|