XjpddlmZddlmZddlmZmZddlmZm Z m Z ddl m Z m Z mZmZdZGddZy ) ) annotations)Sequence)URLHeaders)PlainTextResponseRedirectResponseResponse)ASGIAppReceiveScopeSendz6Domain wildcard patterns must be like '*.example.com'.c0eZdZ d ddZddZy)TrustedHostMiddlewareNc|dg}|D]H}d|ddvs Jt|jds'|dk7s-|jdr?Jt||_t||_d|v|_||_y)N*z*.)ENFORCE_DOMAIN_WILDCARD startswithapplist allowed_hosts allow_any www_redirect)selfrrrpatterns t/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/starlette/middleware/trustedhost.py__init__zTrustedHostMiddleware.__init__ s   EM$ IGgabk) B+B B)!!#&7c>))$/H1HH/ I!-0 -(cK|js|ddvr|j|||d{yt|}|jddj dd}d}d}|j D];}||k(s%|j d r|j|d drd }n d |z|k(s:d }=|r|j|||d{y|rM|jrAt|} | jd | jz } tt| } n tdd} | |||d{y77w7 w)Ntype)http websocket)scopehost:rFrrTzwww.)netloc)urlzInvalid host headeri) status_code)rrrgetsplitrrendswithrrreplacer'rstrr) rr#receivesendheadersr$ is_valid_hostfound_www_redirectrr( redirect_urlresponses r__call__zTrustedHostMiddleware.__call__sN >>U6]3  ((5'40 0 0 &{{62&,,S1!4 ")) *Gw7#5#5c#:t}}WUVUW[?Y $ $')%)"  * ((5'40 0 0"d&7&7&"{{&3::2E{F +L0AB,-BPST5'40 0 01 1 1 1s;*ED=A>E,EE A.E7E8EEE)NT)rr rzSequence[str] | NonerboolreturnNone)r#r r/r r0r r8r9)__name__ __module__ __qualname__rr6rrrr s:/3! ) ),) )  )$1rrN) __future__rcollections.abcrstarlette.datastructuresrrstarlette.responsesrrr starlette.typesr r r r rrr=rrrCs*"$1MM99R0101r