HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/__pycache__/user_data.cpython-39.pyc
a

��`09�@sddlZddlmZddlmZddlmZddlmZddl	m
Z
ddl	mZddl	m
Z
dd	lmZmZdd
l	mZe�e�Ze
jZe
jZe
jZdZdd
gZddgZdgZdZdZdZgd�ZdZ dgZ!dd�Z"dd�Z#d!dd�Z$Gdd�de%�Z&dd�Z'efdd �Z(dS)"�N)�MIMEBase)�
MIMEMultipart)�MIMENonMultipart)�MIMEText)�handlers)�log)�features)�read_file_or_url�UrlError)�utilzContent-Typez
text/plainztext/x-not-multipartztext/x-include-urlztext/x-include-once-urlztext/cloud-config-archiveztext/cloud-configzapplication/octet-stream)zapplication/gzipzapplication/gzip-compressedzapplication/gzippedzapplication/x-compresszapplication/x-compressedzapplication/x-gunzipzapplication/x-gzipzapplication/x-gzip-compressedzNumber-AttachmentscCs||=|||<dS�N�)�msg�key�valuer
r
�5/usr/lib/python3/dist-packages/cloudinit/user_data.py�_replace_header=srcCs|d=|jddt|�d�dS)NzContent-Disposition�
attachment)�filename)�
add_header�str)rrr
r
r�
_set_filenameBs�rcCs tjrt|�|�n
t�|�dSr)rZERROR_ON_USER_DATA_FAILURE�	Exception�LOG�warning)�
error_messageZsource_exceptionr
r
r�
_handle_errorHsrc@s^eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
ddd�Zdd�ZdS)�UserDataProcessorcCs||_t�|�|_dSr)�pathsr�fetch_ssl_details�ssl_details)�selfrr
r
r�__init__PszUserDataProcessor.__init__cCs@t�}t|t�r,|D]}|�t|�|�qn|�t|�|�|Sr)r�
isinstance�list�_process_msg�convert_string)r!�blobZaccumulating_msg�br
r
r�processTs
zUserDataProcessor.processcCs�dd�}|��D�]�}t|�r qd}|��}t�|�}d}|tvr�ztj|dd�}d}d}WnNtjy�}	z4d�|t	|�|	�}
t
|
|	�WYd}	~	qWYd}	~	n
d}	~	00|s�t}|tdgvr�||�}|dur�|}|�rF|�
dd	�\}}t||�}
|
�|�|���rt|
|���d
D]$}||v�rt|
|t||���q|
}||k�r\t|t|�|tv�rt|�||�q|tv�r�|�||�qt|t|�|�||�qdS)NcSs
t�|�Sr)r�type_from_starts_with)�payloadr
r
r�
find_ctype_sz2UserDataProcessor._process_msg.<locals>.find_ctypeF)�quietTz<Failed decompressing payload from {} of length {} due to: {}ztext/x-shellscript�/�)�Launch-Index)�walk�is_skippable�get_content_typer�fully_decoded_payload�DECOMP_TYPES�decomp_gzip�DecompressionError�format�lenr�
UNDEF_TYPE�TYPE_NEEDED�splitr�set_payload�get_filenamerrr�CONTENT_TYPE�
INCLUDE_TYPES�_do_include�
ARCHIVE_TYPES�_explode_archive�_attach_part)r!Zbase_msg�
append_msgr,�part�ctypeZ
ctype_origr+Zwas_compressed�er�maintype�subtypeZn_part�hr
r
rr%]s\

��
"






zUserDataProcessor._process_msgc	Cs�|�dd�}d}|��tvrTz$t�|jdd��}|r>|�d�}WntyRYn0|dur`|}|durl|}|dur�z|�dtt	|���Wnt
tfy�Yn0dS)Nr0T��decode�launch-index)�getr3�EXAMINE_FOR_LAUNCH_INDEXr�	load_yaml�get_payloadrrr�int�
ValueError�	TypeError)r!rZ
header_idxZpayload_idxr+r
r
r�_attach_launch_index�s$z&UserDataProcessor._attach_launch_indexcCs&t�|dd�}tj�|j�d�d|�S)N�md5�@�dataZurlcache)r�	hash_blob�os�path�joinr�
get_ipath_cur)r!�entryZentry_fnr
r
r�_get_include_once_filename�s�z,UserDataProcessor._get_include_once_filenamecCs$|��st|t|�|�|�dSr)r>r�PART_FN_TPLrV)r!rZattached_idr
r
r�_process_before_attach�sz(UserDataProcessor._process_before_attachcCs�d}|��D�]�}|��}|�d�r>|td�d���}d}n"|�d�r`|td�d���}d}|�d�rlq|��}|szqd}d}|r�|�|�}|r�tj�	|�r�t
�|�}n�zZt|dd|j
d�}|r�|��r�t
j||jd	d
�|��r�|j}nd�||j�}	t|	�Wn�t�yV}
z6t|
�}||v�r8|d�|�7}t||
�WYd}
~
nDd}
~
0t�y�}z"d
�||�}	t|	|�WYd}~n
d}~00|durt|�}
|�|
|�qdS)NFz
#include-onceTz#include�#��
)�timeout�retriesr i�)�modez6Fetching from {} resulted in a invalid http code of {}z
 for url: {0}zFetching from {} resulted in {})�
splitlines�lower�
startswithr9�lstrip�stripr`r[r\�isfiler�	load_filer	r �ok�
write_file�contentsr8�coderr
r�IOErrorr&r%)r!�contentrEZinclude_once_on�lineZlc_lineZinclude_urlZinclude_once_fn�resprZurle�messageZioeZnew_msgr
r
rrA�s`



�
���
� zUserDataProcessor._do_includecCsLtj|gttfd�}|D�],}t|t�r0d|i}t|t�s<q|�dd�}|�d�}|stt}t|t	�rht
}t�||�}|�
dd�\}}	|dkr�t|t	�r�|��}t||	d�}
nt||	�}
|
�|�d	|vr�t|
|d	�d
|vr�|
�dt|d
��t|���D]:}|��dd	dd
dt��t��fv�r(q�|
�|||�q�|�||
�qdS)
N)�default�allowedru��typer.r/�text)�_subtyperrNr0zcontent-disposition)rrQr$�setr#r�dictrO�ARCHIVE_UNDEF_TYPE�bytes�ARCHIVE_UNDEF_BINARY_TYPErr*r<rMrrr=rr�keysrj�ATTACHMENT_FIELDr?rD)r!�archiverE�entries�entru�mtyperyrIrJr�headerr
r
rrCsB







�z"UserDataProcessor._explode_archiveNc	Csjt|vrd|t<|dur(t|tt|��d}zt|�t��}Wn&ttfydt|tt|��Yn0|S)z
        Return the number of attachments to this MIMEMultipart by looking
        at its 'Number-Attachments' header.
        �0Nr)r�rrrSrOrTrU)r!�	outer_msgZ	new_countZ
fetched_countr
r
r�_multi_part_count;sz#UserDataProcessor._multi_part_countcCs8|�|�}|�||d�|�|�|�||d�dS)z�
        Attach a message to an outer message. outermsg must be a MIMEMultipart.
        Modifies a header in the outer message to keep track of number of
        attachments.
        r/N)r�rb�attach)r!r�rF�
part_countr
r
rrDMs

zUserDataProcessor._attach_part)N)
�__name__�
__module__�__qualname__r"r)r%rVr`rbrArCr�rDr
r
r
rrOs	P=/
rcCs |��p
d}|��dkrdSdS)Nr{�	multipartTF)�get_content_maintyperj)rFZ
part_maintyper
r
rr2Ysr2cCsl|sd}dd�}t|t�r&|�d�}n|}tj|dd�}d|dd	���vr^t�|�d��}n
|||�}|S)
zJconvert a string (more likely bytes) or a message into
    a mime message.�cSs(|�dd�\}}t||�}|�|�|S)Nr.r/)r<rr=)rY�content_typerIrJrr
r
r�
create_binmsghs

z%convert_string.<locals>.create_binmsgzutf-8FrLs
mime-version:ri)r#r�encoderr6rj�message_from_stringrM)�raw_datar�r�Zbdatarr
r
rr&bs

r&)N))r[Zemail.mime.baserZemail.mime.multipartrZemail.mime.nonmultipartrZemail.mime.textr�	cloudinitrr�loggingrZcloudinit.url_helperr	r
r�	getLoggerr�rZNOT_MULTIPART_TYPEraZ
OCTET_TYPEr?r;r@rBr:r�r�r5r�rPrrr�objectrr2r&r
r
r
r�<module>s>