a h@sjddlZddlmZddlmZddlmZddlmZm Z m Z ddl m Z e eZGdd d eZdS) N)Optional) AsyncChannel)read_cockpit_data_file) JsonObjectget_dictget_str)Packagesc@sJeZdZUdZdgZdZeeed<e e ddddZ eddd d Z dS) PackagesChannelz http-stream1)ZinternalpackagesNoptions)statusmessagereturncCsFtd}|j|dddid||d|||dS)Nz fail.htmlZERROR Content-Typeztext/html; charset=utf-8r reasonheaderss @@message@@)r send_jsonZ send_datareplaceencodeZdoneclose)selfr rtemplater=/usr/lib/python3.9/site-packages/cockpit/channels/packages.py http_error$s zPackagesChannel.http_error)r rc s|jj}z t|ddkr,td|d||IdHdurNtdt|d}t|d}|||}d|jd}|j dur|j |d <|j dur|j }d |vr | d }| d } t |t rt | t std |dkrdnd} | d| } |d d| d}||d<WntyL} z|dt | WYd} ~ nd} ~ 0tyj|ddYnZty} z|dd| WYd} ~ n,d} ~ 00|jdd|d||jIdHdS)NmethodZGETzUnsupported HTTP method zReceived unexpected datapathrzno-cache, no-store)z Cache-ControlrzContent-Encodingzconnect-src 'self';zX-Forwarded-ProtozX-Forwarded-HostzInvalid host or protocol headerhttpswsswsz://z connect-src z 'self';zContent-Security-Policyiiz Not foundizInternal error: ZOKr)Zrouterr r ValueErrorZreadyreadrZ load_pathZ content_typeZcontent_encodingZcontent_security_policyget isinstancestrrrKeyErrorOSErrorrsendfiledata) rr r rrZdocumentZ out_headersZpolicyZprotocolhostZwebsocket_schemeZwebsocket_originexcrrrrun+sD          $(zPackagesChannel.run) __name__ __module__ __qualname__ZpayloadZ restrictionsr rr__annotations__intr'rr.rrrrr s r )ZloggingtypingrZchannelrr+rZjsonutilrrrr r Z getLoggerr/loggerr rrrrs