HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/site-packages/ipaplatform/base/__pycache__/services.cpython-39.pyc
a

�N(iiJ�@s�dZddlmZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZddl
mZddlmZe�e�Zgd�Zd	gd
dgd
dgd
dgd�Zd
ZGdd�de�ZGdd�d�ZGdd�de�Zddd�ZeZei�Zgd�ZdS)zj
This base module contains default implementations of IPA interface for
interacting with system services.
�)�absolute_importN)�ipautil)�paths)�tasks)�Mapping) Z
certmonger�dirsrvZhttpdZipaZkrb5kdcZdbusZnslcdZnscd�ntpdZportmapZrpcbindZkadminZsshdZautofsZrpcgssdZ	rpcidmapdZpki_tomcatd�chronydZ
domainnameZnamedZ
ods_enforcerdZods_signerdZgssproxyz	nfs-utilsZsssdZNetworkManagerzipa-custodiazipa-dnskeysyncdzipa-otpdzipa-ods-exporterzsystemd-resolvedZunboundi�i�i� )rzpki-tomcatd@pki-tomcat.servicez
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.9/site-packages/ipaplatform/base/services.py�__init__NszKnownServices.__init__cCs
|j|Srr)r�keyrrr�__getitem__QszKnownServices.__getitem__cCs
t|j�Sr)�iterr
�rrrr�__iter__TszKnownServices.__iter__cCs
t|j�Sr)�lenr
rrrr�__len__WszKnownServices.__len__cCst�|j�Sr)�sixZ
itervaluesr
rrrr�__call__ZszKnownServices.__call__cCs,z|j|WSty&t|��Yn0dSr)r
�KeyError�AttributeError)r�namerrr�__getattr__]szKnownServices.__getattr__N)
�__name__�
__module__�__qualname__�__doc__rrrrrrrrrrr
Gsr
c@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}||_|dur||_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)rr)r*r(rrrrks��zPlatformService.__init__�TcCs�|sdSg}z:ttjd��}t�|�}Wd�n1s:0YWntyXYn0|j|vrp|�|j�ttjd��}t�||�Wd�n1s�0YdS)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�frrr�startys,
zPlatformService.startcCs�|sdSg}z:ttjd��}t�|�}Wd�n1s:0YWntyXYn0|j|vrr|�|j�qZttjd��}t�||�Wd�n1s�0YdS)zQ
        When a service is stopped remove it from the service list file.
        Nr0r1)	r2rr3r4r5r6r)�remover8)rr9r:r<r=r>rrr�stop�s,
zPlatformService.stopcCsdSrr�rr9r:r;rrr�reload_or_restart�sz!PlatformService.reload_or_restartcCsdSrrrBrrr�restart�szPlatformService.restartcCsdSrrrBrrr�try_restart�szPlatformService.try_restartcCsdS�NFr)rr9r;rrr�
is_running�szPlatformService.is_runningcCsdSrFrrrrr�is_installed�szPlatformService.is_installedcCsdSrFr�rr9rrr�
is_enabled�szPlatformService.is_enabledcCsdSrFrrIrrr�	is_masked�szPlatformService.is_maskedcCsdSrrrIrrr�enable�szPlatformService.enablecCsdSrrrIrrr�disable�szPlatformService.disablecCsdSrrrIrrr�mask�szPlatformService.maskcCsdSrrrIrrr�unmask�szPlatformService.unmaskcCsdSrrrIrrr�install�szPlatformService.installcCsdSrrrIrrrr@�szPlatformService.remove)N)r/TTT)r/TT)r/TT)r/TT)r/TT)r/T)r/)r/)r/)r/)r/)r/)r/)r/)r r!r"r#rr?rArCrDrErGrHrJrKrLrMrNrOrPr@rrrrr$ds.
�
�
�










r$cs�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�||_tj�tj|j�|_	d|_
dS)N)r*)�superrQr�systemd_name�os�path�joinr�LIB_SYSTEMD_SYSTEMD_DIR�lib_path�lib_path_exists)rr)rSr*��	__class__rrr�s
�zSystemdService.__init__cCs�|jdurtj�|j�|_|j�d�}|ddkrP|sPdt|jj	j
�dd��S|jr�|r�t|�dkrl|jSt|�dkr�|dddkr�|jSt|�dkr�|r�d|d|fSd	|d}tj�
tj|�}tj�|�r�|S|jS)
N�@rrzdirsrv@%s.service�.�-�z
%s@%s.servicez	%s.target)rYrTrU�existsrXrS�split�strr*�envZrealm�replacerrVrrW)rr9�	operation�elementsZtgt_nameZsrv_librrr�service_instance�s(
�
zSystemdService.service_instancecs(ddd��t��fdd�|�d�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&|�|�}|d|dfSdS)Nr_r���)NN)rra)�x�	separator�yrrr�splitters
z0SystemdService.parse_variables.<locals>.splitterc3s|]}�|�d�VqdS))rjNr)�.0ri�rjrlrr�	<genexpr>
�z1SystemdService.parse_variables.<locals>.<genexpr>�
)N)�dictra)r�textrjrrnr�parse_variables�s
zSystemdService.parse_variablesr/cCsVd}|tvrt|}n$|j�d�}|dtvr:t|d}|rRt�d||jjj�dS)zA
        If this is a service we need to wait for do so.
        Nr\rZ	localhost)�wellknownportsrSrar�wait_for_open_portsr*rcZstartup_timeout)rr9Zportsrfrrrrvs
�z"SystemdService.wait_for_open_portsTcs�|�|�}tjd|g}|dkr(|�d�|dkr:|�d�tj||d�t|jjdd�dv}t	t
|�j||d	�t�
d
|�dS)NrAzipa-otpd.socketz--ignore-dependencieszipa-ods-exporter.servicezipa-ods-exporter.socket�Zskip_output�context�ZipactlZ	installer�r<zStop of %s complete)rgr�	SYSTEMCTLr7r�run�getattrr*rcrRrQrA�logger�debug)rr9r:�instance�argsr<rZrrrAs"



��
�zSystemdService.stopcsztjtjd|�|�g|d�t|jjdd�dv}|rP|�|�rP|�	|�|��t
t|�j||d�t
�d|�|��dS)Nr?rwrxryrzzStart of %s complete)rr|rr{rgr}r*rcrGrvrRrQr?r~r)rr9r:r;r<rZrrr?3s&
��
��
��zSystemdService.startFcCsRtjtj||�|�g|d�|r<|�|�r<|�|�|��t�d|�|��dS)NrwzRestart of %s complete)	rr|rr{rgrGrvr~r)rr9rer:r;rrr�
_restart_baseCs
���zSystemdService._restart_basecCs|�|d||�dS)Nzreload-or-restart�r�rBrrrrCOs�z SystemdService.reload_or_restartcCs|�|d||�dS)NrDr�rBrrrrDTs�zSystemdService.restartcCs|�|d||�dS)Nztry-restartr�rBrrrrEXs�zSystemdService.try_restartc
Cs�|�|d�}ztjtjd|gdd�}WnVtjy|}z<|jdkrfdt|j�vrft	�
t�WYd}~qWYd}~dSd}~00|jdkr�d|jvr�t	�
t�q|jdkr�dSdSqdS)Nz	is-activeT�r:�Z
activatingFr)rgrr|rr{�CalledProcessError�
returncoderb�output�time�sleep�SERVICE_POLL_INTERVAL)rr9r;r��result�errrrG\s"
�



zSystemdService.is_runningcCsfzJtjtjddgdd�}|jdkr(WdS|�|j�}|�d�|vrHWdSWntjy`YdS0dS)Nzlist-unit-filesz--fullTr�rFr/)	rr|rr{r�rtr�rgr�)rr�ZsvarrrrrHus
�

zSystemdService.is_installedcCsLd}z*t�tjd|�|�g�}|jdkr,d}WntjyFd}Yn0|S)NT�
is-enabledrF)rr|rr{rgr�r�)rr9Zenabledr�rrrrJ�s��

zSystemdService.is_enabledcCsVd}z8tjtjd|�|�gdd�}|jdkr:|jdkr:d}WntjyPYn0|S)NFr�Tr�r_�masked)rr|rr{rgr�r�r�)rr9r�r�rrrrK�s��zSystemdService.is_maskedcCsh|jdurtj�|j�|_|j�d�}t|�}|jrZ|dkrZ|dddkrZ|�|�dS|jrt|dkrt|��dSt|�dk�rZ|dk�rZtj�	t
j|j|d�}tj�	||�
|��}z�tj�|�s�t�|�t�|d�tj�|�r�t�|�tj�|��s8tj�|��s t�|j|�nt�|�t�|j|�t��Wnt�yVYn0n
|�|�dS)Nr\r_rr]i�)rYrTrUr`rXrSrar�_SystemdService__enablerVr�ETC_SYSTEMD_SYSTEM_DIR�SYSTEMD_SRV_TARGETrg�isdir�mkdir�chmod�unlink�islink�symlinkr�systemd_daemon_reloadr6)rr9rf�l�srv_tgt�srv_lnkrrrrL�s@


��


zSystemdService.enablecCs�|j�d�}|dkr�t|�dkr�tj�tj|j|d�}tj�||�	|��}z.tj�
|�rrtj�|�rrt�|�t
��Wq�ty�Yq�0n2zt�tjd|�	|�g�Wntjy�Yn0dS)Nr\r/r_rrM)rSrarrTrUrVrr�r�rgr�r�r�rr�r6rr|r{r�)rr9rfr�r�rrrrM�s*
��

�
zSystemdService.disablecCsbtj�tj|�|��}tj�|�r,t�|�zt�	tj
d|�|�g�Wntjy\Yn0dS)NrN)rTrUrVrr�rgr`r�rr|r{r�)rr9r�rrrrN�s

�
zSystemdService.maskcCs6zt�tjd|�|�g�Wntjy0Yn0dS)NrO�rr|rr{rgr�rIrrrrO�s
�
zSystemdService.unmaskcCs6zt�tjd|�|�g�Wntjy0Yn0dS)NrLr�rIrrrZ__enables
�
zSystemdService.__enablecCs|��dSr)rLrrrrrPszSystemdService.installcCs|��dSr)rMrrrrr@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/)r r!r"r�rrgrtrvrAr?r�rCrDrErGrHrJrKrLrMrNrOr�rPr@�
__classcell__rrrZrrQ�s4
$

�
�






5




rQcCst�dSr)�NotImplementedError)rr*rrr�base_service_class_factorysr�)rr	zsystemd-timesyncd)N)r#Z
__future__rrTr4r�Zloggingr+rZ	ipapythonrZipaplatform.pathsrZipaplatform.tasksr�collections.abcrZ	getLoggerr r~Zwellknownservicesrur�r
r$rQr�ZserviceZ
knownservicesZtimedate_servicesrrrr�<module>s8
�jH