def gen_modules_dict(path="/usr/share/selinux/devel/policy.xml"): global modules_dict if modules_dict: return modules_dict import xml.etree.ElementTree modules_dict = {} try: tree = xml.etree.ElementTree.fromstring(sepolicy.policy_xml(path)) for l in tree.findall("layer"): for m in l.findall("module"): name = m.get("name") if name == "user" or name == "unconfined": continue if name == "unprivuser": name = "user" if name == "unconfineduser": name = "unconfined" for b in m.findall("summary"): modules_dict[name] = b.text except IOError: pass return modules_dict