g FddlZddlZddlmZdZdZdZdZdZdZ d Z dS) N)Optionalz/usr/sbin/cagefsctlzNot initializedz Not installedctjtr t jtdgtjtjd5}|\}}dddn #1swxYwY |dd S#t$rYdSwxYw#ttf$rYdSwxYwdS)zp Get Cagefs user mode, execute cagefsctl --display-user-mode cmd :return string -> cagefs user mode z--display-user-modeTstdoutstderrtextN:) ospathexistsBIN_EXEC subprocessPopenPIPE communicatesplitstrip IndexErrorOSErrorIOErrorprocout_s 'py/clconfig/cagefs_statistics_config.pyget_cagefs_user_moders0 w~~h !01!!  , ))++Q  , , , , , , , , , , , , , , , yy~~a(..000   tt !   44 sS3CA=1 C=BCBC ,B66 CCCCCCctjtstSt st S tjtdgtj tj d5}| \}}dddn #1swxYwY| S#ttf$rYdSwxYw)zk Get Cagefs user status, execute cagefsctl --cagefs-status cmd :return string -> cagefs status z--cagefs-statusTrN)r r r rCAGEFS_STATUS_NOT_INSTALLEDcheck_cagefs_initializedCAGEFS_STATUS_NOT_INITIALIZEDrrrrrrrrs rget_cagefs_statusr"*s 7>>( # #+** # % %-,,    ( )??     ( %%''FC  ( ( ( ( ( ( ( ( ( ( ( ( ( ( (yy{{ W tts63B85B B8BB8 B!B88C  C c8tjtr |rd}nd}t jt|gtjtjd5}|\}}dddn #1swxYwY t| d}|dsdSt|d ddS#ttf$rYdSwxYw#ttf$rYdSwxYwdS) a Get Cagefs quantity if enabled/disabled users, execute cagefsctl --list-enabled cmd for enabled users execute cagefsctl --list-disabled cmd for disabled users :param enabled: true/false flag for quantity enabled/disabled users :return int -> quantity of users z--list-enabledz--list-disabledTrN r )r r r rrrrrlistrintr ValueErrorrr)enabledcmdrrrstats r get_quantityr,Bsq w~~h  (&'!3!!  , ))++Q  , , , , , , , , , , , , , , , CIIdOO,,Aw147==--a0111 +   tt !   44 +sY:D B8 DBD B D*C*<-C**C?;D>C??DDDc tjtdgtjddS#tjt f$rYdSwxYw)z Check if cagefs is initialized with help of --check-cagefs-skeleton command --check-cagefs-skeleton returns rc 0 only if it is initialized z--check-cagefs-initializedF)rshellT)r check_outputrSTDOUTCalledProcessErrorrrr r esd +G H'1'8 G G G Gt  )7 3uus(,AA) r rtypingrrr!rrr"r,r r2r3rr5s   1-00   F     r3