HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //usr/lib/python3.6/site-packages/ipaplatform/base/__pycache__/services.cpython-36.opt-1.pyc
3

�d[e�I�@s.dZddlmZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZddl
mZddlmZeje�Zdd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&gZd'gd(d)gd(d)gd(d)gd*�Zd+ZGd,d-�d-e�ZGd.d/�d/�ZGd0d1�d1e�Zd5d2d3�ZeZei�Zddd4gZdS)6zj
This base module contains default implementations of IPA interface for
interacting with system services.
�)�absolute_importN)�ipautil)�paths)�tasks)�MappingZ
certmonger�dirsrvZhttpdZipaZkrb5kdcZdbusZnslcdZnscdZntpdZportmapZrpcbindZkadminZsshdZautofsZrpcgssdZ	rpcidmapdZpki_tomcatdZchronydZ
domainnameZnamedZ
ods_enforcerdZods_signerdZgssproxyz	nfs-utilsZsssdZNetworkManagerzipa-custodiazipa-dnskeysyncdzipa-otpdzipa-ods-exporterzsystemd-resolvedi�i�i� )rz[email protected]
pki-tomcatzpki-tomcatdg�������?c@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�
KnownServicesz�
    KnownServices is an abstract class factory that should give out instances
    of well-known platform services. Actual implementation must create these
    instances as its own attributes on first access (or instance creation)
    and cache them.
    cCs
||_dS)N)�_KnownServices__d)�self�d�r�/usr/lib/python3.6/services.py�__init__NszKnownServices.__init__cCs
|j|S)N)r	)r
�keyrrr
�__getitem__QszKnownServices.__getitem__cCs
t|j�S)N)�iterr	)r
rrr
�__iter__TszKnownServices.__iter__cCs
t|j�S)N)�lenr	)r
rrr
�__len__WszKnownServices.__len__cCstj|j�S)N)�sixZ
itervaluesr	)r
rrr
�__call__ZszKnownServices.__call__cCs,y
|j|Stk
r&t|��YnXdS)N)r	�KeyError�AttributeError)r
�namerrr
�__getattr__]s
zKnownServices.__getattr__N)
�__name__�
__module__�__qualname__�__doc__rrrrrrrrrr
rGsrc@s�eZdZdZd%dd�Zd&dd�Zd'd	d
�Zd(dd�Zd)d
d�Zd*dd�Z	d+dd�Z
dd�Zd,dd�Zd-dd�Z
d.dd�Zd/dd�Zd0dd�Zd1dd �Zd2d!d"�Zd3d#d$�ZdS)4�PlatformServicez�
    PlatformService abstracts out external process running on the system
    which is possible to administer (start, stop, check status, etc).

    NcCsBddl}||_|dk	r||_n |j|_tjdj|d�tdd�dS)NrzC{s.__class__.__name__}('{s.service_name}', api=None) is deprecated.)�s�)�
stacklevel)�ipalib�service_name�api�warnings�warn�format�RuntimeWarning)r
r$r%r#rrr
rkszPlatformService.__init__�TcCs�|sdSg}y&ttjd��}tj|�}WdQRXWntk
rFYnX|j|kr^|j|j�ttjd��}tj||�WdQRXdS)z�
        When a service is started record the fact in a special file.
        This allows ipactl stop to always stop all services that have
        been started via ipa tools
        N�r�w)	�openr�
SVC_LIST_FILE�json�load�	Exceptionr$�append�dump)r
�
instance_name�capture_output�wait�update_service_list�svc_list�frrr
�startys
zPlatformService.startcCs�|sdSg}y&ttjd��}tj|�}WdQRXWntk
rFYnXx|j|krb|j|j�qJWttjd��}tj||�WdQRXdS)zQ
        When a service is stopped remove it from the service list file.
        Nr+r,)	r-rr.r/r0r1r$�remover3)r
r4r5r7r8r9rrr
�stop�szPlatformService.stopcCsdS)Nr)r
r4r5r6rrr
�reload_or_restart�sz!PlatformService.reload_or_restartcCsdS)Nr)r
r4r5r6rrr
�restart�szPlatformService.restartcCsdS)Nr)r
r4r5r6rrr
�try_restart�szPlatformService.try_restartcCsdS)NFr)r
r4r6rrr
�
is_running�szPlatformService.is_runningcCsdS)NFr)r
rrr
�is_installed�szPlatformService.is_installedcCsdS)NFr)r
r4rrr
�
is_enabled�szPlatformService.is_enabledcCsdS)NFr)r
r4rrr
�	is_masked�szPlatformService.is_maskedcCsdS)Nr)r
r4rrr
�enable�szPlatformService.enablecCsdS)Nr)r
r4rrr
�disable�szPlatformService.disablecCsdS)Nr)r
r4rrr
�mask�szPlatformService.maskcCsdS)Nr)r
r4rrr
�unmask�szPlatformService.unmaskcCsdS)Nr)r
r4rrr
�install�szPlatformService.installcCsdS)Nr)r
r4rrr
r;�szPlatformService.remove)N)r*TTT)r*TT)r*TT)r*TT)r*TT)r*T)r*)r*)r*)r*)r*)r*)r*)r*)rrrrrr:r<r=r>r?r@rArBrCrDrErFrGrHr;rrrr
rds(













rcs�eZdZdZd0�fdd�	Zd1dd�Zd2dd�Zd3d
d�Zd4�fd
d�	Zd5�fdd�	Z	d6dd�Z
d7dd�Zd8dd�Zd9dd�Z
d:dd�Zdd�Zd;dd�Zd<d d!�Zd=d"d#�Zd>d$d%�Zd?d&d'�Zd@d(d)�ZdAd*d+�Zd,d-�Zd.d/�Z�ZS)B�SystemdServicez%s.target.wantsNcs8tt|�j||d�||_tjjtj|j�|_	d|_
dS)N)r%)�superrIr�systemd_name�os�path�joinr�LIB_SYSTEMD_SYSTEMD_DIR�lib_path�lib_path_exists)r
r$rKr%)�	__class__rr
r�s


zSystemdService.__init__cCs�|jdkrtjj|j�|_|jjd�}|ddkrR|rRdt|jj	j
jdd��S|jr�|r�t|�dkrn|jSt|�dkr�|dddkr�|jSt|�dkr�|r�d|d|fSd	|d}tjj
tj|�}tjj|�r�|S|jS)
N�@rrzdirsrv@%s.service�.�-�z
%s@%s.servicez	%s.target)rQrLrM�existsrPrK�split�strr%�envZrealm�replacerrNrrO)r
r4�	operation�elementsZtgt_nameZsrv_librrr
�service_instance�s&

zSystemdService.service_instancecs(ddd��t��fdd�|jd�D��S)a
        Parses 'systemctl show' output and returns a dict[variable]=value
        Arguments: text -- 'systemctl show' output as string
                   separator -- optional (defaults to None), what separates
                                the key/value pairs in the text
        NcSs*t|�dkr&|j|�}|d|dfSdS)NrVr���)NN)rrX)�x�	separator�yrrr
�splitters
z0SystemdService.parse_variables.<locals>.splitterc3s|]}�|�d�VqdS))raNr)�.0r`)rarcrr
�	<genexpr>
sz1SystemdService.parse_variables.<locals>.<genexpr>�
)N)�dictrX)r
�textrar)rarcr
�parse_variables�s
zSystemdService.parse_variablesr*cCsVd}|tkrt|}n$|jjd�}|dtkr:t|d}|rRtjd||jjj�dS)zA
        If this is a service we need to wait for do so.
        NrSrZ	localhost)�wellknownportsrKrXr�wait_for_open_portsr%rZZstartup_timeout)r
r4Zportsr]rrr
rks
z"SystemdService.wait_for_open_portsTcsp|j|�}tjd|g}|dkr(|jd�tj||d�t|jjdd�d
k}t	t
|�j||d�tj
d	|�dS)Nr<zipa-otpd.socketz--ignore-dependencies)�skip_output�context�ipactl�	installer)r7zStop of %s complete)rnro)r^r�	SYSTEMCTLr2r�run�getattrr%rZrJrIr<�logger�debug)r
r4r5�instance�argsr7)rRrr
r<s




zSystemdService.stopcsztjtjd|j|�g|d�t|jjdd�dk}|rP|j|�rP|j	|j|��t
t|�j||d�t
jd|j|��dS)	Nr:)rlrmrnro)r7zStart of %s complete)rnro)rrqrrpr^rrr%rZr@rkrJrIr:rsrt)r
r4r5r6r7)rRrr
r:/s





zSystemdService.startFcCsRtjtj||j|�g|d�|r<|j|�r<|j|j|��tjd|j|��dS)N)rlzRestart of %s complete)	rrqrrpr^r@rkrsrt)r
r4r\r5r6rrr
�
_restart_base?s


zSystemdService._restart_basecCs|j|d||�dS)Nzreload-or-restart)rw)r
r4r5r6rrr
r=Ksz SystemdService.reload_or_restartcCs|j|d||�dS)Nr>)rw)r
r4r5r6rrr
r>PszSystemdService.restartcCs|j|d||�dS)Nztry-restart)rw)r
r4r5r6rrr
r?TszSystemdService.try_restartcCs�|j|d�}x�ytjtjd|gdd�}WnFtjk
rn}z(|jdkr`dt|j�kr`t	j
t�wdSd}~XqX|jdkr�d|jkr�t	j
t�q|jdkr�dSdSqWdS)Nz	is-activeT)r5�Z
activatingFr)r^rrqrrp�CalledProcessError�
returncoderY�output�timeZsleep�SERVICE_POLL_INTERVAL)r
r4r6ru�result�errr
r@Xs"



zSystemdService.is_runningcCsbyFtjtjddgdd�}|jdkr&dS|j|j�}|jd�|krDdSWntjk
r\dSXdS)Nzlist-unit-filesz--fullT)r5rFr*)	rrqrrprzrir{r^ry)r
r~Zsvarrrr
rAqs

zSystemdService.is_installedcCsNd}y*tjtjd|j|�g�}|jdkr,d}Wntjk
rHd}YnX|S)NTz
is-enabledrF)rrqrrpr^rzry)r
r4Zenabledr~rrr
rB�s

zSystemdService.is_enabledcCsXd}y8tjtjd|j|�gdd�}|jdkr:|jdkr:d}Wntjk
rRYnX|S)NFz
is-enabledT)r5rV�masked)rrqrrpr^rzr{ry)r
r4r�r~rrr
rC�s
zSystemdService.is_maskedcCsh|jdkrtjj|j�|_|jjd�}t|�}|jrZ|dkrZ|dddkrZ|j|�dS|jrt|dkrt|j�dSt|�dko�|dk�rZtjj	t
j|j|d�}tjj	||j
|��}y�tjj|�s�tj|�tj|d�tjj|�r�tj|�tjj|��s6tjj|��stj|j|�ntj|�tj|j|�tj�Wntk
�rVYnXn
|j|�dS)NrSrVrrTi�)rQrLrMrWrPrKrXr�_SystemdService__enablerNr�ETC_SYSTEMD_SYSTEM_DIR�SYSTEMD_SRV_TARGETr^�isdir�mkdir�chmod�unlink�islink�symlinkr�systemd_daemon_reloadr1)r
r4r]�l�srv_tgt�srv_lnkrrr
rD�s<





zSystemdService.enablecCs�|jjd�}|dkr�t|�dkr�tjjtj|j|d�}tjj||j	|��}y.tjj
|�rrtjj|�rrtj|�t
j�Wq�tk
r�Yq�Xn4ytjtjd|j	|�g�Wntjk
r�YnXdS)NrSr*rVrrE)rKrXrrLrMrNrr�r�r^r�r�r�rr�r1rrqrpry)r
r4r]r�r�rrr
rE�s$


zSystemdService.disablecCsdtjjtj|j|��}tjj|�r,tj|�ytj	tj
d|j|�g�Wntjk
r^YnXdS)NrF)rLrMrNrr�r^rWr�rrqrpry)r
r4r�rrr
rF�s

zSystemdService.maskcCs8ytjtjd|j|�g�Wntjk
r2YnXdS)NrG)rrqrrpr^ry)r
r4rrr
rG�s

zSystemdService.unmaskcCs8ytjtjd|j|�g�Wntjk
r2YnXdS)NrD)rrqrrpr^ry)r
r4rrr
Z__enables

zSystemdService.__enablecCs|j�dS)N)rD)r
rrr
rHszSystemdService.installcCs|j�dS)N)rE)r
rrr
r;
szSystemdService.remove)N)N)N)r*)r*T)r*TT)TF)r*TT)r*TT)r*TT)r*T)r*)r*)r*)r*)r*)r*)r*)rrrr�rr^rirkr<r:rwr=r>r?r@rArBrCrDrErFrGr�rHr;�
__classcell__rr)rRr
rI�s0
$









5




rIcCst�dS)N)�NotImplementedError)rr%rrr
�base_service_class_factorysr�zsystemd-timesyncd)N)rZ
__future__rrLr/r|Zloggingr&rZ	ipapythonrZipaplatform.pathsrZipaplatform.tasksr�collections.abcrZ	getLoggerrrsZwellknownservicesrjr}rrrIr�ZserviceZ
knownservicesZtimedate_servicesrrrr
�<module>sD



jD