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__/DataSourceMAAS.cpython-310.pyc
o

}��fk;�@sddlZddlZddlZddlZddlmZmZmZddlm	Z	ddl
mZe�e
�ZdZgd�ZGdd�dej�ZGd	d
�d
e�Zdd�Zd
d�Zdd�Zddeddfdd�Zdd�ZGdd�de�ZGdd�de�ZeejffeejejffgZdd�Ze
dkr�dd�Z e �dSdS)�N)�sources�
url_helper�util)�KlibcNetworkConfigSource)�NetworkConfigSourcez
2012-03-01))�meta-data/instance-idrFF)�meta-data/local-hostnamerFF)�meta-data/public-keysr	FT)zmeta-data/vendor-data�vendor-dataTT)�	user-datarTTc@sheZdZdZdZdZdZdZdZdd�Z	e
dd	��Zd
d�Zdd
�Z
dd�Zdd�Zdd�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
    �MAASN�x�2cCs:tj�||||�d|_tj�|jd�|_t|j	�|_
dS)N�maas)r�
DataSource�__init__�base_url�os�path�join�seed_dir�get_id_from_ds_cfg�ds_cfg�id_hash)�self�sys_cfg�distro�paths�r�B/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceMAAS.pyr2szDataSourceMAAS.__init__cCs|js	t|j�|_|jS�N)�
_oauth_helper�get_oauth_helperr�rrrr �oauth_helper8szDataSourceMAAS.oauth_helpercCstj�|�}d||jfS)Nz%s [%s])rr�__str__r)r�rootrrr r&>szDataSourceMAAS.__str__c
Cs�|j}z
|�|jt|j��WdStyYnty-}z	t�d|j|��d}~ww|�dd�}|s8dSz|�	|�sAWdS|�|t
||jj|j
dd��WdStyct�td|�YdSw)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_dataBs>��
��	�zDataSourceMAAS._get_datac
Csp||_|\}}}||_||_|r6z	t�|�|_WdSty5}zt�d|�d|_WYd}~dSd}~wwdS)Nz"Invalid content in vendor-data: %s)	r�userdata_raw�metadatar�convert_vendordata�vendordata_raw�
ValueErrorr0r1)rr:�data�ud�md�vd�errr r,is
���zDataSourceMAAS._set_datacCs
d|jS)z/Return the subplatform metadata source details.z
seed-dir (%s))rr$rrr �_get_subplatformvs
zDataSourceMAAS._get_subplatformcCs�|��}|jdkrdSt��}|�d�}d|tf}|g}|jj||j|jd�\}}|r6t	�
d|�t
|�St	�d|tt��|��t
|�S)NrF�/z%s/%s/meta-data/instance-id)�urls�max_wait�timeoutzUsing metadata source: '%s'z(Giving up on md from %s after %i seconds)�get_url_params�max_wait_seconds�time�	monotonic�rstrip�
MD_VERSIONr%�wait_for_url�timeout_secondsr0�debug�critical�int�bool)rr:�
url_params�	starttime�	check_urlrH�	_responserrr r3zs*


���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)rr�get_cfg_by_path�dsnamer)rr�ncfgrrr �check_instance_id�s
z DataSourceMAAS.check_instance_id)�__name__�
__module__�__qualname__�__doc__r]rr"�url_max_wait�url_timeoutr�propertyr%r&r;r,rFr3r_rrrr rs 

'
rcs0eZdZejejejejfZ�fdd�Z	�Z
S)�DataSourceMAASLocalcs,t���st�d�dSt�d�t���S)NzNo initramfs applicable configFz!Found initramfs applicable config)r�
is_applicabler0rS�superr;r$��	__class__rr r;�s




zDataSourceMAASLocal._get_data)r`rarbr�CMD_LINE�
SYSTEM_CFG�DS�	INITRAMFS�network_config_sourcesr;�
__classcell__rrrjr rg�s�rgcs*d}t�fdd�|D��}tjdi|��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�r2)�.0�r��cfgrr �
<listcomp>�sz$get_oauth_helper.<locals>.<listcomp>Nr)�dictr�OauthUrlHelper)rz�keys�kwargsrryr r#�sr#cs4d}d��fdd�|D��}dt�|�d����S)z;Given a config, generate a unique identifier for this node.)rrrtru�csg|]}��|d��qS)�rv)rw�f�rrr r{�sz&get_id_from_ds_cfg.<locals>.<listcomp>zv1:zutf-8)r�hashlib�sha256�encode�	hexdigest)r�fields�idstrrr�r r�srcCsL|�d�r|dd�}tj�|�rtt�|��dkrtd��td|dd�S)N�file://�rz%s: not a directoryz	file://%s)�version)�
startswithrr�isdir�len�listdirr.r4)�seed_drrr r-�s

r-cCs|durtj}|�d�r|dd�}i}tD]n\}}}	}
|dur'd||f}nd|||f}z,t�|�}|||||d�}
|
��rQ|	rH|
j||<nt�|
j�||<nt	�
d||
j�Wqtjy�}z|jdkrs|
sst
d	||f�|�|jdkrz|�WYd}~qd}~wwt||�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.
    NrG���z%s/%sz%s/%s/%s)r+rJ�ssl_detailsz4Fetching from %s resulted in an invalid http code %si�zMissing required %s: %s)rr*�endswith�	DS_FIELDSr�fetch_ssl_details�ok�contents�
decode_binaryr0r1�code�UrlErrorr/�check_seed_contents)�seed_urlr*rJr�rr+rCr�	_dictname�binary�optionalr:r��resprErrr r4�sJ

���
��
���
r4c
Cs�i}g}tD]5\}}}}||vr|s|�|�qd|vr5|�d�\}}	}
||vr,i||<|||||
<q||||<qt|�dkrHtd|��|rRtd||f��d}|�d�rot�}tj	|�d�|td�}||urotd��|�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
    rGrz%s: no data files foundz%s: missing files %sNr
)�default�allowedz%vendor-data was not loadable as yaml.r�	meta-data)
r��append�	partitionr�r.r/r2�objectr�	load_yaml)
�content�seed�ret�missing�spath�dpath�_binaryr��top�_�p�vd_data�errrrr r�	s4

�r�c@�eZdZdS)r.N�r`rarbrrrr r.0�r.c@r�)r/Nr�rrrr r/4r�r/cCst�|t�Sr!)r�list_from_depends�datasources)�dependsrrr �get_datasource_list@sr��__main__csddl}ddl}ddl}|jdd�}|jddddd�|jd	d
ddd�|jdd
d
dd�|jddddd�|jddddd�|jdddtd�|jddd�}dD]\}}|j||d�}|jddddd�qQ|��}|j	|j
|j|jd �}	|j
dur�d!D] }
d"|
d#}tj�|�r�t�|tj�r�|j�d$|�||_
q||j
r�t�|j
�}d%|vr�|d%d&}|	��D]}
|
|vr�|	|
dur�||
|	|
<q�|jdur�d'|vr�|d'|_|jdur�|j�d(�|�d)�t|	���fd*d+���fd,d-�����fd.d/��|jd0k�rc|j�d1|j��j}|jdd2k�s|j�d3��r't|j�\}}}n
t|j|j |d4d5�\}}}t!d6�t!|du�r@d7n|�"��t!d8�|�|�t!d9�|�|du�r^d7�dS|�dS|jd:k�rp�|j�dS|jd;k�r�|j�#d2��s�d<|j|_�|j�dSdS)=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�helpr�z--ckey�keyzthe consumer key to auth withz--tkeyzthe token key to auth withz--csec�secretzthe consumer secret (likely '')r�z--tseczthe token secret to auth withz--apiverr�z the apiver to use ( can be used)�subcommands�subcmd)�title�dest))�crawlzcrawl the datasource)r2zdo a single GET of provided url)�
check-seedzread and verify seed at url)r�r:zthe datasource url�?)r��nargsr�)rrrtrurs)�91_kernel_cmdline_url�90_dpkg_maasz/etc/cloud/cloud.cfg.d/z.cfgzUsed config in %s.
r[r
r(z)Must provide a url or a config with url.
r)cs�j|dd�jS)Nr))r+)r5r��r:)r%rr �geturl�szmain.<locals>.geturlcstd|�|���f�dS)Nz== %s ==
%s
)�print�decoder�)r�rr �printurl�szmain.<locals>.printurlcsv|�d�r5�|�����D]%}|�d�r�d||f�q
|dkr*�d|df�q
�d||f�q
dS�|�dS)NrGz%s%sr�z
meta-data/)r�r��
splitlines)r:�line)r�r�r�rr r��s

�	zmain.<locals>.crawlr�zChecking seed at %s
rGr��)r�r*r+z=== user-data ===zN/Az=== meta-data ===z=== vendor-data ===r2r�z%s/)$�argparse�pprint�sys�ArgumentParser�add_argumentrP�add_subparsers�
add_parser�
parse_args�ckey�tkey�tsec�csec�configrr�exists�access�R_OK�stderr�writer�	read_confr~r:�exitr#r�r5r�r-r4�apiverr�r�r�)r�r�r��parser�subcmds�namer�r��args�creds�fname�fpathrzr�r5�userdatar=rDr)r�r�r%r�r �mainFs���������
��



�
"�r�)!r��loggingrrM�	cloudinitrrr�cloudinit.net.cmdliner�cloudinit.sourcesr�	getLoggerr`r0rPr�rrrgr#rr-r4r�r6r.r/�DEP_FILESYSTEM�DEP_NETWORKr�r�r�rrrr �<module>sF


	
�:'
�
��

Spamworldpro Mini