/usr/lib64/python3.9/site-packages/setools
NameSizeModeActions
checker/-0755rm
diff/-0755rm
__pycache__/-0755rm
boolquery.py17420644editdlrm
boundsquery.py18450644editdlrm
categoryquery.py13750644editdlrm
commonquery.py16130644editdlrm
constraintquery.py51100644editdlrm
defaultquery.py23400644editdlrm
descriptors.py99320644editdlrm
devicetreeconquery.py22760644editdlrm
dta.py232110644editdlrm
exception.py61040644editdlrm
fsusequery.py28680644editdlrm
genfsconquery.py32600644editdlrm
ibendportconquery.py31260644editdlrm
ibpkeyconquery.py50060644editdlrm
infoflow.py159130644editdlrm
initsidquery.py23090644editdlrm
iomemconquery.py40950644editdlrm
ioportconquery.py41200644editdlrm
mixins.py69800644editdlrm
mlsrulequery.py41860644editdlrm
netifconquery.py24560644editdlrm
nodeconquery.py39970644editdlrm
objclassquery.py33480644editdlrm
pcideviceconquery.py26420644editdlrm
permmap.py165850644editdlrm
perm_map861140644editdlrm
pirqconquery.py25380644editdlrm
polcapquery.py11440644editdlrm
policyrep.cpython-39-x86_64-linux-gnu.so15228080755editdlrm
policyrep.pyi522530644editdlrm
portconquery.py48890644editdlrm
py.typed00644editdlrm
query.py12680644editdlrm
rbacrulequery.py54630644editdlrm
rolequery.py19970644editdlrm
sensitivityquery.py22700644editdlrm
terulequery.py89390644editdlrm
typeattrquery.py21570644editdlrm
typequery.py30210644editdlrm
userquery.py42900644editdlrm
util.py77730644editdlrm
__init__.py33160644editdlrm
Edit: /usr/lib64/python3.9/site-packages/setools/objclassquery.py (3348B)
# Copyright 2014-2015, Tresys Technology, LLC # # SPDX-License-Identifier: LGPL-2.1-only # import logging import re from contextlib import suppress from typing import Iterable from .descriptors import CriteriaDescriptor, CriteriaSetDescriptor from .exception import NoCommon from .mixins import MatchName from .policyrep import ObjClass from .query import PolicyQuery from .util import match_regex, match_regex_or_set class ObjClassQuery(MatchName, PolicyQuery): """ Query object classes. Parameter: policy The policy to query. Keyword Parameters/Class attributes: name The name of the object set to match. name_regex If true, regular expression matching will be used for matching the name. common The name of the inherited common to match. common_regex If true, regular expression matching will be used for matching the common name. perms The permissions to match. perms_equal If true, only commons with permission sets that are equal to the criteria will match. Otherwise, any intersection will match. perms_regex If true, regular expression matching will be used on the permission names instead of set logic. comparison will not be used. perms_indirect If false, permissions inherited from a common permission set not will be evaluated. Default is true. """ common = CriteriaDescriptor("common_regex", "lookup_common") common_regex: bool = False perms = CriteriaSetDescriptor("perms_regex") perms_equal: bool = False perms_indirect: bool = True perms_regex: bool = False def __init__(self, policy, **kwargs) -> None: super(ObjClassQuery, self).__init__(policy, **kwargs) self.log = logging.getLogger(__name__) def results(self) -> Iterable[ObjClass]: """Generator which yields all matching object classes.""" self.log.info("Generating object class results from {0.policy}".format(self)) self._match_name_debug(self.log) self.log.debug("Common: {0.common!r}, regex: {0.common_regex}".format(self)) self.log.debug("Perms: {0.perms}, regex: {0.perms_regex}, " "eq: {0.perms_equal}, indirect: {0.perms_indirect}".format(self)) for class_ in self.policy.classes(): if not self._match_name(class_): continue if self.common: try: if not match_regex( class_.common, self.common, self.common_regex): continue except NoCommon: continue if self.perms: perms = class_.perms if self.perms_indirect: with suppress(NoCommon): perms |= class_.common.perms if not match_regex_or_set( perms, self.perms, self.perms_equal, self.perms_regex): continue yield class_