HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/metaproxy/__pycache__/proxy.cpython-310.pyc
o

�N�g��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
ZddlZddlZddl
ZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl!Zddl"Zddl#Zddl$Zddl%Zddl&Zddl'm(Z(ddl)m*Z*m+Z+m,Z,m-Z-ddlm.Z.ddlm/Z/ddl"m0Z0m1Z1e�2e3�Z4dd�Z5d	d
�Z6dd�Z7d
d�Z8dd�Z9dd�Z:dd�Z;ddd�Z<dS)�N)�DEFAULT_TARGET_DELIM)�CommandExecutionError�CommandNotFoundError�SaltInvocationError�SaltSystemExit)�ProxyMinion)�tagify)�SignalHandlingProcess�default_signalsccsx�t�d�|jr-||jd<tjj|j|jd|jd|jd|j�d�d���V|jd<d	|jdvrRd	|jvrRd
|jddd}t�	|�d
|_
td|d��d	|jvra|jdd	|jd	<|j�d�r�t�
|jd�}|�dd�tjjj|j||j�d�|j�dd
�d�|_nQ|j�d�r�d|jdvr�|jdd|jd<d|jdvr�|j�di�}|jdd}z	|||jd<Wnty�}zt�	d|jd�WYd}~nd}~ww|jd	d}|��\|_|_|_|_|jd|jdd�tj�|j�|_tjj|j|jd�|_|��\|_|_|_|_|j|jjd<|j|jjd<|j|jjd<|jd|jjd <tjj|j|jd!�|_|j|jjd"<|j��|jjtjj|j|j |jd!�|�d#�|jv�sp|�d$�|jv�r�d%�!|�d&}t�	|�d
|_
td|d��|j�|�d'�d(d)���|_"|j|d#}||j�tjj#|j|jd!�|jd<|�$�|_%tj�&|j�|_&tj'�(|j|j�|_'tjj)j*|j�d*d�d+�}	tj+j,|jd,|	d-�|_-|j�r|jd�r|��\|_|_|_|_t.|d.��r|j|j/_|j|j/_t.|d.��stjj/j0|j|j|jtj+j1d/d0�g|jd1�|_/|jd2�rJd3|jv�rJ|j/j2d4d3|jdd5d6d5|j�d7d
�d8�id5d9�t�3d:�n|j/j4d4d5d9�|jd;d<k�r�|jd=d>k�r�|j/j2tj+j1d/|jdd?�d@|jd=d5dAd
|jdd5dB�dC�id5d9�|jdD�r�dE|jv�r�|jd|jdEd>k�r�|j/j2tj+j1dFd0�dG|jdHd5dAd
d|jdEd>idC�id5d9�n,|j/j4tj+j1dFd0�d5d9�n|j/j4tj+j1d/|jdd?�d5d9�|j/j4tj+j1dFd0�d5d9�|dI}
|
|jv�r!dJ|jv�r!|j�dKd5��r!|j/j2dLdJ|j�dMdA�d5dAd
dN|idO�id5d9�|j/�5�n|j/j4dLd5d9�|jdPdQd�|jd|_6d5|_7dS)Rz�
    Function to finish init after a proxy
    minion has finished connecting to a master.

    This is primarily loading modules, pillars, etc. (since they need
    to know which master they connected to)
    z'subclassed LazyLoaded _post_master_init�master�grains�id�saltenv�	pillarenv)rr�pillar�proxyz,No proxy key found in pillar or opts for id z. zGCheck your pillar/opts configuration and contents.  Salt-proxy aborted.F���)�code�msgZproxy_merge_pillar_in_optsNZ#proxy_merge_pillar_in_opts_strategyZproxy_deep_merge_pillar_in_opts)ZstrategyZmerge_listsZproxy_mines_pillarZ
mine_intervalZmine_functionszHUnable to merge mine functions from the pillar in the opts, for proxy %s�	proxytypezsaltutil.sync_all)r��utils�	__proxy__�__salt__�__ret__�
__pillar__�r�	__utils__�.initz	.shutdownz=Proxymodule {} is missing an init() or a shutdown() or both. z,Check your proxymodule.  Salt-proxy aborted.�.module_executorscS�gS�N�r"r"r"�H/opt/saltstack/salt/lib/python3.10/site-packages/salt/metaproxy/proxy.py�<lambda>��z"post_master_init.<locals>.<lambda>�user�r&�cachedir��uid�schedule�alive)�type)ZcleanuprZmine_enabledzmine.updateZ__mine_intervalT�Zmine_return_job)�function�minutes�jid_include�
maxrunningZrun_on_start�
return_job)ZpersistzAdded mine.update to schedulerZ	transportZtcpZmaster_alive_intervalr)r-rz
status.master�)r�	connected)r/�secondsr1r2r3�kwargsZmaster_failbackZmaster_listZfailbackzstatus.ping_masterZmaster_failback_intervalz.alivezstatus.proxy_reconnectZproxy_keep_aliveZ__proxy_keepaliveZproxy_keep_alive_intervalZ
proxy_name)r/r0r1r2r3r7zsaltutil.sync_grains�base)8�log�debugr5�opts�saltrZget_async_pillar�getZcompile_pillar�errorZ_runningr�copy�deepcopy�poprZ
dictupdate�merge�	TypeError�
_load_modules�	functions�	returners�function_errors�	executors�loaderr�pack�reload_modulesZio_loopZspawn_callbackZenginesZ
start_enginesZprocess_manager�format�module_executorsrZ_prep_mod_optsZmod_opts�matchersZbeaconsZBeaconr&�get_uid�minion�get_proc_dir�proc_dir�hasattrr+ZScheduleZmaster_eventZadd_job�infoZ
delete_jobZenable_scheduleZgrains_cache�ready)�selfr�errmsgrZgeneral_proxy_minesZspecific_proxy_minesZterr�fq_proxyname�
proxy_init_fnr*Zproxy_alive_fnr"r"r#�post_master_init;s��
	

�
�����



������
����
�

�

�	��
�
 ��
����
���������
rZc
Cs|r|tjj_|s�||�}||_t|d�s�|j|dd�\}}}}	||_||_||_	|	|_
tj�|j
�|_tjj|j
|jd�|_|j|dd�\}}}}	||_||_||_	|	|_
|j|jjd<|j|jjd<|j|jjd<|j
d|jjd	<tjj|j
|jd
�|_|j|jjd<|j��|dd
}
|j�|
�d�dd���|_|j|
d}||�t|d�s�tjjj|�dd�d�}tjj|d|d�|_tjjj�|j��.t|dt�s�t|dt�r�t �!|||�nt �"|||�Wd�dSWd�dS1�swYdS)z�
    Handle targeting of the minion.

    Calling _thread_multi_return or _thread_return
    depending on a single or multiple commands.
    rEr)rrrrrrrrrrrrcSr r!r"r"r"r"r#r$zr%ztarget.<locals>.<lambda>rrRr&Nr'r(r)�fun)#r<�crypt�	AsyncAuth�	creds_mapr5rSrDrErFrGrHrIrr;rrJrKr=rMr&rOrPrQrR�ext�tornadoZ
stack_contextZStackContext�ctx�
isinstance�tuple�listrZ_thread_multi_returnZ_thread_return)
�cls�minion_instancer;�datar5r^rErFrGrHrXrYr*r"r"r#�target<sr

��
��
�
��$�rhcstj��j|d�}tjj�d�|j	|d��dt�
�i}|�|�t�
d|d�tjj�|d��}|�tj�|��Wd�n1sGwYddi}|d	�|�d
�pet�d
g�pe|�d
dg�}t��fdd
�|D��}	��jvs||	du�rܐz`d}
�jr��jd�dd�r��jd�dg�}�dkr��|vr�d}
�jd�dd�r��jd�dg�}�dkr��|vr�d}
|
r�td����jvr؈j�}tj�||d|�\}
}n	�}|d|}
}d�jjdd<t|t�r�|g}nt|t�r�|�std�|���|�dd��r|ddk�rd|d<t� d|�|D](}|�d�}|�j!v�r0td |�d!����j!|||||
|���du�rBn�qt�t"j#��r�d}i}�D]<}t|t$��ret|t$��re|�|�n
|�sjg}|�%|�t&|dd"|d#t|�gd$�}d%|i}��'||�|d&7}�qQ||d%<n�|d%<�jjd�dtj(j)j*�}|tj(j)j*k�r�z
t+�fd'd(�d)D��}Wnt,�y�d}Ynw|�s�tj(j)j-}||d<|tj(j)j*k|d<W�nJt.�y}z(d*��d+�}tj/|dd,�|�d-|��|d%<d.|d/<tj(j)j-|d<WYd}~�nd}~wt0�y@}z"tj1d0�|t2j3d1�d2|��|d%<d.|d/<tj(j)j-|d<WYd}~n�d}~wt�yq}z%tj1d3�|t2j3d1�d4��d5|��|d%<d.|d/<tj(j)j-|d<WYd}~n�d}~wt4�y�}z(d6��||j5�p�d�}tj6|t2j3d1�||d%<d.|d/<tj(j)j-|d<WYd}~n�d}~wt,�y�d7}tj6|dd,�tjj1j7tj8�9|�||d8�|�d-t:�;���|d%<d.|d/<tj(j)j-|d<YnMw�jd9��d:��}|�r��j�<��|�<||d%<n#�j�<��|d%<��=d;�d}|�j>v�r|d%d<��j>|�7<d|d<tj(j)j-|d<d.|d/<|d|d<|d	|d	<|d|d=<d>|v�rE|d>|d><d?|v�r^t|d?t$��rY|d?|d?<nt�6d@��j�rk�j?|��@�dA�t|�d%�t��r�|dB�r�dC�|dB|d%f�|dB<n|d%|dB<t�/dD|�|dB�rt|dBt��r
dE|v�r�|dE|dE<dF|v�r�|dF|dF<|d#|d#<tA|dB�=dC��D]F}z#|�dG�}|�jBv�rۈjB||�n
�jB�<|�}t�1dH||�W�q�t,�y}zt�CdI|d|�WYd}~�q�d}~wwdSdSdS)J�g
    This method should be used as a threading target, start the actual
    minion side execution.
    �jidz{}._thread_return {}�pid�Starting a new job with PID %s�w+bN�successFr[rMZdirect_callcs0g|]}|�d��jvr�j|�d����qS)z.allow_missing_func)rH)�.0�executor)�
function_namerfr"r#�
<listcomp>�s
�z!thread_return.<locals>.<listcomp>Tr�minion_blackout�minion_blackout_whitelist�saltutil.refresh_pillarr��Minion in blackout mode. Set 'minion_blackout' to False in pillar or grains to resume operations. Only saltutil.refresh_pillar allowed in blackout mode.�argr�__context__�retcodezDWrong executors specification: {}. String or non-empty list expectedZ	sudo_user�rZsudozExecutors list %sz.executez
Executor 'z' is not available�progr
�job�returnr4c3s�|]	}��|d�VqdS)TN�r=�ro�x)�return_datar"r#�	<genexpr>s�
�z thread_return.<locals>.<genexpr>��resultrnzCommand required for 'z' not found)�exc_infoz: �nested�outz#A command in '%s' had a problem: %s)Zexc_info_on_loglevelzERROR: zProblem executing '%s': %szERROR executing 'z': z%Passed invalid arguments to {}: {}
{}z'The minion function caused an exception)r|zsys.doc�*�.z Possible reasons: '{}'�fun_argsZ	master_id�metadataz6The metadata parameter must be a dictionary. Ignoring.��timeout�ret�,zminion return: %s�
ret_config�
ret_kwargs�	.returnerz#Returner %s could not be loaded: %s� The return failed for job %s: %s)D�os�path�joinrRr<r�process�appendproctitlerL�__name__�getpid�updater9rT�files�fopen�write�payload�dumpsr=�getattr�anyrEr5r;rrP�load_args_and_kwargsrJrb�strrd�tracerH�types�
GeneratorType�dict�appendrZ_fire_master�defaultsZ	exitcodes�EX_OK�all�	ExceptionZ
EX_GENERICrr:rr>�logging�DEBUGrC�__doc__�warningZfire_exception�
exceptionsZMinionError�	traceback�
format_excZmissing_fun_string�splitrG�_return_pub�_return_retry_timer�setrF�	exception)rerfr;rg�fn_�sdata�fp_r�rHZallow_missing_funcs�minion_blackout_violation�	whitelist�func�argsr7�name�fname�indZiretZsingle�tagZ
event_datary�func_result�excrZdocs�mod_name�returnerZreturner_strZreturner_errr")rqrfr�r#�
thread_return�s��
�

�����
�
��


�

�
�


���
���������
�
�






��� ���r�cstj�|j|d�}tjj�d�|j	|d��dt�
�i}|�|�t�
d|d�tjj�|d��}|�tj�|��Wd�n1sGwY|�dd�}t|d	�}|rjdg|dg|dg|d
��niiid
��td|�D�]}	|s�d�d|d	|	<z�d}
|jr�|jd
�dd�r�|jd
�dg�}|d	|	dkr�|d	|	|vr�d}
n$|jd�dd�r�|jd�dg�}|d	|	dkr�|d	|	|vr�d}
|
r�td��|j|d	|	}tj�||d|	|�\}
}d|jjdd<|r�|	n|d	|	�||
i|���d�<|jjd�dd�}|dk�r<zt��fdd�dD��}Wnt�y6d}Ynw|�s<d}|�d�<|dk�d�<Wn1t�y|}z$t� �}t�!d|�|�rh|�d|	<n
|�d|d	|	<WYd}~nd}~ww|d�d<|d	�d	<|d�d<qud|v�r�|d�d<|j�r�|j"�|�#�d�|d �r�d!|v�r�|d!�d!<d"|v�r�|d"�d"<t$|d �%d#��D]4}|d$�d$<z
|j&|�d%���W�q�t�y�}zt�'d&|d|�WYd}~�q�d}~wwdSdS)'rirjz{}._thread_multi_return {}rkrlrmN�multifunc_orderedFr[)r}ryrnrrnrrsrtruTrrvrwrxryr}c3s$�|]
}�d��|d�VqdS)r}TNr~r��keyr�r"r#r��s�
�z&thread_multi_return.<locals>.<genexpr>r�r4z+The minion function caused an exception: %sr�r�r�r�r�r�r�r
r�r�)(r�r�r�rRr<rr�r�rLr�r�r�r9rTr�r�r�r�r�r=�len�ranger5r;rrErPr�rJr�r�r�r�r�r�r�r�r�rFr>)rerfr;rgr�r�r�r�Z	num_funcsr�r�r�r�r�r7ryr�r�Ztrbr�r"r�r#�thread_multi_returnws��
���
��
���
����



 ���r�cCs^|dur)|ddkr+|�|d�r|�|d�dS|jdr-t�d|d�dSdSdSdS)z`
    Verify the publication and then pass
    the payload along to _handle_decoded_payload.
    N�encZaes�loadZ
zmq_filteringz8Broadcast message received not for this minion, Load: %s)Z_target_loadZ_handle_decoded_payloadr;r9r�)rVr�r"r"r#�handle_payload�s
��r�c		cs`�d|vrt�d|d|d|d�nt�d|d|d�t�d|�t�d|j�|jdurR|d|jvr:dS|j�|d�t|j�|jd	krR|j�d
�t	|dt
�ru|ddkru|��\|_|_
|_|_|j|j_|j
|j_
|j�d�}|d
kr�ttjj�|j��}||kr�t�d
|d�tjjj�d�Vttjj�|j��}||ks�|}|j�dd�}d�|d�}d}|r�tjj��r�d}tjjj }t!t"j#t"j$��t%|j&|||j||j'|fd�}Wd�n1s�wYnt(j)|j&||j||j'|f|d�}|�r$t!t"j#t"j$��|�*�Wd�n	1�swYn|�*�|j+�,|�dS)zV
    Override this method if you wish to handle the decoded data
    differently.
    r&z(User %s Executing command %s with jid %sr[rjz Executing command %s with jid %szCommand details %szStarted JIDs: %sNZminion_jid_queue_hwmrzsys.reload_modules�process_count_maxzFMaximum number of processes reached while executing jid %s, waiting...�
�multiprocessingTzProcessPayload(jid={}))rhr�r�)rhr�r�)-r9rTr:r�Z	jid_queuer�r�r;rArbr�rDrErFrGrHr+r=r<rrPZrunningr�r_r`�gen�sleeprL�platformZspawning_platformr\r]r^r
�signal�SIGINT�SIGTERMr	�_targetr5�	threading�Thread�startZsubprocess_list�add)	rVrgr�Z
process_count�instanceZmultiprocessing_enabledr�r^r�r"r"r#�handle_decoded_payload�s���
�

��
����
��r�cCs�d|vsd|vsd|vsd|vrdSd|vrJ|j�d�|d�d�}|dur(dS|dd	vr@|�d
t�}||d|d�s>dSd
S||d�sHdSd
S|jd|d�sUdSd
S)z/
    Verify that the publication is valid.
    Ztgtrjr[rwFZtgt_typez{}_match.matchN)ZgrainZ
grain_pcrer�	delimiter)r�zglob_match.matchT)rNr=rLr)rVr�Z
match_funcr�r"r"r#�target_loadQs" ��r�TcCstt|�j|d�dS)z_
    Lock onto the publisher. This is the main event loop for the minion
    :rtype : None
    )r�N)�superr�tune_in)rVr�r"r"r#r�psr�)T)=r?r�r�r�r�r�r�r<Zsalt.beaconsZsalt.cli.daemonsZsalt.clientZ
salt.cryptZsalt.defaults.exitcodesZsalt.enginesZsalt.ext.tornado.genZsalt.ext.tornado.ioloopZsalt.loaderZsalt.minionZsalt.payloadZsalt.pillarZsalt.serializers.msgpackZ
salt.syspathsZsalt.utils.argsZsalt.utils.contextZsalt.utils.dataZsalt.utils.dictupdateZsalt.utils.errorZsalt.utils.eventZsalt.utils.filesZsalt.utils.jidZsalt.utils.minionZsalt.utils.minionsZsalt.utils.networkZsalt.utils.platformZsalt.utils.processZsalt.utils.scheduleZsalt.utils.ssdpZsalt.utils.userZsalt.utils.zeromqZ
salt.defaultsrZsalt.exceptionsrrrrrrr	r
�	getLoggerr�r9rZrhr�r�r�r�r�r�r"r"r"r#�<module>sp
PlpV