403Webshell
Server IP : 23.254.227.96  /  Your IP : 216.73.216.7
Web Server : Apache/2.4.62 (Unix) OpenSSL/1.1.1k
System : Linux hwsrv-1277026.hostwindsdns.com 4.18.0-477.13.1.el8_8.x86_64 #1 SMP Tue May 30 14:53:41 EDT 2023 x86_64
User : viralblo ( 1001)
PHP Version : 8.1.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3.6/site-packages/cloudinit/net/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3.6/site-packages/cloudinit/net/__pycache__/__init__.cpython-36.pyc
3

��b��@sddlZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
mZddlm
Z
ddlmZmZeje�ZdZdZdd	d
ddd
dddddgZejd�fdd�Zdd�Zd�dd�Zd�dd�Zd�dd�Zdd �Zd!d"�Zd#d$�Zd%d&�Z d'd(�Z!d)d*�Z"d+d,�Z#ej$dd-�e%d.�d/d0��Z&ej$dd-�e'd.�d1d2��Z(e)e%d3�d4d5�Z*d�d6d7�Z+d8d9�Z,d:d;�Z-d�d<d=�Z.d�d>d?�Z/d�d@dA�Z0dBdC�Z1dDdE�Z2dFdG�Z3dHdI�Z4dJdK�Z5GdLdM�dMe6�Z7dNdO�Z8d�dPdQ�Z9d�dRdS�Z:d�dTdU�Z;d�dVdW�Z<d�dXdY�Z=dZd[�Z>d�d]d^�Z?d�d`da�Z@d�dbdc�ZAd�ddde�ZBdfdg�ZCdhdi�ZDd�eEd.�djdk�ZFd�eE�d.�dldm�ZGd�eE�d.�dndo�ZHd�eE�d.�dpdq�ZId�eEd.�drds�ZJd�e'd.�dtdu�ZKdvdw�ZLee)efe%dx�dydz�ZMe)e%d{�d|d}�ZNe)e%d{�d~d�ZOGd�d��d�eP�ZQGd�d��d�eR�ZSdS)��N)�Any�Dict)�subp�util)�ipv4_mask_to_net_prefix)�UrlError�readurlz/sys/class/net/Zeth0z	ovs-vsctlz--formatZcsvz
--no-headingsz	--timeoutZ10z	--columns�name�find�	interfacez
type=internalz([0-9]+)cCsdd�tj||�D�S)aDSorting for Humans: natural sort order. Can be use as the key to sort
    functions.
    This will sort ['eth0', 'ens3', 'ens10', 'ens12', 'ens8', 'ens0'] as
    ['ens0', 'ens3', 'ens8', 'ens10', 'ens12', 'eth0'] instead of the simple
    python way which will produce ['ens0', 'ens10', 'ens12', 'ens3', 'ens8',
    'eth0'].cSs$g|]}|j�rt|�n|j��qS�)�isdigit�int�lower)�.0�textrr�/usr/lib/python3.6/__init__.py�
<listcomp>.sz$natural_sort_key.<locals>.<listcomp>)�re�split)�sZ_nsrerrr�natural_sort_key&srcCstS)z3Simple function to return the global SYS_CLASS_NET.)�
SYS_CLASS_NETrrrr�get_sys_class_path3sr�cCst�|d|S)N�/)r)�devname�pathrrr�sys_dev_path8src
Cs�t||�}ytj|�}Wnpttfk
r�}zPt|dd�}	|	tjtjfkrZ|dk	rZ||�S|	tj	fkrv|dk	rv||�S�WYdd}~XnX|j
�}|dkr�|Sy||Stk
r�}z&|dk	r�||�Stj
d||��WYdd}~XnXdS)N�errnoz5Found unexpected (not translatable) value '%s' in '%s)rrZ	load_file�OSError�IOError�getattrr�ENOENT�ENOTDIRZEINVAL�strip�KeyError�LOG�debug)
rr�	translate�	on_enoent�on_keyerror�	on_einvalZdev_path�contents�eZe_errnorrr�read_sys_net<s2
r/cCsdd�}t||||||d�S)NcSsdS)NFr)r.rrr�
on_excp_falsebsz(read_sys_net_safe.<locals>.on_excp_false)r+r*r,r))r/)�iface�fieldr)r0rrr�read_sys_net_safeasr3cCs8t||�}|dkrdSyt|�Stk
r2dSXdS)NF)r3r�
ValueError)r1r2�valrrr�read_sys_net_intos
r6cCsdddd�}t|d|d�S)NTF)�up�unknown�down�	operstate)r))r3)rr)rrr�is_upysr;cCstjjt|d��S)N�bridge)�osr�existsr)rrrr�	is_bridge�sr?cCstjjt|d��S)N�bonding)r=rr>r)rrrr�is_bond�srAcCs t|dd�}tjj|�r|SdS)z8Return the master path for devname, or None if no master�master)rN)rr=rr>)rrrrr�
get_master�srCcCsHt|�}|dkrdStjj|d�}tjj|d�}tjj|�pFtjj|�S)z@Return a bool indicating if devname's master is a bridge or bondNFr@r<)rCr=r�joinr>)r�master_pathZbonding_pathZbridge_pathrrr�master_is_bridge_or_bond�srFcCs,t|�}|dkrdSt|dd�}tjj|�S)z;Return a bool indicating if devname's master is openvswitchNFzupper_ovs-system)r)rCrr=rr>)rrEZovs_pathrrr�master_is_openvswitch�s
rG)�maxsize)�returncCs ttjd��}|stjd�|S)zDReturn a bool indicating if Open vSwitch is installed in the system.z	ovs-vsctlz<ovs-vsctl not in PATH; not detecting Open vSwitch interfaces)�boolrZwhichr'r()�retrrr�openvswitch_is_installed�s
rLcCs^ytjt�\}}Wn>tjk
rP}z d|jkr>tjd�gS�WYdd}~Xn
X|j�SdS)z�Return a list of the names of OVS internal interfaces on the system.

    These will all be strings, and are used to exclude OVS-specific interface
    from cloud-init's network configuration handling.
    zdatabase connection failedzJOpen vSwitch is not yet up; no interfaces will be detected as OVS-internalN)r�!OVS_INTERNAL_INTERFACE_LOOKUP_CMD�ProcessExecutionError�stderrr'�info�
splitlines)�out�_err�excrrr�get_ovs_internal_interfaces�s
rU)rrIcCs,t�s
dSt�}||kr(tjd|�dSdS)z�Returns True if this is an OVS internal interface.

    If OVS is not installed or not yet running, this will return False.
    FzDetected %s as an OVS interfaceT)rLrUr'r()rZovs_bridgesrrr�!is_openvswitch_internal_interface�srVcCs,|dkrt|�}t||�s$t||�r(dSdS)z�netfailover driver uses 3 nics, master, primary and standby.
    this returns True if the device is either the primary or standby
    as these devices are to be ignored.
    NTF)�
device_driver�is_netfail_primary�is_netfail_standby)r�driverrrr�is_netfailover�sr[cCs,d}yt|d�}Wntk
r&YnX|S)zDReturns a str from reading /sys/class/net/<devname>/device/features.rzdevice/features)r/�	Exception)r�featuresrrr�get_dev_features�sr^cCs*t|�}|st|�dkrdS|ddkS)z� Return True if VIRTIO_NET_F_STANDBY bit (62) is set.

    https://github.com/torvalds/linux/blob/         089cf7f6ecb266b6a4164919a2e69bd2f938374a/         include/uapi/linux/virtio_net.h#L60
    �@F�>�1)r^�len)rr]rrr�has_netfail_standby_feature�srccCs<t|�dk	rdS|dkr t|�}|dkr,dSt|�s8dSdS)z�A device is a "netfail master" device if:

    - The device does NOT have the 'master' sysfs attribute
    - The device driver is 'virtio_net'
    - The device has the standby feature bit set

    Return True if all of the above is True.
    NF�
virtio_netT)rCrWrc)rrZrrr�is_netfail_master�s	recCstt|dd�}tjj|�sdS|dkr,t|�}|dkr8dStjjtjj|��}t|�}|dkr`dSt|�}|spdSdS)a7A device is a "netfail primary" device if:

    - the device has a 'master' sysfs file
    - the device driver is not 'virtio_net'
    - the 'master' sysfs file points to device with virtio_net driver
    - the 'master' device has the 'standby' feature bit set

    Return True if all of the above is True.
    rB)rFNrdT)rr=rr>rW�basename�realpathrc)rrZZmaster_sysfs_pathZmaster_devnameZ
master_driverZmaster_has_standbyrrrrXsrXcCs<t|�dkrdS|dkr t|�}|dkr,dSt|�s8dSdS)z�A device is a "netfail standby" device if:

    - The device has a 'master' sysfs attribute
    - The device driver is 'virtio_net'
    - The device has the standby feature bit set

    Return True if all of the above is True.
    NFrdT)rCrWrc)rrZrrrrY0s	rYcCst|d�}|r|dkrdSdS)a�
    /* interface name assignment types (sysfs name_assign_type attribute) */
    #define NET_NAME_UNKNOWN      0  /* unknown origin (not exposed to user) */
    #define NET_NAME_ENUM         1  /* enumerated by kernel */
    #define NET_NAME_PREDICTABLE  2  /* predictably named by the kernel */
    #define NET_NAME_USER         3  /* provided by user-space */
    #define NET_NAME_RENAMED      4  /* renamed by user-space */
    �name_assign_type�3�4TF)rirj)r3)rrhrrr�
is_renamedHs	
rkcCstt|d��}d|j�kS)N�ueventzDEVTYPE=vlan)�strr3rQ)rrlrrr�is_vlanWsrncCs0d}t|d�}tjj|�r,tjjtj|��}|S)z8Return the device driver for net device named 'devname'.Nz
device/driver)rr=r�islinkrf�readlink)rrZZdriver_pathrrrrW\s

rWcCst|d�}|dkrdS|S)z;Return the device id string for net device named 'devname'.z
device/deviceFN)r3)rZdev_idrrr�device_devidgs
rqcCsjtj�stj�rtt�j��Sytjt��}Wn6t	k
rd}z|j
t
jkrRg}n�WYdd}~XnX|S)N)r�
is_FreeBSD�is_DragonFlyBSD�list�get_interfaces_by_mac�valuesr=�listdirrr rr#)�devsr.rrr�get_devicelistpsryc@seZdZdZdS)�ParserErrorz6Raised when a parser has issue parsing a file/content.N)�__name__�
__module__�__qualname__�__doc__rrrrrz~srzcCs$|st|t�rdS|jd�dkS)NF�configZdisabled)�
isinstance�dict�get)�cfgrrr�is_disabled_cfg�sr�cCs<tj�stj�rt|�Stj�s(tj�r0t|�St|�SdS)z1Return the name of the 'fallback' network device.N)rrrrs�find_fallback_nic_on_freebsd�	is_NetBSD�
is_OpenBSD�&find_fallback_nic_on_netbsd_or_openbsd�find_fallback_nic_on_linux)�blacklist_driversrrr�find_fallback_nic�s
r�cCs&ttt�j�td��}|r"|dSdS)N)�keyr)rt�sortedrurvr)r�rvrrrr��sr�cCsPtjddddg�\}}|j�}|r*|dStt�j��}|j�|rL|dSdS)z�Return the name of the 'fallback' network device on FreeBSD.

    @param blacklist_drivers: currently ignored
    @return default interface, or None


    we'll use the first interface from ``ifconfig -l -u ether``
    �ifconfigz-lz-u�etherrN)rrrtrurv�sort)r��stdoutZ_stderrrvrrrr��s	r�c
s~�sg�dtj�kr tjd�n<dd�t�D�}t|�r\tjd|�d}tjtj|tjd�tdg�}t�fd	d�t�D��}|j	|�}g}g}x�|D]�}|j
d
�r�q�t|�r�q�t|�r�q�t
|�r�q�t|d�}|r�|j|�q�t|d�}	|	r�|j|�q�t|d
�}
|
dkr�|j|�q�q�W|�r&|}n|}tt|td��}t|k�rZ|jt�|jdt�x|D]}t|d��r`|S�q`WdS)z:Return the name of the 'fallback' network device on Linux.z
net.ifnames=0z9Stable ifnames disabled by net.ifnames=0 in /proc/cmdlinecSs"g|]}|dkrt|�r|�qS)�lo)rk)r�devicerrrr�sz.find_fallback_nic_on_linux.<locals>.<listcomp>z4Found unstable nic names: %s; calling udevadm settlez!Waiting for udev events to settle)�funcr�csg|]}t|��kr|�qSr)rW)rr�)r�rrr�sZveth�carrier�dormantr:r9�lowerlayerdownr8)r�r�addressN)r�r9r�r8)rZget_cmdliner'r(ryrbZlog_timeZudevadm_settle�set�
difference�
startswithr?rAr[r6�appendr3rtr�r�DEFAULT_PRIMARY_INTERFACE�remove�insert)
r�Zunstable�msgZinvalid_interfacesZpotential_interfacesZ	connectedZpossibly_connectedrr�r�r:�namesr	r)r�rr��sf















r�cCsx|sd}t|d�}|sdSt|�r,d|i}ndt|d�j�i}d||d�}|rft|�}|rf||d	d
<||idd�}|S)
zBGenerate network cfg v2 for dhcp on the NIC most likely connected.F)r�Nr	�
macaddressr�T)Zdhcp4zset-name�matchr�rZ�)�	ethernets�version)r�rer3rrW)r�Z
config_driverZtarget_namer�r�rZZnconfrrr�generate_fallback_configs

r�cCsJdd�}dd�}|jd�}|dkr*||�S|dkr:||�Std|��dS)	NcSs�g}x�|jdi�D]|}|jd�dkr&q|jd�}|s6q|jd�}|jdi�jd�}|jdi�jd�}|spt|�}|s|t|�}|j||||g�qW|S)	Nr�typeZphysicalZmac_addressr	�paramsrZ�	device_id)r�rWrqr�)�netcfg�physdevs�ent�macr	rZr�rrr�
_version_1s 

z$extract_physdevs.<locals>._version_1cSs�g}x�|jdi�j�D]z}|jd�}|s*q|jdi�jd�}|sBq|jdi�jd�}|jdi�jd�}|srt|�}|s~t|�}|j||||g�qW|S)Nr�zset-namer�r�rZr�)r�rvrWrqr�)r�r�r�r	r�rZr�rrr�
_version_20s 
z$extract_physdevs.<locals>._version_2r��r�z"Unknown network config version: %s)r��RuntimeError)r�r�r�r�rrr�extract_physdevss
r�TcCsFytt|��Wn0tk
r@}ztd|�|�WYdd}~XnXdS)a�read the network config and rename devices accordingly.
    if strict_present is false, then do not raise exception if no devices
    match.  if strict_busy is false, then do not raise exception if the
    device cannot be renamed because it is currently configured.

    renames are only attempted for interfaces of type 'physical'.  It is
    expected that the network system will create other devices with the
    correct name in place.z(Failed to apply network config names: %sN)�_rename_interfacesr�r�)r��strict_present�strict_busyr.rrr�apply_network_config_namesMs
r�FcCs*t|d�}|dkr"|rtd��dS|dkS)	a�return True if the provided interface has its own address.

    Based on addr_assign_type in /sys.  Return true for any interface
    that does not have a 'stolen' address. Examples of such devices
    are bonds or vlans that inherit their mac from another device.
    Possible values are:
      0: permanent address    2: stolen from another device
      1: randomly generated   3: set using dev_set_mac_addressZaddr_assign_typeNz%s had no addr_assign_type.Trr��)rr�r�)r6r4)�ifname�strictZassign_typerrr�interface_has_own_mac_s

r�c
Cs�i}x4t�D]*\}}}}d|||j�|t|�d�||<qW|r�tjd�}tjdddddd	d
gdd�\}}tjdd
ddgdd�\}	}t�}
x ||	fD]}|
j|j|��q�Wx,|j	�D] }|ddkp�|d|
k|d<q�W|S)a�Collect information necessary for rename_interfaces.

    returns a dictionary by mac address like:
       {name:
         {
          'downable': None or boolean indicating that the
                      device has only automatically assigned ip addrs.
          'device_id': Device id value (if it has one)
          'driver': Device driver (if it has one)
          'mac': mac address (in lower case)
          'name': name
          'up': boolean: is_up(name)
         }}
    N)�downabler�rZr�r	r7z[0-9]+:\s+(\w+)[@:]�ipz-6�addr�showZ	permanentZscope�globalT)�capturez-4r7Fr	r�)
�get_interfacesrr;r�compilerr��update�findallrv)
Zcheck_downable�cur_infor	r�rZr�ZnmatchZipv6rSZipv4Znics_with_addressesZ	bytes_out�drrr�_get_current_rename_infoss(
 r�cs�t|�stjd�dS|dkr$t�}i�xF|j�D]:\}}|j�}|jd�r\|dj�|d<||d<|�|<q2Wtjd���fdd�}dd�}d	d
�}	dd�}
g}g}g}
|��}d
}d"}dd����fdd�}�x�|D�]�\}}}}|r�|j�}g}||||�}|�s"|r�|jd||f�q�|jd�}||k�r8q�|�sV|r�|jd||f�q�|d�r�d}|d�s�|r�|j||||f�q�d|d<|jd|||ff�|
jd|||ff�||k�r�||}|d�rd}|d�s�|r�|j||||f�q�n|jd|||ff�d}x*|dk�s,||k�r@|d7}||}�qW|jd||||ff�||d<|��}|d�r�|
jd|||ff�|jd|||d|ff�||d<|��}||7}q�W||	|
d�}t|�t|
�dk�rt|��r�tjd|�ntjd|�n~tjd|||
�xj||
D]^\}}}}y|j|�|�Wn<t	k
�rz}z|jd |||||f�WYdd}~XnX�q Wt|��r�t	d!j
|���dS)#Nzno interfaces to renamer�r	zDetected interfaces %scstdd��j�D��S)Ncss|]}|d|fVqdS)r	Nr)r�datarrr�	<genexpr>�sz<_rename_interfaces.<locals>.update_byname.<locals>.<genexpr>)r�rv)Zbymac)r�rr�
update_byname�sz)_rename_interfaces.<locals>.update_bynamecSstjddd|d|gdd�dS)Nr��linkr�r	T)r�)r)�cur�newrrr�rename�sz"_rename_interfaces.<locals>.renamecSstjddd|dgdd�dS)Nr�r�r�r9T)r�)r)r	rrrr9�sz _rename_interfaces.<locals>.downcSstjddd|dgdd�dS)Nr�r�r�r7T)r�)r)r	rrrr7�sz_rename_interfaces.<locals>.upz
cirename%dr�cSsd|r0|r0|r0|d|ko.|d|ko.|d|kS|rP|rP|d|koN|d|kS|r`|d|kSdS)zmatch if set and in datar�rZr�Fr)r�r�rZr�rrr�entry_match�sz'_rename_interfaces.<locals>.entry_matchcsT����fdd��j�D�}t|�rPt|�dkrHd|���f}t|��|dSdS)Ncsg|]}�|����r|�qSrr)rr�)r�rZr�r�rrr�sz:_rename_interfaces.<locals>.find_entry.<locals>.<listcomp>r�zjFailed to match a single device. Matched devices "%s" with search values "(mac:%s driver:%s device_id:%s)"r)rvrbr4)r�rZr�r�r�)r�r�)r�rZr�r�
find_entry�sz&_rename_interfaces.<locals>.find_entryz<[nic not present] Cannot rename mac=%s to %s, not available.r7z*[busy] Error renaming mac=%s from %s to %sr�Fr9z2[busy-target] Error renaming mac=%s from %s to %s.r�)r�r9r7rz(unable to do any work for renaming of %sz$no work necessary for renaming of %sz$achieving renaming of %s with ops %sz.[unknown] Error performing %s%s for %s, %s: %s�
���)rbr'r(r��items�copyr�rr�r\rD)�renamesr�r�Zcurrent_infor	r�r�r�r�r9r7Zops�errorsZupsZ
cur_bynameZtmpname_fmtZtmpir�r��new_namerZr�Zcur_opsZcur_namer��targetZtmp_nameZopmap�opr�r.r)r�r�rr��s�










*
r�cCs$d}tjjt|d��rd}t||�S)z6Returns the string value of an interface's MAC Addressr�Z
bonding_slavezbonding_slave/perm_hwaddr)r=r�isdirrr3)r�rrrr�get_interface_mac@sr�cCs>t|d�dkr:t|�}|r6|r6|dd�|dd�}|SdS)z�Returns the string value of an Infiniband interface's hardware
    address. If ethernet_format is True, an Ethernet MAC-style 6 byte
    representation of the address will be returned.
    r�Z32�$��3Ni�)r3r�)r�Zethernet_formatr�rrr�get_ib_interface_hwaddrJs
r�cCsLtj�stj�rt|d�Stj�r,t|d�Stj�r>t|d�St|d�SdS)N)r�)	rrrrs� get_interfaces_by_mac_on_freebsdr��get_interfaces_by_mac_on_netbsdr�� get_interfaces_by_mac_on_openbsd�get_interfaces_by_mac_on_linux)r�rrrruXsrucCs>tjdddg�\}}dd�}dd�}dd	�|||��D�}|S)
Nr�z-ar�cssDd}x4|jd�D]&}|jd�r(||7}q|r2|V|}qW|VdS)Nrr��	)rr�)rRZ
curr_block�linerrr�flattenos

z1get_interfaces_by_mac_on_freebsd.<locals>.flattencss8x2|D]*}tjd|�}|r|jd�|jd�fVqWdS)Nz2^(?P<ifname>\S*): .*ether\s(?P<mac>[\da-f:]{17}).*r�r�)r�search�group)Z	flat_list�block�mrrr�find_mac{s

z2get_interfaces_by_mac_on_freebsd.<locals>.find_maccSsi|]\}}||�qSrr)rr�r�rrr�
<dictcomp>�sz4get_interfaces_by_mac_on_freebsd.<locals>.<dictcomp>)r)r�rR�_r�r��resultsrrrr�ks
r�c	Csfi}d}tjddg�\}}tjdd|�j�}x4|D],}tj||�}|r2|j�}|d||d<q2W|S)NzE(?P<ifname>\w+).*address:\s(?P<mac>([\da-f]{2}[:-]){5}([\da-f]{2})).*r�z-az\n\s+� r�r�)rr�subrQr��	groupdict)	r�rK�re_field_matchrRr��if_linesr�r��fieldsrrrr��s
r�c	Csfi}d}tjddg�\}}tjdd|�j�}x4|D],}tj||�}|r2|j�}|d||d<q2W|S)NzC(?P<ifname>\w+).*lladdr\s(?P<mac>([\da-f]{2}[:-]){5}([\da-f]{2})).*r�z-az\n\s+r�r�r�)rrr�rQr�r�)	r�rKr�rRr�r�r�r�r�rrrr��s
r�cCs~i}xtt|d�D]f\}}}}||kr:td||||f��|||<t|d�}|r||krntd||||f��|||<qW|S)zmBuild a dictionary of tuples {mac: name}.

    Bridges and any devices that have a 'stolen' mac are excluded.)r�z5duplicate mac found! both '%s' and '%s' have mac '%s'T)r�r�r�)r�rKr	r�Z_driverZ_devid�ib_macrrrr��s 
r�cCs�g}|dkrg}t�}djd�}x�|D]�}t|�s4q&t|�r>q&t|�rHq&t|�rRq&t|�dk	rtt|�rtt|�rtq&t	|�r~q&t
|�}|s�q&|dkr�||dt|��kr�q&t|�r�q&t
|�}||kr�q&|j|||t|�f�q&W|S)z�Return list of interface tuples (name, mac, driver, device_id)

    Bridges and any devices that have a 'stolen' mac are excluded.N�:�00�r�)r�)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)ryrDr�r?rnrArCrFrGr[r�rbrVrWr�rq)r�rKrxZzero_macr	r�rZrrrr��sB


r�cCsTi}xJt�D]@\}}}}t|d�}|r||krDtd||||f��|||<qW|S)zTBuild a dictionary mapping Infiniband interface names to their hardware
    address.Fz5duplicate mac found! both '%s' and '%s' have mac '%s')r�r�r�)rKr	r�r�rrr�get_ib_hwaddrs_by_interface�s
r�)�url_datarIcCs�d|krtjd|�dS|d}t|jd�|jd�g�sHtjd|�dSd|krXd|d<ytf|�Wntk
rzdSXd	S)
aDReturn true when the instance has access to the provided URL.

    Logs a warning if url is not the expected format.

    url_data is a dictionary of kwargs to send to readurl. E.g.:

    has_url_connectivity({
        "url": "http://example.invalid",
        "headers": {"some": "header"},
        "timeout": 10
    })
    �urlz4Ignoring connectivity check. No 'url' to check in %sFzhttp://zhttps://zOIgnoring connectivity check. Expected URL beginning with http*:// received '%s'Ztimeout�T)r'Zwarning�anyr�rr)r�r�rrr�has_url_connectivity�s"
r�)rrIcCs(ytj|�Wntk
r"dSXdS)z�Returns a bool indicating if ``s`` is an IP address.

    :param s:
        The string to test.

    :return:
        A bool indicating if the string contains an IP address or not.
    FT)�	ipaddressZ
ip_addressr4)rrrr�
is_ip_address s
	rcCs(ytj|�Wntk
r"dSXdS)z�Returns a bool indicating if ``s`` is an IPv4 address.

    :param s:
        The string to test.

    :return:
        A bool indicating if the string contains an IPv4 address or not.
    FT)rZIPv4Addressr4)rrrr�is_ipv4_address0s
	rc@sXeZdZdZdeeefd�dd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dS)�EphemeralIPv4Networka�Context manager which sets up temporary static network configuration.

    No operations are performed if the provided interface already has the
    specified configuration.
    This can be verified with the connectivity_url_data.
    If unconnected, bring up the interface with valid ip, prefix and broadcast.
    If router is provided setup a default route for that interface. Upon
    context exit, clean up the interface leaving no configuration behind.
    N)�connectivity_url_datac	Cs�t||||g�s$tdj||||���yt|�|_Wn2tk
rd}ztdj|��|�WYdd}~XnX||_||_||_||_||_	||_
g|_dS)aXSetup context manager and validate call signature.

        @param interface: Name of the network interface to bring up.
        @param ip: IP address to assign to the interface.
        @param prefix_or_mask: Either netmask of the format X.X.X.X or an int
            prefix.
        @param broadcast: Broadcast address for the IPv4 network.
        @param router: Optionally the default gateway IP.
        @param connectivity_url_data: Optionally, a URL to verify if a usable
           connection already exists.
        @param static_routes: Optionally a list of static routes from DHCP
        z5Cannot init network on {0} with {1}/{2} and bcast {3}z4Cannot setup network, invalid prefix or netmask: {0}N)�allr4�formatr�prefixrrr��	broadcast�router�
static_routes�cleanup_cmds)	�selfrr�Zprefix_or_maskrr	rr
r.rrr�__init__Ks$zEphemeralIPv4Network.__init__cCsP|jr&t|j�r&tjd|jd�dS|j�|jr>|j�n|jrL|j�dS)z>Perform ephemeral network setup if interface is not connected.z=Skip ephemeral network setup, instance has connectivity to %sr�N)	rr�r'r(�_bringup_devicer
�_bringup_static_routesr	�_bringup_router)rrrr�	__enter__ws


zEphemeralIPv4Network.__enter__cCs"x|jD]}tj|dd�qWdS)zTeardown anything we set up.T)r�N)rr)rZ	excp_typeZ
excp_valueZexcp_traceback�cmdrrr�__exit__�szEphemeralIPv4Network.__exit__c	Cs,tjdddddd||fd|jgdd	�d
S)z7Perform the ip command to remove the specified address.r�z-family�inetr��delz%s/%s�devT)r�N)rr)rr�rrrr�_delete_address�s
z$EphemeralIPv4Network._delete_addresscCs�dj|j|j�}tjd|j||j�y0tjddddd|d|jd	|jg
d
ddid
�WnBtjk
r�}z$d|j	krt�tjd|j|j�WYdd}~Xn^Xtjdddddd	|jdgd
d�|j
jdddddd	|jdg�|j
jddddd|d	|jg�dS)z1Perform the ip comands to fully setup the device.z{0}/{1}z:Attempting setup of ephemeral network on %s with %s brd %sr�z-familyrr��addrrTZLANG�C)r�Z
update_envzFile existsz7Skip ephemeral network setup, %s already has address %sNr�r�r7)r�r9r)rr�rr'r(rrrrNrOrr�)rZcidrr.rrrr�sn
z$EphemeralIPv4Network._bringup_devicecCsxxr|jD]h\}}g}|dkr$d|g}tjdddd|g|d|jgdd	�|jjd
dddd|g|d|jg�qWdS)Nz0.0.0.0�viar�z-4�router�rT)r�rr)r
rrrr�)rZnet_addressZgatewayZvia_argrrrr�sz+EphemeralIPv4Network._bringup_static_routescCs�tjddddgdd�\}}d|kr:tjd|j|j��d	Stjdd
dd|jd|jd
|jg	dd�|jjddd
dd|jd|jd
|jg	�tjdd
dddd|jd|jg	dd�|jjddd
dddd|jg�d	S)z<Perform the ip commands to fully setup the router if needed.r�rr�z	0.0.0.0/0T)r��defaultz<Skip ephemeral route setup. %s already has default route: %sNz-4rr�srcrrr)	rr'r(rr%r	r�rr�)rrRr�rrrrsT

z$EphemeralIPv4Network._bringup_router)NNN)r{r|r}r~rrmrr
rrrrrrrrrrr@s	$Jrc@seZdZdS)�RendererNotFoundErrorN)r{r|r}rrrrrAsr)r)NNNN)N)N)N)N)N)N)N)N)N)NN)TT)F)T)TTN)N)N)N)N)N)N)Tr�	functoolsrZloggingr=rZtypingrrZ	cloudinitrrZcloudinit.net.network_staterZcloudinit.url_helperrrZ	getLoggerr{r'rr�rMr�rrrr/r3r6r;r?rArCrFrG�	lru_cacherJrLrtrUrmrVr[r^rcrerXrYrkrnrWrqryr\rzr�r�r�r�r�r�r�r�r�r�r�r�r�r�rur�r�r�r�r�r�r�rr�objectrr�rrrrr�<module>s�






	






!
	




T
0


/

+#

Youez - 2016 - github.com/yon3zu
LinuXploit