Spamworldpro Mini Shell
Spamworldpro


Server : Apache/2.4.52 (Ubuntu)
System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64
User : www-data ( 33)
PHP Version : 8.1.2-1ubuntu2.21
Disable Function : NONE
Directory :  /lib/python3/dist-packages/cloudinit/sources/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceScaleway.cpython-310.pyc
o

}��f�>�@s*ddlZddlZddlZddlZddlZddlmZddlZddlm	Z	ddl
mZddlm
Z
ddlmZmZmZmZddlmZmZddlmZdd	lmZmZdd
lmZddlmZe�e �Z!dd
gZ"dZ#dZ$dZ%Gdd�dej&j'�Z(dd�Z)dd�Z*Gdd�dej+�Z,e,ej-ffgZ.dd�Z/dS)�N)�urlparse)�ConnectionError)�HTTPConnection)�PoolManager)�dmi�sources�
url_helper�util)�
EventScope�	EventType)�NoDHCPLeaseError)�EphemeralDHCPv4�EphemeralIPv6Network)�DataSourceHostname)�ProcessExecutionErrorzhttp://169.254.42.42zhttp://[fd00:42::42]���
cs*eZdZdZ�fdd�Zddd�Z�ZS)�SourceAddressAdapterzF
    Adapter for requests to choose the local address to bind to.
    cs ||_tt|�jdi|��dS)N�)�source_address�superr�__init__)�selfr�kwargs��	__class__r�F/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceScaleway.pyr+szSourceAddressAdapter.__init__FcCs0tjtjtjdfg}t||||j|d�|_dS)N�)�	num_pools�maxsize�blockr�socket_options)r�default_socket_options�socket�
SOL_SOCKET�SO_REUSEPORTrr�poolmanager)r�connectionsr r!r"rrr�init_poolmanager/s��z%SourceAddressAdapter.init_poolmanager)F)�__name__�
__module__�__qualname__�__doc__rr)�
__classcell__rrrrr&src
Cs^ztj|d|d|dd�d�}t�|j�WStjy.}z
|jdkr)WYd}~dS�d}~ww)aQ
    Retrieve user data or vendor data.

    Scaleway user/vendor data API returns HTTP/404 if user/vendor data is not
    set.

    This function calls `url_helper.readurl` but instead of considering
    HTTP/404 as an error that requires a retry, it considers it as empty
    user/vendor data.

    Also, be aware the user data/vendor API requires the source port to be
    below 1024 to ensure the client is root (since non-root users can't bind
    ports below 1024). If requests raises ConnectionError (EADDRINUSE), the
    caller should retry to call this function on an other port.
    NrcSs|jdko
t|jtjj�S)N�)�code�
isinstance�cause�requests�
exceptionsr)�_�excrrr�<lambda>Ws
z%query_data_api_once.<locals>.<lambda>)�data�timeout�retries�session�exception_cbr/)r�readurlr	�
decode_binary�contents�UrlErrorr0)�api_addressr9�requests_session�respr6rrr�query_data_api_once<s �
��rDc
Cstdt|d��D]�}z]t�d||�t��}d}z)t|�j}|}|ddkr,|dd�}tj	|dtj
d	�dd}	|	tjkr@d
}Wn	tyJYnw|�
dt||fd��t|||d
�}
t�d|�|
WStjy�}zt�d||�t�d�|}WYd}~qd}~ww|�)a/Get user or vendor data.

    Handle the retrying logic in case the source port is used.

    Scaleway metadata service requires the source port of the client to
    be a privileged port (<1024).  This is done to ensure that only a
    privileged user on the system can access the metadata service.
    rrz*Trying to get %s data (bind on port %d)...z0.0.0.0r�[���N��protoz0::zhttp://)r)r9rBz%s-data downloadedz%Error while trying to get %s data: %s�)�range�max�LOG�debugr3�Sessionr�netlocr$�getaddrinfo�IPPROTO_TCP�AF_INET6�
ValueError�mountrrDrr@�warning�time�sleep)
�api_typerAr:r9�portrB�	localhost�url_address�address�
addr_protor8r6�last_excrrr�query_data_apidsT�
���
����

��r_cs�eZdZdZejejejej	hiZ
�fdd�Zdeddf�fdd�Z
d	d
�Zdd�Zed
d��Zdd�Zdd�Zedd��Zedd��Zdd�Zdd�Zd"dd�Zedd��Zed d!��Z�ZS)#�DataSourceScaleway�Scalewaycs�tt|��|||�t�t�|ddgi�g�|_t|j�dt	��|_
t|j�dt��|_t|j�dt
��|_tj|_t|_d|_d|_d|_d|_d|_d|j��vr_|j|jd7_dSdS)N�
datasourcerar:r9�max_waitT�
metadata_urls)rr`rr	�
mergemanydict�get_cfg_by_path�ds_cfg�int�get�DEF_MD_RETRIESr:�DEF_MD_TIMEOUTr9�DEF_MD_MAX_WAITrcr�UNSET�_network_config�DS_BASE_URLSrd�metadata_url�userdata_url�vendordata_url�ephemeral_fixed_address�has_ipv4�keys)r�sys_cfg�distro�pathsrrrr�s$���zDataSourceScaleway.__init__�ci_pkl_version�returnNcsFt��|�ddttddd�}|D]}t||�s t||||�qdS)NT)rsrtrcrdrqrr)r�	_unpicklerlro�hasattr�setattr)rry�
attr_defaults�attrrrrr{�s�
��zDataSourceScaleway._unpicklecCsxt��}tj||j|jdd�\}}|r-t�d|�|�d�|_|�d�|_	|�d�|_
dSt�d|tt��|��t�)	zO
        Define metadata_url based upon api-metadata URL availability.
        F)�urlsrcr9�connect_synchronouslyz%s is reachablez/conf?format=jsonz/user_data/cloud-initz/vendor_data/cloud-initNz3Unable to reach api-metadata at %s after %s seconds)
rV�	monotonicr�wait_for_urlrcr9rLrMrprqrrrhr)rr��
start_time�	avail_urlr5rrr�_set_metadata_url�s&
��z$DataSourceScaleway._set_metadata_urlcCsZtj|j|j|jd�}t�t�|j	��|_
td|j|j|j�|_
td|j|j|j�|_dS)N)r9r:z	user-datazvendor-data)rr=rpr9r:�json�loadsr	r>r?�metadatar_rq�userdata_rawrr�vendordata_raw)rrCrrr�_crawl_metadata�s��
�z"DataSourceScaleway._crawl_metadatacCs>t�d�}|dkrdStj�d�rdSt��}d|vrdSdS)a 
        There are three ways to detect if you are on Scaleway:

        * check DMI data: not yet implemented by Scaleway, but the check is
          made to be future-proof.
        * the initrd created the file /var/run/scaleway.
        * "scaleway" is in the kernel cmdline.
        zsystem-manufacturerraTz/var/run/scaleway�scalewayN)r�
read_dmi_data�os�path�existsr	�get_cmdline)�vendor_name�cmdlinerrr�	ds_detect�s

�zDataSourceScaleway.ds_detectcCs�|dvrt�d|�gSg}|D]>}t|�j}|ddkr#|dd�}tj|dtjd�dd}|tjkr?|dkr?||g7}q|tjkrN|d	krN||g7}qq|S)
N)�ipv4�ipv6zInvalid IP version : %srrErrFrGr�r�)	rLrMrrOr$rPrQ�AF_INETrR)rrHr��
filtered_urls�urlr\r]rrr�_set_urls_on_ip_versions.
���

�z*DataSourceScaleway._set_urls_on_ip_versionc
CsP|jr_z;t|j|jj��)}tjtjd|j|j	fd�tjtjd|j
d�|d|_d|jd<Wd�n1s8wYWn t
ttfy^}zt�tt|��d|_WYd}~nd}~ww|js�z9t|j|jj��&tjtjd	|j|j	fd�tjtjd|j
d�d
|jd<Wd�WdS1s�wYWdSty�YdSwdS)Nz3Set api-metadata URL depending on IPv4 availability)�logfunc�msg�func�argszCrawl of metadata service)r�r�r�z
fixed-addressr��
net_in_useFz3Set api-metadata URL depending on IPv6 availabilityr�T)rtr
rw�fallback_interfacer	�log_timerLrMr�rdr�rsr�rrr�logexc�strr)rr��errr�	_get_datasr���
������������zDataSourceScaleway._get_datac	Cs�|jdurt�dtj�tj|_|jtjkr|jS|jddur�i}i}|jdD]_}|d|jkr?d|d<dd	d
�g|d<q)d|��vrX|d|d�d
|d��f7<n|d�d
|d��f|d<|ddkr�|ddd�}d|��vr�|d|g7<q)|g|d<q)|||jj	<d|d�|_nBdd|jj	d�}ddig}|jdr�|dd|jddd|jddddd|jddd�gd�g7}||d <d!|gd"�|_t�
d#|j�|jS)$z`
        Configure networking according to data received from the
        metadata API.
        Nz5Found None as cached _network_config. Resetting to %s�
private_ip�
public_ipsr\T�dhcp4z169.254.42.42/32z
62.210.0.1)�to�via�routes�	addresses�/�netmask�family�inet6�gatewayz::/0)r�r�r)�version�	ethernets�physicalz%s)�type�namer�r��staticz::�0)�network�prefixr�)r�r\r�r��subnetsr)r��configznetwork_config : %s)rnrLrUrrmr�rsrurwr�rM)r�netcfg�ip_cfg�ip�router�rrr�network_configXsh
�
�
��
�
�

�����z!DataSourceScaleway.network_configcC�dS�Nr�rrrr�launch_index��zDataSourceScaleway.launch_indexcCs
|jdS)N�id)r�r�rrr�get_instance_id�s
z"DataSourceScaleway.get_instance_idcCs^dd�|jdD�}d}t|�}|j�dg�D]}|�|�sq|�||d��dd��q|S)NcSsg|]}|d�qS)�keyr)�.0r�rrr�
<listcomp>�sz:DataSourceScaleway.get_public_ssh_keys.<locals>.<listcomp>�ssh_public_keyszAUTHORIZED_KEY=�tagsr5� )r��lenri�
startswith�append�replace)r�ssh_keys�akeypre�plen�tagrrr�get_public_ssh_keys�s
z&DataSourceScaleway.get_public_ssh_keysFcCst|jdd�S)N�hostnameF)rr�)r�fqdn�
resolve_ip�
metadata_onlyrrr�get_hostname�szDataSourceScaleway.get_hostnamecCr�r�rr�rrr�availability_zone�r�z$DataSourceScaleway.availability_zonecCr�r�rr�rrr�region�r�zDataSourceScaleway.region)FFF)r*r+r,�dsnamer
�NETWORKr�BOOT_NEW_INSTANCE�BOOT�BOOT_LEGACY�default_update_eventsrrhr{r�r��staticmethodr�r�r��propertyr�r�r�r�r�r�r�r.rrrrr`�s6��
>
I


r`cCst�|t�Sr�)r�list_from_depends�datasources)�dependsrrr�get_datasource_list�sr�)0r��loggingr�r$rV�urllib.parserr3�requests.exceptionsr�urllib3.connectionr�urllib3.poolmanagerr�	cloudinitrrrr	�cloudinit.eventr
r�cloudinit.net.dhcpr�cloudinit.net.ephemeralr
r�cloudinit.sourcesr�cloudinit.subpr�	getLoggerr*rLrorjrlrk�adapters�HTTPAdapterrrDr_�
DataSourcer`�DEP_FILESYSTEMr�r�rrrr�<module>s<
(4
,�

Spamworldpro Mini