CasperSecurity

Current Path : /lib/python3/dist-packages/cloudinit/sources/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceOVF.cpython-310.pyc

o

쑛hO3�@sdZddlZddlZddlZddlZddlmZddlZddlm	Z	m
Z
mZe�e
�ZGdd�de	j�ZGdd�de�Zd#d
d�Zdd
�Zdd�Zd$dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZGdd�de�Zee	jffee	je	jfffZdd �Z d!d"�Z!dS)%zZCloud-Init DataSource for OVF

This module provides a cloud-init datasource for OVF data.
�N)�minidom)�sources�subp�utilc@sLeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	e
dd��ZdS)�
DataSourceOVF�OVFcCsFtj�||||�d|_tj�|jd�|_d|_i|_	d|_
d|_dS)N�ovf)�/zfile://)r�
DataSource�__init__�seed�os�path�join�seed_dir�environment�cfg�supported_seed_starts�_network_config��self�sys_cfg�distro�paths�r�A/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceOVF.pyr s
zDataSourceOVF.__init__cCstj�|�}d||jfS)Nz%s [seed=%s])rr
�__str__r)r�rootrrrr)szDataSourceOVF.__str__cCs�g}i}d}d}ddi}t|jj�\}}|r/tj�|jj|�}t|�\}}}	||_|�|�n7dt	fdt
fg}
d}|
D]\}}|�}|rFnq;|rft|d�\}}}	||_d|vra|dra|d|_|�|�|sjdSd	|vr�|d	r�|d	}
d}|jD]}|
�
|�r�|}nq{|s�t�d
|
|�dStj|
dd�\}}}}t�d|
�t�||g�}|�|
�t�||g�}d
�|�|_||_||_||_|	|_dS)N��instance-idz	iid-dsovfzcom.vmware.guestInfo�isoT�network-configF�seedfromz Seed from %s not supported by %s)�timeoutzUsing seeded cache data from %s�,)�get_ovf_envrrr
rr�read_ovf_environmentr�append�transport_vmware_guestinfo�transport_iso9660rr�
startswith�LOG�debugr�read_seeded�
mergemanydictr�metadata�userdata_raw�vendordata_rawr)r�found�md�ud�vd�defaults�seedfile�contentsrr�np�name�	transfuncr"�	seedfound�proto�md_seed�_rrr�	_get_data-sf���



�
zDataSourceOVF._get_datacCs
d|jS)Nzovf (%s))r�rrrr�_get_subplatformos
zDataSourceOVF._get_subplatformcCs,d|jvrgS|jd}t|t�r|S|gS)N�public-keys)r/�
isinstance�list)r�pksrrr�get_public_ssh_keysrs


z!DataSourceOVF.get_public_ssh_keyscC�|jS�N)rrArrr�get_config_obj~szDataSourceOVF.get_config_objcCrHrI)rrArrr�network_config�szDataSourceOVF.network_configN)�__name__�
__module__�__qualname__�dsnamerrr@rBrGrJ�propertyrKrrrrrs	Brc@seZdZdd�ZdS)�DataSourceOVFNetcCs,t�||||�tj�|jd�|_d|_dS)Nzovf-net)zhttp://zhttps://)rrr
rrrrrrrrr�s
zDataSourceOVFNet.__init__N)rLrMrNrrrrrrQ�srQFc	Cs�t|�}i}i}d}dg}gd�}dg}|��D]^\}	}
|	dkr"d}	|	|vr+|
||	<q|	|vr4|
||	<q|	|vr[|r[zt�|
���}t|��d�||	<WqtyZt�	d�Yqw|	dkrvz	t�|
���}Wqtyu|
��}Yqwq|||fS)	N�password)r"�local-hostnamerCrr!�hostnamerS�networkz%Ignore network-config in wrong formatz	user-data)
�get_properties�items�base64�	b64decode�encode�safeload_yaml_or_dict�get�	Exceptionr+r,)r8�read_network�propsr3rr4�	cfg_props�md_props�
network_props�prop�valrKrrrr&�s:

���
r&c	Csfd}|D],}tj�||�}tj�|�r0zt�|�}||fWSty/t�td|�YqwqdS)N)zovf-env.xmlzovf_env.xmlzOVF_ENV.XMLzOVF-ENV.XMLzFailed loading ovf file %s)NF)	r
rr�isfiler�load_text_filer]�logexcr+)�dirname�	env_names�fname�full_fnr8rrrr%�s
��r%cCs�|sdSt|t�std|��tj�|�}|�d�r!|�d�d}|�d�r.|�d�d}n	|�	d�dkr7dS|s;dSd}tj
�d|�}t�
|�}|�|�d	uS)
z�Test if devname matches known list of devices which may contain iso9660
       filesystems.

    Be helpful in accepting either knames (with no leading /dev/) or full path
    names, but do not allow paths outside of /dev/, like /dev/foo/bar/xxx.
    Fz Unexpected input for devname: %sz/dev/���r	rz^(sr[0-9]+|hd[a-z]|xvd.*)�CLOUD_INIT_CDROM_DEV_REGEXN)rD�str�
ValueErrorr
r�normpathr*�	partition�split�count�environr\�re�compile�match)�devname�
default_regex�
devname_regex�cdmatchrrr�maybe_cdrom_device�s"



r|Tc
	Cs�t��}|��D]&\}}|d}|dkr|rqt|�sq|d}t|�\}}|dur.|Sq|r4d}nd}dd�t�|rAd|nd�D�}	|	D]'}ztj|t|d�\}}Wntjyft�	d	|�YqHw|duro|SqHdS)
N�fstype�iso9660�
mountpointFcSsg|]}t|�r|�qSr)r|)�.0�devrrr�
<listcomp>�s��z%transport_iso9660.<locals>.<listcomp>zTYPE=%s)�mtypez%s not mountable as iso9660)
r�mountsrWr|r%�find_devs_with�mount_cb�MountFailedErrorr+r,)
�require_isor�r��infor}�mp�_fnamer8r��devsrrrr)�s:����r)cCs ||g}t�|�\}}|||fSrI�r��rpctool�arg�cmd�stdout�stderrrrr�exec_vmware_rpctool
s
r�cCs"|d|g}t�|�\}}|||fS)Nz--cmdr�r�rrr�
exec_vmtoolsds

r�c
CsTd\}}t�d�}t�d�}|r|t}}t�d|�|r*|s$|t}}t�d|�|s3t�d�dSdd�}z|||�WStjy�}z_|r_||kr_|jd	krXt�	td
|�WYd}~dS|smt�
d�WYd}~dSzt�
d�||t�WWYd}~Stjy�}z|jd	kr�t�	td
|�WYd}~nd}~wwWYd}~dSd}~ww)
N)NN�vmtoolsdzvmware-rpctoolzdiscovered vmware-rpctool: %szdiscovered vmtoolsd: %szno rpctool discoveredc
Ssrt�d|�z||d�\}}}|r|WSt�d|�WdStjy8}z|jdkr2t�d||j�|�d}~ww)Nzquery guestinfo.ovfEnv with %szinfo-get guestinfo.ovfEnvz!cmd %s exited 0 with empty stdout�z%s exited with code %d)r+r�r,r�ProcessExecutionError�	exit_code�warning)r��
rpctool_fnr�r�r?�errorrrr�query_guestinfo-s
��z3transport_vmware_guestinfo.<locals>.query_guestinfor�z+vmtoolsd failed to get guestinfo.ovfEnv: %sz$vmtoolsd fallback option not presentzfallback to vmtoolsd)r�whichr�r+r,r�r�r�rrgr�)r�r�r��vmware_rpctoolr�r�rrrr(sP






�


���
���r(cCs2g}|��s|S|jD]}||�r|�|�q|SrI)�
hasChildNodes�
childNodesr')�node�filter_func�ret�childrrr�
find_child]s

�r�c	Cs�t�|�}|jjdkrtd��|j��std��d}t|jdd��}|s(td��i}t|dd	d��}|D]}|j�|d
�j	}|j�|d�j	}|||<q5|S)N�EnvironmentzNo Environment NodezNo Child Nodesz)http://schemas.dmtf.org/ovf/environment/1cS�
|jdkS)N�PropertySection��	localName��nrrr�<lambda>t�
z get_properties.<locals>.<lambda>zNo 'PropertySection'srcSr�)N�Propertyr�r�rrrr�|r��key�value)
r�parseString�documentElementr��XmlErrorr�r��
attributes�getNamedItemNSr�)	r8�dom�envNsURI�propSectionsr_�	propElems�elemr�rdrrrrVgs(


��
rVc@seZdZdS)r�N)rLrMrNrrrrr��sr�cCst�|t�SrI)r�list_from_depends�datasources)�dependsrrr�get_datasource_list�sr�cCs|siSt�|�S)z�
    The meta data could be JSON or YAML. Since YAML is a strict superset of
    JSON, we will unmarshal the data as YAML. If data is None then a new
    dictionary is returned.
    )�yaml�	safe_load)�datarrrr[�s
r[)F)T)"�__doc__rX�loggingr
ru�xml.domrr��	cloudinitrrr�	getLoggerrLr+r
rrQr&r%r|r)r�r�r(r�rVr]r��DEP_FILESYSTEM�DEP_NETWORKr�r�r[rrrr�<module>s4

i
	
)&G
 
�
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY