def __init__(self, rule, policy): if policy is None: raise Exception("Bad policy") if not rule: raise Exception("Bad rule") self._policy = policy self._qpolicy = policy.get_qpol() self._rule = rule text_rule = apol.apol_avrule_render(self._policy, self._rule) #Textual rule parsing is easier try: r = text_rule.split(None, 5) self._type = r[0] self._source = r[1] self._target = r[2] # r[3] is ':' self._security_class = r[4] self._permissions = r[5].strip('{}; ').split() except IndexError: raise Exception('Bad rule: "{}"'.format(text_rule))
def __repr__(self): return apol.apol_avrule_render(self._policy, self._rule)