[package]
name = "proxy-watch"
version = "0.1.1"
edition = "2024"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
description = "Detect and watch operating system proxy configuration changes"
authors = ["gnoays <169730769+gnoays@users.noreply.github.com>"]
readme = "README.md"
repository = "https://github.com/gnoays/proxy-watch"
keywords = ["proxy", "system-proxy", "pac", "watcher", "http"]
categories = ["network-programming", "os", "config"]
include = [
"/src/**/*.rs",
"/examples/*.rs",
"/README.md",
"/LICENSE-MIT",
"/LICENSE-APACHE",
]
[workspace]
members = ["xtask"]
default-members = ["."]
resolver = "3"
[features]
default = ["resolve", "linux-gnome", "linux-kde"]
resolve = []
tokio = ["dep:tokio"]
linux-gnome = ["dep:gio", "dep:glib"]
linux-kde = ["dep:notify", "dep:configparser"]
pac = ["resolve"]
pac-boa = ["pac", "dep:boa_engine"]
pac-windows-native = ["pac"]
tracing = ["dep:tracing"]
[dependencies]
futures-core = { version = "0.3", default-features = false, features = ["std"] }
ipnet = "2.9"
thiserror = "2"
url = "2.5"
[dependencies.boa_engine]
version = "0.21"
optional = true
default-features = false
[dependencies.tokio]
version = "1"
optional = true
default-features = false
features = ["rt", "sync"]
[dependencies.tracing]
version = "0.1.41"
optional = true
default-features = false
features = ["std"]
[target.'cfg(windows)'.dependencies.windows]
version = "0.62.2"
features = [
"Win32_Foundation",
"Win32_Networking_WinHttp",
"Win32_Security",
"Win32_System_Registry",
"Win32_System_Threading",
]
[target.'cfg(target_os = "macos")'.dependencies]
core-foundation = "0.9"
system-configuration = "0.7"
[target.'cfg(target_os = "linux")'.dependencies]
gio = { version = "0.22", optional = true }
glib = { version = "0.22", optional = true }
notify = { version = "8", optional = true }
configparser = { version = "3", optional = true }
[dev-dependencies]
futures-executor = "0.3"
futures-util = "0.3"
reqwest = { version = "0.12", default-features = false }
tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt"] }
[target.'cfg(target_os = "macos")'.dev-dependencies]
system-configuration = "0.7"
[[example]]
name = "resolve"
required-features = ["resolve"]
[[example]]
name = "resolve_os_and_env"
required-features = ["resolve"]
[[example]]
name = "reqwest_client"
required-features = ["resolve"]
[[example]]
name = "pac"
required-features = ["pac-boa"]
[package.metadata.docs.rs]
all-features = true
targets = [
"x86_64-pc-windows-msvc",
"x86_64-apple-darwin",
"x86_64-unknown-linux-gnu",
]
rustdoc-args = ["--cfg", "docsrs"]
[lints.rust]
missing_docs = "warn"
missing_debug_implementations = "warn"