CasperSecurity

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

o

쑛h�T�@s�ddlZddlmZmZmZmZddlmZmZddl	m
Z
mZddlm
Z
e�e�Zdeeeefdeeeeffdd	�Zdedefd
d�ZGdd
�d
�ZGdd�de
j�Zddd�ZdS)�N)�Any�Dict�List�Optional)�subp�util)�renderer�should_add_gateway_onlink_flag)�NetworkState�data�returncCs&i}|��D]
\}}t|�||<q|S)z�
    Normalize a dictionary of lists.
    - Assumes top-level keys map to lists.
    - Each list and any nested dicts/lists will be recursively normalized.
    )�items�_normalize_value)r�
normalized�key�value�r�8/usr/lib/python3/dist-packages/cloudinit/net/networkd.py�	normalizesrcCs�t|t�ri}t|�D]
}t||�||<q|St|t�rHg}|D]}t|ttf�r/t|�}n|}|�|�q!zt|�WStyG|YSw|S)z�
    Recursively normalize a dictionary or list:
    - Dicts: keys sorted, values normalized
    - Lists: items normalized and sorted (if comparable)
    )�
isinstance�dict�sortedr�list�append�	TypeError)rrr�normalized_items�item�normalized_itemrrrrs$



�rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�	CfgParsercCs ggggggigggd�
|_dS)N)
�Match�Link�Network�DHCPv4�DHCPv6�Address�Route�NetDev�VLAN�Bond)�	conf_dict)�selfrrr�__init__9s�zCfgParser.__init__cCs^|j��D]'}||kr,|j|�|�d|���tt�|j|��|j|<|j|��qdS)N�=�r)�keysrrr�fromkeys�sort)r*�secr�val�krrr�update_sectionGs��zCfgParser.update_sectioncCs�|j��D]=}||krB||j|vrg|j||<|j||�|�d|���tt�|j||��|j||<|j||��qdS)z�
        For each route section we use rid as a key, this allows us to isolate
        this route from others on subsequent calls.
        r,Nr-)r*r1�ridrr2r3rrr�update_route_sectionNs���zCfgParser.update_route_sectioncCs�d}t|j�|_t|j���D]`\}}|sq|dkr-t|�D]
}|d|�d|�d�7}qq|dkrUt|�D]}|d|�d�7}t||�D]	}||�d�7}qE|d7}q5q|d|�d�7}t|�D]	}||�d�7}qa|d7}q|S)N�r$�[z]
�

r%�
)rr)rr
)r*�contentsr3�v�e�nrrr�get_final_conf^s*�
�
zCfgParser.get_final_confN)�__name__�
__module__�__qualname__r+r4r6r?rrrrr8s
rc@s�eZdZdZd#dd�Zdefdd�Zdefdd	�Zdefd
d�Zdefdd
�Z	defdd�Z
dedefdd�Zdefdd�Z
d$dd�Z		d%dedeeddfdd�Zdefdd�Zdedefdd �Zdedefd!d"�ZdS)&�Rendererz�
    Renders network information in /etc/systemd/network

    This Renderer is currently experimental and doesn't support all the
    use cases supported by the other renderers yet.
    NcCs(|si}|�dd�|_|�dd�|_dS)N�resolve_conf_fnz/etc/systemd/resolved.conf�network_conf_dirz/etc/systemd/network/)�getrDrE)r*�configrrrr+�s�
�zRenderer.__init__�cfgcCsfd}ddd�}|ddkrd|d<|sdS|��D]\}}||vr.||r.|�||||�q|d	S)
Nr�Name�Driver)�name�driver�type�physical�
MACAddress�mac_addressrK)r
r4)r*�ifacerHr1�
match_dictr3r<rrr�generate_match_section�s��zRenderer.generate_match_sectioncCszd}|sdS|�d�r|�|d|d�|ddkr(|�d�r(|�|d|d�d|vr9|dr;|�|d	d
�dSdSdS)Nr �mtu�MTUBytesrMrNrPrO�optional�RequiredForOnline�no)rFr4)r*rQrHr1rrr�generate_link_section�s
�zRenderer.generate_link_sectionc	Csnd}dddd�}d}d|vrd|d��}|��D]\}}||vr"q|d	kr*||7}|�|||||�qd
S)zy
        Parse a route and use rid as a key in order to isolate the route from
        others in the route dict.
        r%�Gateway�Destination�Metric)�gateway�network�metricr7�prefix�/r^N)r
r6)	r*r5�confrHr1�
route_cfg_mapr`r3r<rrr�parse_routes�s��zRenderer.parse_routesc	Cs�d}d}d}|�dg�D]�}|d}|dvr$|dkrd}n|dkr#d	}n|d
kr5|dkr/d}n|dkr5d	}d|vrR|drR|dD]}|�d|��||�|d
}qAd|vr�|d}	d|vrg|	d|d��7}	ddddd�}
|��D]O\}}|dkr�|�d|
||	�qr|dkr�|�dd|��|
||�t||	�r�t�d||	�|�dd|��dd	�|d
}qr|dvr�|�||
|d�|��qrq|�|d|�t	|�d�t
�r�d}
|dr�d	}
|�|d|
�|S) NrXr!r�subnetsrM>�dhcp�dhcp4�ipv4�ipv6�yes�dhcp6�routes�r��addressr`rar$rZ�DNS�Domains)ror]�dns_nameservers�
dns_searchr]r%�azGGateway %s is not contained within subnet %s, adding GatewayOnLink flag�
GatewayOnLink>rsrr� �DHCPz	accept-ra�IPv6AcceptRA)rFrdr
r4r6r	�LOG�debug�joinr�bool)r*rQrHrfr1r5r=�t�i�addr�subnet_cfg_mapr3r<r2rrr�
parse_subnets�sp�
��
��
�zRenderer.parse_subnetsc	Cs�dD]B}||vr	qt||���}z
t�|�}|rdnd}Wnty3|dkr1t�d|�d}Ynw|dkr;d}nd}|�|d	|�qdS)
N)�dhcp4domain�dhcp6domainrjrX�routezInvalid dhcp4domain value - %sr�r"r#�
UseDomains)�str�casefoldr�translate_bool�
ValueErrorry�warningr4)r*�drHr�ret�sectionrrr�dhcp_domains$
���zRenderer.dhcp_domain�nscCs�d}|�d�}|s|jdkr|j|jd�}n	|s|jdkrdS|�d�r0|�|dd�|d��|�d	�rC|�|d
d�|d	��dSdS)Nr!�dnsrn)�search�nameservers�r�rqrvr�rp)rF�version�dns_searchdomainsrrr4r{)r*rQrHr�r1r�rrr�	parse_dnss
�

�zRenderer.parse_dnsc	Cs�ddddd�}|dkr|�ddd	d
dd��d
|�d�|vrH|dd|��fvrJ|d
|�d�}|��D]\}}||vrG|�d|��|||�q3dSdSdS)Nzuse-dns�use-domainszuse-hostnamezuse-ntp)�UseDNSr��UseHostname�UseNTP�4z
send-hostname�hostnamezroute-metriczuse-mtuz
use-routes)�SendHostname�Hostname�RouteMetric�UseMTU�	UseRoutesrf�
-overridesrj�ipv�DHCPv)�updater
r4)	r*rH�devicerfr��dhcp_config_maps�dhcp_overridesr3r<rrr�parse_dhcp_overrides)s2���
���zRenderer.parse_dhcp_overrides�.networkcCsVd}t�d|�|�d|�|��}|�d�r|dd�}t�||�t�|||�dS)Nzsystemd-networkz Setting Networking Config for %sz10-cloud-init-r9���)ryrz�endswithr�
write_file�chownbyname)r*�linkrb�nwk_dir�ext�net_fn_owner�net_fnrrr�create_network_fileEs
zRenderer.create_network_file�
network_state�	templatesrc
Cs�|j}|rt�|�|}t�|�|�|�}|�di�}|�di�}|��D]\}}	|�||	|�q&|��D]
\}}	|j||	|dd�q6|��D]
\}}	|j||	|dd�qHdS)N�vlan_netdev�bond_netdevz.netdev)r�)	rEr�target_pathr�
ensure_dir�_render_content�popr
r�)
r*r�r��target�network_dirr^r�r�r3r<rrr�render_network_statePs

�zRenderer.render_network_statecCs^i}i}i}d|jvr|�|�}|d}|d}||d<d|jvr2|�|�}|d}|d}||d<|��D]�}	t�}
|	d}|�|�}|rM|
�dd	|�|	d
sc|�d�rc|d�|�}
|
rc|
|	d
<|�|�}|rq|
�dd|�|	d
s�|�d�r�|d�|�}
|
r�|
|	d
<|�|	|
�}|�|	|
�|�	|	|
�}|�
|	|
|�d
}|��D]}|�d|��||
�|d}q�|j
dk�r#|	d}|jd��D]\}}d|vr�|�d�|kr�|}nq�||jdv�r#|jd|}|�||
�dD]/}d|�d�|v�rd|�d|�d�i�v�r|�d|�d|�d�}t|��|�|
|||�q�|�||
��i�q6|S)N�vlansr��	vlan_link�bondsr��	bond_linkrKr!r'rP�
macaddressr(r�crnr��	ethernetszset-name)r��6rf�domainr�r�z has both dhcpzdomain and dhcpz*-overrides.use-domains configured. Use one)rG�render_vlans�render_bonds�iter_interfacesrrFr4rSrYr�r��iter_routesrdr�r
r��RuntimeErrorr�r�r?)r*r��ret_dictr�r��	vlan_dictr��	bond_dictr�rQrH�
iface_name�vlan_link_name�mac�bond_link_namer�rfr5r�rK�dev_name�dev_cfgr�r��	exceptionrrrr�is|







����zRenderer._render_contentcCsi}i}i|d<|j�di�}|��D]e\}}|�d�}|�d�}|dus)|dur0t�d|�q|||<t�}	|	�dd|�|	�ddd	�|�d
�}
|
rS|	�dd|
�|�d�}
|
rk|
��}
|	�dd|
�|
|d|<|	�d
d|�|	��||<q||d�}|S)Nr�r��idr�z)Skipping VLAN %s - missing 'id' or 'link'r&rI�Kind�vlanrTrUrOr'�Id)r�r�)	rGrFr
ryr�rr4�lowerr?)r*r��vlan_link_info�vlan_ndev_configsr��	vlan_name�vlan_cfg�vlan_id�parentrHr2r�rrrr��s<

�

�zRenderer.render_vlanscs�i}i}d}i|d<|j�di�}|��D�]>\�}|�d�}|s(t�d��q|��fdd�|D��t�}|�dd	��|�dd
d�|�d�}	|	rS|�dd
|	�|�d�}	|	rk|	��}	|�dd|	�|	|d�<|�di�}
d|
vr~|�|d|
d�d|
vr�|�|d|
d�d��d|
vr�|�|d|
d�d��d|
vr�|�|d|
d�d��d|
vr�|�|d|
d�d��d|
vr�|
d}t	|t
�r�|g}d�|�}|�|d|�d|
vr�|�|d|
d�d |
vr�|�|d!|
d �d"|
v�r|�|d#|
d"�d$|
v�r|�|d%|
d$�d&|
v�r|�|d'|
d&�d(|
v�r,|�|d)|
d(�d*|
v�r<|�|d+t
|
d*��d,|
v�rN|�|d-t
|
d,����|��|�<q||d.�}
|
S)/Nr(r�r��
interfacesz'Skipping bond %s - missing 'interfaces'csi|]}|��qSrr)�.0rQ��	bond_namerr�
<dictcomp>sz)Renderer.render_bonds.<locals>.<dictcomp>r&rIr��bondrTrUrO�
parameters�mode�Modezmii-monitor-interval�
MIIMonitorSec�ms�updelay�
UpDelaySec�	downdelay�DownDelaySeczarp-interval�ARPIntervalSecz
arp-ip-targetrv�ARPIPTargetszarp-validate�ARPValidatezarp-all-targets�
ARPAllTargetszprimary-reselect�PrimaryReselectPolicyz	lacp-rate�LACPTransmitRateztransmit-hash-policy�TransmitHashPolicyz	ad-select�AdSelectz	min-links�MinLinkszall-slaves-active�AllSlavesActive)r�r�)
rGrFr
ryr�r�rr4r�rr�r{r?)r*r��bond_link_info�bond_ndev_configsr�r��bond_cfgr�rHr2�params�targets�ip_listr�rr�rr��s�
�

����


�
�
�

�
�

�
��zRenderer.render_bonds�N)r�)NN)r@rArB�__doc__r+rrSrYrdr�r�r
r�r�r�rrr�r�r�r�rrrrrCxs.

B
���
�b*rCcCs2ddg}ddg}|D]}tj||d�sdSq
dS)N�ip�	systemctlz	/usr/sbinz/bin)r�FT)r�which)r��expectedr��prrr�	availablens�r	r)�logging�typingrrrr�	cloudinitrr�
cloudinit.netrr	�cloudinit.net.network_stater
�	getLoggerr@ryr�rrrrCr	rrrr�<module>s
*@y
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