
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
^                  @   sh   d dl mZ ddlmZ ddlmZ ddlmZmZ edddd	gZ	G d
d deZ
G dd deZdS )    )
namedtuple   )ContextWrapper)DiffResultDescriptor)
DifferenceWrapperZmodified_genfsruleZadded_contextZremoved_contextc               @   s8   e Zd ZdZedZedZedZdd Zdd Z	dS )GenfsconsDifferencez@Determine the difference in genfscon rules between two policies.diff_genfsconsc             C   s   | j jdj|  | jdd | jj D dd | jj D \| _| _}g | _	x<|D ]4\}}t
|jt
|jkrT| j	jt||j|j qTW dS )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  qd S )N)GenfsconWrapper).0fs r    /usr/lib64/python3.6/genfscon.py	<genexpr>/   s    z5GenfsconsDifference.diff_genfscons.<locals>.<genexpr>c             s   s   | ]}t |V  qd S )N)r   )r   r   r   r   r   r   0   s    N)loginfoformatZ	_set_diffZleft_policyZ	genfsconsZright_policyadded_genfsconsremoved_genfsconsmodified_genfsconsr   contextappendmodified_genfs_record)selfZmatchedZ	left_ruleZ
right_ruler   r   r   r
   '   s     
z"GenfsconsDifference.diff_genfsconsc             C   s"   | j jd d| _d| _d| _dS )z%Reset diff results on policy changes.z#Resetting genfscon rule differencesN)r   debugr   r   r   )r   r   r   r   _reset_diff?   s    zGenfsconsDifference._reset_diffN)
__name__
__module____qualname____doc__r   r   r   r   r
   r   r   r   r   r   r	      s   r	   c               @   s4   e Zd ZdZdZdd Zdd	 Zd
d Zdd ZdS )r   z,Wrap genfscon rules to allow set operations.r   pathfiletyper   c             C   s8   || _ |j| _|j| _|j| _t|j| _t|| _d S )N)originr   r!   r"   r   r   hashkey)r   r   r   r   r   __init__M   s    zGenfsconWrapper.__init__c             C   s   | j S )N)r%   )r   r   r   r   __hash__U   s    zGenfsconWrapper.__hash__c             C   s   | j |j k S )N)r%   )r   otherr   r   r   __lt__X   s    zGenfsconWrapper.__lt__c             C   s$   | j |j ko"| j|jko"| j|jkS )N)r   r!   r"   )r   r(   r   r   r   __eq__[   s    zGenfsconWrapper.__eq__N)r   r!   r"   r   )	r   r   r   r    	__slots__r&   r'   r)   r*   r   r   r   r   r   G   s   r   N)collectionsr   r   r   Zdescriptorsr   
differencer   r   r   r	   r   r   r   r   r   <module>   s   (