Sindbad~EG File Manager
3
�<�e�)�@s�ddlmZddlZddljZddlTddlZddlZddlZ ddl
mZe jj
�Ze�ZGdd�d�ZGdd �d �ZGd
d�de�ZGdd
�d
e�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�dej�ZdS)�)�base�N)�*)�commandsc@seZdZddd�ZdS)�ServiceNcCs||_||_||_||_dS)N)�enable�start�cfg_file�runlevel)�selfrrr r
�r�$/usr/lib/python3.6/plugin_service.py�__init__szService.__init__)NNNN)�__name__�
__module__�__qualname__rrrrr
r
src@s4eZdZdd�Zdd�Zdd�Zdd�Zd d
�ZdS)�InitHandlercCs(tjdg�\}}|dkr$|j�dSdS)Nr
rr���)�cmd�execute�split)r�retcode�outrrr
�runlevel_getszInitHandler.runlevel_getcCstjddg�dS)NZtelinit�q)rr)rrrr
�
daemon_reloadszInitHandler.daemon_reloadcCsdS)Nr)r�namer rrr
�cfg_installszInitHandler.cfg_installcCsdS)Nr)rrr rrr
�
cfg_uninstallszInitHandler.cfg_uninstallcCsdS)Nr)rrr rrr
�
cfg_verify"szInitHandler.cfg_verifyN)rrrrrrrrrrrr
rs
rc@s<eZdZdd�Zdd�Zdd�Zdd�Zd d
�Zdd�Zd
S)�SysVBasicHandlercCstjd|dg�dS)N�servicer)rr)rrrrr
r'szSysVBasicHandler.startcCstjd|dg�dS)Nr!�stop)rr)rrrrr
r"*szSysVBasicHandler.stopcCs
t��dS)N)�NotImplementedError)rrr
rrr
r-szSysVBasicHandler.enablecCs
t��dS)N)r#)rrr
rrr
�disable0szSysVBasicHandler.disablecCs"tjd|dgdgd�\}}|dkS)Nr!�statusr)� no_errors)rr)rrrrrrr
�
is_running3szSysVBasicHandler.is_runningcCs
t��dS)N)r#)rrr
rrr
�
is_enabled7szSysVBasicHandler.is_enabledN) rrrrr"rr$r'r(rrrr
r &sr c@s$eZdZdd�Zdd�Zdd�ZdS)�SysVHandlercCstjdd||dg�dS)N� chkconfigz--level�on)rr)rrr
rrr
r;szSysVHandler.enablecCstjdd||dg�dS)Nr*z--level�off)rr)rrr
rrr
r$>szSysVHandler.disablecCsBtjdd|g�\}}|dkr>|jdt|��ddd�dkSdS)Nr*z--listrz%s:r�r+)rrr�str)rrr
rrrrr
r(AszSysVHandler.is_enabledN)rrrrr$r(rrrr
r):sr)c@s$eZdZdd�Zdd�Zdd�ZdS)�
SysVRCHandlercCstjdd||dg�dS)Nzsysv-rc-confz--levelr+)rr)rrr
rrr
rFszSysVRCHandler.enablecCstjdd||dg�dS)Nzsysv-rc-confz--levelr,)rr)rrr
rrr
r$IszSysVRCHandler.disablecCsBtjdd|g�\}}|dkr>|jdt|��ddd�dkSdS)Nzsysv-rc-confz--listrz%s:rr-r+)rrrr.)rrr
rrrrr
r(LszSysVRCHandler.is_enabledN)rrrrr$r(rrrr
r/Esr/c@sDeZdZdd�Zdd�Zdd�Zdd�Zd d
�Zdd�Zd
d�Z dS)�
OpenRCHandlercCs&tjddg�\}}|dkr"|j�SdS)Nz rc-statusz-rr)rr�strip)rrrrrr
rQszOpenRCHandler.runlevel_getcCstjd|dg�dS)Nz
rc-servicer)rr)rrrrr
rUszOpenRCHandler.startcCstjd|dg�dS)Nz
rc-servicer")rr)rrrrr
r"XszOpenRCHandler.stopcCstjdd||g�dS)Nz rc-update�add)rr)rrr
rrr
r[szOpenRCHandler.enablecCstjdd||g�dS)Nz rc-update�del)rr)rrr
rrr
r$^szOpenRCHandler.disablecCs"tjd|dgdgd�\}}|dkS)Nz
rc-servicer%r)r&)rr)rrrrrrr
r'aszOpenRCHandler.is_runningcCs2tjdd|g�\}}ttjdtj|�d|��S)Nz rc-updateZshowz\b)rr�bool�re�search�escape)rrr
rrrrr
r(eszOpenRCHandler.is_enabledN)
rrrrrr"rr$r'r(rrrr
r0Psr0c@s\eZdZdd�Zdd�Zdd�Zdd�Zd d
�Zdd�Zd
d�Z dd�Z
dd�Zdd�ZdS)�SystemdHandlercCsdS)N�r)rrrr
rkszSystemdHandler.runlevel_getcCstjdd|g�dS)N� systemctlZrestart)rr)rrrrr
rnszSystemdHandler.startcCstjdd|g�dS)Nr:r")rr)rrrrr
r"qszSystemdHandler.stopcCstjdd|g�dS)Nr:r)rr)rrr
rrr
rtszSystemdHandler.enablecCstjdd|g�dS)Nr:r$)rr)rrr
rrr
r$wszSystemdHandler.disablecCs"tjdd|gdgd�\}}|dkS)Nr:z is-activer)r&)rr)rrrrrrr
r'zszSystemdHandler.is_runningcCs>tjdd|gdgd�\}}|j�}|dkr.dS|dkr:dSdS) Nr:z
is-enabledr)r&ZenabledTZdisabledF)rrr1)rrr
rrr%rrr
r(~szSystemdHandler.is_enabledcCs�tjd||f�tjj|�s0tjd|�dStj|}ytj|tj �Wn2t
k
r~}ztjd||f�dSd}~XnXtj||�|j
�dS)NzCinstalling service configuration overlay file '%s' for service '%s'z)Unable to find service configuration '%s'z#Unable to create directory '%s': %s)�log�info�os�path�exists�error�consts�SERVICE_SYSTEMD_CFG_PATH�makedirsZDEF_SERVICE_CFG_DIR_MODE�OSErrorr�copyr)rrr �dirpath�errr
r�s
zSystemdHandler.cfg_installcCsntjd||f�tj|}d|tjj|�f}tj|�|j �ytj
|�Wnttfk
rhYnXdS)NzEuninstalling service configuration overlay file '%s' for service '%s'z%s/%s)
r;r<rArBr=r>�basenamer�unlinkr�rmdir�FileNotFoundErrorrD)rrr rFr>rrr
r�s
zSystemdHandler.cfg_uninstallcCs�|dkrdSdtj|tjj|�f}tjj|�sHtjd||f�dStjj|�sjtjd||f�dStj |�}tj |�}||kS)Nz%s/%sz.Unable to find service '%s' configuration '%s'Fz0Service '%s' configuration not installed in '%s')
rArBr=r>rHr?r;r@rZ sha256sum)rrr r>Z
sha256sum1Z
sha256sum2rrr
r�s
zSystemdHandler.cfg_verifyN)
rrrrrr"rr$r'r(rrrrrrr
r8isr8csneZdZdZ�fdd�Zdd�Zdd�Zdd �Zd
d�Zdd
�Z dd�Z
dd�Zdd�Ze
jfdd�Z�ZS)�
ServicePlugina1
`service`::
Plug-in for handling sysvinit, sysv-rc, openrc and systemd services.
+
The syntax is as follows:
+
[subs="+quotes,+macros"]
----
[service]
service.__service_name__=__commands__[,file:__file__]
----
+
Supported service-handling `_commands_` are `start`, `stop`, `enable`
and `disable`. The optional `file:__file__` directive installs an overlay
configuration file `__file__`. Multiple commands must be comma (`,`)
or semicolon (`;`) separated. If the directives conflict, the last
one is used.
+
The service plugin supports configuration overlays only for systemd.
In other init systems, this directive is ignored. The configuration
overlay files are copied to `/etc/systemd/system/__service_name__.service.d/`
directories. Upon profile unloading, the directory is removed if it is empty.
+
With systemd, the `start` command is implemented by `restart` in order
to allow loading of the service configuration file overlay.
+
NOTE: With non-systemd init systems, the plug-in operates on the
current runlevel only.
+
.Start and enable the `sendmail` service with an overlay file
====
----
[service]
service.sendmail=start,enable,file:${i:PROFILE_DIR}/tuned-sendmail.conf
----
The internal variable `${i:PROFILE_DIR}` points to the directory
from which the profile is loaded.
====
cs&tt|�j||�d|_|j�|_dS)NT)�superrLrZ_has_dynamic_options�_detect_init_system�
_init_handler)r�args�kwargs)� __class__rr
r�szServicePlugin.__init__cCstj|dgd�\}}|dkS)Nr)r&)rr)rZcommandrrrrr
�
_check_cmd�szServicePlugin._check_cmdcCs�|jddg�rtjd�t�S|jdg�r:tjd�t�S|jddg�rXtjd�t�S|jd dg�rvtjd
�t�Stjd��dS)Nr:r%zdetected systemdr*zdetected generic sysvinitzupdate-rc.dz-hzdetected sysv-rcz rc-updatezdetected openrcz8Unable to detect your init system, disabling the plugin.) rSr;�debugr8r)r/r0�
exceptionsZNotSupportedPluginException)rrrr
rN�s
z!ServicePlugin._detect_init_systemcCs�tjd|�}t�}x~|D]v}|dkr,d|_q|dkr<d|_q|dkrLd|_q|dkr\d|_q|dd�d kr||dd�|_qtjd
||f�qW|S)Nz
\s*[,;]\s*rTr$Frr"�zfile:z*service '%s': invalid service option: '%s')r5rrrrr r;r@)rr�val�lr!�irrr
�_parse_service_options�s
z$ServicePlugin._parse_service_optionscs6d|_d|_tj�fdd�|jj�D���_i|_dS)NFTcsTg|]L\}}|dd�dkrt|�dkr|dd��j|dd��jj|��f�qS)N�zservice.)�lenrZZ
_variables�expand)�.0Zoption�value)rrr
�
<listcomp>sz0ServicePlugin._instance_init.<locals>.<listcomp>)Z_has_dynamic_tuningZ_has_static_tuning�collections�OrderedDictZoptions�items� _services�_services_original)r�instancer)rr
�_instance_inits
zServicePlugin._instance_initcCsdS)Nr)rrfrrr
�_instance_cleanup szServicePlugin._instance_cleanupcCsT|r|jj|�n|dk r&|jj|�|r:|jj||�n|dk rP|jj||�dS)N)rOrr"rr$)rrrrr
rrr
�_process_serviceszServicePlugin._process_servicecCs�|jj�}|dkr tjd�dSx�|jj�D]�}|jj|d|�}|jj|d�}t|||dj |�|j
|d<|dj r�|jj|d|dj �|j|d|dj
|dj|�q,WdS)NzCannot detect runlevelrr)rOrr;r@rdrcr(r'rr rerrirr)rrfr
r!r(r'rrr
�_instance_apply_statics
z$ServicePlugin._instance_apply_staticc
CsH|jj�}|dkr&tjtjd�dSd}�x|jj�D�]}|jj|d|dj �}|r~tj
tjd|d|dj f�nR|dk r�tjtjd|d|dj f�d}n"tj
tjd|d|dj f�|jj
|d|�}|jj|d�} |jd |d|dj| |�dk�rd}|jd
|d|dj||�dkr8d}q8W|S)Nzcannot detect runlevelFTrrz'service '%s' configuration '%s' matchesz'service '%s' configuration '%s' differszservice '%s' configuration '%s'z
%s runningz
%s enabled)rOrr;r@rAZSTR_VERIFY_PROFILE_FAILrdrcrr r<ZSTR_VERIFY_PROFILE_OKZ STR_VERIFY_PROFILE_VALUE_MISSINGr(r'Z
_verify_valuerr)
rrfZignore_missingZdevicesr
�retr!Zret_cfg_verifyr(r'rrr
�_instance_verify_static$s(
$""$"z%ServicePlugin._instance_verify_staticcCsLxFt|jj��D]4\}}|jr.|jj||j�|j||j|j|j �qWdS)N)
�listrercr rOrrirrr
)rrfZrollbackrr_rrr
�_instance_unapply_static<sz&ServicePlugin._instance_unapply_static)rrr�__doc__rrSrNrZrgrhrirjrlrAZ
ROLLBACK_SOFTrn�
__classcell__rr)rRr
rL�s(
rL)r9rraZtuned.constsrAZ
decoratorsr=r5Z
tuned.logsZtunedZtuned.utils.commandsrZlogs�getr;rrrr r)r/r0r8ZPluginrLrrrr
�<module>s"
B
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists