CasperSecurity

Current Path : /lib/python3/dist-packages/cloudinit/config/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/config/__pycache__/cc_growpart.cpython-310.pyc

o

쑛hyI�
@s8UdZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZddlm
Z
ddlmZddlmZmZddlmZmZmZmZmZddlmZdd	lmZdd
lmZddlm Z m!Z!ddl"m#Z#e#Z$d
e ge$gd�Z%ee&d<ddgdd�Z'ed�Z(Gdd�d�Z)e�*e+�Z,Gdd�de-�Z.Gdd�de
�Z/Gdd�de/�Z0Gdd�de/�Z1Gdd �d e/�Z2d!e3d"e!d#e4d$e/fd%d&�Z5d$ee6fd'd(�Z7d$ee6fd)d*�Z8d+d,�Z9d$e:fd-d.�Z;d/d0�Z<d$ee3e3ffd1d2�Z=d3d4�Z>d5e/d"e!fd6d7�Z?d8e3d9ed:ed;e4d$df
d<d=�Z@d>e0fd?e1fd@e2ffZAdS)AzGrowpart: Grow partitions�N)�ABC�abstractmethod)�suppress)�Path)�Optional�Tuple)�	lifecycle�performance�subp�
temp_utils�util)�Cloud)�Config)�
MetaSchema)�ALL_DISTROS�Distro)�
PER_ALWAYS�cc_growpart)�id�distros�	frequency�activate_by_schema_keys�meta�auto�/F)�mode�devices�ignore_growroot_disabledz/cc_growpart_keydatac@seZdZdZdZdZdZdS)�RESIZE�SKIPPED�CHANGED�NOCHANGE�FAILEDN)�__name__�
__module__�__qualname__rr r!r"�r&r&�>/usr/lib/python3/dist-packages/cloudinit/config/cc_growpart.pyr/s
rc@seZdZdS)�ResizeFailedExceptionN)r#r$r%r&r&r&r'r(9sr(c@s<eZdZdefdd�Zededefdd��Zedd	��Z	d
S)�Resizer�distrocCs
||_dS�N)�_distro)�selfr*r&r&r'�__init__>s
zResizer.__init__r�returncC�dSr+r&�r-rr&r&r'�	availableA�zResizer.availablecCr0r+r&)r-�diskdev�partnum�partdev�fsr&r&r'�resizeDr3zResizer.resizeN)
r#r$r%rr.r�list�boolr2r8r&r&r&r'r)=sr)c@�"eZdZdefdd�Zdd�ZdS)�ResizeGrowPartrcCsHztjddgddid�j}t�d|�rWdSWdStjy#YdSw)	N�growpartz--help�LANG�C��
update_envz--update\s+TF)r
�stdout�re�search�ProcessExecutionError)r-r�outr&r&r'r2Is�����zResizeGrowPart.availablecCsJt||�}|j��}tj|dd���}tj�|d�}d|d�}	tj�|�s*t�	|d�z
t
j
dd||g|	d�Wn0t
jyg}
z#|
jd	krRt
�td
||�t|
�|
�||fWYd}
~
Wd�Sd}
~
wwzt
j
d||g|	d�Wnt
jy�}
z
t
�td||�t|
�|
�d}
~
wwWd�n1s�wY|t||�fS)NT)�dir�	needs_exer=r?)r>�TMPDIRi�z	--dry-runr@�z&Failed growpart --dry-run for (%s, %s)zFailed: growpart %s %s)�get_sizer,�get_tmp_exec_pathr�tempdir�os�path�join�exists�mkdirr
rE�	exit_coder�logexc�LOGr()r-r4r5r6r7�before�tmp_dir�tmpd�growpart_tmp�my_env�er&r&r'r8UsF




�
�
��

����zResizeGrowPart.resizeN�r#r$r%r9r2r8r&r&r&r'r<H�r<c@s&eZdZdZdefdd�Zdd�ZdS)�ResizeGrowFSa�
    Use FreeBSD ``growfs`` service to grow root partition to fill available
    space, optionally adding a swap partition at the end.

    Note that the service file warns us that it uses ``awk(1)``, and as
    such requires ``/usr`` to be present. However, cloud-init is installed
    into ``/usr/local``, so we should be fine.

    We invoke the ``growfs`` with ``service growfs onestart``, so it
    doesn't need to be enabled in ``rc.conf``.
    rcCstj�d�o
|dgkS)z'growfs only works on the root partitionz/etc/rc.d/growfsr)rNrO�isfiler1r&r&r'r2�szResizeGrowFS.availablec
Cs^t||�}z
|jjddd�Wntjy'}zt�td�t|�|�d}~ww|t||�fS)N�onestart�growfs)�action�servicezFailed: service growfs onestart)	rKr,�manage_servicer
rErrTrUr()r-r4r5r6r7rVr[r&r&r'r8�s

��zResizeGrowFS.resizeN)r#r$r%�__doc__r9r2r8r&r&r&r'r^ysr^c@r;)�ResizeGpartrcCsNztjddgddiddgd�j}t�d|�rWd	SWd
Stjy&Yd
Sw)N�gpart�helpr>r?rrJ)rA�rcszgpart recover TF)r
�stderrrCrDrE)r-r�errr&r&r'r2�s�����zResizeGpart.availablec
Cs�z
t�dd|g�Wn$tjy.}z|jdkr$t�td|�t|�|�WYd}~nd}~wwt||�}zt�ddd||g�WntjyZ}z
t�td||�t|�|�d}~ww|t||�fS)	a9
        GPT disks store metadata at the beginning (primary) and at the
        end (secondary) of the disk. When launching an image with a
        larger disk compared to the original image, the secondary copy
        is lost. Thus, the metadata will be marked CORRUPT, and need to
        be recovered.
        rg�recoverrzFailed: gpart recover %sNr8z-izFailed: gpart resize -i %s %s)r
rErSrrTrUr(rK)r-r4r5r6r7r[rVr&r&r'r8�s$

���

��zResizeGpart.resizeNr\r&r&r&r'rf�r]rfrr*rr/cCs�d}|dkr#tD]\}}||�}|j|d�r|}nq|s!td��|Si}tD]\}}	|	||<q'||vr:td|��|||�}
|
j|d�rH|
}|sPtd|��|S)Nr)rzNo resizers availablezunknown resize mode %szmode %s not available)�RESIZERSr2�
ValueError�	TypeError)rr*r�resize_class�_name�resizer�cur�mmap�k�v�mclassr&r&r'�resizer_factory�s,��
rxc	Cs�d}zAzt�|tj�}t�|dtj�WW|rt�|�SStyC|dkr6t|�YW|r5t�|�SSYW|rAt�|�dSdSw|rLt�|�ww)Nr�zfs)rN�open�O_RDONLY�lseek�SEEK_END�close�FileNotFoundError�get_zfs_size)�filenamer7�fdr&r&r'rK�s*�������rKc
Csn|�d�d}zt�dddd|g�\}}Wntjy0}zt�d||�WYd}~dSd}~wwt|���S)Nrr�zpool�getz	-Hpovalue�sizezFailed: zpool get size %s: %s)�splitr
rErU�debug�int�strip)�datasetr�r��_r[r&r&r'r��s��r�cCs�|�d�r	|dfSt�|�}|std��|d}|d}t��}|dkr?|s?t�t���}|dur?tj�	|�r;|dfStd��||fS)N�/dev/z,Could not determine device of '%s' % dev_entrrJz	/dev/rootz!Unable to find device '/dev/root')
�
startswithr�get_mount_inforn�is_container�rootdev_from_cmdline�get_cmdlinerNrOrQ)�devent�result�devr7�	containerr&r&r'�
devent2dev�s

r�c
Cs�t�d�st�d�dSz
t�dd|g�Wn'tjy=}z|jdkr+t�d|�nt�d|j�WYd}~dSd}~wwttj��t�dd	|g�t�d
|�	Wd�dS1s^wYdS)z�
    Check if a device is an encrypted device. blockdev should have
    a /dev/dm-* path whereas partition is something like /dev/sda1.
    �
cryptsetupz6cryptsetup not found. Assuming no encrypted partitionsF�status�z#Determined that %s is not encryptedzZReceived unexpected exit code %s from cryptsetup status. Assuming no encrypted partitions.N�isLukszDetermined that %s is encryptedT)r
�whichrUr�rErS�warningr)�blockdev�	partitionr[r&r&r'�is_encrypted	s*


���
 �r�c
Cs�ddd|g}t�|�d}|�d�std|����zd|�d�d	�d
�d��WStyA}ztd|�d|�d
��|�d}~ww)N�dmsetup�depsz--options=devnamerz1 dependz5Expecting '1 dependencies' from 'dmsetup'. Received: r�z: (rJ�)zRan `z$`, but received unexpected stdout: `�`)r
r��RuntimeErrorr��
IndexError)r��command�depr[r&r&r'�get_underlying_partition$s 
� ����r�cCs�t��s	tjdfSz@t�dt����!t���
}t�|�}Wd�n1s'wYWd�n1s6wY|d}t	�
|�}|d}WntyZ}ztd�|�d}~wwzKt
j
ddd	d
|g|d�Wzt
�
ddd
|t|�g�Wnt
jy�}zt�d|�WYd}~nd}~wwzt��WnMty�t�td�Yn?wzt
�
ddd
|t|�g�Wnt
jy�}zt�d|�WYd}~nd}~wwzt��Wwty�t�td�Ywwtjd|�d�fS)z�Use 'cryptsetup resize' to resize LUKS volume.

    The loaded keyfile is json formatted with 'key' and 'slot' keys.
    key is base64 encoded. Example:
    {"key":"XFmCwX2FHIQp0LBWaLEMiHIyfxt1SGm16VvUAVledlY=","slot":5}
    zNo encryption keyfile foundzReading N�key�slotzZCould not load encryption key. This is expected if the volume has been previously resized.r�z
--key-file�-r8)�data�luksKillSlotz--batch-modez<Failed to kill luks slot after resizing encrypted volume: %sz8Failed to remove keyfile after resizing encrypted volumez'Successfully resized encrypted volume '�')�KEYDATA_PATHrQrrr	�Timedrz�json�load�base64�	b64decode�	Exceptionr�r
�strrErUr��unlinkrrTr )r�r��f�keydatar��decoded_keyr�r[r&r&r'�resize_encrypted5s�
����
�������	��������	�����
�r�cCs"g}zm|�||||�\}}||kr!|�|tjd||ff�W|S|dus)|durJd}	|dur:|dur:d||f}	nd|}	|�|tj|	f�W|Sd}	|dur]|dur]d||||f}	nd|||f}	|�|tj|	f�W|Sty�}
z|�|tjd|||
ff�WYd}
~
|Sd}
~
ww)Nzno change necessary (%s, %s)�z*changed (%s, %s) size, new size is unknownz&changed (%s) size, new size is unknownzchanged (%s, %s) from %s to %szchanged (%s) from %s to %sz'failed to resize: disk=%s, ptnum=%s: %s)r8�appendrr!r r(r")rrr��disk�ptnumr�r7�info�old�new�msgr[r&r&r'�
_call_resizernsT
��&����
�����r�rrcCsnt�|�}g}|�r5|�d�}d}d}zt|�\}}Wnty8}	z|�|tjd|	f�WYd}	~	qd}	~	wwt�d|�|dkrTt	|t
�rT|t||||||�7}qzt�
|�}
Wntyz}	z|�|tjd||	ff�WYd}	~	qd}	~	wwt
�|
j�s�t
�|
j�s�|�|tjd|f�q|�|�}|r�z?t|�}t||�r�|dd�|D�vr�|�d|�|�d|�Wqt||�\}
}|�||
|f�n
|�|tjd	|�d
�f�Wn!ty�}	z|�|tjd|�d|	��f�WYd}	~	nd}	~	wwqz	|�|�\}}Wn"ttf�y'}	z|�|tjd
||	ff�WYd}	~	qd}	~	ww|t||||||�7}|s
|S)Nrzunable to convert to device: %szgrowpart found fs=%sryzstat of '%s' failed: %szdevice '%s' not a block devicecSsg|]}|d�qS)rr&)�.0�xr&r&r'�
<listcomp>�sz"resize_devices.<locals>.<listcomp>zResizing mapped device (z!) skipped as it is not encrypted.zResizing encrypted device (z
) failed: zdevice_part_info(%s) failed: %s)�copy�popr�rnr�rrrUr��
isinstancer^r�rN�stat�OSError�S_ISBLK�st_mode�S_ISCHR�get_mapped_devicer�r��insertr�r�r"�device_part_inforo)rrrr*r�r�r�r�r�r7r[�statret�underlying_blockdevr�r��messager&r&r'�resize_devices�s�

����

����
���

��
�������

����
�lr��name�cfg�cloud�argsc

Cs�d|vrt�dt�t|d<|�d�}t|t�st�d�dS|�dd�}t�|�rB|dkr:t	j
d|�d�d	d
d�t�d|�dSt�|�d
d��r]tj�
d�r]t�d�t�d�dSt�|ddg�}t|�spt�d�dSz
t||j|d�}Wn"ttfy�}zt�d||�|dkr�|�WYd}~dSd}~wwt�d��t|||j�}	Wd�n1s�wY|	D]\}
}}|tjkr�t�d|
|�q�t�d|
||�q�dS)Nr=z.No 'growpart' entry in cfg.  Using default: %sz#'growpart' in config was not a dictrr�offz"Growpart's 'mode' key with value 'r�z22.2zUse 'off' instead.)�
deprecated�deprecated_version�
extra_messagezgrowpart disabled: mode=%srFz/etc/growroot-disabledz0growpart disabled: /etc/growroot-disabled existsz&use ignore_growroot_disabled to ignorerrzgrowpart: empty device list)r*rz,growpart unable to find resizer for '%s': %szResizing devicesz'%s' resized: %sz'%s' %s: %s)rUr��DEFAULT_CONFIGr�r��dictr�r�is_falser�	deprecaterNrOr_�get_cfg_option_list�lenrxr*rnror	r�r�rr r�)
r�r�r�r��mycfgrrrrr[�resized�entryrbr�r&r&r'�handlesZ�




�


���
�r�r=rarg)Brer�r�r��loggingrN�os.pathrCr��abcrr�
contextlibr�pathlibr�typingrr�	cloudinitrr	r
rr�cloudinit.cloudr
�cloudinit.configr�cloudinit.config.schemar�cloudinit.distrosrr�cloudinit.settingsrrr�__annotations__r�r�r�	getLoggerr#rUr�r(r)r<r^rfr�r9rxr�rKr�r�r:r�r�r�r�r�r�rmr&r&r&r'�<module>sf��
1&
9.t4�
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY