pub struct DomainVerificationService { /* private fields */ }Expand description
Domain verification service for DNS and HTTP challenges.
Implementations§
Source§impl DomainVerificationService
impl DomainVerificationService
Sourcepub async fn verify_dns(&self, domain: &str, token: &str) -> VerificationResult
pub async fn verify_dns(&self, domain: &str, token: &str) -> VerificationResult
Verify domain ownership via DNS TXT record.
The user must create a TXT record at _postrust-verification.{domain}
with the value postrust-verify={token}.
Sourcepub async fn verify_http(&self, domain: &str, token: &str) -> VerificationResult
pub async fn verify_http(&self, domain: &str, token: &str) -> VerificationResult
Verify domain ownership via HTTP challenge.
The user must serve a file at https://{domain}/.well-known/postrust-verification/{token}
(or the http:// equivalent) with the content postrust-verify={token}.
This makes the proxy fetch a URL on a name the tenant chose, so it is careful about where it connects:
- the name is resolved here, every address in a forbidden
range is discarded, and the request is pinned
to an address that survived. Pinned, because letting the HTTP client
resolve again would let a short-TTL record answer differently the
second time – public for the check,
169.254.169.254for the connection. - redirects are not followed. A redirect is a second URL, on a host nobody checked.
- at most [
MAX_BODY] bytes are read, whateverContent-Lengthsays or does not say. - what the tenant is told is a fixed sentence. Neither the fetched body nor the client’s error text is returned: either would turn this into a way to read responses from wherever the proxy can reach.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for DomainVerificationService
impl !UnwindSafe for DomainVerificationService
impl Freeze for DomainVerificationService
impl Send for DomainVerificationService
impl Sync for DomainVerificationService
impl Unpin for DomainVerificationService
impl UnsafeUnpin for DomainVerificationService
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
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 more