Skip to main content

SystemProxyConfig

Struct SystemProxyConfig 

pub struct SystemProxyConfig { /* private fields */ }
Available on crate feature net only.
Expand description

A snapshot of the operating system’s proxy configuration.

HTTP and HTTPS identify the destination scheme, not necessarily the transport protocol used to reach the proxy. They do not apply to ICAP or arbitrary custom protocols merely because an HTTP proxy could tunnel those byte streams. A SOCKS5 proxy is used as a generic fallback when no scheme-specific proxy is configured. A PAC URI takes precedence over fixed proxies because it can make a per-request decision; each platform reader records whether its bypass entries apply before PAC. System proxy routing always bypasses loopback hosts, including before PAC evaluation, matching native proxy stacks.

Implementations§

§

impl SystemProxyConfig

pub async fn try_from_system() -> Result<SystemProxyConfig, Box<dyn Error + Sync + Send>>

Read the current platform proxy snapshot.

  • Windows uses the active user’s WinINET/Internet Options settings;
  • macOS and iOS use CFNetwork’s system proxy dictionary;
  • Android uses ConnectivityManager.getDefaultProxy(), with the legacy Proxy API on Android versions before API 23;
  • Linux and BSD prefer KDE’s kioslaverc on KDE desktops, otherwise reading GNOME gsettings before falling back to KDE.

This deliberately does not inspect http_proxy or related environment variables. Those are application configuration and are handled by ProxyEnvLayer and NoProxyEnvLayer instead.

Automatic discovery such as WPAD is recorded by Self::auto_detect but is not attempted when the platform does not provide a concrete PAC URI. Malformed non-empty proxy values are reported as errors rather than silently bypassing a configured system policy.

Platform operations that have asynchronous APIs are awaited directly. Native platforms that only expose a synchronous snapshot call keep that call narrowly isolated inside their platform reader.

pub async fn try_from_system_with_invalid_bypass_rule_policy( policy: SystemProxyInvalidBypassRulePolicy, ) -> Result<SystemProxyConfig, Box<dyn Error + Sync + Send>>

Read the current platform proxy snapshot with an explicit invalid bypass-rule policy.

Ignore is the default used by Self::try_from_system. Selecting Reject returns an error instead of accepting a snapshot with one or more discarded rules.

pub fn is_empty(&self) -> bool

Return whether this snapshot contains no automatic, PAC, or fixed proxy settings.

pub const fn http_proxy(&self) -> Option<&ProxyAddress>

The proxy for HTTP destinations.

pub const fn https_proxy(&self) -> Option<&ProxyAddress>

The proxy for HTTPS destinations.

pub const fn socks5_proxy(&self) -> Option<&ProxyAddress>

The SOCKS5 fallback proxy.

pub const fn pac_uri(&self) -> Option<&Uri>

The configured PAC script URI.

pub const fn auto_detect(&self) -> bool

Whether the platform requested automatic proxy discovery (for example, WPAD) without necessarily supplying a concrete PAC URI.

pub fn bypass(&self) -> impl Iterator<Item = &str>

Host patterns that bypass fixed proxies.

pub const fn exclude_simple_hostnames(&self) -> bool

Whether names without a dot bypass fixed proxies.

pub const fn reversed_bypass(&self) -> bool

Whether fixed proxies are used only for hosts matching bypass.

KDE exposes this uncommon inverted exception-list mode. The default is false, where matching hosts bypass the proxy in the usual way.

pub fn maybe_with_http_proxy( self, proxy: Option<ProxyAddress>, ) -> SystemProxyConfig

Set the proxy used for HTTP destinations.

pub fn maybe_set_http_proxy( &mut self, proxy: Option<ProxyAddress>, ) -> &mut SystemProxyConfig

Set the proxy used for HTTP destinations.

pub fn with_http_proxy(self, proxy: ProxyAddress) -> SystemProxyConfig

Set the proxy used for HTTP destinations.

pub fn set_http_proxy(&mut self, proxy: ProxyAddress) -> &mut SystemProxyConfig

Set the proxy used for HTTP destinations.

pub fn without_http_proxy(self) -> SystemProxyConfig

Set the proxy used for HTTP destinations.

pub fn unset_http_proxy(&mut self) -> &mut SystemProxyConfig

Set the proxy used for HTTP destinations.

pub fn maybe_with_https_proxy( self, proxy: Option<ProxyAddress>, ) -> SystemProxyConfig

Set the proxy used for HTTPS destinations.

pub fn maybe_set_https_proxy( &mut self, proxy: Option<ProxyAddress>, ) -> &mut SystemProxyConfig

Set the proxy used for HTTPS destinations.

pub fn with_https_proxy(self, proxy: ProxyAddress) -> SystemProxyConfig

Set the proxy used for HTTPS destinations.

pub fn set_https_proxy(&mut self, proxy: ProxyAddress) -> &mut SystemProxyConfig

Set the proxy used for HTTPS destinations.

pub fn without_https_proxy(self) -> SystemProxyConfig

Set the proxy used for HTTPS destinations.

pub fn unset_https_proxy(&mut self) -> &mut SystemProxyConfig

Set the proxy used for HTTPS destinations.

pub fn maybe_with_socks5_proxy( self, proxy: Option<ProxyAddress>, ) -> SystemProxyConfig

Set the SOCKS5 fallback proxy.

pub fn maybe_set_socks5_proxy( &mut self, proxy: Option<ProxyAddress>, ) -> &mut SystemProxyConfig

Set the SOCKS5 fallback proxy.

pub fn with_socks5_proxy(self, proxy: ProxyAddress) -> SystemProxyConfig

Set the SOCKS5 fallback proxy.

pub fn set_socks5_proxy( &mut self, proxy: ProxyAddress, ) -> &mut SystemProxyConfig

Set the SOCKS5 fallback proxy.

pub fn without_socks5_proxy(self) -> SystemProxyConfig

Set the SOCKS5 fallback proxy.

pub fn unset_socks5_proxy(&mut self) -> &mut SystemProxyConfig

Set the SOCKS5 fallback proxy.

pub fn maybe_with_pac_uri(self, pac_uri: Option<Uri>) -> SystemProxyConfig

Set the PAC script URI.

pub fn maybe_set_pac_uri( &mut self, pac_uri: Option<Uri>, ) -> &mut SystemProxyConfig

Set the PAC script URI.

pub fn with_pac_uri(self, pac_uri: Uri) -> SystemProxyConfig

Set the PAC script URI.

pub fn set_pac_uri(&mut self, pac_uri: Uri) -> &mut SystemProxyConfig

Set the PAC script URI.

pub fn without_pac_uri(self) -> SystemProxyConfig

Set the PAC script URI.

pub fn unset_pac_uri(&mut self) -> &mut SystemProxyConfig

Set the PAC script URI.

pub fn with_auto_detect(self, auto_detect: bool) -> SystemProxyConfig

Record whether automatic proxy discovery is enabled.

Rama exposes this signal but does not perform WPAD itself.

pub fn set_auto_detect(&mut self, auto_detect: bool) -> &mut SystemProxyConfig

Record whether automatic proxy discovery is enabled.

Rama exposes this signal but does not perform WPAD itself.

pub fn with_bypass( self, bypass: impl IntoIterator<Item = impl Into<Box<str>>>, ) -> SystemProxyConfig

Replace the fixed-proxy bypass patterns, ignoring invalid entries.

Use Self::try_set_bypass with Reject when an invalid entry should reject the complete update. Boxed strings transfer directly into snapshot storage; borrowed strings are copied because the snapshot owns its rules.

pub fn set_bypass( &mut self, bypass: impl IntoIterator<Item = impl Into<Box<str>>>, ) -> &mut SystemProxyConfig

Replace the fixed-proxy bypass patterns, ignoring invalid entries.

Use Self::try_set_bypass with Reject when an invalid entry should reject the complete update. Boxed strings transfer directly into snapshot storage; borrowed strings are copied because the snapshot owns its rules.

pub fn try_with_bypass( self, bypass: impl IntoIterator<Item = impl Into<Box<str>>>, policy: SystemProxyInvalidBypassRulePolicy, ) -> Result<SystemProxyConfig, Box<dyn Error + Sync + Send>>

Replace the fixed-proxy bypass patterns using an explicit invalid-rule policy.

The update is atomic: when Reject encounters an invalid rule, this returns an error and leaves the prior bypass list unchanged. Boxed strings transfer directly into snapshot storage; borrowed strings are copied because the snapshot owns its rules.

pub fn try_set_bypass( &mut self, bypass: impl IntoIterator<Item = impl Into<Box<str>>>, policy: SystemProxyInvalidBypassRulePolicy, ) -> Result<&mut SystemProxyConfig, Box<dyn Error + Sync + Send>>

Replace the fixed-proxy bypass patterns using an explicit invalid-rule policy.

The update is atomic: when Reject encounters an invalid rule, this returns an error and leaves the prior bypass list unchanged. Boxed strings transfer directly into snapshot storage; borrowed strings are copied because the snapshot owns its rules.

pub fn with_exclude_simple_hostnames(self, exclude: bool) -> SystemProxyConfig

Configure whether names without a dot bypass fixed proxies.

pub fn set_exclude_simple_hostnames( &mut self, exclude: bool, ) -> &mut SystemProxyConfig

Configure whether names without a dot bypass fixed proxies.

pub fn with_reversed_bypass(self, reversed: bool) -> SystemProxyConfig

Invert the meaning of fixed-proxy bypass patterns.

pub fn set_reversed_bypass(&mut self, reversed: bool) -> &mut SystemProxyConfig

Invert the meaning of fixed-proxy bypass patterns.

Trait Implementations§

§

impl Clone for SystemProxyConfig

§

fn clone(&self) -> SystemProxyConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for SystemProxyConfig

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Default for SystemProxyConfig

§

fn default() -> SystemProxyConfig

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a rama_grpc::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
§

impl<T, U> RamaFrom<T> for U
where U: From<T>,

§

fn rama_from(value: T) -> U

§

impl<T, U, CrateMarker> RamaInto<U, CrateMarker> for T
where U: RamaFrom<T, CrateMarker>,

§

fn rama_into(self) -> U

§

impl<T, U> RamaTryFrom<T> for U
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

§

fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>

§

impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for T
where U: RamaTryFrom<T, CrateMarker>,

§

type Error = <U as RamaTryFrom<T, CrateMarker>>::Error

§

fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<V, F> ValueFormatter<&V> for F
where F: ValueFormatter<V> + ?Sized, V: ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &&V)

Write value to writer
§

impl<V, F> ValueFormatter<Arc<V>> for F
where F: ValueFormatter<V> + ?Sized, V: ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &Arc<V>)

Write value to writer
§

impl<V, F> ValueFormatter<Box<V>> for F
where F: ValueFormatter<V> + ?Sized, V: ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &Box<V>)

Write value to writer
§

impl<V, F> ValueFormatter<Cow<'_, V>> for F
where V: ToOwned + ?Sized, F: ValueFormatter<V> + ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)

Write value to writer
§

impl<V, F> ValueFormatter<Option<V>> for F
where F: ValueFormatter<V> + ?Sized,

§

const SHAPE: FieldShape<'static>

Available on non-metrique_require_explicit_impls only.
The shape of values produced by this formatter. Read more
§

fn format_value(writer: impl ValueWriter, value: &Option<V>)

Write value to writer
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more