3
^
@ sh d dl mZ ddlmZ ddlmZ ddlmZmZ edddd gZ G d
d deZ
G dd
d
eZdS ) )
namedtuple )ContextWrapper)DiffResultDescriptor)
DifferenceWrapperZmodified_genfsruleZ
added_contextZremoved_contextc @ s8 e Zd ZdZedZedZedZdd Zdd Z dS )GenfsconsDifferencez@Determine the difference in genfscon rules between two policies.diff_genfsconsc C s | j jdj| | jdd | jj D dd | jj D \| _| _}g | _ x<|D ]4\}}t
|jt
|jkrT| j jt
||j|j qTW dS )z?Generate the difference in genfscon rules between the policies.zHGenerating genfscon differences from {0.left_policy} to {0.right_policy}c s s | ]}t |V qd S )N)GenfsconWrapper).0fs r /usr/lib64/python3.6/genfscon.py / s z5GenfsconsDifference.diff_genfscons..c s s | ]}t |V qd S )N)r )r r
r r r r 0 s N)loginfoformatZ _set_diffZleft_policyZ genfsconsZright_policyadded_genfsconsremoved_genfsconsmodified_genfsconsr contextappendmodified_genfs_record)selfZmatchedZ left_ruleZ
right_ruler r r r
' s
z"GenfsconsDifference.diff_genfsconsc C s" | j jd d| _d| _d| _dS )z%Reset diff results on policy changes.z#Resetting genfscon rule differencesN)r debugr r r )r r r r _reset_diff? s zGenfsconsDifference._reset_diffN)
__name__
__module____qualname____doc__r r r r r
r r r r r r s r c @ s4 e Zd ZdZdZdd Zdd Zd
d Zdd
ZdS )r z,Wrap genfscon rules to allow set operations.r
pathfiletyper c C s8 || _ |j| _|j| _|j| _t|j| _t|| _d S )N)originr
r! r" r r hashkey)r r r r r __init__M s zGenfsconWrapper.__init__c C s | j S )N)r% )r r r r __hash__U s zGenfsconWrapper.__hash__c C s | j |j k S )N)r% )r otherr r r __lt__X s zGenfsconWrapper.__lt__c C s$ | j |j ko"| j|jko"| j|jkS )N)r
r! r" )r r( r r r __eq__[ s zGenfsconWrapper.__eq__N)r
r! r" r ) r r r r __slots__r&