+
    D#j(                       R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RIHt Rt^t^t]
P8                  ! R4      t]
P8                  ! R4      t]
P8                  ! R	4      t]! R
R7       ! R R4      4       t  ! R R]4      t! ! R R]4      t" ! R R4      t#R R lt$RR R llt%R^x/R R llt&R# )zABounded, attempt-scoped result transport for cdx Kubernetes Jobs.)annotationsN)	dataclass)BaseHTTPRequestHandlerThreadingHTTPServer)Path)urlsplitz^[0-9a-f]{24}$z^[0-9a-f]{64}$z^[A-Za-z0-9_-]{43,128}$T)frozenc                  6    ] tR t^t$ R]R&   R]R&   R]R&   RtR# )UploadTargetstrurltokenca_pem N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       [/home/user/overdeck-private-tests/subrouter-s5-systray-latest/modules/systray/k3s_result.pyr
   r
      s    	HJKr   r
   c                  :    ] tR t^$t$ R]R&   R R ltR R ltRtR# )	_Handlerz	'_Server'serverc                   V ^8  d   QhRR/#    returnNoner   )formats   "r   __annotate___Handler.__annotate__'   s     5 5 5r   c                	F   V P                   P                  pV P                  VP                  8w  d   V P                  R 4       R# V P                  P                  RR4      p\        P                  ! VRVP                   24      '       g   V P                  R4       R# V P                  P                  R4      R8w  g"   V P                  P                  R4      '       d   V P                  R	4       R#  \        V P                  P                  R
R4      4      pT P                  P                  RR4      p^ Tu;8  d   \        8:  d   M M\        P                  T4      '       g   T P                  R4       R# TP                  ;_uu_ 4        TP                  '       d   T P                  R4        RRR4       R# RTn        RRR4       \         P"                  ! 4       pTp TP$                  P'                  R4      ;_uu_ 4       pT'       do   T P(                  P+                  \-        RT4      4      pT'       g   \/        R4      hTP1                  T4       TP3                  T4       T\5        T4      ,          pKv   RRR4       \        P                  ! TP7                  4       T4      '       g   \        R4      h\8        P:                  ! TP$                  TP<                  4       TPJ                  PE                  4        TPB                  PE                  4        T PM                  ^4       T PO                  R
R4       T PQ                  4        R#   \         d    T P                  R4        R# i ; i  + '       g   i     EL; i  + '       g   i     EL; i  \.        \        3 dv    TP$                  P?                  RR7       RTn         TPB                  PE                  4         T P                  R4       M!  \.        \F        PH                  3 d     Mi ; i R# i ; i)i  NAuthorization Bearer i  Content-Typeapplication/octet-streamzTransfer-Encodingi  Content-Lengthi  X-Content-SHA256i  Txbz)result upload ended before Content-Lengthzresult upload digest mismatch
missing_okz#cdx result upload failed validation0   ))r   mailboxpath
send_errorheadersgethmaccompare_digestr   int
ValueErrorMAX_BUNDLE_BYTESSHA256	fullmatchlockclaimedhashlibsha256temporary_pathopenrfilereadminOSErrorwriteupdatelen	hexdigestosreplacebundle_pathunlinkfailurefinishedsetsslSSLErrorreadysend_responsesend_headerend_headers)	selfr0   authorizationlengthexpected_hashdigest	remainingoutputchunks	   &        r   do_PUT_Handler.do_PUT'   s   ++%%99$OOC (("=""=GGMM?2KLLOOC <<N+/IIT\\M]M]^qMrMrOOC 	))*:B?@F (();R@6---V5E5Em5T5TOOC \\\$ \ #GO	 
 !		'',,T22f JJOOCY,GHE %&QRRLL'MM%(U+I   3 &&v'7'7'9=II !@AAJJw--w/B/BC 	3)3/O  	OOC 	 \\ 322 $ 	""))T):CGO  "$S\\* 	s   3%M %M2;M2"#N NA.N=2N 06N M/.M/2N	N		N AP )O;:P ;PP PP P c               $    V ^8  d   QhRRRRRR/# )r   r    r   argsobjectr   r   r   )r    s   "r   r!   r"   ^   s!      # f  r   c                	    R # Nr   )rW   r    rb   s   &&*r   log_message_Handler.log_message^   s    r   r   N)r   r   r   r   r   r_   rf   r   r   r   r   r   r   $   s    5n r   r   c                  b   a  ] tR t^btRtR V 3R lltV 3R ltR V 3R lltR V 3R lltR	t	V ;t
# )
_ServerTc               $    V ^8  d   QhRRRRRR/# )r   addressztuple[str, int]r0   z'ResultMailbox'contextzssl.SSLContextr   )r    s   "r   r!   _Server.__annotate__e   s"     , , ,/ ,Tb ,r   c                	   < W n         W0n        \        P                  ! \        4      V n        \        SV `  V\        4       R # re   )	r0   rl   	threadingBoundedSemaphoreMAX_CONNECTIONSconnectionssuper__init__r   )rW   rk   r0   rl   	__class__s   &&&&r   rt   _Server.__init__e   s/    $55oF(+r   c                	   < \         SV `  4       w  rVP                  \        4        V P                  P                  VR RR7      pW23#   \         d    TP                  4        h i ; i)TF)server_sidedo_handshake_on_connect)rs   get_request
settimeoutREQUEST_TIMEOUT_SECONDSrl   wrap_socketBaseExceptionclose)rW   
connectionrk   securedru   s   &   r   rz   _Server.get_requestk   sn    #g13
56	ll..ztej.kG   		s   A	 	A&c                   V ^8  d   QhRR/# r   r   )r    s   "r   r!   rm   u   s      $ r   c                	   < V P                   P                  R R7      '       g   V P                  V4       R#  \        SV `  W4       R#   \
         d    T P                   P                  4        h i ; i)F)blockingN)rr   acquireshutdown_requestrs   process_requestr~   releaserW   requestclient_addressru   s   &&&r   r   _Server.process_requestu   sd    '''77!!'*	G#G< 	$$&	s   A	 	'A0c                   V ^8  d   QhRR/# r   r   )r    s   "r   r!   rm      s     ' ' 'r   c                	   <  \         SV `  W4       V P                  P                  4        R #   T P                  P                  4        i ; ire   )rs   process_request_threadrr   r   r   s   &&&r   r   _Server.process_request_thread   s:    	'G*7C$$&D$$&s	   . A
)rr   rl   r0   )r   r   r   r   daemon_threadsrt   rz   r   r   r   __classcell__)ru   s   @r   ri   ri   b   s+    N, ,  ' 'r   ri   c                  F    ] tR t^tR R ltR R ltR R ltR R ltR	tR
# )ResultMailboxc               $    V ^8  d   QhRRRRRR/# )r   advertised_hostr   
attempt_idr]   r   r   )r    s   "r   r!   ResultMailbox.__annotate__   s!     5 5 5 5d 5r   c                	    \         P                  ! V4      pTP                  ^8w  g   \        P                  T4      '       g   \        R4      hYn        Y n        Y0n        RT 2T n	        \        P                  ! ^ 4      T n        TR,          T n        TR,          T n        \        P                   ! 4       T n        \        P$                  ! 4       T n        \        P$                  ! 4       T n        RT n        RT n        \.        P0                  ! RR7      T n        RT n        RT n        R#   \         d   p\        R 4      ThRp?ii ; i)	z'cdx result host must be an IPv4 addressNz&cdx result mailbox identity is invalid/v1/cdx-results/zresult.bundlezresult.bundle.uploadingFzcdx-result-mailbox-)prefix)	ipaddress
ip_addressr8   version
ATTEMPT_IDr;   r   r   r]   r1   secretstoken_urlsafer   rL   r@   ro   Lockr<   EventrS   rO   rN   r=   tempfileTemporaryDirectory
_temporary_server_thread)rW   r   r   r]   rk   excs   &&&&  r   rt   ResultMailbox.__init__   s   	Q**?;G ??az';';J'G'GEFF.$&zl3	**2.
!O3$'@@NN$	__&
!)#'"55=RS'+04%  	QFGSP	Qs   D* *E5EEc                   V ^8  d   QhRR/# )r   r   r
   r   )r    s   "r   r!   r      s     e e| er   c                	   V P                   e   \        R4      hV P                  P                  RRR7       \	        V P
                  P                  4      pVR,          pVR,          p\        P                  ! RRRR	R
RRR\        V4      R\        V4      RRRRV P                   2RRV P                   2.RRR^R7      pVP                  '       d*   \        RVP                  P                  4       RR   24      hVP                  4       p\        P                   ! \        P"                  4      pVP%                  W#4       \'        RW4      pWpn         \(        P*                  ! VP,                  RV P.                   2RR7      V n        V P0                  P3                  4        VP4                  ^,          p\7        RV P                   RV V P8                   2V P:                  V4      # )Nz"cdx result mailbox already startedT)parentsexist_okzcertificate.pemzprivate-key.pemopensslreqz-x509z-newkeyzrsa:2048z-sha256z-nodesz-keyoutz-outz-days1z-subjz/CN=z-addextzsubjectAltName=IP:F)textcapture_outputchecktimeoutz)could not create cdx result certificate: zcdx-result-)targetnamedaemonzhttps://:iP)z0.0.0.0    )r   RuntimeErrorr]   mkdirr   r   r   
subprocessrunr   r   
returncodestderrstrip	read_textrQ   
SSLContextPROTOCOL_TLS_SERVERload_cert_chainri   ro   Threadserve_foreverr   r   startserver_addressr
   r1   r   )	rW   	directorycertificateprivate_key	generatedr   rl   r   ports	   &        r   r   ResultMailbox.start   s   <<#CDD$6--.	"33"33NNugy*is;'[1A7CtD0012IASTXThThSi?j$
 T	D	
 !J9K[K[KaKaKcdidjKkJlmnn&&(..!8!8997 ''v/C/CKX\XgXgWhJirvw$$Q'ht';';&<AdVDII;OQUQ[Q[]cddr   c                    V ^8  d   QhRRRR/# )r   r   floatr   r   r   )r    s   "r   r!   r      s        E  d  r   c                	   V P                   P                  V4      '       g   \        R 4      hV P                  e   \	        V P                  4      hV P
                  P                  4       '       dK   V P                  P                  4       '       d+   V P                  P                  4       P                  '       g   \	        R4      hV P                  # )z)cdx worker did not upload a result bundlez+cdx result mailbox produced an empty bundle)rO   waitTimeoutErrorrN   r   rS   is_setrL   is_filestatst_size)rW   r   s   &&r   r   ResultMailbox.wait   s    }}!!'**JKK<<#t||,,zz  ""$*:*:*B*B*D*DDL\L\LaLaLcLkLkLkLMMr   c                   V ^8  d   QhRR/# r   r   )r    s   "r   r!   r      s     * *t *r   c                	z   V P                   e5   V P                   P                  4        V P                   P                  4        V P                  e   V P                  P	                  ^R7        V P
                  P                  RR7        V P                  P                  RR7       V P                  P                  4        R #   T P                  P                  4        i ; i   T P                  P                  RR7       T P                  P                  4        i   T P                  P                  4        i ; i; i)N)r   Tr,   )
r   shutdownserver_closer   joinr@   rM   rL   r   cleanup)rW   s   &r   r   ResultMailbox.close   s    <<#LL!!#LL%%'<<#LLa(	*&&$&7*  ''4'8'')'')*  ''4'8'')'')s0   .C" C C"D:$D D:D77D:)r   r   r   r   r   rL   r=   rN   rO   r<   r]   r1   rS   r@   r   N)	r   r   r   r   rt   r   r   r   r   r   r   r   r   r      s    5.e0 * *r   r   c                    V ^8  d   QhRRRR/# )r   r   r
   r   r   r   )r    s   "r   r!   r!      s     B B\ Bc Br   c                    \        V 4       \        P                  ! R V P                  RV P                  RV P
                  /RRR7      # )r   r   r   T)	sort_keys
separators),r   )validate_targetjsondumpsr   r   r   )r   s   &r   serialize_targetr      sB    F::ufjj'6<<6==Yei  wA  B  Br   c                    V ^8  d   QhRRRR/# )r   r   r
   r   z
str | Noner   )r    s   "r   r!   r!      s      L j r   c                d    \        V P                  4      pVP                  p\        P                  ! VP
                  ;'       g    R 4      pTP                  P                  R4      pTP                  R8w  gy   TP                  '       gg   TP                  '       gU   TP                  '       gC   TP                  '       g1   TP                  ^8w  g    Te   \        P!                  T4      '       g   \        R4      hTe   Ya8w  d   \        R4      h\"        P!                  T P$                  4      '       dQ   T P&                  P)                  R4      '       d0   T P&                  P+                  4       P-                  R4      '       g   \        R4      hT#   \         d   p\        R4      ThRp?ii ; i)	r%   z cdx result upload URL is invalidNr   httpsz2cdx result upload attempt does not match executionz-----BEGIN CERTIFICATE-----z-----END CERTIFICATE-----z*cdx result upload authorization is invalid)r   r   r   r   r   hostnamer8   r1   removeprefixschemeusernamepasswordqueryfragmentr   r   r;   TOKENr   r   
startswithrstripendswith)r   r   parsedr   rk   r   target_attempts   &&     r   r   r      s   F&**%{{&&v'<'<"= [[--.@AN}}6???foooY_YhYhYhlsl{l{  @A  mA  EI  EQ  Yc  Ym  Ym  n|  Y}  Y};<<.">MNN??6<<((0H0HIf0g0gouo|o|  pD  pD  pF  pO  pO  Pk  pl  plEFFM  F;<#EFs   AF F F/F**F/r   c               (    V ^8  d   QhRRRRRRRR/# )	r   r   r
   bundler   r   r   r   r   r   )r    s   "r   r!   r!      s)      ,  % RV r   c                 a
 \        V 4      pVP                  4       P                  p^ Tu;8  d   \        8:  g   M \	        R4      h\
        P                  ! 4       pVP                  R4      ;_uu_ 4       o
\        V
3R lR4       F  pVP                  V4       K  	  RRR4       \        P                  ! V P                  R7      p\        P                  P                  VP                   VP"                  W'R7      p VP%                  RVP&                  4       VP)                  R	R
V P*                   24       VP)                  RR4       VP)                  R\-        V4      4       VP)                  RVP/                  4       4       VP1                  4        VP                  R4      ;_uu_ 4       o
\        V
3R lR4       F  pVP3                  V4       K  	  RRR4       VP5                  4       p	V	P7                  R4       V	P8                  ^8w  d   \;        RV	P8                   24      h VP=                  4        R#   + '       g   i     EL; i  + '       g   i     L; i  TP=                  4        i ; i)r   z!cdx result bundle size is invalidrbc                 &   < S P                  R4      #    r/   rC   sources   r   <lambda>upload_result.<locals>.<lambda>   s    &++k":r   r   N)cadata)r   rl   PUTr$   r&   r'   r(   r)   r*   c                 &   < S P                  R4      # r   r  r  s   r   r  r     s    fkk+&>r   r  z#cdx result upload failed with HTTP )r   r   r   r9   r8   r>   r?   rA   iterrG   rQ   create_default_contextr   httpclientHTTPSConnectionr   r   
putrequestr1   	putheaderr   r   rI   
endheaderssendgetresponserC   statusr   r   )r   r   r   r   sizer[   r^   rl   r   responser  s   &&$       @r   upload_resultr     s   V$F;;=  Dt'''<==^^F	T		f:C@EMM%  A 
 ((>G,,V__fkkSZ,lJeV[[1_~.FG^-GH-s4y9/1A1A1CD[[&>D& E  ))+d??c!!DX__DUVWW " 	) 
		  	s2   5)H=>B1I$ /)IAI$ =I	I!	I$ $I6i   re   )'__doc__
__future__r   r>   r5   http.clientr  r   r   rJ   rer   rQ   r   r   ro   dataclassesr   http.serverr   r   pathlibr   urllib.parser   r9   rq   r|   compiler   r:   r   r
   r   ri   r   r   r   r  r   r   r   <module>r!     s    G "      	 	  
    ! C  !$  ZZ)*
	%	&


-. $  ;% ;|!'! !'HE* E*PB
"#  r   