403Webshell
Server IP : 3.96.16.70  /  Your IP : 216.73.216.15
Web Server : Apache
System : Linux ip-172-31-26-103.ca-central-1.compute.internal 6.1.163-186.299.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Feb 24 16:35:42 UTC 2026 x86_64
User : ec2-user ( 1000)
PHP Version : 8.4.18
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /usr/lib/python3.9/site-packages/cloudinit/sources/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.9/site-packages/cloudinit/sources/__pycache__/DataSourceMAAS.cpython-39.pyc
a

�½b�9�@s�ddlZddlZddlZddlmZddlmZmZmZe�	e
�ZdZgd�Z
Gdd�dej�Zdd	�Zd
d�Zdd
�Zddeddfdd�Zdd�ZGdd�de�ZGdd�de�ZeejejffgZdd�Ze
dkr�dd�Ze�dS)�N)�log)�sources�
url_helper�utilz
2012-03-01))�meta-data/instance-idrFF)�meta-data/local-hostnamerFF)�meta-data/public-keysrFT)zmeta-data/vendor-data�vendor-dataTT)�	user-datar
TTc@s`eZdZdZdZdZdZdd�Zedd��Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�ZdS)�DataSourceMAASz�
    DataSourceMAAS reads instance information from MAAS.
    Given a config metadata_url, and oauth tokens, it expects to find
    files under the root named:
      instance-id
      user-data
      hostname
      vendor-data
    �MAASNcCs:tj�||||�d|_tj�|jd�|_t|j	�|_
dS)NZmaas)r�
DataSource�__init__�base_url�os�path�join�seed_dir�get_id_from_ds_cfg�ds_cfg�id_hash)�self�sys_cfgZdistro�paths�r�D/usr/lib/python3.9/site-packages/cloudinit/sources/DataSourceMAAS.pyr,szDataSourceMAAS.__init__cCs|jst|j�|_|jS�N)�
_oauth_helper�get_oauth_helperr�rrrr�oauth_helper2szDataSourceMAAS.oauth_helpercCstj�|�}d||jfS)Nz%s [%s])rr
�__str__r)r�rootrrrr!8szDataSourceMAAS.__str__c
Cs�|j}z|�|jt|j��WdSty2Yn6tyf}zt�d|j|��WYd}~n
d}~00|�dd�}|s|dSz4|�	|�s�WdS|�|t
||jj|j
dd��WdSty�t�td|�YdS0dS)NTz%s was malformed: %s�metadata_urlF�)�read_file_or_urlr�retriesz$Failed fetching metadata from url %s)r�	_set_datar�read_maas_seed_dir�MAASSeedDirNone�MAASSeedDirMalformed�LOG�warning�get�wait_for_metadata_service�read_maas_seed_urlr �readurlr�	Exceptionr�logexc)r�mcfg�exc�urlrrr�	_get_data<s8
��	zDataSourceMAAS._get_datac
Csr||_|\}}}||_||_||_|rnzt�|�|_Wn6tyl}zt�	d|�d|_WYd}~n
d}~00dS)Nz"Invalid content in vendor-data: %s)
rZuserdata_raw�metadataZvendordata_purerZconvert_vendordataZvendordata_raw�
ValueErrorr+r,)rr5�dataZud�md�vd�errrr'cs
zDataSourceMAAS._set_datacCs
d|jS)z/Return the subplatform metadata source details.z
seed-dir (%s))rrrrr�_get_subplatformqszDataSourceMAAS._get_subplatformc	Cs|j}d}zt|�d|��}Wn ty>t�td|�Yn0|dkrLdSd}z||vrjt|�d|��}Wnty�t�d|�Yn0t��}|�	d	�r�|dd
�}d|t
f}|g}|jj|||d�\}}|r�t�
d
|�nt�d|tt��|��t|�S)N�x�max_waitz Failed to get max wait. using %srF�2�timeoutzFailed to get timeout, using %s�/���z%s/%s/meta-data/instance-id)�urlsr?rAzUsing metadata source: '%s'z(Giving up on md from %s after %i seconds)r�intr-r1rr2r+r,�time�endswith�
MD_VERSIONr Zwait_for_url�debugZcritical�bool)	rr5r3r?rAZ	starttimeZ	check_urlrDZ	_responserrrr.us<
�
�z(DataSourceMAAS.wait_for_metadata_servicecCs0|jdurdSt�|d|jfi�}|jt|�kS)alocally check if the current system is the same instance.

        MAAS doesn't provide a real instance-id, and if it did, it is
        still only available over the network.  We need to check based
        only on local resources.  So compute a hash based on Oauth tokens.NF�
datasource)rrZget_cfg_by_path�dsnamer)rrZncfgrrr�check_instance_id�s
z DataSourceMAAS.check_instance_id)�__name__�
__module__�__qualname__�__doc__rLrrr�propertyr r!r6r'r=r.rMrrrrrs

'&rcs*d}t�fdd�|D��}tjfi|��S)z�Return an oauth helper instance for values in cfg.

    @raises ValueError from OauthUrlHelper if some required fields have
            true-ish values but others do not.)�consumer_key�consumer_secret�	token_key�token_secretcsg|]}|��|�f�qSr�r-)�.0�r��cfgrr�
<listcomp>��z$get_oauth_helper.<locals>.<listcomp>)�dictrZOauthUrlHelper)r[�keys�kwargsrrZrr�srcs4d}d��fdd�|D��}dt�|�d����S)z;Given a config, generate a unique identifier for this node.)rSrUrV�csg|]}��|d��qS)�rW)rX�f�rrrr\�r]z&get_id_from_ds_cfg.<locals>.<listcomp>zv1:zutf-8)r�hashlibZsha256�encodeZ	hexdigest)r�fieldsZidstrrrdrr�srcCsL|�d�r|dd�}tj�|�r4tt�|��dkr<td��td|dd�S)N�file://�rz%s: not a directoryz	file://%s)�version)�
startswithrr�isdir�len�listdirr)r/)Zseed_drrrr(�s

r(cCs|durtj}|�d�r$|dd�}i}tD]�\}}}	}
|durNd||f}nd|||f}zXt�|�}|||||d�}
|
��r�|	r�|
j||<q�t�|
j�||<nt	�
d||
j�Wq,tj�y}z<|jdkr�|
s�t
d	||f�|�n|jdkr�|�WYd}~q,d}~00q,t||�S)
a�
    Read the maas datasource at seed_url.
      read_file_or_url is a method that should provide an interface
      like util.read_file_or_url

    Expected format of seed_url is are the following files:
      * <seed_url>/<version>/meta-data/instance-id
      * <seed_url>/<version>/meta-data/local-hostname
      * <seed_url>/<version>/user-data
    If version is None, then <version>/ will not be used.
    NrBrCz%s/%sz%s/%s/%s)r&rA�ssl_detailsz4Fetching from %s resulted in an invalid http code %si�zMissing required %s: %s)rr%rG�	DS_FIELDSrZfetch_ssl_details�ok�contentsZ
decode_binaryr+r,�codeZUrlErrorr*�check_seed_contents)Zseed_urlr%rArjrr&r:rZ	_dictnameZbinary�optionalr5roZrespr<rrrr/�sB

��
��
r/c
Cs�i}g}tD]j\}}}}||vr0|s|�|�qd|vrj|�d�\}}	}
||vrXi||<|||||
<q||||<qt|�dkr�td|��|r�td||f��d}|�d�r�t�}tj	|�d�|td�}||ur�td��|�d	�|�d
�|fS)z�Validate if dictionary content valid as a return for a datasource.
    Either return a (userdata, metadata, vendordata) tuple or
    Raise MAASSeedDirMalformed or MAASSeedDirNone
    rBrz%s: no data files foundz%s: missing files %sNr	)�defaultZallowedz%vendor-data was not loadable as yaml.r
�	meta-data)
rp�append�	partitionrmr)r*r-�objectrZ	load_yaml)
ZcontentZseed�retZmissingZspathZdpathZ_binaryru�top�_�pZvd_data�errrrrrt�s4

�rtc@seZdZdS)r)N�rNrOrPrrrrr)%sr)c@seZdZdS)r*Nr�rrrrr*)sr*cCst�|t�Sr)rZlist_from_depends�datasources)Zdependsrrr�get_datasource_list4sr��__main__csddl}ddl}ddl}|jdd�}|jddddd�|jd	d
ddd�|jdd
d
dd�|jddddd�|jddddd�|jdddtd�|jddd�}dD](\}}|j||d�}|jddddd�q�|��}|j	|j
|j|jd �}	|j
du�r<d!D]@}
d"|
d#}tj�|�r�t�|tj�r�|j�d$|�||_
q�|j
�r�t�|j
�}d%|v�rf|d%d&}|	��D]*}
|
|v�rn|	|
du�rn||
|	|
<�qn|jdu�r�d'|v�r�|d'|_|jdu�r�|j�d(�|�d)�t|	���fd*d+���fd,d-�����fd.d/��|jd0k�r�|j�d1|j��j}|jdd2k�sN|j�d3��r`t|j�\}}}nt|j|j |d4d5�\}}}t!d6�t!|du�r�d7n|�"��t!d8�|�|�t!d9�|�|du�r�d7n|�nH|jd:k�r�|j�n0|jd;k�r|j�#d2��sd<|j|_�|j�dS)=z�
        Call with single argument of directory or http or https url.
        If url is given additional arguments are allowed, which will be
        interpreted as consumer_key, token_key, token_secret, consumer_secret
        rNzInteract with MAAS DS)�descriptionz--config�filezspecify DS config file)�metavar�helprvz--ckey�keyzthe consumer key to auth withz--tkeyzthe token key to auth withz--csecZsecretzthe consumer secret (likely '')rbz--tseczthe token secret to auth withz--apiverrjz the apiver to use ( can be used)Zsubcommands�subcmd)�title�dest))�crawlzcrawl the datasource)r-zdo a single GET of provided url)�
check-seedzread and verify seed at url)r�r5zthe datasource url�?)r��nargsrv)rSrUrVrT)Z91_kernel_cmdline_urlZ90_dpkg_maasz/etc/cloud/cloud.cfg.d/z.cfgzUsed config in %s.
rKrr#z)Must provide a url or a config with url.
r$cs�j|dd�jS)Nr$)r&)r0rr�r5)r rr�geturl�szmain.<locals>.geturlcstd|�|���f�dS)Nz== %s ==
%s
)�print�decoder�)r�rr�printurl�szmain.<locals>.printurlcst|�d�rh�|�����D]J}|�d�r:�d||f�q|dkrT�d|df�q�d||f�qn�|�dS)NrBz%s%srwz
meta-data/)rGr��
splitlines)r5�line)r�r�r�rrr��s

zmain.<locals>.crawlr�zChecking seed at %s
rBrh�)rjr%r&z=== user-data ===zN/Az=== meta-data ===z=== vendor-data ===r-r�z%s/)$�argparse�pprint�sys�ArgumentParser�add_argumentrHZadd_subparsersZ
add_parser�
parse_argsZckeyZtkeyZtsecZcsecZconfigrr�exists�access�R_OK�stderr�writerZ	read_confr_r5�exitrr�r0rkr(r/Zapiverr�r�rG)r�r�r��parserZsubcmds�namer�r~�argsZcredsZfnameZfpathr[r�r0Zuserdatar7r;r)r�r�r r�r�main:s���������



�
r�)rerrFZ	cloudinitrZloggingrrrZ	getLoggerrNr+rHrpr
rrrr(r/rtr1r)r*ZDEP_FILESYSTEMZDEP_NETWORKr�r�r�rrrr�<module>	s8


	�
:'�

Youez - 2016 - github.com/yon3zu
LinuXploit