a )g @sddlmZmZmZeZddlZddlZddlm Z m Z ddl m Z m Z mZmZmZmZze dddZWneyedYn0d d Zd d Zd dZddZddZe[dS))absolute_importdivisionprint_functionN) to_nativeto_bytes)CDLLc_char_pc_intbyrefPOINTER get_errnozlibselinux.so.1T)Z use_errnozunable to load libselinux.soc s>dd}tdGfddd}tiit|ttg|dt|tttg|ditttgdit||g|dtttg|dd }tjt}|D]|\}}t t |d}|st d |ttt| d d|_| d t|_|jrtfd d |jDst|||qqt|t|}|r:td |dS)NcSs"|dkrt}t|t||S)Nr)r OSErrorosstrerror)rcerrnorG/usr/lib/python3.9/site-packages/ansible/module_utils/compat/selinux.py _check_rcsz _module_setup.._check_rccseZdZefddZdS)z!_module_setup.._to_char_pcs|durt|st|}|SN) isinstancer)clsZstrvaluebinary_char_typerr from_paramsz,_module_setup.._to_char_p.from_paramN)__name__ __module__ __qualname__ classmethodrrrrr _to_char_psr )argtypesrestype)r!) Zis_selinux_enabledZis_selinux_mls_enabledlgetfilecon_raw matchpathconZsecurity_policyversselinux_getenforcemodeZsecurity_getenforceZ lsetfileconselinux_getpolicytypezmissing selinux function: {0}r!r"c3s|]}t|kr|VqdSr)type).0Zargtype) base_ptr_typerr Arz _module_setup..z(implementation is missing functions: {0})r'dictr rr sysmodulesritemsgetattr _selinux_lib ImportErrorformatgetr!r"anysetattrset differencedirNotImplementedError)rr Z_funcmapZ_thismodfnameZcfgfnZunimplemented_funcsr)r)rr _module_setups8      r<cCst}tt|}||jgSr)r r0r%r value)Z enforcemoderrrrr%Msr%c Cs@t}z(tt|}|t|jgWt|St|0dSr)rr0r&r rr=freecon)conrrrrr&Ss r&c CsBt}z*t|t|}|t|jgWt|St|0dSr)rr0r#r rr=r>)pathr?rrrrr#\s r#c CsDt}z,t||t|}|t|jgWt|St|0dSr)rr0r$r rr=r>)r@moder?rrrrr$es r$)Z __future__rrrr'Z __metaclass__rr,Z+ansible.module_utils.common.text.convertersrrZctypesrrr r r r r0r r1r<r%r&r#r$rrrrs   :