JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/sepolgen/__pycache__/module.cpython-39.pyc

a

���hv�@s�dZddlZddlZzddlmZWneyBddlmZYn0ddlZddlZddl	Z	ddl
Z
ddlmZdd�Z
Gdd	�d	�Zd
d�ZGdd
�d
�ZdS)zU
Utilities for dealing with the compilation of modules and creation
of module tress.
�N)�getstatusoutput�)�defaultscCs0t�d|�}t|�dkr(|d��r(dSdSdS)z'Check that a module name is valid.
    z[^a-zA-Z0-9_\-\.]rTFN)�re�findall�len�isalpha)�modname�m�r�3/usr/lib/python3.9/site-packages/sepolgen/module.py�
is_valid_name(sr
c@sNeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
dS)�
ModuleTreecCs||_d|_dS�N)r	�dirname)�selfr	rrr�__init__2szModuleTree.__init__cCs|jSr�r�rrrr�dir_name6szModuleTree.dir_namecCs|jd|jdS)N�/z.te�rr	rrrr�te_name9szModuleTree.te_namecCs|jd|jdS)Nrz.fcrrrrr�fc_name<szModuleTree.fc_namecCs|jd|jdS)Nrz.ifrrrrr�if_name?szModuleTree.if_namecCs|jd|jdS)Nr�.pprrrrr�package_nameBszModuleTree.package_namecCs
|jdS)Nz	/Makefilerrrrr�
makefile_nameEszModuleTree.makefile_nameNcCs�|d|j|_t�|j�t|��d�}|r>|�d|�n|�dt���|�	�t|�
�d��	�t|��d��	�t|��d��	�dS)Nr�wzinclude )
r	r�os�mkdir�openr�writer�refpolicy_makefile�closerrr)rZparent_dirnameZmakefile_include�fdrrr�createHszModuleTree.create)N)�__name__�
__module__�__qualname__rrrrrrrr&rrrrr1srcCstj�tj�|�d�dS)Nrr)r�path�splitext�split)�
sourcenamerrr�modname_from_sourcenameXsr.c@sTeZdZdZddd�Zdd�Zdd�Zd	d
�Zddd
�Zdd�Z	dd�Z
dd�ZdS)�ModuleCompilerasModuleCompiler eases running of the module compiler.

    The ModuleCompiler class encapsulates running the commandline
    module compiler (checkmodule) and module packager (semodule_package).
    You are likely interested in the create_module_package method.
    
    Several options are controlled via parameters (only effects the
    non-refpol builds):
    
     .mls          [boolean] Generate an MLS module (by passed -M to
                   checkmodule). True to generate an MLS module, false
                   otherwise.
                   
     .module       [boolean] Generate a module instead of a base module.
                   True to generate a module, false to generate a base.
                   
     .checkmodule  [string] Fully qualified path to the module compiler.
                   Default is /usr/bin/checkmodule.
                   
     .semodule_package [string] Fully qualified path to the module
                   packager. Defaults to /usr/bin/semodule_package.
     .output       [file object] File object used to write verbose
                   output of the compililation and packaging process.
    NcCs<t��|_d|_d|_d|_||_d|_t�	�|_
d|_dS)z�Create a ModuleCompiler instance, optionally with an
        output file object for verbose output of the compilation process.
        Tz/usr/bin/checkmodulez/usr/bin/semodule_package�z
/usr/bin/makeN)�selinuxZis_selinux_mls_enabled�mls�module�checkmodule�semodule_package�output�last_outputrr#�refpol_makefile�make)rr6rrrrts

zModuleCompiler.__init__cCs |jr|j�|d�||_dS)N�
)r6r"r7)r�strrrr�o�szModuleCompiler.ocCs$|�|�t|�\}}|�|�|Sr)r<r)r�command�rcr6rrr�run�s

zModuleCompiler.runcCsJ|�d�}t|�dkr td|��d�|dd��}|d}|d}||fS)z�Generate the module and policy package filenames from
        a source file name. The source file must be in the form
        of "foo.te". This will generate "foo.mod" and "foo.pp".
        
        Returns a tuple with (modname, policypackage).
        �.�z,invalid sourcefile name %s (must end in .te)r���z.modr)r,r�RuntimeError�join)rr-Z	splitname�basenamer	�packagenamerrr�
gen_filenames�s

zModuleCompiler.gen_filenamesTcCsD|r|�|�n0|�|�\}}|�||�|�||�t�|�dS)a�Create a module package saved in a packagename from a
        sourcename.

        The create_module_package creates a module package saved in a
        file named sourcename (.pp is the standard extension) from a
        source file (.te is the standard extension). The source file
        should contain SELinux policy statements appropriate for a
        base or non-base module (depending on the setting of .module).

        Only file names are accepted, not open file objects or
        descriptors because the command line SELinux tools are used.

        On error a RuntimeError will be raised with a descriptive
        error message.
        N)�refpol_buildrG�compile�packager�unlink)rr-Z	refpolicyr	rFrrr�create_module_package�sz$ModuleCompiler.create_module_packagecCs4|jd|j}|�|�}|dkr0td|j��dS)Nz -f r�compilation failed:
%s)r9r8r?rCr7)rr-r=r>rrrrH�s
zModuleCompiler.refpol_buildcCsp|jg}|jr|�d�|jr(|�d�|�d�|�|�|�|�|�d�|��}|dkrltd|j��dS)Nz-M�-m�-o� rrM)r4r2�appendr3r?rDrCr7)rr-r	�sr>rrrrI�s




zModuleCompiler.compilecCsZ|jg}|�d�|�|�|�d�|�|�|�d�|��}|dkrVtd|j��dS)NrOrNrPrzpackaging failed [%s])r5rQr?rDrCr7)rr	rFrRr>rrrrJ�s



zModuleCompiler.package)N)T)r'r(r)�__doc__rr<r?rGrLrHrIrJrrrrr/[s


	r/)rSrZtempfile�
subprocessr�ImportErrorZcommandsrZos.path�shutilr1r0rr
rr.r/rrrr�<module>s	'
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg