
    h                         S SK r S SKJr  SSKJr  SSKJr  SSKJrJ	r	J
r
  SSKJr  \ R                  " \5      r " S S	\5      rg)
    N)Optional   )AsyncChannel)read_cockpit_data_file)
JsonObjectget_dictget_str)Packagesc                   \    \ rS rSr% SrS/rSr\\   \	S'   S\
S\SS4S	 jrS\SS4S
 jrSrg)PackagesChannel   zhttp-stream1)internalpackagesNoptionsstatusmessagereturnc                     [        S5      nU R                  USSS0S9  U R                  UR                  SUR	                  5       5      5        U R                  5         U R                  5         g )Nz	fail.htmlERRORContent-Typeztext/html; charset=utf-8r   reasonheaderss   @@message@@)r   	send_json	send_datareplaceencodedoneclose)selfr   r   templates       ;/usr/lib/python3/dist-packages/cockpit/channels/packages.py
http_errorPackagesChannel.http_error$   sV    )+6fW~Oi>jkx''8HIJ		

    c                 .  #    U R                   R                  n [        US5      S:w  a  [        SUS    35      eU R	                  5         U R                  5       I S h  vN b  [        S5      e[        US5      n[        US5      nUR                  X45      nSUR                  S.nUR                  b  UR                  US	'   UR                  b  UR                  nS
U;   a~  UR                  S5      nUR                  S5      n	[        U[        5      (       a  [        U	[        5      (       d  [        S5      eUS:X  a  SOSn
U
 SU	 3nUR                  S
SU S35      nXvS'   U R                  SSUS9  U R!                  UR"                  5      I S h  vN   g  GN; N! [         a%  nU R%                  S[        U5      5         S nAg S nAf[&         a    U R%                  SS5         g [(         a   nU R%                  SSU< 35         S nAg S nAff = f7f)NmethodGETzUnsupported HTTP method zReceived unexpected datapathr   zno-cache, no-store)zCache-Controlr   zContent-Encodingzconnect-src 'self';zX-Forwarded-ProtozX-Forwarded-HostzInvalid host or protocol headerhttpswsswsz://zconnect-src z 'self';zContent-Security-Policy   OKr   i  i  z	Not foundi  zInternal error: )routerr   r	   
ValueErrorreadyreadr   	load_pathcontent_typecontent_encodingcontent_security_policyget
isinstancestrr   r   sendfiledatar#   KeyErrorOSError)r    r   r   r)   r   documentout_headerspolicyprotocolhostwebsocket_schemewebsocket_originexcs                r"   runPackagesChannel.run+   s     ![[117	/w)U2 #;GH<M;N!OPPJJLYY[ , !;<<7F+Dw	2G))$8H "6 ( 5 5K
 ((42:2K2K.///;!99 )F2&{{+>?H";;'9:D%h44JtS<Q<Q()JKK08G0Cu$*:);3tf'E$#^^,A\RbQcckClmF9?56 NN#dKNH--...e !d /  	+OOCS** 	.OOC- 	=OOC#3C7!;<<	=sr   HAF FDF $/HFHF H
H(GHH'H)	H2HHHH )__name__
__module____qualname____firstlineno__payloadrestrictionsr   r   r   __annotations__intr9   r#   rF   __static_attributes__rH   r%   r"   r   r      sM    G,-L %)GXj!( s t :/ :/ :/r%   r   )loggingtypingr   channelr   r;   r   jsonutilr   r   r	   r   r
   	getLoggerrI   loggerr   rH   r%   r"   <module>rX      s:   $   " ) 4 4 			8	$H/l H/r%   