CasperSecurity

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

o

쑛h�m�@s6ddlZddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZddlm
Z
ddlmZe�e�Zddd�dfd	ejifd
dd�dfd�Zd
ZdZdZdZdZdZdZdZdZdZeeeeeeeefZdZ Gdd�de!�Z"Gdd�d�Z#Gdd�dej$d�Z%Gdd �d e%�Z&Gd!d"�d"e%�Z'd%d#d$�Z(dS)&�N)�net�sources�subp�
url_helper�util)�BrokenMetadata)�ec2�network_configcC�|S�N���xrr�E/usr/lib/python3/dist-packages/cloudinit/sources/helpers/openstack.py�<lambda>�r��meta_js�authorized_keyscCr
rrr
rrrrr)zetc/network/interfaceszmeta.jszroot/.ssh/authorized_keys))zlocal-hostname�hostnameF)�instance-id�uuidT�latestz
2012-08-10z
2013-04-04z
2013-10-17z
2015-10-15z
2016-06-30z
2016-10-06z
2017-02-22z
2018-08-27)
N�bgpovs�bridge�	cascading�dvs�ethernet�hw_veb�hyperv�ovs�phy�tap�	vhostuser�vifc@seZdZdS)�NonReadableN)�__name__�
__module__�__qualname__rrrrr%Qsr%c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�SourceMixincCs>|jsdS|j�di�}|��D]\}}||kr|SqdS)Nzblock-device-mapping)�ec2_metadata�get�items)�self�name�bdm�ent_name�devicerrr�_ec2_name_to_deviceVs�zSourceMixin._ec2_name_to_devicecCs$d}|jdkr	d}t�|j�|��S)N�public_keys��public-keys)�versionr�normalize_pubkey_data�metadatar+)r-r.rrr�get_public_ssh_keys_s
zSourceMixin.get_public_ssh_keyscCsVd}zd|}|dkrd|}t�|�}|r|d}W|SW|Stjy*Y|Sw)NzLABEL=%s�swapzTYPE=%sr)r�find_devs_withr�ProcessExecutionError)r-r.r1�criteria�dev_entriesrrr�_os_name_to_devicees

���zSourceMixin._os_name_to_devicecCsV|sdS|�d�s
d|}tj�|�r|S|�tj�|��}|r)t�d||�|SdS)N�/z/dev/%szRemapped device name %s => %s)�
startswith�os�path�exists�
_remap_device�basename�LOG�debug)r-r1�remappedrrr�_validate_device_namers
z!SourceMixin._validate_device_namecCs�|sdS|g}|dkr|�dd�|dkr|�d�d}t�d|�|D]}|�|�}|�|�}|r4nq$|sPt�d|�|D]}|�|�}|�|�}|rOnq?|sTdSt�d||�|S)N�rootr�amiz(Using ec2 style lookup to find device %sz.Using openstack style lookup to find device %szMapped %s to device %s)�insert�appendrGrHr2rJr?)r-r.�namesr1�nrrr�device_name_to_device�s6


�

�z!SourceMixin.device_name_to_deviceN)r&r'r(r2r9r?rJrQrrrrr)Us	
r)c@sheZdZdd�Zejdd��Zejddd��Zejdd	��Zejd
d��Z	dd
�Z
ddd�Zdd�ZdS)�
BaseReadercCs
||_dSr)�	base_path�r-rSrrr�__init__�s
zBaseReader.__init__cG�dSrr�r-�base�add_onsrrr�
_path_join��zBaseReader._path_joinFcCrVrr�r-rC�decoderrr�
_path_read�r[zBaseReader._path_readcCrVrr�r-rrr�_fetch_available_versions�r[z$BaseReader._fetch_available_versionscCrVrrr_rrr�_read_ec2_metadata�r[zBaseReader._read_ec2_metadatac
Cs�z|��}Wnty"}zt�d|j|�g}WYd}~nd}~wwdd�ttt��D�}t}|D]	}||vr9q2|}t�d||�|S)Nz4Unable to read openstack versions from %s due to: %scSsg|]}|�qSrr)�.0�vrrr�
<listcomp>�sz4BaseReader._find_working_version.<locals>.<listcomp>zSelected version '%s' from %s)	r`�	ExceptionrGrHrS�reversed�list�OS_VERSIONS�	OS_LATEST)r-�versions_available�e�	supported�selected_version�potential_versionrrr�_find_working_version�s0���
�z BaseReader._find_working_versioncCs^|�dd��d�}|�d�}dd�|D�}|std|��|j|jdg|�R�}|j||d�S)	N�content_pathrr@cSsg|]}t|�r|�qSr)�len)rb�prrrrd�sz1BaseReader._read_content_path.<locals>.<listcomp>z!Item %s has no valid content path�	openstack�r])r+�lstrip�splitrrZrSr^)r-�itemr]rC�path_pieces�valid_piecesrrr�_read_content_path�s
zBaseReader._read_content_pathcs�tjtjtttfd����fdd�}ddd�}|����}|��D]o\}\}}}��	�j
|�}d}d}z��|�}Wn#ty]}	z|sLt
�d	||	�nt
�d
||	�WYd}	~	nd}	~	wwd}|rj|sjtd|��|r�|r�z||�}Wnty�}	z	td
||	f�|	�d}	~	ww|r�|||<q!|d}
d|
vr�|
d}z	t�|�|
d<Wnttfy�}	ztd|	�|	�d}	~	wwi}|
�dg�}
|
D])}d|vr�q�|d}z	��|�||<Wq�ty�}	z	td||	f�|	�d}	~	ww||d<|
�dd�}|�rz
�j|dd�}||d<Wnt�y}	ztd|	�|	�d}	~	wwz
|
dd|d<Wn
t�y3Ynw���|d<tD] \}}}|�rO||
v�rOtd|��||
v�r[|
�|�|
|<�q<|S)z�Reads a version 2 formatted location.

        Return a dict with metadata, userdata, ec2-metadata, dsmode,
        network_config, files and version (2).

        If not a valid location, raise a NonReadable exception.
        )�
root_typescs�i}��d|d�dtjf|d<��d|d�ddd�f|d	<��d|d
�d�f|d<��d|d�d�f|d
<��d|d�d�f|d<|S)Nrszmeta_data.jsonTr8�	user_dataFcSr
rrr
rrrr�rz7BaseReader.read_v2.<locals>.datafiles.<locals>.<lambda>�userdatazvendor_data.json�
vendordatazvendor_data2.json�vendordata2znetwork_data.json�networkdata)rZr�	load_json)r6�files��load_json_anytyper-rr�	datafiles�s,�	����z%BaseReader.read_v2.<locals>.datafilesr�)r}r6NFz*Failed reading optional path %s due to: %sz+Failed reading mandatory path %s due to: %sTzMissing mandatory path: %s�Failed to process path %s: %sr8�random_seedz.Badly formatted metadata random_seed entry: %sr�rCz#Failed to read provided file %s: %sr	rtz(Failed to read network configuration: %s�meta�dsmodezec2-metadatazNo '%s' entry in metadata)�	functools�partialrr��dictrg�strror,rZrSr^�IOErrorrGrHr%rer�base64�	b64decode�
ValueError�	TypeErrorr+rz�KeyErrorra�
KEY_COPIES)r-r��results�datar.rC�required�
translator�foundrkr8r�r��metadata_filesrw�net_item�content�
target_key�
source_key�is_requiredrr�r�read_v2�s�	�!�����

���������
��������	�
�zBaseReader.read_v2N�F)
r&r'r(rU�abc�abstractmethodrZr^r`rarorzr�rrrrrR�s



	rR)�	metaclasscsFeZdZ�fdd�Zdd�Zddd�Zdd	�Zd
d�Zdd
�Z�Z	S)�ConfigDriveReadercstt|��|�d|_dSr)�superr�rU�	_versionsrT��	__class__rrrUfs
zConfigDriveReader.__init__cGs|gt|�}tjj|�Sr)rgrBrC�join)r-rXrY�
componentsrrrrZjszConfigDriveReader._path_joinFcCs|rt�|�St�|�Sr)r�load_text_file�load_binary_filer\rrrr^ns

���zConfigDriveReader._path_readcs@|jdur|�|jd���fdd�t���D�}t|�|_|jS)Nrscs$g|]}tj�tj����r|�qSr)rBrC�isdirr��rb�d�rCrrrdxs��z?ConfigDriveReader._fetch_available_versions.<locals>.<listcomp>)r�rZrSrB�listdir�sorted)r-r�rr�rr`us

�
z+ConfigDriveReader._fetch_available_versionsc
Cs`|�|jddd�}tj�|�siSz	t�|�|��WSty/}z	t	d||f�|�d}~ww)Nrrzmeta-data.jsonr�)
rZrSrBrCrDrr�r^rer)r-rCrkrrrra�s
�
����z$ConfigDriveReader._read_ec2_metadatacCszi}t��D]}|�|j|�}tj�|�r|||<q|s#td|j��i}t��D]O\}\}}}||vrq||}z|�	|�}Wnt
yR}	ztd|�|	�d}	~	wwz||�||<Wq)typ}	z	td||	f�|	�d}	~	wwt
�|�||<q)|d}
|d}|�d|
�}
|
r�|
��}dd	�|D�|d<d
|vr�|d
|d
<d|d�}
d
|vr�|d
|
d
<|�dd�|
d<i|
d<|
S)z�Reads a version 1 formatted location.

        Return a dict with metadata, userdata, dsmode, files and version (1).

        If not a valid path, raise a NonReadable exception.
        z%s: no files foundzFailed to read: %sNr�rrr5cSs"g|]
}t|�r|�d�s|�qS)�#)rqrA)rb�linerrrrd�s���z-ConfigDriveReader.read_v1.<locals>.<listcomp>rr4)r6r8r�z	user-datarr}r�)�FILES_V1�keysrZrSrBrCrDr%r,r^r�rre�copy�deepcopyr+�
splitlines)r-r�r.rC�md�keyr��default�contentsrk�keydatar�linesr�rrr�read_v1�s^���
����
��zConfigDriveReader.read_v1r�)
r&r'r(rUrZr^r`rar��
__classcell__rrr�rr�es
r�cs@eZdZd�fdd�	Zdd�Zddd	�Zd
d�Zdd
�Z�ZS)�MetadataReaderN�cs4tt|��|�||_t|�|_t|�|_d|_dSr)	r�r�rU�ssl_details�float�timeout�int�retriesr�)r-�base_urlr�r�r�r�rrrU�s



zMetadataReader.__init__cCsb|jdur|jSg}|�|jd�}|j|dd�}|��D]}|��}|s%q|�|�q||_|jS)NrsTrt)r�rZrSr^r��striprN)r-r��version_pathr�r�rrrr`�s
z(MetadataReader._fetch_available_versionsFcCs6dd�}tj||j|j|j|d�}|r|j��S|jS)Nc	SsFzt|j�}|dkr|dvrWdSWdSWdSttfy"YdSw)Ni�)i�i�i�i�i�i�FT)r��coder�r�)�causer�rrr�should_retry_cb�s
����z2MetadataReader._path_read.<locals>.should_retry_cb)r�r�r��exception_cb)r�readurlr�r�r�r�r])r-rCr]r��responserrrr^�s
�
zMetadataReader._path_readcGstj|g|�R�Sr)r�combine_urlrWrrrrZszMetadataReader._path_joincCstj|j|j|jd�S)N)r�r�r�)r�get_instance_metadatar�r�r�r_rrrra	s
�z!MetadataReader._read_ec2_metadata)Nr�r�r�)	r&r'r(rUr`r^rZrar�rrr�rr��s
r�c 
s�|durdSgd�gd�gd�d��|�dg�}|�dg�}|�dg�}g}i�d	}d
}g}|D�]�g}	t�fdd����D��}
d
�vrL�d
|
d
<d}��d�r`��d���}|��d<|
�d
�|�d�dd�}�fdd�|D�D]�}
t�fdd�|
��D��}�fdd�|
�dg�D�}|r�|�d|i�|
ddkr�|�ddi�nH|
ddkr�|�ddi�n:|
ddvr�|�d|
di�n*|
ddvr�|�d|
�d�d��n|
dd vr�|
�d!d"i�|�d#|
�d�d��d$d�|
�dg�D�}|
�dg�D]}|�d�d%k�r�q|d&|v�r�q|�|d&��q|�r(||d'<|
dd(v�r6|
�d!d)i�|
dd*k�rAd)|d*<|
dd+k�rLd)|d+<|	�|�qw|
�d,|	i��dd-v�r�i}|�rl|
�d.|i����D]$\}}|d/k�r{�qp|�d0��r�d1�|�d2d3�d4�}|�||i��qp||}|d37}|�|
d5d6t	�
�d/�f�|
�||d7��||d
<nZ�dd8v�r�d9�d:�d;f}|
�|�d;�d<d=��|�|
d:d6�d:f�|�|
d
d>�d;�d:f�|��d<|d?��n�dtv�r
t�
d@�d�|
�dA|dB��|�|
�|�|d<q0dCd�|D�}|�s+|�r�|du�r4t��}���D]\}}|�d
��rD�q8|�dD�|v�rT||dD|d
<�q8|D]/}|�d.�}|�shtdE|��||v�r�t��t��}||v�r�tdF|��|||d
<�qX|D]'\}
}�}t|ttf��r���fdGd�|D�|
|<�q���|d
|
|<�q�t��}|�r�|D]}
|
d
|v�r�||
d
|
d.<dH|
d<�q�|D]}t	�
|�}
|
�ddIi�|�|
��q�d3|dJ�S)Ka*Return a dictionary of network_config by parsing provided
       OpenStack ConfigDrive NetworkData json format

    OpenStack network_data.json provides a 3 element dictionary
      - "links" (links are network devices, physical or virtual)
      - "networks" (networks are ip network configurations for one or more
                    links)
      -  services (non-ip services, like dns)

    networks and links are combined via network items referencing specific
    links via a 'link_id' which maps to a links 'id' field.

    To convert this format to network_config yaml, we first iterate over the
    links and then walk the network list to determine if any of the networks
    utilize the current link; if so we generate a subnet entry for the device

    We also need to map network_data.json fields to network_config fields. For
    example, the network_data links 'id' field is equivalent to network_config
    'name' field for devices.  We apply more of this mapping to the various
    link types that we encounter.

    There are additional fields that are populated in the network_data.json
    from OpenStack that are not relevant to network_config yaml, so we
    enumerate a dictionary of valid keys for network_yaml and apply filtering
    to drop these superfluous keys from the network_config yaml.
    N)r.�type�mac_address�subnets�params�mtu)
r��address�netmask�	broadcast�metric�gateway�pointopoint�scope�dns_nameservers�
dns_search)�network�destinationr�r�r�)�physical�subnet�routes�links�networks�serviceszbond%drc3�(�|]\}}|�dvr||fVqdS)r�Nr�rb�krc��
valid_keysrr�	<genexpr>T���z#convert_net_json.<locals>.<genexpr>r.�ethernet_mac_address�idr�)r.�macr�r�cs g|]}|d�dkr|�qS)�linkr�r)rbrP)r�rrrdjs z$convert_net_json.<locals>.<listcomp>c3r�)r�Nrr�r�rrr�kr�cs&g|]}t�fdd�|��D���qS)c3r�)r�Nrr�r�rrr�rs���z.convert_net_json.<locals>.<listcomp>.<genexpr>)r�r,)rb�router�rrrdqs���r��	ipv4_dhcp�dhcp4�	ipv6_dhcp�dhcp6)�
ipv6_slaaczipv6_dhcpv6-stateless�ipv6_dhcpv6-stateful)�ipv4�staticr��
ip_address)r�r�)�ipv6�static6z	accept-raFrcSs4g|]}|�dg�D]
}|�d�dkr
|d�q
qS)r�r��dnsr��r+)rbr��servicerrrrd�s
��rr�r�)r�r�Tr�rr�)�bondr��
bond_linksrzbond-{}�bond_r4����bond_interfacesz%s)r�r.)�vlanz%s.%s�	vlan_link�vlan_id�vlan_mac_address)r.r
r�z%%s.%s)r�r.z9Unknown network_data link type (%s); treating as physicalr�)r�r�cSs&g|]}|�d�dkrd|vr|�qS)r�r�r.rr�rrrrd�s r�z#No mac_address or name entry for %sz"Unable to find a system nic for %scsg|]
}��|d�qS)r.r)rb�target)�fmt�link_id_inforrrds��
infiniband�
nameserver)r6�config)r+r�r,�lower�updaterNrA�formatrvr�r��KNOWN_PHYSICAL_TYPESrG�warningr�get_interfaces_by_macr�r�udevadm_settle�
isinstancerg�tuple�get_ib_hwaddrs_by_interface) �network_json�
known_macsr�r�r��link_updates�
bond_name_fmt�bond_numberrr��cfg�
link_mac_addr�curinfor�r�r�r�rr�r�rc�translated_key�	link_namer.�
need_names�_link_id�infor�r�r��targets�ib_known_hwaddrsr)rr�rr�r�convert_net_jsons@�
�
��

�	����

�
���
����
�
�


��

r.)NN))r�r�r�r��loggingrB�	cloudinitrrrrr�cloudinit.sourcesr�cloudinit.sources.helpersr�	getLoggerr&rGr�r�r�ri�	OS_FOLSOM�
OS_GRIZZLY�	OS_HAVANA�
OS_LIBERTY�
OS_NEWTON_ONE�
OS_NEWTON_TWO�OS_OCATA�OS_ROCKYrhrr�r%r)�ABCMetarRr�r�r.rrrr�<module>sR

��LEs:
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