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 :  /lib/python3.9/site-packages/cfnbootstrap/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3.9/site-packages/cfnbootstrap/__pycache__/update_hooks.cpython-39.pyc
a

��0inm�@s6ddlZddlmZddlmZddlmZddlmZddl	m
Z
ddlmZddlm
ZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	mZddlZddlZe�d	�Zd
d�ZGdd
�d
e�Z Gdd�de�Z!Gdd�de"�Z#Gdd�de"�Z$Gdd�de"�Z%Gdd�de"�Z&dS)�N)�util)�
AwsQueryError)�CloudFormationClient)�	SQSClient)�
ProcessHelper)�Timer)�Credentialszcfn.hupc
Cs�tj�|d�}tj�|�s&td|��t��}|�|�|�dd�sLtd��|�dd�}|�dd�rxt	�
|�dd��}nb|�dd�r�zt	�|�dd��}Wq�ty�}ztd|j
��WYd}~q�d}~00n
td	d	�}tj�|d
�}g}tj�|��r8t�|�D]2}tj�tj�||���r|�tj�||���qt��}	|	�tj�|d�g|�}
|
�sztdtj�|d�|f��g}g}|	��D�]&}
|	�|
d
��s�t�d|
��q�dd�|	�|
d
��d�D�}|	�|
d��s�t�d|
��q�|	�|
d��st�d|
��q�d}|	�|
d��r(|	�|
d���}t|
||	�|
d���|	�|
d�|�}|���r�|	�|
d��rxt	�|	�|
d��|_|	�|
d��r�t	�|	�|
d��|_|�|�n
|�|��q�|�s�|�s�td��d}|�dd��r�|�dd�}t�|�}|�dd��r
|�dd�}t|||�}|�dd��r<|�dd�}t	�|�}nd}|�rTt|||�}nd}|�r�t�|�}|�dd��r�|�dd�}t|||d �}t |||t|||�|�}nd}|||fS)!Nzcfn-hup.confz'Could not find main configuration at %s�main�stackz([main] section must contain stack optionZrolezcredential-filez-Could not retrieve credentials from file:
	%s�zhooks.dz
hooks.confz)No hook configurations found at %s or %s.�triggersz!No triggers specified for hook %scSsg|]}|���qS�)�strip)�.0�sr
r
�=/usr/lib/python3.9/site-packages/cfnbootstrap/update_hooks.py�
<listcomp>\s�z parse_config.<locals>.<listcomp>�,�pathzNo path specified for hook %s�actionzNo action specified for hook %s�runas�	singleton�send_resultzNo valid hooks foundz	us-east-1�region�urlzmulti-threadedT�sqs_url)r)!�osr�join�isfile�
ValueError�ConfigParser�readZ
has_option�getrZRoleBasedCredentialsZextract_credentials�IOError�strerrorr�isdir�listdir�appendZsections�logging�error�splitr�Hook�is_cmd_hookZinterpret_booleanrrrZendpointForRegion�
HookProcessorr�CmdProcessor)Zconfig_pathZmain_conf_pathZmain_configr
�credentials�eZadditional_hooks_pathZadditional_filesZ	hook_fileZhooks_configZ
files_read�hooksZ	cmd_hooksZsectionrr�hookrZcfn_url�
cfn_client�value�multi_threadedZ	processorr�
sqs_clientZ
cmd_processorr
r
r�parse_config)s��

�
��

�
���
�

�
�

��r7c@seZdZdd�Zdd�ZdS)�FatalUpdateErrorcCs
||_dS�N��msg��selfr;r
r
r�__init__�szFatalUpdateError.__init__cCs|jSr9r:�r=r
r
r�__str__�szFatalUpdateError.__str__N��__name__�
__module__�__qualname__r>r@r
r
r
rr8�sr8c@seZdZdd�Zdd�ZdS)�InFlightStatusErrorcCs
||_dSr9r:r<r
r
rr>�szInFlightStatusError.__init__cCs|jSr9r:r?r
r
rr@�szInFlightStatusError.__str__NrAr
r
r
rrE�srEc@sXeZdZdd�Zedd��Zedd��Zedd��Zed	d
��Zedd��Z	d
d�Z
dS)r+cCs6|dd�|_||_||_||_||_d|_d|_dS)NFT)�	_triggers�_path�_action�_name�_runasrr)r=�namerrrrr
r
rr>�sz
Hook.__init__cCs|jSr9�rFr?r
r
rr�sz
Hook.triggerscCs|jSr9)rGr?r
r
rr�sz	Hook.pathcCs|jSr9)rHr?r
r
rr�szHook.actioncCs|jSr9)rIr?r
r
rrK�sz	Hook.namecCs|jSr9)rJr?r
r
rr�sz
Hook.runascCs|jdgkS)Nz
on.commandrLr?r
r
rr,�szHook.is_cmd_hookN)rBrCrDr>�propertyrrrrKrr,r
r
r
rr+�s	




r+c@s0eZdZdd�Zdd�Zdd�Zedd��Zd	S)
�!AutoRefreshingCredentialsProvidercCs2||_||_||_d|_d|_d|_t��|_dS)NF)	�_cfn_client�_stack_name�_listener_id�_creds�_last_timer�listener_expired�	threadingZLock�
_refresh_lock)r=r3�
stack_name�listener_idr
r
rr>�sz*AutoRefreshingCredentialsProvider.__init__cCs`|j��Bt�d�|jr$|j��z|j�|j|j�|_	d|_
Wnzty�}zBt|d�rxd|j
krxd|_
t�d�nd|_
t�d�WYd}~n*d}~0ty�d|_
t�d�Yn0t��}|j	r�t�|j	j���n|}||}|d	k�rtd
|d�}ndt��}t�d
|�t||j�}d|_|��||_Wd�n1�sR0YdS)NzRefreshing listener credentialsF�
error_codeZListenerExpiredTzListener expiredz+IOError caught while refreshing credentialsz Exception refreshing credentialsii ��<z0Scheduling next credential refresh in %s seconds)rV�log�inforSZcancelrOZget_listener_credentialsrPrQrRrTr#�hasattrrY�	exception�	Exception�time�calendarZtimegm�
expirationZutctimetuple�min�randomr�refresh�daemon�start)r=r0�nowrcZ	remainingZnext_refresh�tr
r
rrf�sL


�
��
��
�z)AutoRefreshingCredentialsProvider.refreshcCs|jo|jjtj��kSr9)rRrc�datetime�utcnowr?r
r
r�
creds_expiredsz/AutoRefreshingCredentialsProvider.creds_expiredcCs4td�D]}|jrq |��q|js.td��|jS)N�z'Could not retrieve listener credentials)�rangerRrfr)r=�ir
r
rr/s
z-AutoRefreshingCredentialsProvider.credentialsN)rBrCrDr>rfrmrMr/r
r
r
rrN�s
	'rNc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$S)%r.zProcesses CommandService hookscCs�||_|�|�|_||_||_||_|js4t�d�t�	�rHt�
�|_n|jsZt
��|_ntd��t|j|j|j�|_d|_|��tj�|jd�|_|��|_d|jvr�i|jd<d|jvr�i|jd<t�|_t��|_t��|_ dS)�/Takes a list of Hook objects and processes themzEnabled single threading mode.zCould not retrieve instance idNzcommands_run.json�by_id�by_day)!rW�_hooks_by_pathr1r6r3r5r\�debugrZis_ec2Zget_instance_idrXZusing_instance_identity�socketZgetfqdnrrN�_creds_provider�	queue_url�_create_storage_dirrrr�storage_dir�_runfile�_load_commands_run�
_commands_run�set�_currently_runningrU�RLock�_currently_running_lock�_commands_run_lock)r=rWr1r6r3r5r
r
rr>s4
�





zCmdProcessor.__init__c	Cs�tj�|j�r�t|jd��f}zt�|�WWd�Stypt�	d�t�
|j�iYWd�S0Wd�q�1s�0YniSdS)N�rz&Could not load previously run commands)rrrr{�open�json�loadr`r\r_�remove�r=�fr
r
rr|Ds
8zCmdProcessor._load_commands_runcCs|jduo|jjSr9)rxrwrTr?r
r
r�
is_registeredPszCmdProcessor.is_registeredcCs
|j��Sr9)rwrmr?r
r
rrmSszCmdProcessor.creds_expiredc
Cshz|j�|j|j�j|_Wn@tyZ}z(|jdkrDtdt|����WYd}~n
d}~00d|j	_
dS)NZValidationErrorz)Terminal failure registering listener: %sF)r3Zregister_listenerrWrXrxrrYr8�strrwrT)r=r0r
r
r�registerVs�

�zCmdProcessor.registercCs~tjdkrtj�d�|_nd|_tj�|j�szt�d|j�zt�|jd�Wn*t	yxt�
d|j�t��|_Yn0dS)N�nt�${SystemDrive}\cfn\cfn-hup\data�/var/lib/cfn-hup/data�Creating %s��.Could not create %s; using temporary directory)
rrKr�
expandvarsrzr%r\ru�makedirs�OSError�warn�tempfile�mkdtempr?r
r
rryas
��z CmdProcessor._create_storage_dirc	Cs>tj��}|jddddd���}|j��d|jd|�|�<||jdvrZg|jd|<|jd|�|�|��z�g}|jd��D]L}|tj�	|d�tj
dd�kr�|jd|D]}|jd|=q�|�|�q�|D]}|jd|=q�|��Wn"t�yt
�d	|j�Yn0Wd�n1�s00YdS)
Nr)ZhourZminute�secondZmicrosecondTrrrsz%Y-%m-%dT%H:%M:%SrZ)ZdayszCould not write runfile to %s)rkrl�replace�	isoformatr�r}�_get_idr'�keys�strptimeZ	timedelta�_write_commands_runr`r\r_r{)r=r;riZcmd_timeZkeys_to_delete�keyZcmd_idr
r
r�_command_completedps*

�

zCmdProcessor._command_completedcCs>t|jd��}t�|j|�Wd�n1s00YdS)N�w)r�r{r��dumpr}r�r
r
rr��sz CmdProcessor._write_commands_runcCs@z|jj|j||jjd�Wnty:t�d|�Yn0dS)N��request_credentialsz&Could not delete message for handle %s)r6Zdelete_messagerxrwr/r`r\r_)r=�receipt_handler
r
r�_delete_message�s�
�zCmdProcessor._delete_messagecCs |dd|dd|dS)N�DispatcherId�|�CommandName�InvocationIdr
r<r
r
rr��szCmdProcessor._get_idcCs>|j�$|�|�|jdvWd�S1s00YdS)Nrr)r�r�r}r<r
r
r�_already_run�szCmdProcessor._already_runcCs<zt�t�|j�d�WSty6t�d�YdS0dS)N�MessagezReceived invalid message)r��loads�bodyr`r\r_r<r
r
r�_parse�s

zCmdProcessor._parsec
Cs�|jdurtd��g}�z|jj|j|jjdd�D]�}|�|�}|s^t�d|�|�	|j
�q2|�|�r�t�d|�|��|�	|j
�q2|j
��|�|�|jv�r|�|��s|j�|�|��|jr�tj|j||j
fd�}d|_|�|�|��n|�||j
�Wd�q21�s0Yq2Wn~t�y>�Ynjt�y�}z4t|d��rld	|jk�rld|_t�d
�WYd}~n&d}~0t�y�t�d�Yn0|S)Nz/Cannot process command hooks before registering�)r�Z	wait_timezInvalid message, deleting: %szAlready ran %s, deleting)�target�argsTrYz'AWS.SimpleQueueService.NonExistentQueuez(IOError caught while processing messagesz*Exception caught while processing messages)rxr8r6Zreceive_messagerwr/r�r\r]r�r�r�r�r�r�addr5rUZThread�_process_msgrgr'rhr#r^rYr_r`)r=Zthreadsr;�cmd_msg�threadr0r
r
r�process�sH
�

�

4zCmdProcessor.processcCs�t�d|�d}�z0z�t�d|�tj�t|d�d�}|tj��krpt�d|d|d|d	|���d
}nDt�d|d|d�|j�	|d�}|r�|�
||�r�|�|�d
}Wn>tt
fy�t�d�d
}Ynty�t�d
�Yn0W|�r|�|�|j�"|j�|�|��Wd�n1�s80YnL|�rT|�|�|j�"|j�|�|��Wd�n1�s�0Y0dS)NzProcessing message: %sFzCommand message: %sZ
Expirationi�z@Invocation %s of command %s for stack %s expired at %s; skippingr�r�r�Tz'Received command %s (invocation id: %s)z%Invalid message received; deleting itz$Unexpected exception running command)r\rurkZutcfromtimestamp�intrlr]r�r1r"�	_run_hookr�r�KeyErrorr_r`r�r�rr�r�)r=r�r��deletercZhook_to_runr
r
rr��sB���


4�
zCmdProcessor._process_msgcCs|jrXt�d|j�|j�|j|d|d|j�}||jkrHt�d�nt�d|�dS|�|�}|d}t�d|j�t�	d	|�|j
}|jr�tjd
kr�d|jd|g}n
t�
d
�t|tj|d���}t�	d|j|jr�|jnd�|js�dS|d|d|d|j�rdnd|jd�}|j�rp|j��}	t�
d|j|j�t|	�dk�rN|	n|	dd�d|	dd�|d<nZ|j��}
t|
�dk�r�t�d|j�d|d<d|
dd�|d<nt�d |j�|
|d!<z |jj|t�|�|jjd"�Wn t�y
t� d#�Yd$S0dS)%Nz+Hook %s is configured to run as a singletonr�r�z4This listener is the leader.  Continuing with actionz2This listener is not the leader; %s is the leader.T�ResultQueue�Running action for %szAction environment: %s�posix�su�-cz/runas is not supported on this operating system)�stderr�env�Action for %s output: %s�<None>r��FAILURE�SUCCESS)r�r�r��StatusZ
ListenerIdz/Action for %s exited with %s, returning FAILUREiri�z...i���r�zCstdout for %s was greater than 1024 in length, which is not allowedr�z6Result data was longer than 1024 bytes. Started with: �dz*Action for %s succeeded, returning SUCCESS�Datar�z1Error sending result; will leave message in queueF)!rr\r]rKr3Zelect_command_leaderrWrX�_get_environmentrurrrr�r�
subprocess�PIPE�call�stdoutr�
returncoder��rstrip�lenr)r6Zsend_messager��dumpsrwr/r`r_)r=r2r�Zleader�
action_envZresult_queuer�resultZ
result_msgZ
result_stderrZ
result_stdoutr
r
rr��s�
�
�


�

��
���
�
�
�
��

zCmdProcessor._run_hookcCs4i}|D]&}|j|vr$td|j��|||j<q|S)Nz(Multiple hooks for the same command (%s))rr8)r=r1Z	ret_hooksr2r
r
rrt9s
�zCmdProcessor._hooks_by_pathcCs�ttj�}d|vr|d|d<|d|d<|d|d<|d|d<|j|d	<|j|d
<|d|d<d
|vrv|d
|d<|jj}|j|d<|j|d<|j	|d<|S)Nr�ZCMD_DATAr�Z
INVOCATION_IDr�Z
DISPATCHER_IDr�ZCMD_NAMEZ
STACK_NAMEZLISTENER_IDr�ZRESULT_QUEUEZEventHandleZEVENT_HANDLEZRESULT_ACCESS_KEYZRESULT_SECRET_KEYZRESULT_SESSION_TOKEN)
�dictr�environrWrXrwr/Z
access_keyZ
secret_keyZsecurity_token)r=r�r�Zcredsr
r
rr�Bs 





zCmdProcessor._get_environmentN)rBrCrD�__doc__r>r|r�rmr�ryr�r�r�r�r�r�r�r�r�rtr�r
r
r
rr.s$%,!E	r.c@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)r-zProcesses update hookscCs�||_tjdkr tj�d�|_nd|_tj�|j�s�t�d|j�zt�	|jd�Wn*t
y~t�d|j�t�
�|_Yn0t�|jd�||_||_t�g�|_dS)	rqr�r�r�r�r�r��metadata_db.jsonN)r1rrKrr��dirr%r\rur�r�r�r�r��JsonFileManagerZcreate�clientrWZ	Converter�_jsonConverter)r=r1rWr�r
r
rr>Xs"
�zHookProcessor.__init__c	Csht�|jd�}i|_|jD]H}z|�||�WqtyB�Yqty`t�	d|j
�Yq0qdS)Nr�z&Exception caught while running hook %s)r�r!r��_resource_cacher1�
_process_hookr8r`r\r_rK)r=�metadatar2r
r
rr�ls
�zHookProcessor.processc	Cs�z|�|j�}Wnty$YdS0|j�|�|jd|jd��}d|jvrh|sh|rht�	d|j�n�d|jvr�|r�|s�t�	d|j|j�nld|jvr�|r�|r�||kr�t�	d|j�nBt�
d|j|j�|j�|�||jd|j<t�
|jd	|�dSt�	d
|j�ttj�}|�|j�}|�r6|�|�|d|<|�rN|�|�|d|<|j}|j�rjd
|jd|g}t||d���}|j�r�t�d|j|j�n,|j�|�||jd|j<t�
|jd	|�t�
d|j|j�r�|jnd�dS)Nr�zpost.addz3Previous state not found; action for %s will be runzpost.removez.Path %s was removed; action for %s will be runzpost.updatez?Data has changed from previous state; action for %s will be runz No change in path %s for hook %sr�r�z
CFN_OLD_%sz
CFN_NEW_%sr�r�)r�z:Action for %s exited with %s; will retry on next iterationr�r�)�_retrieve_path_datarrEr�Zdeserializer"rKrr\r]ruZ	serializer��writer�r�rr��_retrieve_env_key�
_as_stringrrrr�r�r�r�)	r=r2r�Znew_dataZold_datar�Zenv_keyrr�r
r
rr�xsb����
�
�
�
�
�
�zHookProcessor._process_hookcCs,t|t�r|St|tj�r"|��St�|�Sr9)�
isinstancer�rkr�r�r�)r=�objr
r
rr��s

zHookProcessor._as_stringcCsH|�dd�}t|�dkrdS|d��dkr0dS|d��dkrDdSd	S)
zUGiven a hook path, return the key to append to environment variables for old/new data�.rnZLAST_UPDATEDrZr�ZMETADATA�physicalresourceidZPHYSICAL_RESOURCE_IDN)r*r��lower)r=r�partsr
r
rr��szHookProcessor._retrieve_env_keycCs`|�dd�}t|�dkr$td|��|d��dkr@td|��t|�dkrRd}n*|d��dvrptd	|��n|d��}|d
}t|�dkr�dn|d}||jvr�|j�||j�|j|<|j|}|j}|�r|�	d
��rt
�d||j|�td||j|f��|dk�r8|j
�s*t
�d||j�dSt�|j
|�Sd|k�rFdS|dk�rV|jS|jSdS)Nr�rnrZz�Unsupported path: paths must be in the form Resources.<LogicalResourceId>(.Metadata|PhysicalResourceId)(.<optional Metadata subkey>). Input: %srZ	resourceszDUnsupported path: only changes to Resources are supported (path: %s))r�r�ziUnsupported path: only Metadata or PhysicalResourceId can be specified after LogicalResourceId (path: %s)��rZ_IN_PROGRESSz0Skipping resource %s in %s as it is in status %sz%s in %s is in status %sr�zNo metadata for %s in %sZDELETE_COMPLETEr�)r*r�r8r�r�r�Zdescribe_stack_resourcerWZresourceStatus�endswithr\rurEr�r�rZ
extract_valueZphysicalResourceIdZlastUpdated)r=rr�ZresourcePartZ
logical_idZsubpath�resourceZstatusr
r
rr��sV���
�

��
�

z!HookProcessor._retrieve_path_dataN)
rBrCrDr�r>r�r�r�r�r�r
r
r
rr-Us1r-)'rUZcfnbootstraprZcfnbootstrap.aws_clientrZcfnbootstrap.cfn_clientrZcfnbootstrap.sqs_clientrZcfnbootstrap.utilrrZcfnbootstrap.json_file_managerZjson_file_managerr�rbrkr(rrervr�r�rarr�Zconfigparserr Z	getLoggerr\r7r`r8rE�objectr+rNr.r-r
r
r
r�<module>s:
|		#B;

Youez - 2016 - github.com/yon3zu
LinuXploit