pub struct Egress { /* private fields */ }Expand description
The hosts this plane may connect to.
Implementations§
Source§impl Egress
impl Egress
Sourcepub fn allow(self, host: impl AsRef<str>) -> Self
pub fn allow(self, host: impl AsRef<str>) -> Self
Grant one host.
Hosts are compared case-insensitively, because DNS is, and an allowlist that can be bypassed by capitalising a letter is not one.
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
Sourcepub fn permits(&self, host: Option<&str>) -> Result<(), EgressError>
pub fn permits(&self, host: Option<&str>) -> Result<(), EgressError>
Whether a connection to host is permitted.
No wildcards, and that is deliberate. *.example.com reads as a
convenience and is a grant of every host anybody can register under a
domain — including one an attacker controls the moment a subdomain is
dangling. A deployment that genuinely needs many hosts lists them.
§Errors
EgressError::NotGranted, naming the host, so an operator reading the
journal can see what was attempted rather than only that something was.
Trait Implementations§
impl Eq for Egress
impl StructuralPartialEq for Egress
Auto Trait Implementations§
impl Freeze for Egress
impl RefUnwindSafe for Egress
impl Send for Egress
impl Sync for Egress
impl Unpin for Egress
impl UnsafeUnpin for Egress
impl UnwindSafe for Egress
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreCreates a shared type from an unshared type.