§ ½@¾jŽãót—ddlZddlZddlmZddlmZddlmZm Z Gd„de¦«Z Gd„d¦«Z dS) éN)Ú exec_utility)ÚFormattedException)Ú run_commandÚExternalProgramFailedcó—eZdZdS)ÚCageFsExceptionN)Ú__name__Ú __module__Ú __qualname__©óúpy/cllimits/cagefs_lib.pyrrs€€€€€Ø€Dr rcót—eZdZdZdd„Zed„¦«Zd„Zd„Zdd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zd„ZdS)ÚCageFsz/usr/sbin/cagefsctlNcóX—d|_d|_|p| ¦«|_dS©NF)Ú_cagefs_enabled_usersÚ_is_cagefs_errorÚ_create_dummy_loggerÚ_logger)ÚselfÚloggers rÚ__init__zCageFs.__init__s.€à%)ˆÔ"Ø %ˆÔØÐ< ×!:Ò!:Ñ!<Ô!<ˆŒ ˆ ˆ r có’—tjt¦«}d|_| tj¦«¦«|Sr)ÚloggingÚ getLoggerr Ú propagateÚ addHandlerÚ NullHandler)rs rrzCageFs._create_dummy_loggers<€åÔ"¥8Ñ,Ô,ˆà ˆÔØ×Ò�'Ô-Ñ/Ô/Ñ0Ô0Ð0؈ r cóJ—tj |j¦«S)z^ Get CageFS presence flag :return: True/False - Cagefs present/absent )ÚosÚpathÚisfileÚ _UTILITY_PATH©rs rÚis_cagefs_presentzCageFs.is_cagefs_present's€õ Œw�~Š~˜dÔ0Ñ1Ô1Ð1r có<—| ¦«||jvS)zŒ Get User status in CageFs :param username: User name :return: True/False - user enabled/disabled in CageFs )Ú _load_infor)rÚusernames rÚget_user_statuszCageFs.get_user_status/s"€ð �ŠÑÔÐØ˜4Ô5Ð5Ð5r FcóÒ—|sF| ¦«|r| |¦«rdS|s| |¦«sdS|rd}nd}| ||g¦«dS)zê Set user status in CageFs :param str username: User name :param bool status: new user status - True/False --> enable/disable :param bool ignore_cache: ignore data caching :return: None Nz--enablez --disable)r(r*Ú_get_cagefsctl_out)rr)ÚstatusÚ ignore_cacheÚ cagefsctl_args rÚset_user_statuszCageFs.set_user_status9s“€ðð Ø �OŠOÑ Ô Ð Øð ˜$×.Ò.¨xÑ8Ô8ð à�Øð  $×"6Ò"6°xÑ"@Ô"@ð à�Ø ð (Ø&ˆMˆMà'ˆMØ ×Ò °Ð 9Ñ:Ô:Ð:Ð:Ð:r cóF—|j�dS| ¦«r|jrtdddidœ¦«‚g|_| dg¦«}| d¦«}|D]3}d|vrŒ|j | ¦«¦«Œ4dS) zD Loads users info from Cagefs :return: None Nz%(util)s is disabledÚutilÚCageFS©ÚmessageÚcontextz--list-enabledú z enabled user)rr&rrr,ÚsplitÚappendÚstrip)rÚ s_cagefs_outÚs_enabled_users_partsÚlines rr(zCageFs._load_infoPsÚ€ð Ô %Ð 1Ø ˆFà×%Ò%Ñ'Ô'ð C¨4Ô+@ð CÝ!Ð.DØ/5°xÐ.@ð#Bð#BñCôCð Cà%'ˆÔ"Ø×.Ò.Ð0@Ð/AÑBÔBˆ à ,× 2Ò 2°4Ñ 8Ô 8ÐØ)ð <ð <ˆDØ Ð%Ð%ØØ Ô &× -Ò -¨d¯jªj©l¬lÑ ;Ô ;Ð ;Ð ;ð <ð €Ø×%Ò%Ð'<Ð&=Ñ>Ô>ˆà�yŠy˜‰~Œ~˜aÔ ×&Ò&Ñ(Ô(ˆØˆ r có2—| dg¦«dS)Nz --toggle-moder?r%s rÚtoggle_user_modezCageFs.toggle_user_mode}s€Ø ×Ò Ð 1Ñ2Ô2Ð2Ð2Ð2r cóB— |jdg}|j dd |¦«¦«t |¦«}|S#t $rJ}|j dt |¦«¦«tt |¦«¦«|‚d}~wwxYw)Nz--enable-cagefsz Running "%s"ú z cagefsctl exited with error "%s")r$rÚinfoÚjoinrrrDrrEs rÚ enable_cagefszCageFs.enable_cagefs€s�€ð 5ØÔ%Ð'8Ð9ˆCØ ŒL× Ò ˜n¨c¯hªh°s©m¬mÑ <Ô <Ð <ݘcÑ"Ô"ˆC؈JøÝ$ð 5ð 5ð 5Ø ŒL× Ò Ð@Å#ÀcÁ(Ä(Ñ KÔ KÐ KÝ!¥# c¡(¤(Ñ+Ô+°Ð 4øøøøð 5øøøs‚AA Á BÁABÂBcój—|j dd |¦«¦«| ¦«st dddidœ¦«‚t |j|d¬¦«\}}}|p|}|d ksd |vr3|j d ||f¦«d|_t |¦«‚|S) NzRunning "cagefsctl %s"rQz%(util)s is not installedr2r3r4T)ÚstderrrzError:z1Cagefs exited with exit code "%s" and output "%s")rrRrSr&rrr$r)rrFÚret_codeÚs_stdoutÚs_stderrr;s rr,zCageFs._get_cagefsctl_out�sÞ€Ø Œ ×ÒÐ2°C·H²H¸S±M´MÑBÔBÐBØ×%Ò%Ñ'Ô'ð CÝ!Ð.IØ/5°xÐ.@ð#Bð#BñCôCð Cå'3°DÔ4FÈÐTXÐ'YÑ'YÔ'YÑ$ˆ�(˜HØÐ+ 8ˆ Ø �qŠ=ˆ=˜H¨ Ð4Ð4Ø ŒL× Ò ÐQÐT\Ð^jÐSkÑ lÔ lÐ lØ$(ˆDÔ !Ý! ,Ñ/Ô/Ð /ØÐr có2—| dg¦«}|S)Nz--rebuild-alt-php-inir?r@s rÚrebuild_alt_php_inizCageFs.rebuild_alt_php_inišs€Ø×%Ò%Ð'>Ð&?Ñ@Ô@ˆØˆ r )N)F)r r r r$rÚ staticmethodrr&r*r0r(rBrHrMrOrTr,r[r r rrrsò€€€€€Ø)€Mð=ð=ð=ð=ð ððñ„\ðð2ð2ð2ð6ð6ð6ð;ð;ð;ð;ð.<ð<ð<ð*ððð 5ð 5ð 5ðððð 3ð3ð3ð 5ð 5ð 5ð ð ð ðððððr r) rÚos.pathr!Ú cllimits.librÚclcommon.clexceptionrÚclcommon.utilsrrrrr r rúras¼ðð€€€Ø€€€à%Ð%Ð%Ð%Ð%Ð%Ø3Ð3Ð3Ð3Ð3Ð3Ø=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ð ð ð ð ð Ð(ñ ô ð ðFðFðFðFðFñFôFðFðFðFr