CasperSecurity

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

o

쑛h�$�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZdZ
dZe�e�ZGdd�dejd�ZGd	d
�d
e�ZegZddd�Zd
d�Zddd�Zdd�Zdd�Zdd�Zddd�ZdS)�N)�util)�get_devicelist�read_sys_net_safez#/run/initramfs/open-iscsi.interface�disabledc@s8eZdZdZejdefdd��Zejdefdd��Z	dS)�InitramfsNetworkConfigSourcezBABC for net config sources that read config written by initramfses�returncC�dS)zAIs this initramfs config source applicable to the current system?N���selfr	r	�7/usr/lib/python3/dist-packages/cloudinit/net/cmdline.py�
is_applicable�z*InitramfsNetworkConfigSource.is_applicablecCr)z;Render a v1 network config from the initramfs configurationNr	r
r	r	r�
render_config"rz*InitramfsNetworkConfigSource.render_configN)
�__name__�
__module__�__qualname__�__doc__�abc�abstractmethod�boolr
�dictrr	r	r	rrsr)�	metaclassc@s6eZdZdZd
dd�Zdefdd�Zdefdd	�ZdS)�KlibcNetworkConfigSourcez�InitramfsNetworkConfigSource for klibc initramfs (i.e. Debian/Ubuntu)

    Has three parameters, but they are intended to make testing simpler, _not_
    for use in production code.  (This is indicated by the prepended
    underscores.)
    NcCst||_||_||_|jdurt�|_|jdurt��|_|jdur6i|_t�D]}t|d�}|r5||j|<q'dSdS)N�address)�_files�
_mac_addrs�_cmdline�_get_klibc_net_cfg_filesr�get_cmdlinerr)rrrr�k�mac_addrr	r	r�__init__/s 






��z!KlibcNetworkConfigSource.__init__rcCs<|jrt�|j�D]
}|�d�rdSq	tj�t�rdSdS)aD
        Return whether this system has klibc initramfs network config or not

        Will return True if:
            (a) klibc files exist in /run, AND
            (b) either:
                (i) ip= or ip6= are on the kernel cmdline, OR
                (ii) an open-iscsi interface file is present in the system
        )zip=zip6=TF)	r�shlex�splitr�
startswith�os�path�exists�_OPEN_ISCSI_INTERFACE_FILE)r�itemr	r	rr
As

�z&KlibcNetworkConfigSource.is_applicablecCst|j|jd�S)N)�files�	mac_addrs)�config_from_klibc_net_cfgrrr
r	r	rrTs�z&KlibcNetworkConfigSource.render_config)NNN)	rrrrr"rr
rrr	r	r	rr's

rc
Cs�|duri}t�|�}zd|vr|dn|d}Wnty*}ztd�|�d}~ww|�d|�d��}|s@|�d�r>d}nd	}|d
vrFd	}|dvrPtd|��d
|gd�}||vr`|||d<dD]�}|d|vrkqb|�|d|�}|d	kryd}|dd�}	|dkr�||d|	d<dD]}
||
|vr�|||
|	|
��<q�g}dD]}|�||�}
|
r�t|
�d��r�|�|||�q�|r�||	d<|�d�}|r�d|vr�|�	d�|	d<n|�	�|	d<|d�|	�qb||fS)aConvert a klibc written shell content file to a 'config' entry
    When ip= is seen on the kernel command line in debian initramfs
    and networking is brought up, ipconfig will populate
    /run/net-<name>.cfg.

    The files are shell style syntax, and examples are in the tests
    provided here.  There is no good documentation on this unfortunately.

    DEVICE=<name> is expected/required and PROTO should indicate if
    this is 'none' (static) or 'dhcp' or 'dhcp6' (LP: #1621507) or 'static'
    or 'off' (LP: 2065787). Note that IPV6PROTO is also written to address
    the possibility of both ipv4 and ipv6 getting addresses.

    Full syntax is documented at:
    https://git.kernel.org/pub/scm/libs/klibc/klibc.git/plain/usr/kinit/ipconfig/README.ipconfig
    N�DEVICE�DEVICE6z&no 'DEVICE' or 'DEVICE6' entry in data�PROTO�	IPV6PROTO�filename�dhcp�none)�static�off)r4r3�dhcp6zUnexpected value for PROTO: %s�physical)�type�name�subnets�mac_address)�IPV4�IPV6�ADDRr5�manual)r9�controlr)�NETMASK�	BROADCAST�GATEWAY)�DNS0�DNS1z:.0�dns_nameservers�DOMAINSEARCH�,�
dns_searchr;)
r�load_shell_content�KeyError�
ValueError�get�lower�len�strip�appendr$)�contentr,�datar:�e�proto�iface�pre�	cur_proto�subnet�key�dns�nskey�ns�searchr	r	r�_klibc_to_config_entry^sh

��
�
��
r`cCst�d�t�d�S)Nz/run/net-*.confz/run/net6-*.conf)�globr	r	r	rr�src	Cs�|durt�}g}i}|D]Y}tt�|�|d�\}}||vrY||d}|�d�|�d�krFtdj|d�||d�|�d�|�d�d���|d�|d�||d�	|�q
|g|d	�||<|�	|�q
|d
d�S)N)r,�entryr<zedevice '{name}' was defined multiple times ({files}) but had differing mac addresses: {old} -> {new}.� r+)r:r+�old�newr;)r+rb�)�config�version)
rr`r�load_text_filerNrM�format�join�extendrR)r+r,�entries�names�cfg_filer:rb�prevr	r	rr-�s2

���	
r-cCs(tD]}|�}|��sq|��SdS)a
    Return v1 network config for initramfs-configured networking (or None)

    This will consider each _INITRAMFS_CONFIG_SOURCES entry in turn, and return
    v1 network configuration for the first one that is applicable.  If none are
    applicable, return None.
    N)�_INITRAMFS_CONFIG_SOURCESr
r)�src_cls�
cfg_sourcer	r	r�read_initramfs_config�srtc	Cs�t�|��@}d}z4ztjd|d�}|��WW|r|��Wd�Sty<|YW|r4|��Wd�Sw|rD|��ww1sHwYdS)N�rb)�mode�fileobj)�io�BytesIO�gzip�GzipFile�read�close�IOError)�blob�iobuf�gzfpr	r	r�_decomp_gzip�s$
��
��r�c	Cs:z
t�|�}Wt|�Sttfyt�d|�YdSw)z�Decode a string base64 encoding, if gzipped, uncompress as well

    :return: decompressed unencoded string of the data or empty string on
       unencoded data.
    zaExpected base64 encoded kernel command line parameter network-config. Ignoring network-config=%s.�)�base64�	b64decode�	TypeErrorrM�LOG�errorr�)rTrr	r	r�_b64dgzs	���r�cCsj|durt��}d|vr3d}|��D]}|�d�r!|�dd�d}q|r3|tkr,ddiSt�t|��SdS)Nznetwork-config=�=rfrgr)rrr$r%�&KERNEL_CMDLINE_NETWORK_CONFIG_DISABLED�	load_yamlr�)�cmdline�data64�tokr	r	r�read_kernel_cmdline_configs
�r�)N)NN)rr�rarzrx�loggingr&r#�	cloudinitr�
cloudinit.netrrr)r��	getLoggerrr��ABCMetarrrqr`rr-rtr�r�r�r	r	r	r�<module>s.
4
`

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