a qéqeáã@s‚ddlZddlZddlZddlmZmZddlmZddlmZm Z ddl m Z ddl m Z mZdd lmZd ZGd d „d ƒZdS) éN)ÚdatetimeÚtimezone)ÚListé)ÚInvalidCheckerConfigÚInvalidCheckerModule)Ú SELinuxPolicyé)ÚCHECKER_REGISTRYÚ CheckerModule)ÚCHECK_TYPE_KEYz;--------------------------------------------------------- c@sVeZdZdZeeddœdd„Zedd„ƒZej edœd d„ƒZe j fe d œd d „Z dS) Ú PolicyCheckerz;Configuration file-driven automated policy analysis checks.N)ÚpolicyÚ configpathÚreturncCs.ts Jdƒ‚t t¡|_||_g|_||_dS)Nz$No checks are loaded, this is a bug.)r ÚloggingZ getLoggerÚ__name__ÚlogrÚchecksÚconfig)Úselfrr©rú=/usr/lib64/python3.9/site-packages/setools/checker/checker.pyÚ__init__s   zPolicyChecker.__init__cCs|jS)N)Ú _configpath)rrrrr"szPolicyChecker.config)rc Csª|j d |¡¡zDt|dƒ&}t ¡}|j||dWdƒn1sJ0YWn6tyŒ}ztd ||¡ƒ|‚WYd}~n d}~00|j d¡g}|  ¡D]®\}}|dkr¸q¦z |t }Wn4t yø}zt d |t ¡ƒ‚WYd}~n d}~00zt ||j||ƒ} Wn8t yH}zt d ||¡ƒ|‚WYd}~n d}~00| | ¡q¦|sjtd  |¡ƒ‚|j d  t|jƒ¡¡|j d  |¡¡||_||_||_dS) Nz!Opening policy checker config {}.Úr)Úsourcez%Unable to parse checker config {}: {}z"Validating configuration settings.ZDEFAULTz{}: Missing {} option.z!{}: Unknown policy check type: {}zNo checks found in {}.zValidated {} checks.z-Successfully opened policy checker config {}.)rÚinfoÚformatÚopenÚ configparserZ ConfigParserZ read_fileÚ ExceptionrÚitemsr ÚKeyErrorrr rÚappendÚdebugÚlenrrZ_config) rrÚfdrÚerÚ checknameZ checkconfigÚ check_typeZnewcheckrrrr&sL 0ÿÿ  ÿÿÿ )rc Csdd}|jsJdƒ‚| t¡| d |j¡¡| d |j¡¡| d t tj ¡¡¡g}|jD]^}d}z¼| t¡| d |j ¡¡|j r¢| d |j ¡¡|j rî| d |j ¡¡|  |j d  |j ¡f¡|j d  |j |j ¡¡Wqb|j d  |j |j¡¡||_|t| ¡ƒ7}| d ¡WnNtyv}z4| d  |¡¡|jjd|d|d7}WYd}~n d}~00|r | d¡|  |j d |¡f¡n| d¡|  |j df¡||7}qb| t¡| d¡|D]\}}| d ||¡¡qÜ| d |¡¡| d |j¡¡| d |j¡¡| d t tj ¡¡¡|j d |t|jƒ¡¡|S)zCRun all configured checks and print report to the file-like output.rz=Configuration loaded but no checks configured. This is a bug.zPolicy check configuration: {} zPolicy being checked: {} zStart time: {} zCheck name: {} zDescription: {} zCheck DISABLED. Reason: {} z DISABLED ({})z Skipping disabled check {!r}: {}zRunning check {0!r}, type {1}.Ú z'Unexpected error: {}. Failing check. zException info)Úexc_infor NzCheck FAILED zFAILED ({} failures)zCheck PASSED ZPASSEDzResult Summary: z {:<39} {} z {} failure(s) found. z End time: {} z{} failures found in {} checks.)rÚwriteÚSECTION_SEPARATORrrrrZnowrZutcr)ZdescÚdisabler$rr%r*Úoutputr&Úrunr!r) rr0ZfailuresZresult_summaryÚcheckZcheck_failuresr(r)Úresultrrrr1Psb   ÿ ÿ  ÿ      zPolicyChecker.run)rÚ __module__Ú __qualname__Ú__doc__rÚstrrÚpropertyrÚsetterÚsysÚstdoutÚintr1rrrrr s )r )r:r rrrÚtypingrÚ exceptionrrZ policyreprZ checkermoduler r Z globalkeysr r.r rrrrÚs