HEX
Server: Apache
System: Linux dinesh8189 5.15.98-grsec-sharedvalley-2.lc.el8.x86_64 #1 SMP Thu Mar 9 09:07:30 -03 2023 x86_64
User: cgmgerenciamento1 (814285)
PHP: 8.1.26
Disabled: apache_child_terminate,dl,escapeshellarg,escapeshellcmd,exec,link,mail,openlog,passthru,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php_check_syntax,php_strip_whitespace,popen,proc_close,proc_open,shell_exec,symlink,system
Upload Files
File: //lib/python3.6/site-packages/cloudinit/sources/__pycache__/DataSourceRbxCloud.cpython-36.pyc
3

\�me?�@s�dZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
mZddlm
Z
mZeje�ZdZdd�Zeed	�d
d�Zejed�d
d�Zdd�Zdd�Zdd�Zdd�Zdd�ZGdd�de	j�Zee	j ffgZ!dd�Z"dS)zr
This file contains code used to gather the user data passed to an
instance on rootbox / hyperone cloud platforms
�N)�IPv4Address)�sources�subp�util)�
EventScope�	EventTypez
/etc/hostscCs.tjtdd�}|r tjd�dStjd�dS)NT)�quietz5/etc/hosts exists - setting manage_etc_hosts to FalseFz=/etc/hosts does not exists - setting manage_etc_hosts to True)r�	load_file�	ETC_HOSTS�LOG�debug)Zhosts�r
�(/usr/lib/python3.6/DataSourceRbxCloud.py�get_manage_etc_hostss

r)�inc�returncCstttt|��|��S)N)�strr�int)�addrrr
r
r�increment_ip#sr)rcCs|t|d�t|d�gS)z�Return a list of 3 IP addresses: [addr, addr + 2, addr + 3]

    @param addr: an object that is passed to IPvAddress
    @return: list of strings
    ��)r)rr
r
r�
get_three_ips'srcCstjdg|�S)z�
    Uses the preferred cloud-init subprocess def of subp.subp
    and runs arping.  Breaking this to a separate function
    for later use in mocking and unittests
    Zarping)r)�cmdr
r
r�_sub_arp4srcCs�d}|jdkrd}xh|D]`}ytdd||d|d	g�Wqtjk
rv}ztjd
|d|d	|�WYdd}~XqXqWdS)Nz-S�fedora�centos�rhelz-sz-c�2�source�destinationz&Failed to arping from "%s" to "%s": %s)rrr)�namerrZProcessExecutionErrorrZwarning)�items�distroZsource_param�item�errorr
r
r�gratuitous_arp=s

r&cCs�ttjd�tjd��}|s dSx�|D]z}y"tj|tdddgd�}|rJ|SWq&tk
r|}z|jtjkrl�WYdd}~Xq&tjk
r�tj	t
d	|�Yq&Xq&Wt
jd
dj|��dS)zAReturns False (not found or error) or a dictionary with metadata.z
LABEL=CLOUDMDz
LABEL=cloudmdFZvfatZfatZmsdosfs)�device�callbackZmtypeNz-Failed to mount %s when looking for user dataz0Did not find RbxCloud data, searched devices: %s�,)
�setrZfind_devs_withZmount_cb�read_user_data_callback�OSError�errno�ENOENTZMountFailedError�logexcrr�join)Zdevicesr'�rbx_data�errr
r
r�get_mdRs,
r3cCsddd�t|�D�d�S)z�Generate network configuration

    @param netadps: A list of network adapter settings

    @returns: A dict containing network config
    �csBg|]:\}�ddjt|���dj��fdd��dD�d��qS)Zphysicalzeth{}Z
macaddressc	s>g|]6}d|d�ddd�dd�dddd��qS)	Zstatic�address�network�netmask�auto�gatewayZdnsZnameservers)�typer5r7Zcontrolr9Zdns_nameserversr
)�.0�ip)�netadpr
r�
<listcomp>�s
z6generate_network_config.<locals>.<listcomp>.<listcomp>r<)r:r!Zmac_addressZsubnets)�formatr�lower)r;�ir
)r=rr>{sz+generate_network_config.<locals>.<listcomp>)�version�config)�	enumerate)Znetadpsr
r
r�generate_network_configqsrEc
Cstjtjtjj|d�dd�d�}tjtjj|d�dd�}d|ksHd	|krXtjtd
�dS|jdi�jd
�}|jdi�jdg�}d}|jdi�jd�r�|ddd}t	|d	�}||dd|ddgd�dd�|d	D�ddd||dg|d|d�i|t
�d�d�}tjd�tj|�|S)aThis callback will be applied by util.mount_cb() on the mounted
    drive.

    @param mount_dir: String representing path of directory where mounted drive
    is available

    @returns: A dict containing userdata, metadata and cfg based on metadata.
    z
cloud.jsonF)�fname�decode)�textz	user.dataT)rFrZvmr=z(Failed to load metadata. Invalid format.NZadditionalMetadata�usernameZsshKeysZpasswordZsha512Z_idr!)zinstance-idzlocal-hostnamezpublic-keyscSs>g|]6}|dD](}t|dd�D]}|d|d��q$qqS)r<r6r9r5)rr )r)r;r=r<�targetr
r
rr>�sz+read_user_data_callback.<locals>.<listcomp>Zdefault_userzALL=(ALL) NOPASSWD:ALL)r!ZgecosZsudoZpasswdZlock_passwdZssh_authorized_keys)Z
ssh_pwauthZdisable_rootZsystem_info�network_configZmanage_etc_hosts)�userdata�metadatar&�cfgzreturning DATA object:)rZ	load_jsonr	�os�pathr0r/r�getrErr)Z	mount_dirZ	meta_dataZ	user_datarIZssh_keys�hashr6�datar
r
rr+�sD	




r+c@sjeZdZdZejejejej	hiZ
dd�Zdd�Zdd�Z
edd	��Zd
d�Zdd
�Zdd�Zdd�ZdS)�DataSourceRbxCloudZRbxCloudcCstjj||||�d|_dS)N)r�
DataSource�__init__�seed)�selfZsys_cfgr#�pathsr
r
rrV�szDataSourceRbxCloud.__init__cCstjj|�}d||jfS)Nz%s [seed=%s])rrU�__str__rW)rX�rootr
r
rrZ�szDataSourceRbxCloud.__str__cCs>t�}|dkrdS|d|_|d|_|d|_|d|_dS)zw
        Metadata is passed to the launching instance which
        is used to perform instance configuration.
        FrLrMr&rNT)r3�userdata_rawrMr&rN)rXr1r
r
r�	_get_data�s



zDataSourceRbxCloud._get_datacCs
|jdS)NrK)rN)rXr
r
rrK�sz!DataSourceRbxCloud.network_configcCs
|jdS)Nzpublic-keys)rM)rXr
r
r�get_public_ssh_keys�sz&DataSourceRbxCloud.get_public_ssh_keyscCs|jS)N)r\)rXr
r
r�get_userdata_raw�sz#DataSourceRbxCloud.get_userdata_rawcCs|jS)N)rN)rXr
r
r�get_config_obj�sz!DataSourceRbxCloud.get_config_objcCst|j|j�dS)N)r&r#)rXrNZis_new_instancer
r
r�activateszDataSourceRbxCloud.activateN)�__name__�
__module__�__qualname__ZdsnamerZNETWORKrZBOOT_NEW_INSTANCEZBOOTZBOOT_LEGACYZdefault_update_eventsrVrZr]�propertyrKr^r_r`rar
r
r
rrT�s
rTcCstj|t�S)N)rZlist_from_depends�datasources)Zdependsr
r
r�get_datasource_listsrg)#�__doc__r-ZloggingrOZos.pathZtypingZ	ipaddressrZ	cloudinitrrrZcloudinit.eventrrZ	getLoggerrbrr
rrrrZListrrr&r3rEr+rUrTZDEP_FILESYSTEMrfrgr
r
r
r�<module>s*
	
	!B3