%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/salt/utils/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/salt/utils/http.pyo

�
���^c.@@s�dZddlmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZy*ddlmZddlmZeZWn�ek
rYy*ddlmZddlmZeZWnUek
rUy*ddlmZddlmZeZWnek
rQeZnXnXnXddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl!Zddl"Zddl#Zddl$j%j&Z'ddl(m)Z*ddl+m,Z,ddl-m.Z.dd	l/m0Z0ddl1Zddl2Zddl3j4j0j5j6j7Z8dd
l9m:Z:ddl;m<Z<m=Z=ddl;m>Z?ddl@ZAddlBZAdd
lCmDZDyddlEZAeZFWnek
r�eZFnXyddlGZGeZHWnek
r,eZHnXyddlIZIeZJWnek
r\eZJnXyddlKZKeZLWnek
r�eZLnXejMeN�ZOdjPejQjR�ZSd�ZTe.d�deUeUeUeUeUeUeUeUeUedeeeeUeUdeeUeeUeeUeUeeUddeUeUeUeUeUeUeUeUeeUeUeeSeUed�,�ZVeUd�ZWeUeUeUeUd�ZXd�ZYd�ZZd�Z[d�Z\dS(u�
Utils for making various web calls. Primarily designed for REST, SOAP, webhooks
and the like, but also useful for basic HTTP testing.

.. versionadded:: 2015.5.0
i(tabsolute_importtunicode_literalstprint_functionN(tCertificateError(tmatch_hostname(tElementTree(tcompile_template(tjinja_filter(tsix(tURLError(t
splitqueryturlparse(t	urlencode(t
HTTPClientuSalt/{0}cC@s�tjdt|�|�|dkr>tj|tj�}n�|dkrztj|�}tj	d|�}|j
�}n`|dkr�td��nE|dkr�td��n*|d	kr�td
��n|dkr�ntjdt|��|S(
u�
    Decompress returned HTTP content depending on the specified encoding.
    Currently supports identity/none, deflate, and gzip, which should
    cover 99%+ of the content on the internet.
    u7Decompressing %s byte content with compression type: %sudeflateugziptfileobjusdchu+SDCH compression is not currently supportedubru-Brotli compression is not currently supporteducompressu*LZW compression is not currently supporteduidentityu$Content size after decompression: %s(tlogttracetlentzlibt
decompresst	MAX_WBITStiotBytesIOtgziptGzipFiletreadt
ValueError(tcodingtpgctnttbuftf((s3/usr/lib/python2.7/site-packages/salt/utils/http.pyt__decompressContentes"u
http_queryuGETuautoulwpuminioniPc-c@soi}.|dkr�|dkrHtjjtjjtjjd��}q�|dkr~tjj	tjjtjjd��}q�i}n|s�|j
dd�}ntjd|�}/|/s�tj
jj�n|dkr&ttkrd|.d<tj|.d�|.Stjd�}0|0jtj�n|rAtjj||�n|}1| dkrbt|�} n|!dkr�|j
d	t�}!n|"dkr�|j
d
d�}"n|dk	r�t|||||�}nt|1|+�}2tjd|2��tjd|��d
kr�tj tj!�r�t"|t#�r�|j$�}3t"|+t%�r�x;|D]0}4x'|+D]}5|4|5krYd|3|4<qYqYWqLWntj&dt'j(|3��q�tj&dt'j(|��n|dk	rt|||||�}6t"|6t#�r�|6}q|6j)�}n|dkri}n|dkr0g}n|dkrftjj|j
dtjj*�d�}n|dkr�tjj|j
dtjj*�d�}n|tkrFt+rFtjj,|�rtj
j-j.|d��}7t/j0|7�}8WdQXt"|8t#�rC|j1|8�qCqFtj
j-j.|d��}7t/j2d|7�WdQXnxS|D]K}9|9j3d�}:t4|:�dkrzqMn|:dj5�||:dj5�<qMW|
s�|r�|	r�||	f}
q�n|*t6kr�dj7|*�}*n|*|d<|dkrAt8j9�};|
|;_:|;j;j1|�tj&d|;j;�|;j<}<|!|;_=n|dkrVd}<nd}<|dk	r�|dkr�tj>j?j@jAjB|�}<ntj>j?j@jAjC|�}<tjj,|�s�|<jD�n|<j0�n|tkr|dkr�iS|}t|.d <n|dkr�i}=|&tkrSt8jEdd!krFt|=d"<qSt|=d#<n|"dk	r�t"|"t?jF�r�tjjG|"�r�|"|=d
<q�q�t"|"t%�r�tjjG|"d�r�tjjG|"d�r�|"|=d
<q�q�tjd$|"�n|;jH�|d%|d&||=�}>|>jI�|&tkrV|(d'j7|>jJ��|'|>jK�i|>d(6S|)tkrwi|>d(6|>jKd)6Stjd*t|>jL|+��|>jJ}?|>j;}@|>jK}A|>j<}B|>jK}Ct"|Ct?jM�s�|CjN|>jOp�d+�}Cn|C|.d)<nN	|dkrtPjQ|1|�}DtPjRtPjS|<�g}E|jTd,�r�
|DjU�}FtPjVd�|Ed<tWsttjXd-�q�
|!tkr�tjXd.�q�
d|Fkr�|Fj3d�\}F}nd/}tYjYtYjZtYj[�}G|Gj\|Ft]|�f�t^j_|Gd0| d1t^j`�}Hyta|Hjb�|F�Wn-tck
rO	}Id2t'j(|I�f|.d<|.SX|"dk	r�
d}Jt"|"t?jF�r�	tjjG|"�r�	|"}Jq�	n[t"|"t%�r�	tjjG|"d�r�	tjjG|"d�r�	|"}Jq�	ntjd$|"�dStdt^d3�r*
t^jejf|J�}K|EjgtPjVd4|K��q�
i|DjU�d56|d66|Jdd76}Lt4|J�dkrr
|Jd|Ld8<ntj>j?j@jhji|L�|Ed<q�
ntPjj|E�}Mx"|D]}9|Djk|9||9�q�
W�fd9�|D_ly|Mjm|D�}>Wn$tnk
r}Iit?jM|I�d:6SX|&tks/|)tkrDi|>d(6|>jKd)6S|>jo}?t#|>jp��}@|>jq�}Ad;|@kr�trjs|@d;�\}N}O|NjTd<�r�d=|Okr�t"|At?jM�r�|AjN|Od=�}Aq�nt?jtrt"|Atu�r|AjNd+�}An|A|.d)<n:i}=|"dk	r�t"|"t?jF�rTtjjG|"�r�|"|=d><q�q�t"|"t%�r�tjjG|"d�r�tjjG|"d�r�|"d|=d><|"d|=d?<q�q�tjd$|"�nt"|t#�r�tv|�}n|!r�| |=d@<n|j
dAtjjwdA�}P|j
dBtjjwdB�}Q|j
dCtjjwdC�}Rd}S|j
dDd�}T|Tr
tj
jxjy|T�}Tn|j
dEd�}U|j
dFd�}V|Vr�
tj
jxjy|V�}Vn|j
dGd�}W|Wr�
tj
jxjy|W�}Wn|j
dHg�}Xtz|1�j{|Xkr'd}Td}Un|Tr�|Ur�t|tkr^dI|.d<tj|.d�|.Stj}j~jdJ�tj
j�j�tj�j�j��}Sntj
j�j�tj�j�j��}SdK|Sj�k}Y|=j1i�dL6|dM6|dN6|	dO6|d)6|!dP6tdQ6|'dR6|(dS6|QdT6|RdU6|TdD6|UdE6|VdF6|WdG6|,dV6tdW6�tj
j�jN|=dXt�}=y4|Yrvt�dY|P�nt��}Z|Zj�|1|=�}>Wn|tj}j�k
r�}I|Ijo|.dZ<t?jM|I�|.d<|.StYj�k
r}I|
tkr�d|.dZ<nt?jM|I�|.d<|.SX|&tks)|)tkr>i|>d(6|>j�d)6S|>jo}?|>j;}@|>j�}Ad;|@kr�trjs|@d;�\}N}O|NjTd<�r�d=|Okr�t"|At?jM�r�|AjN|Od=�}Aq�nt?jtr�t"|Atu�r�|AjNd+�}An|A|.d)<d[|@krB|dk	rBt�|@d[�}Bx$|BD]}4|<j�|4�q(Wnd}Bt"|@t%�r�i}[xD|@D]<}9|9j3d�}:dj|:d�j5�|[|:dj5�<qdW|[}@ntjd\|?�tj&d]|@�tj&d^|<�|@j
d_d`�}\|dkr
t�|\|A�}Anytj&da|A�Wn#t�k
rF}Itj&db|I�nX|#dk	r�tj
j-j.|#dc��}]|]j�|A�WdQXn|$dk	r�tjjG|$�r�tj
j-j.|$dc��}^|^j�|@�WdQXn|dk	r�|<jD�n|tkryt+rydd|@krytj
j-j.|d��O}7|@j
ddd�}8|8dk	r]t/j2i|8de6|7�nt/j2d|7�WdQXqyn|
tkr�|?|.dZ<n|tkr�|@|.dM<n|tkrR|dfkr|@j
dgdh�}_di|_kr�di}qdj|_kr�dj}qdk|_krdk}qdl}ndp}`||`kr`dmj7t'j(|`��|.d<tj|.d�|.S|djkr�tj
j�j�|A�|.dn<n�|dikr�g|.dn<t�j�|A�}axh|aD] }4|.dnjgt�j�|4��q�Wn=|dkkrtj
j�jNtj
j�j�|A��|.dn<nt}|%rRtj
j-j.|%dc��}b|bj�|A�WdQXqRn|tkrk|A|.do<n|.S(qu6
    Query a resource, and decode the return data
    umasteruminionubackendutornadouOhttps?://((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)($|/)urequestsu_http.query has been set to use requests, but the requests library does not seem to be installeduerroru
verify_sslucertu!Requesting URL %s using %s methoduUsing backend: %suPOSTu
XXXXXXXXXXuRequest POST Data: %sucachedirucookies.txtucookies.session.purbNuwbuu:iiiu{0} http.query()u
User-agentuRequest Headers: %suurllib2umozillautestu0uprefetchustreamuAThe client-side certificate path that was passed is not valid: %stparamstdatauHTTP/1.0 {0} MESSAGEuhandleubodyu"Final URL location of Response: %suutf-8uhttpsugmatch_hostname() not available, SSL hostname checking not available. THIS CONNECTION MAY NOT BE SECURE!u]SSL certificate verification has been explicitly disabled. THIS CONNECTION MAY NOT BE SECURE!i�tca_certst	cert_reqsu3The certificate was invalid. Error returned was: %su
SSLContexttcontextuhostuportu	cert_fileukey_filec@s�S(N(((tmethod(s3/usr/lib/python2.7/site-packages/salt/utils/http.pyt<lambda>�suErroruContent-Typeutext/ucharsetuclient_certu
client_keyuca_certsu
http_max_bodyuhttp_connect_timeoutuhttp_request_timeoutu
proxy_hostu
proxy_portuproxy_usernameuproxy_passworduno_proxyuyproxy_host and proxy_port has been set. This requires pycurl and tornado, but the libraries does not seem to be installedu+tornado.curl_httpclient.CurlAsyncHTTPClientu
max_body_sizeumethoduheadersu
auth_usernameu
auth_passwordu
validate_certuallow_nonstandard_methodsustreaming_callbackuheader_callbackuconnect_timeouturequest_timeouturaise_errorudecompress_responsetto_strt
max_body_sizeustatusu
Set-CookieuResponse Status Code: %suResponse Headers: %suResponse Cookies: %suContent-EncodinguidentityuResponse Text: %sufCannot Trace Log Response Text: %s. This may be due to incompatibilities between requests and logging.uwu
set-cookieuCookieuautoucontent-typeuapplication/jsonuxmlujsonuyamluplainu:Invalid decode_type specified. Valid decode types are: {0}udictutext(ujsonuxmluyamluplain(�tNonetsalttconfigt
master_configtostpathtjointsyspathst
CONFIG_DIRt
minion_configtgettretmatchtutilstnetworktrefresh_dnstHAS_REQUESTStFalseRterrortloggingt	getLoggertsetLeveltWARNINGttornadothttputilt
url_concatt
get_ca_bundletTruet_rendertsanitize_urltdebugtisEnabledFortTRACEt
isinstancetdicttcopytlistRtpprinttpformatt
splitlinest	CACHE_DIRtHAS_MSGPACKtisfiletfilestfopentmsgpacktloadtupdatetdumptsplitRtstript	USERAGENTtformattrequeststSessiontauththeaderstcookiestverifytextRtmovesthttp_cookiejartMozillaCookieJartLWPCookieJartsavet__version__tstring_typestexiststrequesttraise_for_statuststatus_codetcontentturlt	text_typetdecodetencodingturllib_requesttRequesttHTTPHandlertHTTPCookieProcessort
startswithtget_hosttHTTPSHandlertHAS_MATCHHOSTNAMEtwarningtsockettAF_INETtSOCK_STREAMtconnecttinttssltwrap_sockett
CERT_REQUIREDRtgetpeercertRthasattrt
SSLContexttload_cert_chaintappendthttp_clienttHTTPSConnectiontbuild_openert
add_headert
get_methodtopenR	tcodetinfoRtcgitparse_headertPY3tbytest
_urlencodetDEFAULT_MINION_OPTStstringutilsR'RthostnametHAS_CURL_HTTPCLIENTt
httpclienttAsyncHTTPClientt	configuretargstget_function_argspectcurl_httpclienttCurlAsyncHTTPClientt
initializetsimple_httpclienttSimpleAsyncHTTPClientR!R
tfetcht	HTTPErrortgaierrortbodytparse_cookie_headert
set_cookieRtUnicodeEncodeErrortwritetjsontloadstETt
fromstringtxmltto_dicttyamlt	safe_load(cRqR%R R!t	data_filetheader_dicttheader_listtheader_filetusernametpasswordR`Rstdecode_typetstatusRattextRbt
cookie_jart
cookie_formattpersist_sessiontsession_cookie_jartdata_rendert
data_renderert
header_rendertheader_renderert
template_dictttestttest_urltnodetporttoptstbackendt	ca_bundlet
verify_ssltcertttext_outtheaders_outt
decode_outtstreamtstreaming_callbacktheader_callbackthandletagentthide_fieldstraise_errortkwargstretR5trequests_logturl_fulltlog_urltlog_datatitemtfieldt
header_tpltfh_tsession_cookiestheadertcompstsesstsess_cookiest
req_kwargstresulttresult_status_codetresult_headerstresult_texttresult_cookiesR�RmthandlersR�tsocktsockwraptexct
cert_chainR$tcert_kwargstopenertres_content_typet
res_paramstmax_bodytconnect_timeoutttimeouttclient_argspect
proxy_hostt
proxy_porttproxy_usernametproxy_passwordtno_proxytsupports_max_body_sizetdownload_clienttresult_headers_dictRttofthoftcontent_typet
valid_decodestitemstdof((R%s3/usr/lib/python2.7/site-packages/salt/utils/http.pytquery�s�2	!	!	
!

			**
"
			




,	


						
,	
%
	
,	

	
		

			


+		


				

!+
cC@s-ttd�rtjS|d
kr+i}n|jdd
�}|d
k	r_tjj|�r_|S|jditj	j
gd6�}xV|jdg�D]B}x9dD]1}tjj||�}tjj|�r�|Sq�Wq�Wd}x$|D]}tjj|�r�|Sq�Wtjj
j�r)tr)tj�Sd
S(us
    Return the location of the ca bundle file. See the following article:

        http://tinyurl.com/k7rx42a
    u__return_value__u	ca_bundleu
file_rootsubaseu
cacert.pemu
ca-bundle.crtu"/etc/ssl/certs/ca-certificates.crtu /etc/pki/tls/certs/ca-bundle.crtu&/etc/pki/tls/certs/ca-bundle.trust.crtu/etc/ssl/certs/ca-bundle.crtu&/var/lib/ca-certificates/ca-bundle.pemu/etc/ssl/cert.pemN(u
cacert.pemu
ca-bundle.crt(u"/etc/ssl/certs/ca-certificates.crtu /etc/pki/tls/certs/ca-bundle.crtu&/etc/pki/tls/certs/ca-bundle.trust.crtu/etc/ssl/certs/ca-bundle.crtu&/var/lib/ca-certificates/ca-bundle.pemu/etc/ssl/cert.pem(R�RCt__return_value__R)R3R-R.RlR*R0tSRV_ROOT_DIRR/R6tplatformt
is_windowstHAS_CERTIFItcertifitwhere(R�topts_bundlet
file_rootst	salt_rootR.t	cert_patht	locations((s3/usr/lib/python2.7/site-packages/salt/utils/http.pyRC�s2	"


c	C@s#|dkri}n|dkr0t|�}n|dkrMtjd�dS|dkrn|jdd�}ntjd||�t|dtdtdtd	td
|�|dk	rt	|t
j�r�|g}nt	|t�s�tjd�dSd}x�|D]�}t
jj|�rtjd
||�y@tjjj|d��"}dj||j�f�}WdQXWq�tk
r�}tjd||�q�XqqW|rtjd|�y?tjjj|d��!}|jd�|j|�WdQXWqtk
r}tjd||�qXqndS(u.
    Attempt to update the CA bundle file from a URL

    If not specified, the local location on disk (``target``) will be
    auto-detected, if possible. If it is not found, then a new location on disk
    will be created and updated.

    The default ``source`` is:

        http://curl.haxx.se/ca/cacert.pem

    This is based on the information at:

        http://curl.haxx.se/docs/caextract.html

    A string or list of strings representing files to be appended to the end of
    the CA bundle file may also be passed through as ``merge_files``.
    u/Unable to detect location to write CA bundle toNu
ca_bundle_urlu!http://curl.haxx.se/ca/cacert.pemuAttempting to download %s to %sR�RsRaR�R�uIA value was passed as merge_files which was not either a string or a listuu#Queueing up %s to be appended to %suru
u.Reading from %s caused the following error: %suAppending merge_files to %suau,Writing to %s caused the following error: %s(R)RCRR;R3RGRRDR:RJRRkRMR-R.RlR*R6RTRUR/RtIOErrorR�(	ttargettsourceR�tmerge_filest
merge_contentt	cert_filetfcfR�ttfp((s3/usr/lib/python2.7/site-packages/salt/utils/http.pytupdate_ca_bundle�s\	



%
c
C@s.|r�|d
kri}n|s6|jdd�}ntjj|i�}|jd�}|jd�}t||||||�}tjjj|�r�|j	�}nt
j|�jd�r�t
j|�jd�r�t
j|�j
dd�d}n|Stjjj|d	��}	|	j	�SWd
QXd
S(u
    Render a template
    urendereru
jinja|yamlurenderer_blacklisturenderer_whitelistu#!u#!/u
iurN(R)R3R*tloadertrenderRR6tstringiotis_readableRRRrRyRZRTRU(
ttemplateR"trendererR�R�trendt	blacklistt	whitelistR�R�((s3/usr/lib/python2.7/site-packages/salt/utils/http.pyREDs 	1"cC@s�d}g}xr|jd	�D]a}|j�}d
|krpd|krpx4|jd
�D]}|j|�qVWq|j|�qWg}i}t}x�|D]�}|jd�}	|	dj�|kr,|	d|kr�|j|�i}nt|	�d
krdj|	d
�||	d<qut||	d<q�|tkrT|j|�i}t}ndj|	d
�||	d<t}q�W|r�|j|�nd}
g}xO|D]G}d}d}
x;t	|�D]-}||kr�q�n|}|j
|�}
q�Wd|kr$tjj
jjj|d�|d<nx'|
D]}||kr+d||<q+q+W|ddkrkd|d<n|ddkr�i|d<n|ddkr�d|d<nd|kr�|d=n|jtjj
jjjd|d|
|��q�W|S(u�
    Parse the "Set-cookie" header, and return a list of cookies.

    This function is here because Tornado's HTTPClient doesn't handle cookies.
    uexpiresupathudomainuversionuhttponlyusecureucommentumax-ageu;u,u=iiuportuport_specifiedudomain_specifiedudomain_initial_dotupath_specifiedudiscarducomment_urlurestutnametvalue(uexpiresupathudomainuversionuhttponlyusecureucommentumax-age(uversionuportuport_specifiedudomainudomain_specifiedudomain_initial_dotupathupath_specifiedusecureuexpiresudiscarducommentucomment_urlurestN(RZR[R�R:tlowerRR/RDR)RMtpopR*RdRReRft	http2timetCookie(R�tattribstmorselsR�tpartRbtcookiet	value_settmorseltpartstreqdR�R*R+treq((s3/usr/lib/python2.7/site-packages/salt/utils/http.pyR�Zs�

	
	

&




2cC@s�t|t�r�t|�}|d}t|�dkrD|d7}nxx|dD]l}d}xS|D]K}|jd�}|r�|jd�}t||�}qbt||�}qbW||7}qOW|jd�Stj	|�SdS(u4
    Make sure no secret fields show up in logs
    iiu?u&N(
RJRMR
RR)RZt_sanitize_url_componentstrstripRRr(RqR�t	url_compsR�tpairturl_tmpR�t
comps_list((s3/usr/lib/python2.7/site-packages/salt/utils/http.pyRF�s 



cC@s�t|�dkrdS|djdj|��rcdj|�}|j|d�|t||�Sdj|d�}|j|d�|t||�SdS(uC
    Recursive function to sanitize each component of the url.
    iuu{0}=u{0}=XXXXXXXXXX&u{0}&N(RRyR]tremoveR9(t	comp_listR�R�((s3/usr/lib/python2.7/site-packages/salt/utils/http.pyR9�s(]t__doc__t
__future__RRRR�R<R-RNR~RRRR4R�RRRDR|tImportErrortbackports.ssl_match_hostnametsalt.ext.ssl_match_hostnameR:tsalt.configR*tsalt.loadert
salt.syspathstsalt.utils.argstsalt.utils.datatsalt.utils.filestsalt.utils.jsontsalt.utils.networktsalt.utils.platformtsalt.utils.stringutilstsalt.utils.yamltsalt.versiontsalt.utils.xmlutilR6txmlutilR�tsalt._compatRR�t
salt.templateRtsalt.utils.decorators.jinjaRtsalt.extRtsalt.ext.six.moves.http_clientt!salt.ext.six.moves.http_cookiejart!salt.ext.six.moves.urllib.requestRdReturllibRmRutsalt.ext.six.moves.urllib.errorR	tsalt.ext.six.moves.urllib.parseR
RRR�ttornado.httputilR@ttornado.simple_httpclientttornado.httpclientR
ttornado.curl_httpclientR�R^R9RVRRRRR=t__name__RR]tversionRjR\RR)RRCR RER�RFR9(((s3/usr/lib/python2.7/site-packages/salt/utils/http.pyt<module>s

















		��
3R		_	

Zerion Mini Shell 1.0