MINI MINI MANI MO
ó
oP\c           @   sL  d  d l  Z  d  d l Z d d l m Z d d l m Z d d l m Z d   Z d   Z d   Z d	 f  d
     YZ	 d e	 f d     YZ
 d
 e	 f d     YZ d  d l j
 Z
 i  Z d e	 f d     YZ d e	 f d     YZ d e	 f d     YZ d e	 f d     YZ d f  d     YZ d f  d     YZ d f  d     YZ d S(   i˙˙˙˙Ni   (   t	   refpolicy(   t   access(   t   utilc          C   sÚ   d d l  }  d d l } t d d  } t | j   j   d  } | j | j | j   |  } | j d |  } | j d |  } |  j	 d d	 d
 d | | g d |  j
 j   d } t j
 rÖ t j |  } n  | S(
   s
  Obtain all of the avc and policy load messages from the audit
    log. This function uses ausearch and requires that the current
    process have sufficient rights to run ausearch.
    Returns:
       string contain all of the audit messages returned by ausearch.
    i˙˙˙˙Ns   /proc/uptimet   ri    s   %xs   %Xs   /sbin/ausearchs   -ms5   AVC,USER_AVC,MAC_POLICY_LOAD,DAEMON_START,SELINUX_ERRs   -tst   stdout(   t
   subprocesst   timet   opent   floatt   readt   splitt   closet	   localtimet   strftimet   Popent   PIPEt   communicateR   t   PY3t   decode_input(   R   R   t   fdt   offt   st   bootdatet   boottimet   output(    (    s4   /usr/lib64/python2.7/site-packages/sepolgen/audit.pyt   get_audit_boot_msgs   s    	c          C   sV   d d l  }  |  j d d d g d |  j j   d } t j rR t j |  } n  | S(   s
  Obtain all of the avc and policy load messages from the audit
    log. This function uses ausearch and requires that the current
    process have sufficient rights to run ausearch.
    Returns:
       string contain all of the audit messages returned by ausearch.
    i˙˙˙˙Ns   /sbin/ausearchs   -ms5   AVC,USER_AVC,MAC_POLICY_LOAD,DAEMON_START,SELINUX_ERRR   i    (   R   R   R   R   R   R   R   (   R   R   (    (    s4   /usr/lib64/python2.7/site-packages/sepolgen/audit.pyt   get_audit_msgs2   s    	c          C   sP   d d l  }  |  j d g d |  j j   d } t j rL t j |  } n  | S(   s   Obtain all of the avc and policy load messages from /bin/dmesg.
    Returns:
       string contain all of the audit messages returned by dmesg.
    i˙˙˙˙Ns
   /bin/dmesgR   i    (   R   R   R   R   R   R   R   (   R   R   (    (    s4   /usr/lib64/python2.7/site-packages/sepolgen/audit.pyt   get_dmesg_msgsA   s    	t   AuditMessagec           B   s    e  Z d  Z d   Z d   Z RS(   să   Base class for all objects representing audit messages.
    AuditMessage is a base class for all audit messages and only
    provides storage for the raw message (as a string) and a
    parsing function that does nothing.
    c         C   s   | |  _  d |  _ d  S(   Nt    (   t   messaget   header(   t   selfR   (    (    s4   /usr/lib64/python2.7/site-packages/sepolgen/audit.pyt   __init__W   s    	c         C   sz   xs | D]k } | j  d  } t |  d k rQ | d  d k r | |  _ d Sq n  | d d k r | d |  _ d Sq Wd S(	   sŕ   Parse a string that has been split into records by space into
        an audit message.
        This method should be overridden by subclasses. Error reporting
        should be done by raise ValueError exceptions.
        t   =i   i   s   audit(Ni    t   msgi   (   R
   t   lenR   (   R    t   recsR#   t   fields(    (    s4   /usr/lib64/python2.7/site-packages/sepolgen/audit.pyt   from_split_string[   s    
	
(   t   __name__t
   __module__t   __doc__R!   R'   (    (    (    s4   /usr/lib64/python2.7/site-packages/sepolgen/audit.pyR   P   s   	t   InvalidMessagec           B   s   e  Z d  Z d   Z RS(   sţ   Class representing invalid audit messages. This is used to differentiate
    between audit messages that aren't recognized (that should return None from
    the audit message parser) and a message that is recognized but is malformed
    in some way.
    c         C   s   t  j |  |  d  S(   N(   R   R!   (   R    R   (    (    s4   /usr/lib64/python2.7/site-packages/sepolgen/audit.pyR!   v   s    (   R(   R)   R*   R!   (    (    (    s4   /usr/lib64/python2.7/site-packages/sepolgen/audit.pyR+   p   s   t   PathMessagec           B   s    e  Z d  Z d   Z d   Z RS(   s!   Class representing a path messagec         C   s   t  j |  |  d |  _ d  S(   NR   (   R   R!   t   path(   R    R   (    (    s4   /usr/lib64/python2.7/site-packages/sepolgen/audit.pyR!   {   s    c         C   st   t  j |  |  x] | D]U } | j d  } t |  d k rD q n  | d d k r | d d d !|  _ d  Sq Wd  S(   NR"