§ ½@¾jT ãóD—dZddlZddlZddlZddlZdZdZddddœZd „ZdS) zìHelpers for CageFS interaction from lvectl / lvdctl. Kept in python_lve to avoid a hard dependency on securelve: lve-utils is installed on systems without CageFS, so anything we call here must degrade to a no-op when CageFS is absent. éNz/usr/sbin/cagefsctlz/etc/cagefs/proxy.commandsz(/usr/share/lve-utils/lvd-registry-helperz&/usr/share/lve-utils/lvd-limits-helperz%/usr/share/lve-utils/lvd-stats-helper)ÚLVD_REGISTRY_HELPERÚLVD_LIMITS_HELPERÚLVD_STATS_HELPERcón—tj t¦«sdS t t dd¬¦«5}| ¦«}ddd¦«n #1swxYwYn#t$rd}YnwxYw|}t  ¦«D]Q\}}||vrŒ tj |¦«sŒ*|r|  d¦«s|dz }||›d|›d�z }ŒR||krdStj dt ¦«tj  t ¦«}tj|d ¬ ¦«tj|d ¬ ¦«\}} tj|d d¬¦«5}| |¦«ddd¦«n #1swxYwYtj|t ¦«nB#t($r5tj |¦«rtj|¦«‚wxYwt-jtdgt,jt,jd¬¦«dS)a5Register LVD helper proxyexec entries in /etc/cagefs/proxy.commands. No-op when CageFS is not installed (cagefsctl binary absent) or when the entries are already present. When entries are added, runs ``cagefsctl --update-wrappers`` so the in-CageFS proxyexec wrappers appear immediately. NÚrzutf-8)ÚencodingÚú ú=zRegistering LVD helpers in %sT)Úexist_okz.proxy.commands.)ÚdirÚprefixÚwz--update-wrappersF)ÚstdoutÚstderrÚcheck)ÚosÚpathÚexistsÚCAGEFSCTL_TOOLÚopenÚPROXY_COMMANDS_PATHÚreadÚFileNotFoundErrorÚLVD_PROXY_ENTRIESÚitemsÚendswithÚloggingÚinfoÚdirnameÚmakedirsÚtempfileÚmkstempÚfdopenÚwriteÚreplaceÚ BaseExceptionÚunlinkÚ subprocessÚrunÚDEVNULL)ÚfÚcontentÚ new_contentÚkeyÚbinaryÚ proxy_dirÚfdÚtmp_paths úpy/lve_utils/cagefs.pyÚensure_lvd_proxy_commandsr5"sÍ€õ Œ7�>Š>�.Ñ )Ô )ð؈ðÝ Õ% s°WÐ =Ñ =Ô =ð ÀØ—f’f‘h”hˆGð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øøå ðððØˆˆˆðøøøð€KÝ(×.Ò.Ñ0Ô0ð+ð+‰ ˆˆVØ �+Ð Ð Ø ÝŒw�~Š~˜fÑ%Ô%ð Ø Ø ð ˜{×3Ò3°DÑ9Ô9ð Ø ˜4Ñ ˆKؘ#Ð*Ð* Ð*Ð*Ð*Ñ*ˆ ˆ à�gÒÐØˆå „LÐ0Õ2EÑFÔFÐFå”—’Õ 3Ñ4Ô4€IÝ„K�  DÐ)Ñ)Ô)Ð)ÝÔ#¨ Ð:LÐMÑMÔM�L€BˆðÝ ŒY�r˜3¨Ð 1Ñ 1Ô 1ð !°QØ �GŠG�KÑ Ô Ð ð !ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !å Œ �8Õ0Ñ1Ô1Ð1Ð1øÝ ðððÝ Œ7�>Š>˜(Ñ #Ô #ð Ý ŒI�hÑ Ô Ð Ø ðøøøõ „NÝ Ð,Ð-ÝÔ!ÝÔ!Øð ñôðððsd¨A,¿A Á A,Á A$Á$A,Á'A$Á(A,Á, A;Á:A;Å!GÅ8FÆ GÆFÆGÆ!FÆ"GÇ?G?) Ú__doc__rrr)r"rrrr5©ór4úr9swðððð€€€Ø € € € ØÐÐÐØ€€€ð'€Ø2Ðð FØAØ?ððÐð1ð1ð1ð1ð1r8