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/cmd/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

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

}��fk,�@s�dZddlZddlZddlZddlZddlmZddlmZm	Z	ddl
mZddlm
Z
mZmZddlmZddlmZd	Ze�e�Zdd
d�Zdd
�Zdefdd�Zdedededefdd�Zdd�Zdd�Z edkrqe �dSdS)aTQuery standardized instance metadata provided to machine, returning a JSON
structure.

Some instance-data values may be binary on some platforms, such as userdata and
vendordata. Attempt to decompress and decode UTF-8 any binary values.

Any binary values in the instance metadata will be base64-encoded and prefixed
with "ci-b64:" in the output. userdata and, where applicable, vendordata may
be provided to the machine gzip-compressed (and therefore as binary data).
query will attempt to decompress these to a string before emitting the JSON
output; if this fails, they are treated as binary.
�N)�EACCES)�
atomic_helper�util)�read_cfg_paths)�convert_jinja_instance_data�get_jinja_variable_alias�render_jinja_payload)�REDACT_SENSITIVE_VALUE)�JinjaSyntaxParsingException�querycCs�|s	tjttd�}|jdddddd�|jdd	td
t��d���d�|jd
ddddd�|jddtdd�|jddtdd�|jdtddd�|jddddddd�|jdd td!d"d#�|S)$a#Build or extend an arg parser for query utility.

    @param parser: Optional existing ArgumentParser instance representing the
        query subcommand which will be extended to support the args of
        this utility.

    @returns: ArgumentParser with proper argument configuration.
    )�prog�descriptionz-dz--debug�
store_trueFz+Add verbose messages during template render)�action�default�helpz-iz--instance-dataz,Path to instance-data.json file. Default is �
instance_data)�typerz-lz--list-keyszBList query keys available at the provided instance-data <varname>.z-uz--user-datazHPath to user-data file. Default is /var/lib/cloud/instance/user-data.txtz-vz
--vendor-datazLPath to vendor-data file. Default is /var/lib/cloud/instance/vendor-data.txt�varname�?z�A dot-delimited specific variable to query from instance-data. For example: v1.local_hostname. If the value is not JSON serializable, it will be base64-encoded and will contain the prefix "ci-b64:". )r�nargsrz-az--all�dump_allz Dump all available instance-data)rr�destrz-fz--format�formatz�Optionally specify a custom output format string. Any instance-data variable can be specified between double-curly braces. For example -f "{{ v2.cloud_name }}")rrr)�argparse�ArgumentParser�NAME�__doc__�add_argument�strr�get_runpath��parser�r#�5/usr/lib/python3/dist-packages/cloudinit/cmd/query.py�
get_parser&st	�
��	�
�	�	���r%cCs>tj|dd�}z|�d�WStytj|ddd�YSw)z�Attempt to return a string of user-data from ud_file_path

    Attempt to decode or decompress if needed.
    If unable to decode the content, raw bytes will be returned.

    @returns: String of uncompressed userdata if possible, otherwise bytes.
    T)�quietzutf-8F)r&�decode)r�load_binary_filer'�UnicodeDecodeError�decomp_gzip)�ud_file_path�bdatar#r#r$�
load_userdata~s�r-�returnc
Cs�t��}t�}|r|}n#|�d�}|dkr-|�d�}tj�|�r#|}nt�d||�|}n|}|r4|}ntj�|j	d�}|rA|}	ntj�|j	d�}	|�d�}
zt
�|�}Wn!tt
fyv}z|jtkrkt�d|��t�d	|��d
}~wwt
�|�}z
t
�t
�|
��}
Wn
tt
fy�d
}
Ynw|dkr�dt|f|d<dt|	f|d
<dt|
f|d<|St|�|d<t|	�|d
<|
|d<|S)a�Return a dict of merged instance-data, vendordata and userdata.

    The dict will contain supplemental userdata and vendordata keys sourced
    from default user-data and vendor-data files.

    Non-root users will have redacted INSTANCE_JSON_FILE content and redacted
    vendordata and userdata values.

    :raise: IOError/OSError on absence of instance-data.json file or invalid
        access perms.
    rr�instance_data_sensitivez4Missing root-readable %s. Using redacted %s instead.z
user-data.txtzvendor-data.txt�combined_cloud_configz$No read permission on '%s'. Try sudozMissing instance-data file: %sNz<%s> file:%s�userdata�
vendordata)�os�getuidrr �path�exists�LOG�warning�join�
instance_linkr�load_text_file�IOError�OSError�errnor�error�	load_jsonr	r-)r�	user_data�vendor_data�uid�paths�instance_data_fn�redacted_data_fn�sensitive_data_fn�user_data_fn�vendor_data_fn�combined_cloud_config_fn�
instance_json�er0r#r#r$�_read_instance_data�sv

�

���
��
�
�
��rM�jinja_vars_without_aliases�jinja_vars_with_aliasesr�	list_keysc
Cs�d}|}|�d�D]M}z||}Wn ty1}z|r#dj||d�}nd�|�}t|�|�d}~ww||vr;||}n|D]}	t|	�|krK||	}nq=|rR|d7}||7}q	|S)a�Return the value of the dot-delimited varname path in instance-data

    Split a dot-delimited jinja variable name path into components, walk the
    path components into the instance_data and look up a matching jinja
    variable name or cloud-init's underscore-delimited key aliases.

    :raises: ValueError when varname represents an invalid key name or path or
        if list-keys is provided by varname isn't a dict object.
    ��.z*instance-data '{key_path}' has no '{leaf}')�leaf�key_pathz Undefined instance-data key '{}'N)�split�KeyErrorr�
ValueErrorr)
rNrOrrP�walked_key_path�response�
key_path_partrL�msg�keyr#r#r$�(_find_instance_data_leaf_by_varname_path�s2�

��
�
r]c
Cs�t|j|j|j|jg�st�d�t���dSzt	|j
|j|j�}Wnt
tfy/YdSw|jrodj|jd�}zt|d||jrDdndd�}Wntyd}zt�d	t|��WYd
}~dSd
}~ww|rmt|�dSdSt|�}|jr�t|dd�}zt|||j|jd
�}Wnttfy�}zt�|�WYd
}~dSd
}~ww|jr�t|t�s�t�d|j�dSd�t|����}t|t�s�t�|�}t|�dS)z3Handle calls to 'cloud-init query' as a subcommand.zDExpected one of the options: --all, --format, --list-keys or varname�z## template: jinja
{fmt})�fmtzquery command lineTF)�payload�
payload_fnr�debugz#Failed to render templated data. %sNr)�include_key_aliases)rNrOrrPz+--list-keys provided but '%s' is not a dict�
)�anyrPrrrr7r?r%�
print_helprMrrArBr<r=rrbr
r�printrr]rVrW�
isinstance�dictr9�sorted�keysr�
json_dumps)�name�argsrr`�rendered_payloadrLrYrOr#r#r$�handle_argss|�
��
�����
�
��
�

rpcCst�}t�tt|����dS)z,Tool to query specific instance-data values.N)r%�sys�exitrpr�
parse_argsr!r#r#r$�mainKsrt�__main__)N)!rr�loggingr3rqr>r�	cloudinitrr�cloudinit.cmd.develr�!cloudinit.handlers.jinja_templaterrr�cloudinit.sourcesr	�cloudinit.templaterr
r�	getLogger�__name__r7r%r-rirMr�boolr]rprtr#r#r#r$�<module>s<


XP���
�+C
�

Spamworldpro Mini