ó
4®Þ]c           @   sŠ  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Td Z d  d l Z d  d l m Z m Z m Z e   d  d l m Z d  d l Z e j e d  e j e  y e j e d e d d	 WnM e k
 r?e j e d d	 n* e k
 rhd  d l Z e e j d
 <n Xe a d  d l Z i  Z e  e d <e  e d <e  e d <e! e d <e! e d <e! e d <e" e d <e" e d <e" e d <e# e d <e# e d <e# e d <e$ e d <e$ e d <e$ e d <e% e d <e% e d <e% e d <e& e d <e& e d <e& e d <e' e d  <e' e d! <e' e d" <i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d  d" 6Z( i	 d# d 6d# d 6d$ d 6d% d 6d& d 6d' d 6d( d 6d) d  6d d 6Z) y6 d  d l* Z* e* j+ e* j,    d* f  d+     YZ- Wn& e. k
 rRZ/ d* f  d,     YZ- n Xd- f  d.     YZ0 d/   Z1 d0 d1  Z2 d0 d2  Z3 d3 f  d4     YZ4 d5 e4 f d6     YZ5 d7 e4 f d8     YZ6 d9 e4 f d:     YZ7 d; e4 f d<     YZ8 d= e4 f d>     YZ9 d? e4 f d@     YZ: dA e4 f dB     YZ; dC e4 f dD     YZ< dE e4 f dF     YZ= dG e4 f dH     YZ> dI e4 f dJ     YZ? dK e4 f dL     YZ@ d S(M   iÿÿÿÿN(   t   *t   policycoreutils(   t   boolean_desct   boolean_categoryt   gen_bool_dict(   t   IPs   /usr/share/localet   unicodet   codesets   utf-8t   _t    s	   all filest   as   regular files   --t   fs   -dt	   directoryt   ds   -cs   character devicet   cs   -bs   block devicet   bs   -st   sockett   ss   -lt   ls   symbolic linkt   ps   -ps
   named pipet   anyt   blockt   chart   dirt   filet   symlinkt   pipet   loggerc           B   s_   e  Z d    Z d d d d d d d d  Z d d d d d d d d  Z d   Z d   Z RS(   c         C   s%   t  j   |  _ g  |  _ g  |  _ d  S(   N(   t   auditt
   audit_opent   audit_fdt   log_listt   log_change_list(   t   self(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   __init__o   s    	R	   c	   
      C   sÃ   d }	 | | k r) | |	 d 7} d }	 n  | | k rL | |	 d 7} d }	 n  | | k ro | |	 d 7} d }	 n  |  j  j |  j t j t j d t |  | d | | | | | | d d d g  d  S(   Nt   -t   senamet   ,t   rolet   rangei    R	   (   R   t   appendR   R   t   AUDIT_ROLE_ASSIGNt   syst   argvt   str(
   R!   t   msgt   nameR$   t   serolet   seranget	   oldsenamet	   oldserolet
   oldseranget   sep(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   logt   s    			c	   	      C   sT   |  j  j |  j t j t j d t |  | d | | | | | | d d d g  d  S(   Ni    R	   (   R   R(   R   R   t   AUDIT_ROLE_REMOVER*   R+   R,   (	   R!   R-   R.   R$   R/   R0   R1   R2   R3   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt
   log_remove   s    c         C   s5   |  j  j |  j t j t |  d d d d g  d  S(   Nt   semanageR	   (   R    R(   R   R   t   AUDIT_USER_MAC_CONFIG_CHANGER,   (   R!   R-   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt
   log_change   s    c         C   sf   x% |  j  D] } t j | | g   q
 Wx% |  j D] } t j | | g   q2 Wg  |  _  g  |  _ d  S(   N(   R   R   t   audit_log_semanage_messageR    t   audit_log_user_comm_message(   R!   t   successR   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   commit   s    	(   t   __name__t
   __module__R"   R5   R7   R:   R>   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   n   s
   		c           B   s_   e  Z d    Z d d d d d d d d  Z d d d d d d d d  Z d   Z d   Z RS(   c         C   s   g  |  _  d  S(   N(   R   (   R!   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"      s    R	   c	   
      C   sê   d | | f }	 | d k r- |	 d | 7}	 n  | d k rJ |	 d | 7}	 n  | d k rg |	 d | 7}	 n  | d k r |	 d | 7}	 n  | d k r­ | d  k r­ |	 d | 7}	 n  | d k rÖ | d  k rÖ |	 d | 7}	 n  |  j j |	  d  S(	   Ns    %s name=%sR	   s    sename=s    oldsename=s    role=s
    old_role=s
    MLSRange=s    old_MLSRange=(   t   NoneR   R(   (
   R!   R-   R.   R$   R/   R0   R1   R2   R3   t   message(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR5      s    c	   	   	   C   s&   |  j  | | | | | | | |  d  S(   N(   R5   (	   R!   R-   R.   R$   R/   R0   R1   R2   R3   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR7   ¥   s    c         C   s   |  j  j d |  d  S(   Ns    %s(   R   R(   (   R!   R-   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR:   š   s    c         C   sJ   | d k r d } n d } x( |  j  D] } t j t j | |  q% Wd  S(   Ni   s   Successful: s   Failed: (   R   t   syslogt   LOG_INFO(   R!   R=   RB   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR>   «   s
    	(   R?   R@   R"   R5   R7   R:   R>   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR      s
   		t
   nullloggerc           B   sV   e  Z d  d  d  d  d  d  d  d  Z d  d  d  d  d  d  d  d  Z d   Z d   Z RS(   R	   c	   	      C   s   d  S(   N(    (	   R!   R-   R.   R$   R/   R0   R1   R2   R3   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR5   Ž   s    c	   	      C   s   d  S(   N(    (	   R!   R-   R.   R$   R/   R0   R1   R2   R3   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR7   ·   s    c         C   s   d  S(   N(    (   R!   R-   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR:   º   s    c         C   s   d  S(   N(    (   R!   R=   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR>   œ   s    (   R?   R@   R5   R7   R:   R>   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRE   ³   s   	c         C   sf   d } d } | d | d } | d | d } | d | d d | d } t  j d	 | d
 |   S(   Ns   s[0-9]*s   c[0-9]*s   (\.s   )?s   (\,s   )*s   (-s   (:t   ^t   $(   t   ret   search(   t   rawt   sensitivityt   categoryt	   cat_ranget
   categoriest   reg(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   validate_levelÀ   s    i   c         C   s   d } | d k r% d | |  f } n |  } t  j |  \ } } | d k rP |  S| ri | t |  } n  | d k ry |  S| Sd  S(   Ns   a:b:c:i   s   %s%si    R	   (   t   selinuxt   selinux_raw_to_trans_contextt   len(   RJ   t   prependt   fillert   contextt   rct   trans(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt	   translateÈ   s    c         C   s   d } | d k r% d | |  f } n |  } t  j |  \ } } | d k rP |  S| ri | t |  } n  | d k ry |  S| Sd  S(   Ns   a:b:c:i   s   %s%si    R	   (   RQ   t   selinux_trans_to_raw_contextRS   (   RX   RT   RU   RV   RW   RJ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   untranslateØ   s    t   semanageRecordsc           B   sk   e  Z e Z d	 Z d	 Z d    Z d   Z d   Z	 d   Z
 d   Z d   Z d   Z d   Z d   Z RS(
   c         C   sd   t  |  _ |  j |  |  _ t j   \ } } | d k sE | | k rT t   |  _ n t   |  _ d  S(   NR	   (	   t   Falset   noreloadt
   get_handlet   shRQ   t   selinux_getpolicytypeR   t   mylogRE   (   R!   t   storeRW   t
   localstore(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   ï   s    	c         C   s   | s t  |  _ n  d  S(   N(   t   TrueR^   (   R!   t   load(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt
   set_reloadú   s    c         C   sF  t  j r t  j St   } | s4 t t d    n  t  j rf | d k rf t | | t  | t  _ n  t	 |  s t
 |  t t d    n  t |  } | t k  rÈ t
 |  t t d    n  t |  } | d k  rÿ t
 |  t t d    n  t |  a t d k  r6t
 |  t t d    n  | t  _ t  j S(   Ns    Could not create semanage handleR	   s:   SELinux policy is not managed or store cannot be accessed.s   Cannot read policy store.i    s'   Could not establish semanage connections!   Could not test MLS enabled status(   R\   t   handlet   semanage_handle_createt
   ValueErrorR   t   transactiont   semanage_select_storet   SEMANAGE_CON_DIRECTRc   t   semanage_is_managedt   semanage_handle_destroyt   semanage_access_checkt   SEMANAGE_CAN_READt   semanage_connectt   semanage_mls_enabledt   is_mls_enabled(   R!   Rc   Rh   RW   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR_   þ   s2    		



	c         C   s   t  t d    d  S(   Ns   Not yet implemented(   Rj   R   (   R!   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt	   deleteall"  s    c         C   s5   t  j r t t d    n  |  j   t t  _ d  S(   Ns(   Semanage transaction already in progress(   R\   Rk   Rj   R   t   beginRe   (   R!   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   start%  s    	
c         C   sA   t  j r d  St |  j  } | d k  r= t t d    n  d  S(   Ni    s$   Could not start semanage transaction(   R\   Rk   t   semanage_begin_transactionR`   Rj   R   (   R!   RW   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRv   +  s
    	c         C   s   t  t d    d  S(   Ns   Not yet implemented(   Rj   R   (   R!   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt
   customized2  s    c         C   s}   t  j r d  S|  j r) t |  j d  n  t |  j  } | d k  ri |  j j d  t t	 d    n  |  j j d  d  S(   Ni    s%   Could not commit semanage transactioni   (
   R\   Rk   R^   t   semanage_set_reloadR`   t   semanage_commitRb   R>   Rj   R   (   R!   RW   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR>   5  s    		c         C   s5   t  j s t t d    n  t t  _ |  j   d  S(   Ns$   Semanage transaction not in progress(   R\   Rk   Rj   R   R]   R>   (   R!   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   finishA  s    		N(   R?   R@   R]   Rk   RA   Rh   Rc   R"   Rg   R_   Ru   Rw   Rv   Ry   R>   R|   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR\   ê   s   			$					t   moduleRecordsc           B   s_   e  Z d    Z d   Z d   Z e e d  Z d   Z d   Z	 d   Z
 d   Z d   Z RS(	   c         C   s   t  j |  |  d  S(   N(   R\   R"   (   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   J  s    c         C   s  g  } t  |  j  \ } } } | d k  r? t t d    n  x t |  D]} t | |  } t |  j |  \ } } | d k  r t t d    n  t |  j |  \ } } | d k  rÓ t t d    n  t |  j |  \ } }	 | d k  rt t d    n  t	 |  j |  \ } }
 | d k  rEt t d    n  | j
 | | |	 |
 f  qL W| j d d   d	 t  | j d d
    | S(   Ni    s   Could not list SELinux moduless   Could not get module names   Could not get module enableds   Could not get module prioritys   Could not get module lang_extt   keyc         S   s   |  d S(   Ni   (    (   t   t(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   <lambda>i  s    t   reversec         S   s   |  d S(   Ni    (    (   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   j  s    (   t   semanage_module_list_allR`   Rj   R   R'   t   semanage_module_list_ntht   semanage_module_info_get_namet    semanage_module_info_get_enabledt!   semanage_module_info_get_priorityt!   semanage_module_info_get_lang_extR(   t   sortRe   (   R!   R   RW   t   mlistt   numbert   it   modR.   t   enabledt   priorityt   lang_ext(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   get_allM  s,    c         C   sd   |  j    } t |  d k r" d  Sg  g  | D] } | d d k r, | ^ q, D] } d | d ^ qL S(   Ni    i   s   -d %s(   R   RS   (   R!   t   ALLR   t   x(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy   m  s    c         C   s¶   |  j    } t |  d k r" d  S| rO d t d  t d  t d  f GHn  x` | D]X } | d d k r{ t d  } n | r qV n  d } d	 | d | d
 | d | f GHqV Wd  S(   Ni    s   
%-25s %-9s %s
s   Module Namet   Priorityt   Languagei   t   DisabledR	   s   %-25s %-9s %-5s %si   i   (   R   RS   R   (   R!   t   headingt	   locallistR   R   t   disabled(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   lists  s    'c         C   s¬   | s t  t d    n  t j j |  sF t  t d  |   n  t |  j |  } | d k  r} t  t d  |   n  t |  j |  } | d k rš |  j   n  d  S(   Ns   You did not define module name.s   Module does not exists %s i    s3   Invalid priority %d (needs to be between 1 and 999)(	   Rj   R   t   ost   patht   existst   semanage_set_default_priorityR`   t   semanage_module_install_fileR>   (   R!   t   moduleR   RW   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   add  s    c         C   s  | s t  t d    n  xÙ | j   D]Ë } t |  j  \ } } | d k  rd t  t d    n  t |  j | |  } | d k  r t  t d    n  t |  j | |  } | d k  r( | rÚ t  t d  |   qó t  t d  |   q( q( W|  j   d  S(   Ns   You did not define module name.i    s   Could not create module keys   Could not set module key names   Could not enable module %ss   Could not disable module %s(   Rj   R   t   splitt   semanage_module_key_createR`   t   semanage_module_key_set_namet   semanage_module_set_enabledR>   (   R!   R   t   enablet   mRW   R~   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   set_enabled  s    c         C   sZ   t  j j |  s+ t t d  |   n  t |  j |  } | d k rV |  j   n  d  S(   Ns   Module does not exists %s i    (   R   R   R   Rj   R   R   R`   R>   (   R!   R   RW   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   modifyŠ  s
    c         C   sº   | s t  t d    n  t |  j |  } | d k  rR t  t d  |   n  xW | j   D]I } t |  j |  } | d k  r_ | d k r_ t  t d  |   q_ q_ W|  j   d  S(   Ns   You did not define module name.i    s3   Invalid priority %d (needs to be between 1 and 999)iþÿÿÿs*   Could not remove module %s (remove failed)(   Rj   R   R   R`   R¡   t   semanage_module_removeR>   (   R!   R   R   RW   RŠ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   delete¯  s    c         C   sk   g  g  |  j    D] } | d d k r | ^ q D] } | d ^ q0 } x | D] } |  j | t  qM Wd  S(   Ni   i    (   R   R§   Re   (   R!   R   R   R   RŠ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   œ  s    F(   R?   R@   R"   R   Ry   Re   R]   R   R    R§   Rš   Rª   Ru   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR}   H  s   		 						t   dontauditClassc           B   s   e  Z d    Z d   Z RS(   c         C   s   t  j |  |  d  S(   N(   R\   R"   (   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   Å  s    c         C   sQ   | d k r! t  t d    n  |  j   t |  j | d k  } |  j   d  S(   Nt   ont   offs'   dontaudit requires either 'on' or 'off'(   R¬   R­   (   Rj   R   Rv   t   semanage_set_disable_dontauditR`   R>   (   R!   t	   dontauditRW   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   toggleÈ  s
    
(   R?   R@   R"   R°   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR«   Ã  s   	t   permissiveRecordsc           B   sD   e  Z d    Z d   Z e e d  Z d   Z d   Z d   Z	 RS(   c         C   s   t  j |  |  d  S(   N(   R\   R"   (   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   Ò  s    c         C   s§   g  } t  |  j  \ } } } | d k  r? t t d    n  xa t |  D]S } t | |  } t |  } | rL | j d  rL | j | j	 d  d  qL qL W| S(   Ni    s   Could not list SELinux modulest   permissive_i   (
   t   semanage_module_listR`   Rj   R   R'   R   t   semanage_module_get_namet
   startswithR(   R¡   (   R!   R   RW   R   R   R   R   R.   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   Õ  s    !c         C   sá   g  g  t  j t  j  D] } | d r | ^ q D] } | d ^ q0 } t |  d k r\ d  S|  j   } | r d t d  GHn  x | D] } | GHq W| r  d  S| rž d t d  GHn  x" | D] } | | k r¿ | GHq¿ q¿ Wd  S(   Nt
   permissiveR.   i    s   
%-25s
s   Customized Permissive Typess   Builtin Permissive Types(   t   sepolicyt   infot   TYPERS   R   R   (   R!   R   R   R   t   yR   Ry   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   â  s    F	c         C   sç   d d  l  } | t j   k r7 t t d  |   n  y d d  l j } Wn# t k
 ro t t d    n Xd | } d | } t |  j	 | t
 |  | d  } | d k rŸ |  j   n  | d k  rã t t d  |   n  d  S(	   Niÿÿÿÿs   %s is not a domain typesÏ   The sepolgen python module is required to setup permissive domains.
In some distributions it is included in the policycoreutils-devel patckage.
# yum install policycoreutils-devel
Or similar for your distro.s   permissive_%ss   (typepermissive %s)t   cili    s?   Could not set permissive domain %s (module installation failed)(   t   globR·   t   get_all_domainsRj   R   t   sepolgen.moduleR   t   ImportErrort   semanage_module_installR`   RS   R>   (   R!   t   setypeRŒ   R   R.   t   modtxtRW   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR    ÷  s    

!c         C   s`   xO | j    D]A } t |  j d |  } | d k  r t t d  |   q q W|  j   d  S(   Ns   permissive_%si    s5   Could not remove permissive domain %s (remove failed)(   R¡   R©   R`   Rj   R   R>   (   R!   R.   t   nRW   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª     s
    c         C   s;   |  j    } t |  d k r7 |  j d j |   n  d  S(   Ni    t    (   R   RS   Rª   t   join(   R!   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu     s    (
   R?   R@   R"   R   Re   R]   R   R    Rª   Ru   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR±   Ð  s   				t   loginRecordsc           B   s   e  Z d  d  Z d   Z d   Z d  d d  Z d  d d  Z d   Z d   Z	 d   Z
 d	   Z e d
  Z d   Z e e d  Z RS(   R	   c         C   s8   t  j |  |  d  |  _ d  |  _ d  |  _ d  |  _ d  S(   N(   R\   R"   RA   R1   R3   R$   R0   (   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"     s
    			c         C   sú  t  j |  \ } |  _ |  _ | d k r3 d } n  t   } | j |  j  d \ } } | j |  \ } \ } }	 t d k r | r t |  } q | } n  t |  j	 |  \ } }
 | d k  rÚ t
 t d  |   n  t |  j	 |
  \ } } | d k  rt
 t d  |   n  | r:t |
  |  j | | |  S| d d k ry t j | d  Wq·t
 t d  | d   q·Xn1 y t j |  Wn t
 t d	  |   n Xt |  j	  \ } } | d k  rñt
 t d
  |   n  t |  j	 | |  } | d k  r+t
 t d  |   n  | rnt |  j	 | |  } | d k  rnt
 t d  |   qnn  t |  j	 | |  } | d k  ršt
 t d  |   n  t |  j	 |
 |  } | d k  rât
 t d  |   n  t |
  t |  d  S(   NR	   t   user_ui   i    s   Could not create a key for %ss2   Could not check if login mapping for %s is definedt   %s   Linux Group %s does not exists   Linux User %s does not exists%   Could not create login mapping for %ss   Could not set name for %ss   Could not set MLS range for %ss!   Could not set SELinux user for %ss"   Could not add login mapping for %s(   RQ   t   getseuserbynameR1   R3   t   seluserRecordst   getRt   R[   t   semanage_seuser_key_createR`   Rj   R   t   semanage_seuser_existst   semanage_seuser_key_freet   _loginRecords__modifyt   grpt   getgrnamt   pwdt   getpwnamt   semanage_seuser_createt   semanage_seuser_set_namet   semanage_seuser_set_mlsranget   semanage_seuser_set_senamet   semanage_seuser_modify_localt   semanage_seuser_free(   R!   R.   R$   R0   t   rect   userrecRW   R2   t   RANGER/   t   kR   t   u(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   __add   s\    			
!
c         C   sK   y+ |  j    |  j | | |  |  j   Wn t k
 rF } |  n Xd  S(   N(   Rv   t   _loginRecords__addR>   Rj   (   R!   R.   R$   R0   t   error(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR    ]  s    
c         C   sW  t  j |  \ } |  _ |  _ | d k rF | rF t t d    n  t   } | j |  j  \ } \ } } | d k r | j |  \ } \ } }	 n | }	 | r¯ | |  _ n	 | |  _ t	 |  j
 |  \ } }
 | d k  rõ t t d  |   n  t |  j
 |
  \ } } | d k  r2t t d  |   n  | sQt t d  |   n  t |  j
 |
  \ } } | d k  rt t d  |   n  t |  |  _ t |  |  _ | rÎt |  j
 | t |   n  | d k rùt |  j
 | |  | |  _ n |  j |  _ t |  j
 |
 |  } | d k  r?t t d  |   n  t |
  t |  d  S(	   NR	   s   Requires seuser or serangei    s   Could not create a key for %ss2   Could not check if login mapping for %s is defineds#   Login mapping for %s is not defineds   Could not query seuser for %ss%   Could not modify login mapping for %s(   RQ   RÉ   R1   R3   Rj   R   RÊ   RË   R0   RÌ   R`   RÍ   t   semanage_seuser_queryt   semanage_seuser_get_mlsranget   semanage_seuser_get_senameRÖ   R[   R×   R$   RØ   RÎ   RÙ   (   R!   R.   R$   R0   RÚ   RÛ   RÜ   RW   R2   R/   RÝ   R   RÞ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   __modifye  sF    		
c         C   sK   y+ |  j    |  j | | |  |  j   Wn t k
 rF } |  n Xd  S(   N(   Rv   RÏ   R>   Rj   (   R!   R.   R$   R0   Rá   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRš     s    
c   
      C   s»  t  j |  \ } |  _ |  _ t   } | j |  j  \ } \ } } t |  j |  \ } } | d k  r t t	 d  |   n  t
 |  j |  \ } } | d k  r¿ t t	 d  |   n  | sÞ t t	 d  |   n  t |  j |  \ } } | d k  rt t	 d  |   n  | s:t t	 d  |   n  t |  j |  } | d k  rqt t	 d  |   n  t |  t  j d  \ } |  _ |  _ | j |  j  \ } \ } }	 d  S(   Ni    s   Could not create a key for %ss2   Could not check if login mapping for %s is defineds#   Login mapping for %s is not defineds<   Login mapping for %s is defined in policy, cannot be deleteds%   Could not delete login mapping for %st   __default__(   RQ   RÉ   R1   R3   RÊ   RË   RÌ   R`   Rj   R   RÍ   t   semanage_seuser_exists_localt   semanage_seuser_del_localRÎ   R$   R0   (
   R!   R.   RÚ   RÛ   RÜ   RW   R2   RÝ   R   R/   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   __delete  s,    	
c         C   sE   y% |  j    |  j |  |  j   Wn t k
 r@ } |  n Xd  S(   N(   Rv   t   _loginRecords__deleteR>   Rj   (   R!   R.   Rá   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª   œ  s    
c         C   s   t  |  j  \ } } | d k  r6 t t d    n  y< |  j   x! | D] } |  j t |   qJ W|  j   Wn t k
 r } |  n Xd  S(   Ni    s   Could not list login mappings(   t   semanage_seuser_list_localR`   Rj   R   Rv   Rê   t   semanage_seuser_get_nameR>   (   R!   RW   t   ulistRÞ   Rá   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   Æ  s    
c         C   sÖ   i  } t  j   d |  _ x¶ t j |  j  D]¢ \ } } } | |  j k r, x | D]v } y\ t | d |  } | j   j   j d  } | j	   | d | d | d f | | <WqQ t
 k
 rÆ qQ XqQ Wq, q, W| S(   Ns   /loginst   /t   :i   i   i    (   RQ   t   selinux_policy_roott   logins_pathR   t   walkt   opent   readt   rstripR¡   t   closet
   IndexError(   R!   t   ddictR   t   dirst   filesR.   t   fdRÚ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   get_all_loginsÓ  s    "
#c         C   s£   i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  x< |  j D]1 } t |  } t |  t |  d f | | <qj W| S(   Ni    s   Could not list login mappingsR    (	   Rë   R`   Rí   t   semanage_seuser_listRj   R   Rì   Rä   Rã   (   R!   R   Rø   RW   RÞ   R.   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   â  s    #c         C   s    g  } |  j  t  } t | j    } | j   xh | D]` } | | d ry | j d | | d | | d | f  q8 | j d | | d | f  q8 W| S(   Ni   s   -a -s %s -r '%s' %si    s   -a -s %s %s(   R   Re   R   t   keysR   R(   (   R!   R   Rø   Rþ   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy   ð  s    
-#c   	      C   s¯  |  j  |  } |  j   } t | j    } t | j    } t |  d k rg t |  d k rg d  S| j   | j   t d k r_| rœ d t d  t d  t d  t d  f GHn  x? | D]7 } | | } d | | d t | d  | d	 f GHqÄ Wt |  rd
 |  j	 GHn  x | D]7 } | | } d | | d t | d  | d	 f GHq!WnL | rd t d  t d  f GHn  x% | D] } d | | | d f GHqWd  S(   Ni    i   s   
%-20s %-20s %-20s %s
s
   Login Names   SELinux Users   MLS/MCS Ranget   Services   %-20s %-20s %-20s %si   s   
Local customization in %ss   
%-25s %-25s
s   %-25s %-25s(
   R   Rü   R   Rþ   RS   R   Rt   R   RY   Rñ   (	   R!   R   R   Rø   t   ldictt   lkeysRþ   RÝ   RÞ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ü  s.    $

0
+
.N(   R?   R@   R"   Rà   R    RA   RÏ   Rš   Rê   Rª   Ru   Rü   R]   R   Ry   Re   R   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRÆ     s   	=	2						RÊ   c           B   s   e  Z d  d  Z d   Z d   Z d   Z g  d  d d  d  Z g  d  d d  d  Z d   Z	 d   Z
 d	   Z e d
  Z d   Z e e d  Z RS(   R	   c         C   s   t  j |  |  d  S(   N(   R\   R"   (   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"     s    c         C   só   t  |  j |  \ } } | d k  r= t t d  |   n  t |  j |  \ } } | d k  rz t t d  |   n  t |  j |  \ } } | d k  r· t t d  |   n  t |  } t |  j |  } t |  t	 |  | | f S(   Ni    s   Could not create a key for %ss-   Could not check if SELinux user %s is defineds   Could not query user for %s(
   t   semanage_user_key_createR`   Rj   R   t   semanage_user_existst   semanage_user_queryt   semanage_user_get_mlsranget   semanage_user_get_rolest   semanage_user_key_freet   semanage_user_free(   R!   R.   RW   RÝ   R   RÞ   R0   R/   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRË     s    

c         C   sk  t  d k rK | r! t |  } n d } | d k r< d } qK t |  } n  t |  d k  rv t t d  |   n  t |  j |  \ } } | d k  r³ t t d  |   n  t |  j |  \ } } | d k  rð t t d  |   n  | rt |  |  j	 | | | | |  St
 |  j  \ } }	 | d k  rSt t d  |   n  t |  j |	 |  } | d k  rt t d	  |   n  xV | D]N }
 t |  j |	 |
  } | d k  rt t d
  i |
 d 6| d 6  qqWt  d k rit |  j |	 |  } | d k  r,t t d  |   n  t |  j |	 |  } | d k  rit t d  |   qin  t |  j |	 |  } | d k  r±t t d  i |
 d 6| d 6  n  t |  j |	  \ } } | d k  rît t d  |   n  t |  j | |	  } | d k  r(t t d  |   n  t |  t |	  |  j j d d | d d j |  d | d  S(   Ni   t   s0R	   s%   You must add at least one role for %si    s   Could not create a key for %ss-   Could not check if SELinux user %s is defineds$   Could not create SELinux user for %ss   Could not set name for %ss(   Could not add role %(ROLE)s for %(NAME)st   ROLEt   NAMEs   Could not set MLS range for %ss   Could not set MLS level for %ss,   Could not add prefix %(PREFIX)s for %(ROLE)st   PREFIXs   Could not extract key for %ss   Could not add SELinux user %st   seuserR$   R/   R%   R0   (   Rt   R[   RS   Rj   R   R  R`   R  R  t   _seluserRecords__modifyt   semanage_user_createt   semanage_user_set_namet   semanage_user_add_rolet   semanage_user_set_mlsranget   semanage_user_set_mlslevelt   semanage_user_set_prefixt   semanage_user_key_extractt   semanage_user_modify_localR  Rb   R5   RÅ   (   R!   R.   t   rolest   selevelR0   t   prefixRW   RÝ   R   RÞ   t   rR~   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRß   ,  s^    	
+'

c         C   sa   y1 |  j    |  j | | | | |  |  j   Wn) t k
 r\ } |  j j d  |  n Xd  S(   Ni    (   Rv   t   _seluserRecords__addR>   Rj   Rb   (   R!   R.   R  R  R0   R  Rá   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR    j  s    
c         C   s+  d } d } d j  |  } | d k r t |  d k r | r | d k r t d k rm t t d    q t t d    n  t |  j |  \ }	 }
 |	 d k  r¿ t t d  |   n  t |  j |
  \ }	 } |	 d k  rü t t d  |   n  | st t d	  |   n  t |  j |
  \ }	 } |	 d k  rXt t d
  |   n  t	 |  } t
 |  j |  \ }	 } |	 d k rd j  |  } n  | rŒt |  j | t |   n  | d k rät |  j | t |   n  | d k rt |  j | |  n  t |  d k r{x* | D]" } | | k rt | |  qqWx3 | D]( } | | k rLt |  j | |  qLqLWn  t |  j |
 |  }	 |	 d k  rµt t d  |   n  t |
  t |  d j  | j    } d j  | j    } |  j j d d | d | d | d | d | d | d  S(   NR	   RÄ   i    i   s&   Requires prefix, roles, level or ranges   Requires prefix or roless   Could not create a key for %ss-   Could not check if SELinux user %s is defineds   SELinux user %s is not defineds   Could not query user for %ss    Could not modify SELinux user %sR%   R  R$   R1   R/   R0   R2   R3   (   RÅ   RS   Rt   Rj   R   R  R`   R  R  R  R  R  R[   R  R  t   semanage_user_del_roleR  R  R  R  R¡   Rb   R5   (   R!   R.   R  R  R0   R  R2   R3   t   newrolesRW   RÝ   R   RÞ   t   rlistR  R&   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRå   s  sV    1

c         C   sa   y1 |  j    |  j | | | | |  |  j   Wn) t k
 r\ } |  j j d  |  n Xd  S(   Ni    (   Rv   R  R>   Rj   Rb   (   R!   R.   R  R  R0   R  Rá   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRš   ¬  s    
c   	      C   sÖ  t  |  j |  \ } } | d k  r= t t d  |   n  t |  j |  \ } } | d k  rz t t d  |   n  | s t t d  |   n  t |  j |  \ } } | d k  rÖ t t d  |   n  | sõ t t d  |   n  t |  j |  \ } } | d k  r2t t d  |   n  t |  } t |  j |  \ } } d j	 |  } t
 |  j |  } | d k  rt t d  |   n  t |  t |  |  j j d	 d
 | d | d | d  S(   Ni    s   Could not create a key for %ss-   Could not check if SELinux user %s is defineds   SELinux user %s is not defineds7   SELinux user %s is defined in policy, cannot be deleteds   Could not query user for %sR%   s    Could not delete SELinux user %sR  R1   R3   R2   (   R  R`   Rj   R   R  t   semanage_user_exists_localR  R  R  RÅ   t   semanage_user_del_localR  R  Rb   R7   (	   R!   R.   RW   RÝ   R   RÞ   R3   R  R2   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRé   µ  s2    

c         C   sU   y% |  j    |  j |  |  j   Wn) t k
 rP } |  j j d  |  n Xd  S(   Ni    (   Rv   t   _seluserRecords__deleteR>   Rj   Rb   (   R!   R.   Rá   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª   Ö  s    
c         C   sœ   t  |  j  \ } } | d k  r6 t t d    n  yW |  j   x< | D]4 } y |  j t |   WqJ t k
 r} qJ qJ XqJ W|  j   Wn) t k
 rž } |  j	 j d  |  n Xd  S(   Ni    s   Could not list login mappings(
   t   semanage_user_list_localR`   Rj   R   Rv   R!  t   semanage_user_get_namet   OSErrorR>   Rb   (   R!   RW   Rí   RÞ   Rá   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   à  s    
c         C   sþ   i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  x |  j D] } t |  } t |  j |  \ } } | d k  r¹ t t d  |   n  d j |  } t	 |  t
 |  t |  | f | t |  <qj W| S(   Ni    s   Could not list SELinux userss    Could not list roles for user %sRÄ   (   R"  R`   Rí   t   semanage_user_listRj   R   R#  R  RÅ   t   semanage_user_get_prefixt   semanage_user_get_mlslevelR  (   R!   R   Rø   RW   RÞ   R.   R  R  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ñ  s    2c         C   s¹   g  } |  j  t  } t | j    } | j   x | D]y } | | d sZ | | d r | j d | | d | | d | | d | f  q8 | j d | | d | f  q8 W| S(   Ni   i   s   -a -L %s -r %s -R '%s' %si   s   -a -R '%s' %s(   R   Re   R   Rþ   R   R(   (   R!   R   Rø   Rþ   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy     s    
8#c         C   s[  |  j  |  } t | j    } t |  d k r7 d  S| j   t d k r| r³ d d t d  t d  t d  f GHd t d  t d	  t d
  t d  t d  f GHn  x¡ | D]J } d | | | d t | | d  t | | d  | | d f GHqº WnL | r/d t d  t d  f GHn  x% | D] } d | | | d f GHq6Wd  S(   Ni    i   s   
%-15s %-10s %-10s %-30sR	   t   Labelings   MLS/s   %-15s %-10s %-10s %-30s %s
s   SELinux Usert   Prefixs	   MCS Levels	   MCS Ranges   SELinux Roless   %-15s %-10s %-10s %-30s %si   i   s	   %-15s %s
s   %-15s %s(   R   R   Rþ   RS   R   Rt   R   RY   (   R!   R   R   Rø   Rþ   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR     s    
'9KN(   R?   R@   R"   RË   R  R    RA   R  Rš   R!  Rª   Ru   R]   R   Ry   Re   R   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRÊ     s   		>		9		!	
		t   portRecordsc           B   s   e  Z g  Z d  d  Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z e d
  Z e d  Z d   Z e e d  Z RS(   R	   c         C   sL   t  j |  |  y$ t j t j d  d d |  _ Wn t k
 rG n Xd  S(   Nt	   port_typei    t   types(   R\   R"   R·   Rž   t	   ATTRIBUTEt   valid_typest   RuntimeError(   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   '  s
    $c   	      C   s7  | d k r t  } n' | d k r* t } n t t d    | d k r] t t d    n  | j d  } t |  d k r t | d  } } n  t | d  } t | d  } | d	 k rÖ t t d
    n  t |  j | | |  \ } } | d k  r't t d  i | d 6| d 6  n  | | | | f S(   Nt   tcpt   udps   Protocol udp or tcp is requiredR	   s   Port is requiredR#   i   i    iÿÿ  s   Invalid Ports1   Could not create a key for %(PROTOTYPE)s/%(PORT)st	   PROTOTYPEt   PORT(	   t   SEMANAGE_PROTO_TCPt   SEMANAGE_PROTO_UDPRj   R   R¡   RS   t   intt   semanage_port_key_createR`   (	   R!   t   portt   protot   proto_dt   portst   hight   lowRW   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   __genkey.  s$    		'c         C   sí  t  d k r* | r! t |  } q* d } n  | d k rK t t d    n  t j |  |  j k r| t t d  |   n  |  j | |  \ } } } } t j	 rŸ t
 |  j |  \ }	 }
 n t |  j |  \ }	 }
 |	 d k  r	t t d  i | d 6| d	 6  n  |
 r6t t d
  i | d 6| d	 6  n  t |  j  \ }	 } |	 d k  r~t t d  i | d 6| d	 6  n  t | |  t | | |  t |  j  \ }	 } |	 d k  rãt t d  i | d 6| d	 6  n  t |  j | d  }	 |	 d k  r+t t d  i | d 6| d	 6  n  t |  j | d  }	 |	 d k  rst t d  i | d 6| d	 6  n  t |  j | |  }	 |	 d k  r»t t d  i | d 6| d	 6  n  | rt |  j | |  }	 |	 d k  rt t d  i | d 6| d	 6  qn  t |  j | |  }	 |	 d k  rTt t d  i | d 6| d	 6  n  t |  j | |  }	 |	 d k  rt t d  i | d 6| d	 6  n  t |  t |  t |  |  j j d | t j |  d d | | f  d  S(   Ni   R	  R	   s   Type is requireds'   Type %s is invalid, must be a port typei    s8   Could not check if port %(PROTOCOL)s/%(PORT)s is definedt   PROTOCOLR3  s*   Port %(PROTOCOL)s/%(PORT)s already defineds/   Could not create port for %(PROTOCOL)s/%(PORT)ss2   Could not create context for %(PROTOCOL)s/%(PORT)st   system_us<   Could not set user in port context for %(PROTOCOL)s/%(PORT)st   object_rs<   Could not set role in port context for %(PROTOCOL)s/%(PORT)ss<   Could not set type in port context for %(PROTOCOL)s/%(PORT)ssB   Could not set mls fields in port context for %(PROTOCOL)s/%(PORT)ss4   Could not set port context for %(PROTOCOL)s/%(PORT)ss(   Could not add port %(PROTOCOL)s/%(PORT)ss8   resrc=port op=add lport=%s proto=%s tcontext=%s:%s:%s:%s(   Rt   R[   Rj   R   R·   t   get_real_type_nameR.  t   _portRecords__genkeyR\   Rk   t   semanage_port_exists_localR`   t   semanage_port_existst   semanage_port_createt   semanage_port_set_protot   semanage_port_set_ranget   semanage_context_createt   semanage_context_set_usert   semanage_context_set_rolet   semanage_context_set_typet   semanage_context_set_mlst   semanage_port_set_cont   semanage_port_modify_localt   semanage_context_freet   semanage_port_key_freet   semanage_port_freeRb   R:   R   t   getprotobyname(   R!   R8  R9  R0   t   typeRÝ   R:  R=  R<  RW   R   R   t   con(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRß   H  s^    		'''''''*''


c         C   s.   |  j    |  j | | | |  |  j   d  S(   N(   Rv   t   _portRecords__addR>   (   R!   R8  R9  R0   RT  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR      s    
c      
   C   sF  | rI | d k rI t  d k r4 t t d    qI t t d    n  | r t j |  |  j k r t t d  |   n  |  j | |  \ } } } } t |  j |  \ }	 }
 |	 d k  ré t t d  i | d 6| d	 6  n  |
 st t d
  i | d 6| d	 6  n  t	 |  j |  \ }	 } |	 d k  rat t d  i | d 6| d	 6  n  t
 |  } | rt |  j | t |   n d } | d k r·t |  j | |  n  t |  j | |  }	 |	 d k  rÿt t d  i | d 6| d	 6  n  t |  t |  |  j j d | t j |  d d | | f  d  S(   NR	   i   s   Requires setype or seranges   Requires setypes1   Type %s is invalid, must be a file or device typei    s9   Could not check if port @%(PROTOCOL)s/%(PORT)s is definedR?  R3  s*   Port @%(PROTOCOL)s/%(PORT)s is not defineds*   Could not query port %(PROTOCOL)s/%(PORT)sR	  s+   Could not modify port %(PROTOCOL)s/%(PORT)ss;   resrc=port op=modify lport=%s proto=%s tcontext=%s:%s:%s:%sR@  RA  (   Rt   Rj   R   R·   RB  R.  RC  RE  R`   t   semanage_port_queryt   semanage_port_get_conRM  R[   RL  RO  RQ  RR  Rb   R:   R   RS  (   R!   R8  R9  R0   RÁ   RÝ   R:  R=  R<  RW   R   R   RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRå     s6    ''''

c         C   s.   |  j    |  j | | | |  |  j   d  S(   N(   Rv   t   _portRecords__modifyR>   (   R!   R8  R9  R0   RÁ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRš   µ  s    
c         C   s[  t  |  j  \ } } | d k  r6 t t d    n  |  j   x
| D]} t |  } t |  } t |  } t |  } d | | f } |  j	 | |  \ }	 }
 } } | d k  rÐ t t d  |   n  t
 |  j |	  } | d k  rt t d  |   n  t |	  | | k r&| } n  |  j j d | t j |  f  qG W|  j   d  S(   Ni    s   Could not list the portss   %s-%ss   Could not create a key for %ss   Could not delete the port %ss&   resrc=port op=delete lport=%s proto=%s(   t   semanage_port_list_localR`   Rj   R   Rv   t   semanage_port_get_protot   semanage_port_get_proto_strt   semanage_port_get_lowt   semanage_port_get_highRC  t   semanage_port_del_localRQ  Rb   R:   R   RS  R>   (   R!   RW   t   plistR8  R9  t	   proto_strR=  R<  t   port_strRÝ   R:  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   º  s*    

	'c   	      C   s  |  j  | |  \ } } } } t |  j |  \ } } | d k  ri t t d  i | d 6| d 6  n  | s t t d  i | d 6| d 6  n  t |  j |  \ } } | d k  rá t t d  i | d 6| d 6  n  | st t d  i | d 6| d 6  n  t |  j |  } | d k  rSt t d  i | d 6| d 6  n  t |  |  j j	 d | t
 j |  f  d  S(	   Ni    s8   Could not check if port %(PROTOCOL)s/%(PORT)s is definedR?  R3  s)   Port %(PROTOCOL)s/%(PORT)s is not definedsB   Port %(PROTOCOL)s/%(PORT)s is defined in policy, cannot be deleteds+   Could not delete port %(PROTOCOL)s/%(PORT)ss&   resrc=port op=delete lport=%s proto=%s(   RC  RE  R`   Rj   R   RD  R_  RQ  Rb   R:   R   RS  (	   R!   R8  R9  RÝ   R:  R=  R<  RW   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRé   ×  s     '''''
c         C   s(   |  j    |  j | |  |  j   d  S(   N(   Rv   t   _portRecords__deleteR>   (   R!   R8  R9  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª   í  s    
c         C   så   i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  x~ |  j D]s } t |  } t |  } t |  } t	 |  } t
 |  }	 t |  }
 t |  } | | f | |
 | |	 f <qj W| S(   Ni    s   Could not list ports(   RZ  R`   R`  t   semanage_port_listRj   R   RX  t   semanage_context_get_typet   semanage_context_get_mlsR[  R\  R]  R^  (   R!   R   Rø   RW   R8  RU  t   ctypet   levelR9  Ra  R=  R<  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ò  s     c         C   s<  i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  xÕ |  j D]Ê } t |  } t |  } t |  } t	 |  } t
 |  }	 t |  }
 | | f t | j    k ré g  | | | f <n  |	 |
 k r| | | f j d |	  qj | | | f j d |	 |
 f  qj W| S(   Ni    s   Could not list portss   %ds   %d-%d(   RZ  R`   R`  Rd  Rj   R   RX  Re  R[  R\  R]  R^  R   Rþ   R(   (   R!   R   Rø   RW   R8  RU  Rg  R9  Ra  R=  R<  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   get_all_by_type  s&    %c         C   sä   g  } |  j  t  } t | j    } | j   x¬ | D]€ } | d | d k r\ | d n d | d | d f } | | d r¶ | j d | | d | | d | d | f  q8 | j d | | d | d | f  q8 W| S(   Ni    i   s   %s-%ss   -a -t %s -r '%s' -p %s %si   s   -a -t %s -p %s %s(   R   Re   R   Rþ   R   R(   (   R!   R   Rø   Rþ   RÝ   R8  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy     s    
64*c         C   sÏ   |  j  |  } t | j    } t |  d k r7 d  S| j   | rn d t d  t d  t d  f GHn  xZ | D]R } d | } | d | | d 7} x$ | | d D] } | d	 | 7} qª W| GHqu Wd  S(
   Ni    s   %-30s %-8s %s
s   SELinux Port Typet   Protos   Port Numbers   %-30s %-8s s   %si   s   , %s(   Ri  R   Rþ   RS   R   R   (   R!   R   R   Rø   Rþ   R   RÚ   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ,  s    
'
(   R?   R@   R.  R"   RC  RV  R    RY  Rš   Ru   Rc  Rª   R]   R   Ri  Ry   Re   R   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR*  $  s   		@		(					t   ibpkeyRecordsc           B   s   e  Z g  Z d  d  Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
 d  Z d
 d  Z d   Z d d
 d  Z RS(   R	   c         C   sR   t  j |  |  y4 t d   t j t j d  d d D  |  _ Wn n Xd  S(   Nc         s   s   |  ] } t  |  Vq d  S(   N(   R,   (   t   .0R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pys	   <genexpr>B  s    t   ibpkey_typei    R,  (   R\   R"   t   setR·   Rž   R-  R.  (   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   ?  s
    4c         C   sü   | d k r! t  t d    n  | j d  } t |  d k r\ t | d d  } } n& t | d d  } t | d d  } | d k r£ t  t d    n  t |  j | | |  \ } } | d k  rì t  t d  | | f   n  | | | | f S(	   NR	   s   Subnet Prefix is requiredR#   i   i    iÿÿ  s   Invalid Pkeys    Could not create a key for %s/%s(   Rj   R   R¡   RS   R6  t   semanage_ibpkey_key_createR`   (   R!   t   pkeyt   subnet_prefixt   pkeysR<  R=  RW   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR>  F  s    c         C   sh  t  d k r0 | d k r! d } q0 t |  } n  | d k rQ t t d    n  t j |  |  j k r t t d  |   n  |  j | |  \ } } } } t |  j	 |  \ } }	 | d k  rã t t d  | | f   n  |	 rt t d  | | f   n  t
 |  j	  \ } }
 | d k  rHt t d	  | | f   n  t |  j	 |
 |  t |
 | |  t |  j	  \ } } | d k  r«t t d
  | | f   n  t |  j	 | d  } | d k  rët t d  | | f   n  t |  j	 | d  } | d k  r+t t d  | | f   n  t |  j	 | |  } | d k  rkt t d  | | f   n  t  d k rÆ| d k rÆt |  j	 | |  } | d k  rÆt t d  | | f   qÆn  t |  j	 |
 |  } | d k  rt t d  | | f   n  t |  j	 | |
  } | d k  rFt t d  | | f   n  t |  t |  t |
  d  S(   Ni   R	   R	  s   Type is requireds)   Type %s is invalid, must be a ibpkey typei    s*   Could not check if ibpkey %s/%s is defineds   ibpkey %s/%s already defineds!   Could not create ibpkey for %s/%ss"   Could not create context for %s/%sR@  s.   Could not set user in ibpkey context for %s/%sRA  s.   Could not set role in ibpkey context for %s/%ss.   Could not set type in ibpkey context for %s/%ss4   Could not set mls fields in ibpkey context for %s/%ss&   Could not set ibpkey context for %s/%ss   Could not add ibpkey %s/%s(   Rt   R[   Rj   R   R·   RB  R.  t   _ibpkeyRecords__genkeyt   semanage_ibpkey_existsR`   t   semanage_ibpkey_createt!   semanage_ibpkey_set_subnet_prefixt   semanage_ibpkey_set_rangeRI  RJ  RK  RL  RM  t   semanage_ibpkey_set_cont   semanage_ibpkey_modify_localRP  t   semanage_ibpkey_key_freet   semanage_ibpkey_free(   R!   Rp  Rq  R0   RT  RÝ   R=  R<  RW   R   R   RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRß   Y  sX    	"

c         C   s.   |  j    |  j | | | |  |  j   d  S(   N(   Rv   t   _ibpkeyRecords__addR>   (   R!   Rp  Rq  R0   RT  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR      s    
c         C   s  | d k rN | d k rN t  d k r9 t t d    qN t t d    n  | r t j |  |  j k r t t d  |   n  |  j | |  \ } } } } t |  j |  \ } }	 | d k  ræ t t d  | | f   n  |	 st t d  | | f   n  t	 |  j |  \ } }
 | d k  rNt t d	  | | f   n  t
 |
  } t  d k r| d k rt |  j | t |   n  | d k r°t |  j | |  n  t |  j | |
  } | d k  rðt t d
  | | f   n  t |  t |
  d  S(   NR	   i   s   Requires setype or seranges   Requires setypes)   Type %s is invalid, must be a ibpkey typei    s*   Could not check if ibpkey %s/%s is defineds   ibpkey %s/%s is not defineds   Could not query ibpkey %s/%ss   Could not modify ibpkey %s/%s(   Rt   Rj   R   R·   RB  R.  Rs  Rt  R`   t   semanage_ibpkey_queryt   semanage_ibpkey_get_conRM  R[   RL  Ry  Rz  R{  (   R!   Rp  Rq  R0   RÁ   RÝ   R=  R<  RW   R   R   RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRå     s2    
c         C   s.   |  j    |  j | | | |  |  j   d  S(   N(   Rv   t   _ibpkeyRecords__modifyR>   (   R!   Rp  Rq  R0   RÁ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRš   Ÿ  s    
c   	      C   s#  t  |  j  \ } } | d k  r6 t t d    n  |  j   xÒ | D]Ê } t |  j |  \ } } t |  } t |  } d | | f } |  j | |  \ } } } } | d k  rÐ t t d  |   n  t	 |  j |  } | d k  rt t d  |   n  t
 |  qG W|  j   d  S(   Ni    s   Could not list the ibpkeyss   %s-%ss   Could not create a key for %ss   Could not delete the ibpkey %s(   t   semanage_ibpkey_list_localR`   Rj   R   Rv   t!   semanage_ibpkey_get_subnet_prefixt   semanage_ibpkey_get_lowt   semanage_ibpkey_get_highRs  t   semanage_ibpkey_del_localRz  R>   (	   R!   RW   R`  t   ibpkeyRq  R=  R<  t   pkey_strRÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   Ã  s"    
c         C   s9  |  j  | |  \ } } } } t |  j |  \ } } | d k  ra t t d  | | f   n  | s t t d  | | f   n  t |  j |  \ } } | d k  rÉ t t d  | | f   n  | sî t t d  | | f   n  t |  j |  } | d k  r+t t d  | | f   n  t |  d  S(   Ni    s*   Could not check if ibpkey %s/%s is defineds   ibpkey %s/%s is not defineds4   ibpkey %s/%s is defined in policy, cannot be deleteds   Could not delete ibpkey %s/%s(   Rs  Rt  R`   Rj   R   t   semanage_ibpkey_exists_localR  Rz  (   R!   Rp  Rq  RÝ   R=  R<  RW   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRé   Ú  s    c         C   s(   |  j    |  j | |  |  j   d  S(   N(   Rv   t   _ibpkeyRecords__deleteR>   (   R!   Rp  Rq  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª   î  s    
i    c         C   s÷   i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  x |  j D] } t |  } t |  } | d k r qj n  t |  } t	 |  j |  \ } } t
 |  }	 t |  }
 | | f | |	 |
 | f <qj W| S(   Ni    s   Could not list ibpkeyst   reserved_ibpkey_t(   R  R`   R`  t   semanage_ibpkey_listRj   R   R~  Re  Rf  R  R  R  (   R!   R   Rø   RW   R  RU  Rg  Rh  Rq  R=  R<  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ó  s"    c   
      C   s6  i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  xÏ |  j D]Ä } t |  } t |  } t |  j |  \ } } t	 |  } t
 |  }	 | | f | j   k rã g  | | | f <n  | |	 k r| | | f j d |  qj | | | f j d | |	 f  qj W| S(   Ni    s   Could not list ibpkeyss   0x%xs	   0x%x-0x%x(   R  R`   R`  R  Rj   R   R~  Re  R  R  R  Rþ   R(   (
   R!   R   Rø   RW   R  RU  Rg  Rq  R=  R<  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRi    s$    %c         C   sÞ   g  } |  j  t  } | j   } | j   x¬ | D]€ } | d | d k rV | d n d | d | d f } | | d r° | j d | | d | | d | d | f  q2 | j d | | d | d | f  q2 W| S(   Ni    i   s   %s-%ss   -a -t %s -r '%s' -x %s %si   s   -a -t %s -x %s %s(   R   Re   Rþ   R   R(   (   R!   R   Rø   Rþ   RÝ   R8  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy     s    
64*i   c         C   sÉ   |  j  |  } | j   } t |  d k r1 d  S| j   | rh d t d  t d  t d  f GHn  xZ | D]R } d | } | d | | d 7} x$ | | d D] } | d	 | 7} q€ W| GHqo Wd  S(
   Ni    s   %-30s %-18s %s
s   SELinux IB Pkey Typet   Subnet_Prefixs   Pkey Numbers   %-30s %-18s s   %si   s   , %s(   Ri  Rþ   RS   R   R   (   R!   R   R   Rø   Rþ   R   RÚ   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ,  s    
'
(   R?   R@   R.  R"   Rs  R|  R    R  Rš   Ru   R  Rª   R   Ri  Ry   R   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRk  <  s   		<		$					t   ibendportRecordsc           B   s   e  Z g  Z d  d  Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
 d  Z d
 d  Z d   Z d d
 d  Z RS(   R	   c         C   sR   t  j |  |  y4 t d   t j t j d  d d D  |  _ Wn n Xd  S(   Nc         s   s   |  ] } t  |  Vq d  S(   N(   R,   (   Rl  R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pys	   <genexpr>B  s    t   ibendport_typei    R,  (   R\   R"   Rn  R·   Rž   R-  R.  (   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   ?  s
    4c         C   s­   | d k r! t  t d    n  t |  } | d k sE | d k  rZ t  t d    n  t |  j | |  \ } } | d k  r  t  t d  | | f   n  | | | f S(   NR	   s   IB device name is requirediÿ   i   s   Invalid Port Numberi    s*   Could not create a key for ibendport %s/%s(   Rj   R   R6  t   semanage_ibendport_key_createR`   (   R!   t	   ibendportt
   ibdev_nameR8  RW   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR>  F  s    c         C   sb  t  d k r0 | d k r! d } q0 t |  } n  | d k rQ t t d    n  t j |  |  j k r t t d  |   n  |  j | |  \ } } } t |  j	 |  \ } } | d k  rà t t d  | | f   n  | rt t d  | | f   n  t
 |  j	  \ } }	 | d k  rEt t d	  | | f   n  t |  j	 |	 |  t |	 |  t |  j	  \ } }
 | d k  r¥t t d
  | | f   n  t |  j	 |
 d  } | d k  råt t d  | | f   n  t |  j	 |
 d  } | d k  r%t t d  | | f   n  t |  j	 |
 |  } | d k  ret t d  | | f   n  t  d k rÀ| d k rÀt |  j	 |
 |  } | d k  rÀt t d  | | f   qÀn  t |  j	 |	 |
  } | d k  r t t d  | | f   n  t |  j	 | |	  } | d k  r@t t d  | | f   n  t |
  t |  t |	  d  S(   Ni   R	   R	  s   Type is requireds-   Type %s is invalid, must be an ibendport typei    s-   Could not check if ibendport %s/%s is defineds   ibendport %s/%s already defineds$   Could not create ibendport for %s/%ss"   Could not create context for %s/%sR@  s1   Could not set user in ibendport context for %s/%sRA  s1   Could not set role in ibendport context for %s/%ss1   Could not set type in ibendport context for %s/%ss7   Could not set mls fields in ibendport context for %s/%ss)   Could not set ibendport context for %s/%ss   Could not add ibendport %s/%s(   Rt   R[   Rj   R   R·   RB  R.  t   _ibendportRecords__genkeyt   semanage_ibendport_existsR`   t   semanage_ibendport_createt!   semanage_ibendport_set_ibdev_namet   semanage_ibendport_set_portRI  RJ  RK  RL  RM  t   semanage_ibendport_set_cont   semanage_ibendport_modify_localRP  t   semanage_ibendport_key_freet   semanage_ibendport_free(   R!   R  R  R0   RT  RÝ   R8  RW   R   R   RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRß   T  sX    	"

c         C   s.   |  j    |  j | | | |  |  j   d  S(   N(   Rv   t   _ibendportRecords__addR>   (   R!   R  R  R0   RT  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR      s    
c         C   s  | d k rN | d k rN t  d k r9 t t d    qN t t d    n  | r t j |  |  j k r t t d  |   n  |  j | |  \ } } } t |  j |  \ } } | d k  rã t t d  | | f   n  | st t d  | | f   n  t	 |  j |  \ } }	 | d k  rKt t d	  | | f   n  t
 |	  }
 t  d k r| d k rt |  j |
 t |   n  | d k r­t |  j |
 |  n  t |  j | |	  } | d k  rít t d
  | | f   n  t |  t |	  d  S(   NR	   i   s   Requires setype or seranges   Requires setypes-   Type %s is invalid, must be an ibendport typei    s-   Could not check if ibendport %s/%s is defineds   ibendport %s/%s is not defineds   Could not query ibendport %s/%ss    Could not modify ibendport %s/%s(   Rt   Rj   R   R·   RB  R.  R  R  R`   t   semanage_ibendport_queryt   semanage_ibendport_get_conRM  R[   RL  R  R  R  (   R!   R  R  R0   RÁ   RÝ   R8  RW   R   R   RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRå     s2    
c         C   s.   |  j    |  j | | | |  |  j   d  S(   N(   Rv   t   _ibendportRecords__modifyR>   (   R!   R  R  R0   RÁ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRš   ž  s    
c         C   s  t  |  j  \ } } | d k  r6 t t d    n  |  j   xÅ | D]œ } t |  j |  \ } } t |  } |  j t |  |  \ } } } | d k  rœ t t d  t	 | f   n  t
 |  j |  } | d k  rú t t d  | | f   n  t |  qG W|  j   d  S(   Ni    s   Could not list the ibendportss    Could not create a key for %s/%ds$   Could not delete the ibendport %s/%d(   t   semanage_ibendport_list_localR`   Rj   R   Rv   t!   semanage_ibendport_get_ibdev_namet   semanage_ibendport_get_portR  R,   t	   ibdevnamet   semanage_ibendport_del_localR  R>   (   R!   RW   R`  R  R  R8  RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   œ  s    
!c         C   s6  |  j  | |  \ } } } t |  j |  \ } } | d k  r^ t t d  | | f   n  | s t t d  | | f   n  t |  j |  \ } } | d k  rÆ t t d  | | f   n  | së t t d  | | f   n  t |  j |  } | d k  r(t t d  | | f   n  t |  d  S(   Ni    s-   Could not check if ibendport %s/%s is defineds   ibendport %s/%s is not defineds7   ibendport %s/%s is defined in policy, cannot be deleteds    Could not delete ibendport %s/%s(   R  R  R`   Rj   R   t   semanage_ibendport_exists_localR¢  R  (   R!   R  R  RÝ   R8  RW   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRé   Ò  s    c         C   s(   |  j    |  j | |  |  j   d  S(   N(   Rv   t   _ibendportRecords__deleteR>   (   R!   R  R  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª   æ  s    
i    c   
      C   sè   i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  x |  j D]v } t |  } t |  } | d k r qj n  t |  } t	 |  j |  \ } } t
 |  }	 | | f | |	 | f <qj W| S(   Ni    s   Could not list ibendportst   reserved_ibendport_t(   R  R`   R`  t   semanage_ibendport_listRj   R   R  Re  Rf  R  R   (
   R!   R   Rø   RW   R  RU  Rg  Rh  R  R8  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ë  s     c   	      C   sú   i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  x |  j D] } t |  } t |  } t |  j |  \ } } t	 |  } | | f | j
   k r× g  | | | f <n  | | | f j d |  qj W| S(   Ni    s   Could not list ibendportss   0x%x(   R  R`   R`  RŠ  Rj   R   R  Re  R  R   Rþ   R(   (	   R!   R   Rø   RW   R  RU  Rg  R  R8  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRi  ÿ  s    c         C   s°   g  } |  j  t  } | j   } | j   x~ | D]v } | | d r~ | j d | | d | | d | d | d f  q2 | j d | | d | d | d f  q2 W| S(   Ni   s   -a -t %s -r '%s' -z %s %si    s   -a -t %s -z %s %s(   R   Re   Rþ   R   R(   (   R!   R   Rø   Rþ   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy     s    
8.i   c         C   sÉ   |  j  |  } | j   } t |  d k r1 d  S| j   | rh d t d  t d  t d  f GHn  xZ | D]R } d | } | d | | d 7} x$ | | d D] } | d	 | 7} q€ W| GHqo Wd  S(
   Ni    s   %-30s %-18s %s
s   SELinux IB End Port Types   IB Device Names   Port Numbers   %-30s %-18s s   %si   s   , %s(   Ri  Rþ   RS   R   R   (   R!   R   R   Rø   Rþ   R   RÚ   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR     s    
'
(   R?   R@   R.  R"   R  R  R    R  Rš   Ru   R€  Rª   R   Ri  Ry   R   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR  <  s   		;		$					t   nodeRecordsc           B   s   e  Z g  Z d  d  Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z e d
  Z d   Z e e d  Z RS(   R	   c         C   s[   t  j |  |  d d g |  _ y$ t j t j d  d d |  _ Wn t k
 rV n Xd  S(   Nt   ipv4t   ipv6t	   node_typei    R,  (   R\   R"   t   protocolR·   Rž   R-  R.  R/  (   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   1  s    $c         C   sÿ   | } | } d } | d k r3 t  t d    n  t |  d k sU | d d k rÀ t | |  } | j d  } t | j    } | d k r­ | j   d k r­ d } n  d | j   } n  y |  j j	 |  } Wn t  t d	    n X| | | f S(
   NR	   s   Node Address is requiredi    Rî   s   0.0.0.0i   s   ::s   ipv%ds   Unknown or missing protocol(
   Rj   R   RS   R   t	   strNormalR,   t   netmaskt   versionR«  t   index(   R!   t   addrt   maskR«  t   newaddrt   newmaskt   newprotocolR   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   validate9  s"    "	c      	   C   sà  |  j  | | |  \ } } } t d k rH | r? t |  } qH d } n  | d k ri t t d    n  t j |  |  j k r t t d  |   n  t |  j	 | | |  \ } } | d k  rÝ t t d  |   n  | d k  rt t d  |   n  t
 |  j	 |  \ } } | rJt |  |  j | | |  j | | |  St |  j	  \ } }	 | d k  rt t d	  |   n  t |	 |  t |  j	 |	 | |  } t |  j	  \ } }
 | d k  rãt t d
  |   n  t |  j	 |	 | |  } | d k  r t t d  |   n  t |  j	 |
 d  } | d k  rZt t d  |   n  t |  j	 |
 d  } | d k  rt t d  |   n  t |  j	 |
 |  } | d k  rÎt t d  |   n  | rt |  j	 |
 |  } | d k  rt t d  |   qn  t |  j	 |	 |
  } | d k  rKt t d  |   n  t |  j	 | |	  } | d k  rt t d  |   n  t |
  t |  t |	  |  j j d | | t j |  j |  d d | | f  d  S(   Ni   R	  R	   s   SELinux node type is requireds'   Type %s is invalid, must be a node typei    s   Could not create key for %ss%   Could not check if addr %s is defineds   Could not create addr for %ss   Could not create context for %ss   Could not set mask for %sR@  s)   Could not set user in addr context for %sRA  s)   Could not set role in addr context for %ss)   Could not set type in addr context for %ss/   Could not set mls fields in addr context for %ss!   Could not set addr context for %ss   Could not add addr %ssC   resrc=node op=add laddr=%s netmask=%s proto=%s tcontext=%s:%s:%s:%s(   Rµ  Rt   R[   Rj   R   R·   RB  R.  t   semanage_node_key_createR`   t   semanage_node_existst   semanage_node_key_freet   _nodeRecords__modifyR«  t   semanage_node_createt   semanage_node_set_protot   semanage_node_set_addrRI  t   semanage_node_set_maskRJ  RK  RL  RM  t   semanage_node_set_cont   semanage_node_modify_localRP  t   semanage_node_freeRb   R:   R   RS  (   R!   R°  R±  R9  R0   Rg  RW   RÝ   R   t   nodeRU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRß   R  sh    	
 


c         C   s1   |  j    |  j | | | | |  |  j   d  S(   N(   Rv   t   _nodeRecords__addR>   (   R!   R°  R±  R9  R0   Rg  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR      s    
c         C   s4  |  j  | | |  \ } } } | rF | d k rF t t d    n  | r} t j |  |  j k r} t t d  |   n  t |  j | | |  \ } } | d k  rÀ t t d  |   n  t |  j |  \ } } | d k  rý t t d  |   n  | st t d  |   n  t	 |  j |  \ } }	 | d k  rYt t d  |   n  t
 |	  }
 | rt |  j |
 t |   n  | d k r©t |  j |
 |  n  t |  j | |	  } | d k  rãt t d	  |   n  t |  t |	  |  j j d
 | | t j |  j |  d d | | f  d  S(   NR	   s   Requires setype or seranges'   Type %s is invalid, must be a node typei    s   Could not create key for %ss%   Could not check if addr %s is defineds   Addr %s is not defineds   Could not query addr %ss   Could not modify addr %ssF   resrc=node op=modify laddr=%s netmask=%s proto=%s tcontext=%s:%s:%s:%sR@  RA  (   Rµ  Rj   R   R·   RB  R.  R¶  R`   R·  t   semanage_node_queryt   semanage_node_get_conRM  R[   RL  R¿  Rž  RÀ  Rb   R:   R   RS  R«  (   R!   R°  R±  R9  R0   RÁ   RW   RÝ   R   RÁ  RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRå     s6    

c         C   s1   |  j    |  j | | | | |  |  j   d  S(   N(   Rv   R¹  R>   (   R!   R°  R±  R9  R0   RÁ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRš   Ä  s    
c         C   s  |  j  | | |  \ } } } t |  j | | |  \ } } | d k  ra t t d  |   n  t |  j |  \ } } | d k  r t t d  |   n  | sœ t t d  |   n  t |  j |  \ } } | d k  rú t t d  |   n  | st t d  |   n  t |  j |  } | d k  rPt t d  |   n  t |  |  j	 j
 d | | t j |  j |  f  d  S(   Ni    s   Could not create key for %ss%   Could not check if addr %s is defineds   Addr %s is not defineds/   Addr %s is defined in policy, cannot be deleteds   Could not delete addr %ss1   resrc=node op=delete laddr=%s netmask=%s proto=%s(   Rµ  R¶  R`   Rj   R   R·  t   semanage_node_exists_localt   semanage_node_del_localRž  Rb   R:   R   RS  R«  (   R!   R°  R±  R9  RW   RÝ   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRé   É  s&    
c         C   s+   |  j    |  j | | |  |  j   d  S(   N(   Rv   t   _nodeRecords__deleteR>   (   R!   R°  R±  R9  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª   å  s    
c         C   s   t  |  j  \ } } | d k  r6 t t d    n  |  j   xN | D]F } |  j t |  j |  d t |  j |  d |  j t	 |   qG W|  j
   d  S(   Ni    s!   Could not deleteall node mappingsi   (   t   semanage_node_list_localR`   Rj   R   Rv   RÇ  t   semanage_node_get_addrt   semanage_node_get_maskR«  t   semanage_node_get_protoR>   (   R!   RW   t   nlistRÁ  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   ê  s    
Dc   	      C   sú   i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  x |  j D] } t |  } t |  j |  } t |  j |  } |  j	 t
 |  } t |  t |  t |  t |  f | | d | d | f <qj W| S(   Ni    s   Could not list addrsi   (   RÈ  R`   t   ilistt   semanage_node_listRj   R   RÄ  RÉ  RÊ  R«  RË  t   semanage_context_get_usert   semanage_context_get_roleRe  Rf  (	   R!   R   Rø   RW   RÁ  RU  R°  R±  R9  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ô  s    Cc      	   C   sÄ   g  } |  j  t  } t | j    } | j   x | D] } | | d r | j d | d | d | | d | | d | d f  q8 | j d | d | d | | d | d f  q8 W| S(   Ni   s   -a -M %s -p %s -t %s -r '%s' %si   i   i    s   -a -M %s -p %s -t %s %s(   R   Re   R   Rþ   R   R(   (   R!   R   Rø   Rþ   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy     s    
?5c         C   s?  |  j  |  } t | j    } t |  d k r7 d  S| j   | rS d d GHn  t rë xß | D] } d } x" | D] } | d t |  } qs Wd	 | d | d
 | d | | d | | d
 | | d t | | d t  f GHq` WnP xM | D]E } d | d | d
 | d | | d | | d
 | | d f GHqò Wd  S(   Ni    s   %-18s %-18s %-5s %-5s
s
   IP Addresst   Netmaskt   Protocolt   ContextR	   s   	s   %-18s %-18s %-5s %s:%s:%s:%s i   i   i   s   %-18s %-18s %-5s %s:%s:%s (   s
   IP AddressRÑ  RÒ  RÓ  (	   R   R   Rþ   RS   R   Rt   R,   RY   R]   (   R!   R   R   Rø   Rþ   RÝ   t   valt   fields(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR     s    
Z(   R?   R@   R.  R"   Rµ  RÂ  R    R¹  Rš   RÇ  Rª   Ru   R]   R   Ry   Re   R   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR§  .  s   		G		&				
	t   interfaceRecordsc           B   sw   e  Z d  d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 e
 d	  Z d
   Z e e
 d  Z RS(   R	   c         C   s   t  j |  |  d  S(   N(   R\   R"   (   R!   Rc   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   '  s    c   	      C   sU  t  d k r* | r! t |  } q* d } n  | d k rK t t d    n  t |  j |  \ } } | d k  r t t d  |   n  t |  j |  \ } } | d k  rÅ t t d  |   n  | rè t |  |  j | | |  St	 |  j  \ } } | d k  r"t t d  |   n  t
 |  j | |  } t |  j  \ } } | d k  rqt t d	  |   n  t |  j | d
  } | d k  r«t t d  |   n  t |  j | d  } | d k  råt t d  |   n  t |  j | |  } | d k  rt t d  |   n  | rbt |  j | |  } | d k  rbt t d  |   qbn  t |  j | |  } | d k  rt t d  |   n  t |  j | |  } | d k  rÖt t d  |   n  t |  j | |  } | d k  rt t d  |   n  t |  t |  t |  |  j j d | d
 d | | f  d  S(   Ni   R	  R	   s   SELinux Type is requiredi    s   Could not create key for %ss*   Could not check if interface %s is defineds!   Could not create interface for %ss   Could not create context for %sR@  s.   Could not set user in interface context for %sRA  s.   Could not set role in interface context for %ss.   Could not set type in interface context for %ss4   Could not set mls fields in interface context for %ss&   Could not set interface context for %ss$   Could not set message context for %ss   Could not add interface %ss4   resrc=interface op=add netif=%s tcontext=%s:%s:%s:%s(   Rt   R[   Rj   R   t   semanage_iface_key_createR`   t   semanage_iface_existst   semanage_iface_key_freet   _interfaceRecords__modifyt   semanage_iface_createt   semanage_iface_set_nameRI  RJ  RK  RL  RM  t   semanage_iface_set_ifcont   semanage_iface_set_msgcont   semanage_iface_modify_localRP  t   semanage_iface_freeRb   R:   (	   R!   t	   interfaceR0   Rg  RW   RÝ   R   t   ifaceRU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRß   *  s`    	



c         C   s+   |  j    |  j | | |  |  j   d  S(   N(   Rv   t   _interfaceRecords__addR>   (   R!   Rá  R0   Rg  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR    k  s    
c   	      C   sÃ  | r( | d k r( t  t d    n  t |  j |  \ } } | d k  re t  t d  |   n  t |  j |  \ } } | d k  r¢ t  t d  |   n  | sÁ t  t d  |   n  t |  j |  \ } } | d k  rþ t  t d  |   n  t |  } | r,t |  j | t |   n  | d k rNt	 |  j | |  n  t
 |  j | |  } | d k  rt  t d  |   n  t |  t |  |  j j d	 | d
 d | | f  d  S(   NR	   s   Requires setype or serangei    s   Could not create key for %ss*   Could not check if interface %s is defineds   Interface %s is not defineds   Could not query interface %ss   Could not modify interface %ss7   resrc=interface op=modify netif=%s tcontext=%s:%s:%s:%sR@  RA  (   Rj   R   R×  R`   RØ  t   semanage_iface_queryt   semanage_iface_get_ifconRM  R[   RL  Rß  RÙ  Rà  Rb   R:   (	   R!   Rá  R0   RÁ   RW   RÝ   R   Râ  RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRå   p  s0    

c         C   s+   |  j    |  j | | |  |  j   d  S(   N(   Rv   RÚ  R>   (   R!   Rá  R0   RÁ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRš     s    
c         C   sN  t  |  j |  \ } } | d k  r= t t d  |   n  t |  j |  \ } } | d k  rz t t d  |   n  | s t t d  |   n  t |  j |  \ } } | d k  rÖ t t d  |   n  | sõ t t d  |   n  t |  j |  } | d k  r,t t d  |   n  t |  |  j j	 d |  d  S(   Ni    s   Could not create key for %ss*   Could not check if interface %s is defineds   Interface %s is not defineds4   Interface %s is defined in policy, cannot be deleteds   Could not delete interface %ss"   resrc=interface op=delete netif=%s(
   R×  R`   Rj   R   RØ  t   semanage_iface_exists_localt   semanage_iface_del_localRÙ  Rb   R:   (   R!   Rá  RW   RÝ   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRé     s$    
c         C   s%   |  j    |  j |  |  j   d  S(   N(   Rv   t   _interfaceRecords__deleteR>   (   R!   Rá  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª   °  s    
c         C   sr   t  |  j  \ } } | d k  r6 t t d    n  |  j   x! | D] } |  j t |   qG W|  j   d  S(   Ni    s(   Could not delete all interface  mappings(   t   semanage_iface_list_localR`   Rj   R   Rv   Rè  t   semanage_iface_get_nameR>   (   R!   RW   Rí   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   µ  s    
c         C   sž   i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  xQ |  j D]F } t |  } t |  t |  t	 |  t
 |  f | t |  <qj W| S(   Ni    s   Could not list interfaces(   Ré  R`   RÍ  t   semanage_iface_listRj   R   Rå  RÏ  RÐ  Re  Rf  Rê  (   R!   R   Rø   RW   Rá  RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ¿  s    8c         C   s    g  } |  j  t  } t | j    } | j   xh | D]` } | | d ry | j d | | d | | d | f  q8 | j d | | d | f  q8 W| S(   Ni   s   -a -t %s -r '%s' %si   s   -a -t %s %s(   R   Re   R   Rþ   R   R(   (   R!   R   Rø   Rþ   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy   Î  s    
-#c      	   C   s  |  j  |  } t | j    } t |  d k r7 d  S| j   | re d t d  t d  f GHn  t rÀ x | D]G } d | | | d | | d | | d t | | d t  f GHqr Wn> x; | D]3 } d	 | | | d | | d | | d f GHqÇ Wd  S(
   Ni    s	   %-30s %s
s   SELinux InterfaceRÓ  s   %-30s %s:%s:%s:%s i   i   i   s   %-30s %s:%s:%s (	   R   R   Rþ   RS   R   R   Rt   RY   R]   (   R!   R   R   Rø   Rþ   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   Ú  s    
H(   R?   R@   R"   Rã  R    RÚ  Rš   Rè  Rª   Ru   R]   R   Ry   Re   R   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRÖ  &  s   	A		"				
	t   fcontextRecordsc           B   s¿   e  Z g  Z d  d  Z d   Z d   Z d   Z d d  Z d   Z d  d d d  Z
 d  d d d	  Z d
   Z d   Z d   Z d   Z d   Z e d  Z d   Z e e d  Z RS(   R	   c         C   sÙ  t  j |  |  yJ t j t j d  d d |  _ |  j t j t j d  d d 7_ Wn t k
 rm n Xi  |  _ i  |  _ t	 |  _
 y t t j   d  } xl | j   D]^ } | j   } t |  d k rØ q® n  | j d  rí q® n  | j   \ } } | |  j | <q® W| j   Wn t k
 r.n Xy t t j   d  } xl | j   D]^ } | j   } t |  d k r~qTn  | j d  rqTn  | j   \ } } | |  j | <qTW| j   Wn t k
 rÔn Xd  S(   Nt	   file_typei    R,  t   device_nodeR  t   #(   R\   R"   R·   Rž   R-  R.  R/  t   equivt
   equiv_distR]   t	   equal_indRó   RQ   t   selinux_file_context_subs_patht	   readlinest   stripRS   Rµ   R¡   Rö   t   IOErrort#   selinux_file_context_subs_dist_path(   R!   Rc   Rû   R   t   targett
   substitute(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   í  sF     *			c         C   sÑ   |  j  rÀ t j   } d | } t | d  } x; t |  j j    D]$ } | j d | |  j | f  qD W| j   y$ t	 j
 | t	 j |  t j  Wn n Xt	 j | |  t |  _  n  t j |   d  S(   Ns   %s.tmpt   ws   %s %s
(   Rò  RQ   Ró  Ró   R   Rð  Rþ   t   writeRö   R   t   chmodt   statt   ST_MODEt   renameR]   R\   R>   (   R!   t	   subs_filet   tmpfileRû   Rø  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR>   	  s    	
"
$c      	   C   s  |  j    | d k r? | d d k r? t t d  |   n  | d k rt | d d k rt t t d  |   n  | t |  j j    k rš t t d  |   n  |  j |  xp |  j |  j f D]\ } xS | D]K } | j | d  rÕ t t d  i | d 6| d 6| | d	 6  qÕ qÕ WqÈ W|  j	 j
 d
 t j d | d  t j d | d  f  | |  j | <t |  _ |  j   d  S(   NRî   iÿÿÿÿs=   Target %s is not valid. Target is not allowed to end with '/'sE   Substitute %s is not valid. Substitute is not allowed to end with '/'s'   Equivalence class for %s already existssJ   File spec %(TARGET)s conflicts with equivalency rule '%(SOURCE)s %(DEST)s't   TARGETt   SOURCEt   DESTs!   resrc=fcontext op=add-equal %s %st   sglobi    t   tglob(   Rv   Rj   R   R   Rð  Rþ   Rµ  Rñ  Rµ   Rb   R:   R   t   audit_encode_nv_stringRe   Rò  R>   (   R!   Rø  Rù  t   fdictR   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt	   add_equal#	  s     
:8	c         C   s   |  j    | t |  j j    k r> t t d  |   n  | |  j | <t |  _ |  j j	 d t
 j d | d  t
 j d | d  f  |  j   d  S(   Ns(   Equivalence class for %s does not existss$   resrc=fcontext op=modify-equal %s %sR  i    R  (   Rv   R   Rð  Rþ   Rj   R   Re   Rò  Rb   R:   R   R  R>   (   R!   Rø  Rù  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   modify_equal:	  s    
	8R@  c         C   s  t  |  j  \ } } | d k  r: t t d  |   n  | d k rO d } n  t |  j | |  } | d k  r t t d  |   n  t |  j | d  } | d k  rÃ t t d  |   n  t d k rt |  j | d	  } | d k  rt t d
  |   qn  | S(   Ni    s   Could not create context for %sR	   R@  s)   Could not set user in file context for %sRA  s)   Could not set role in file context for %si   R	  s/   Could not set mls fields in file context for %s(   RI  R`   Rj   R   RJ  RK  Rt   RM  (   R!   Rø  R  RW   RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt	   createconC	  s     	c         C   s÷   | d k s! | j  d  d k r6 t t d    n  | j  d  d k r` t t d    n  x |  j |  j f D]| } xs | D]k } | j | d  r t j | | | |  } t t d	  i | d
 6| d 6| | d 6| d 6  q q Wqs Wd  S(   NR	   s   
i    s   Invalid file specificationRÄ   iÿÿÿÿs)   File specification can not include spacesRî   sj   File spec %(TARGET)s conflicts with equivalency rule '%(SOURCE)s %(DEST)s'; Try adding '%(DEST1)s' insteadR  R  R  t   DEST1(   t   findRj   R   Rð  Rñ  Rµ   RH   t   sub(   R!   Rø  R  R   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRµ  Y	  s    !c      	   C   s  |  j  |  | d k r" d } n  t d k rL t |  } | sL d } qL n  | d k rm t t d    n  | d k rª t j |  |  j k rª t t d  |   n  t |  j	 | t
 |  \ } } | d k  rî t t d	  |   n  t |  j	 |  \ } } | d k  r+t t d
  |   n  | sqt |  j	 |  \ } } | d k  rqt t d
  |   qqn  | rt |  |  j | | | | |  St |  j	  \ } }	 | d k  rÔt t d  |   n  t |  j	 |	 |  } | d k rÁ|  j | |  }
 t |  j	 |
 |  } | d k  rAt t d  |   n  | rt |  j	 |
 |  } | d k  rt t d  |   qn  t |  j	 |	 |
  } | d k  rÁt t d  |   qÁn  t |	 t
 |  t |  j	 | |	  } | d k  rt t d  |   n  | d k r%t |
  n  t |  t |	  | sHd } n  |  j j d t j d | d  t | | d | | f  d  S(   NR	   R@  i   R	  s   SELinux Type is requireds   <<none>>s1   Type %s is invalid, must be a file or device typei    s   Could not create key for %ss1   Could not check if file context for %s is defineds$   Could not create file context for %ss)   Could not set type in file context for %ss/   Could not set mls fields in file context for %ss!   Could not set file context for %ss!   Could not add file context for %ss6   resrc=fcontext op=add %s ftype=%s tcontext=%s:%s:%s:%sR  RA  (   Rµ  Rt   R[   Rj   R   R·   RB  R.  t   semanage_fcontext_key_createR`   t
   file_typest   semanage_fcontext_existst   semanage_fcontext_exists_localt   semanage_fcontext_key_freet   _fcontextRecords__modifyt   semanage_fcontext_createt   semanage_fcontext_set_exprR  RL  RM  t   semanage_fcontext_set_cont   semanage_fcontext_set_typet   semanage_fcontext_modify_localRP  t   semanage_fcontext_freeRb   R:   R   R  t   ftype_to_audit(   R!   Rø  RT  t   ftypeR0   R  RW   RÝ   R   t   fcontextRU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRß   e	  sf    	$


	c         C   s1   |  j    |  j | | | | |  |  j   d  S(   N(   Rv   t   _fcontextRecords__addR>   (   R!   Rø  RT  R  R0   R  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR    ¬	  s    
c         C   sa  | r3 | d k r3 | d k r3 t  t d    n  | d k rp t j |  |  j k rp t  t d  |   n  |  j |  t |  j | t |  \ } } | d k  rÁ t  t d  |   n  t	 |  j |  \ } } | d k  rþ t  t d  |   n  | s>t
 |  j |  \ } } | s>t  t d  |   q>n  y t |  j |  \ } }	 WnW t k
 r³y t |  j |  \ } }	 WqŽt k
 r¯t  t d	  |   qŽXn X| d k rt |	  }
 |
 d  k rê|  j |  }
 n  | rt |  j |
 t |   n  | d k r.t |  j |
 |  n  | d k rPt |  j |
 |  n  t |  j |	 |
  } | d k  rÇt  t d
  |   qÇn: t |  j |	 d   } | d k  rÇt  t d
  |   n  t |  j | |	  } | d k  rt  t d  |   n  t |  t |	  | s$d } n  |  j j d t j d | d  t | | d | | f  d  S(   NR	   s"   Requires setype, serange or seusers   <<none>>s1   Type %s is invalid, must be a file or device typei    s   Could not create a key for %ss1   Could not check if file context for %s is defineds"   File context for %s is not defineds#   Could not query file context for %ss!   Could not set file context for %ss$   Could not modify file context for %sR@  s9   resrc=fcontext op=modify %s ftype=%s tcontext=%s:%s:%s:%sR  RA  (   R	   s   <<none>>(   Rj   R   R·   RB  R.  Rµ  R  R`   R  R  R  t   semanage_fcontext_query_localR$  t   semanage_fcontext_queryt   semanage_fcontext_get_conRA   R  RM  R[   RJ  RL  R  R  R  R  Rb   R:   R   R  R  (   R!   Rø  RÁ   R  R0   R  RW   RÝ   R   R  RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRå   ±	  s\    $

	c         C   s1   |  j    |  j | | | | |  |  j   d  S(   N(   Rv   R  R>   (   R!   Rø  RÁ   R  R0   R  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRš   ï	  s    
c         C   sK  t  |  j  \ } } | d k  r6 t t d    n  |  j   xè | D]à } t |  } t |  } t |  } t |  j | t	 |  \ } } | d k  rµ t t d  |   n  t
 |  j |  } | d k  rì t t d  |   n  t |  |  j j d t j d | d  t t | f  qG Wi  |  _ t |  _ |  j   d  S(   Ni    s    Could not list the file contextss   Could not create a key for %ss$   Could not delete the file context %ss$   resrc=fcontext op=delete %s ftype=%sR  (   t   semanage_fcontext_list_localR`   Rj   R   Rv   t   semanage_fcontext_get_exprt   semanage_fcontext_get_typet   semanage_fcontext_get_type_strR  R  t   semanage_fcontext_del_localR  Rb   R:   R   R  R  t   file_type_str_to_optionRð  Re   Rò  R>   (   R!   RW   t   flistR  Rø  R  t	   ftype_strRÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   ô	  s&    

5		c         C   sÉ  | t  |  j j    k r[ |  j j |  t |  _ |  j j d t j	 d | d   d  St
 |  j | t |  \ } } | d k  r t t d  |   n  t |  j |  \ } } | d k  rÜ t t d  |   n  | sWt |  j |  \ } } | d k  rt t d  |   n  | r>t t d  |   qWt t d  |   n  t |  j |  } | d k  rt t d  |   n  t |  |  j j d	 t j	 d | d  t | f  d  S(
   Ns!   resrc=fcontext op=delete-equal %sR  i    s   Could not create a key for %ss1   Could not check if file context for %s is defineds;   File context for %s is defined in policy, cannot be deleteds"   File context for %s is not defineds$   Could not delete file context for %ss$   resrc=fcontext op=delete %s ftype=%s(   R   Rð  Rþ   t   popRe   Rò  Rb   R:   R   R  R  R`   R  Rj   R   R  R  R&  R  R  (   R!   Rø  R  RW   RÝ   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRé   
  s.    	#
c         C   s(   |  j    |  j | |  |  j   d  S(   N(   Rv   t   _fcontextRecords__deleteR>   (   R!   Rø  R  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª   /
  s    
c         C   s  | r! t  |  j  \ } |  _ nÃ t |  j  \ } |  _ | d k  rZ t t d    n  t |  j  \ } } | d k  r t t d    n  t  |  j  \ } } | d k  rÆ t t d    n  |  j | 7_ |  j | 7_ d d l m } |   } x |  j D] } t	 |  } t
 |  }	 t |	  }
 t |  } | rzt |  t |  t |  t |  f | | |
 f <q| | | |
 f <qW| S(   Ni    s   Could not list file contextss1   Could not list file contexts for home directoriess"   Could not list local file contextsiÿÿÿÿ(   t   OrderedDict(   R"  R`   R(  t   semanage_fcontext_listRj   R   t   semanage_fcontext_list_homedirst   collectionsR,  R#  R$  R%  R!  RÏ  RÐ  Re  Rf  (   R!   R   RW   t
   fchomedirst   fclocalR,  Rø   R  t   exprR  R)  RU  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   4
  s0    	7c         C   s  g  } |  j  t  } t | j    } x | D] } | | r. | | d r | j d t | d | | d | | d | d f  q¹ | j d t | d | | d | d f  q. q. Wt |  j  rx> t |  j j    D]$ } | j d |  j | | f  qâ Wn  | S(   Ni   s   -a -f %s -t %s -r '%s' '%s'i   i   i    s   -a -f %s -t %s '%s's   -a -e %s %s(   R   Re   R   Rþ   R(   R'  RS   Rð  (   R!   R   t	   fcon_dictRþ   RÝ   Rø  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy   T
  s    
<5%c      
   C   sê  |  j  |  } t | j    } t |  d k r%| r` d t d  t d  t d  f GHn  xÂ | D]· } | | rt rÌ d | d | d | | d | | d | | d t | | d	 t  f GHqd
 | d | d | | d | | d | | d f GHqg d | d | d f GHqg Wn  t |  j  r| s| rNt d  GHn  x6 t |  j j    D] } d | |  j | f GHqdWqn  t |  j	  ræ| r­t d  GHn  x6 t |  j	 j    D] } d | |  j	 | f GHqÃWn  d  S(   Ni    s   %-50s %-18s %s
s   SELinux fcontextRT  RÓ  s   %-50s %-18s %s:%s:%s:%s i   i   i   s   %-50s %-18s %s:%s:%s s   %-50s %-18s <<None>>s,   
SELinux Distribution fcontext Equivalence 
s   %s = %ss%   
SELinux Local fcontext Equivalence 
(
   R   R   Rþ   RS   R   Rt   RY   R]   Rñ  Rð  (   R!   R   R   R3  Rþ   RÝ   Rø  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   d
  s,    '
O; N(   R?   R@   R.  R"   R>   R	  R
  R  Rµ  RA   R  R    R  Rš   Ru   R+  Rª   R]   R   Ry   Re   R   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRì  ê  s"   &					G	>			!	 	t   booleanRecordsc           B   s   e  Z d  d  Z d   Z d e d  Z d   Z d   Z d   Z	 e d  Z
 d   Z d	   Z d
   Z e e e d  Z RS(   R	   c         C   sâ   t  j |  |  i  |  _ d |  j d <d |  j d <d |  j d <d |  j d <d |  j d <d |  j d <y+ t j   \ } |  _ t j   \ } } Wn g  |  _ d  } n X|  j d  k sÉ |  j | k rÕ t	 |  _
 n	 t |  _
 d  S(	   Ni   t   TRUEi    t   FALSEt   ONt   OFFt   1t   0(   R\   R"   t   dictRQ   t   security_get_boolean_namest   current_booleansRa   RA   Rc   Re   t   modify_localR]   (   R!   Rc   RW   t   ptype(    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR"   
  s"    		
c         C   sì  t  j |  } t |  j |  \ } } | d k  rL t t d  |   n  t |  j |  \ } } | d k  r t t d  |   n  | sš t t d  |   n  t |  j |  \ } } | d k  rå t t d  |   n  | j   |  j	 k rt
 | |  j	 | j    n. t t d  d j t |  j	 j       |  j r| |  j k rt |  j | |  } | d k  rt t d  |   qn  t |  j | |  } | d k  rÔt t d	  |   n  t |  t |  d  S(
   Ni    s   Could not create a key for %ss(   Could not check if boolean %s is defineds   Boolean %s is not defineds   Could not query file context %ss0   You must specify one of the following values: %ss   , s(   Could not set active value of boolean %ss   Could not modify boolean %s(   RQ   t   selinux_boolean_subt   semanage_bool_key_createR`   Rj   R   t   semanage_bool_existst   semanage_bool_queryt   upperR;  t   semanage_bool_set_valueRÅ   R   Rþ   R>  R=  t   semanage_bool_set_activet   semanage_bool_modify_localt   semanage_bool_key_freet   semanage_bool_free(   R!   R.   t   valueRW   RÝ   R   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   __mod
  s0    .
c         C   sø   |  j    | rÚ t |  } x® | j   j d  D] } | j   } t |  d k r\ q2 n  y | j d  \ } } Wn5 t k
 r¬ t t d i | d 6| d 6   n X|  j | j   | j    q2 W| j	   n |  j | |  |  j
   d  S(   Ns   
i    t   =s)   Bad format %(BOOLNAME)s: Record %(VALUE)st   BOOLNAMEt   VALUE(   Rv   Ró   Rô   R¡   Rõ  RS   Rj   R   t   _booleanRecords__modRö   R>   (   R!   R.   RJ  t   use_fileRû   R   t   boolnameRÔ  (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRš   ¶
  s    
( c         C   sI  t  j |  } t |  j |  \ } } | d k  rL t t d  |   n  t |  j |  \ } } | d k  r t t d  |   n  | sš t t d  |   n  t |  j |  \ } } | d k  rå t t d  |   n  | st t d  |   n  t |  j |  } | d k  r;t t d  |   n  t	 |  d  S(   Ni    s   Could not create a key for %ss(   Could not check if boolean %s is defineds   Boolean %s is not defineds2   Boolean %s is defined in policy, cannot be deleteds   Could not delete boolean %s(
   RQ   R@  RA  R`   Rj   R   RB  t   semanage_bool_exists_localt   semanage_bool_del_localRH  (   R!   R.   RW   RÝ   R   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRé   Ê
  s$    c         C   s%   |  j    |  j |  |  j   d  S(   N(   Rv   t   _booleanRecords__deleteR>   (   R!   R.   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRª   â
  s    
c         C   s~   t  |  j  \ } |  _ | d k  r9 t t d    n  |  j   x* |  j D] } t |  } |  j |  qM W|  j   d  S(   Ni    s   Could not list booleans(	   t   semanage_bool_list_localR`   t   blistRj   R   Rv   t   semanage_bool_get_nameRT  R>   (   R!   RW   t   booleanR.   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRu   ç
  s    
c         C   s  i  } | r' t  |  j  \ } |  _ n t |  j  \ } |  _ | d k  r` t t d    n  x© |  j D] } g  } t |  } | j t |   |  j	 rÜ | |  j
 k rÜ | j t j |   | j t j |   n" | j | d  | j | d  | | | <qj W| S(   Ni    s   Could not list booleans(   RU  R`   RV  t   semanage_bool_listRj   R   RW  R(   t   semanage_bool_get_valueR>  R=  RQ   t   security_get_boolean_pendingt   security_get_boolean_active(   R!   R   Rø   RW   RX  RJ  R.   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR   ô
  s"    c         C   s   t  j |  } t |  S(   N(   RQ   R@  R   (   R!   R.   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   get_desc  s    c         C   s   t  j |  } t |  S(   N(   RQ   R@  R   (   R!   R.   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   get_category  s    c         C   sr   g  } |  j  t  } t | j    } | j   x: | D]2 } | | r8 | j d | | d | f  q8 q8 W| S(   Ns	   -m -%s %si   (   R   Re   R   Rþ   R   R(   (   R!   R   Rø   Rþ   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyRy     s    

&c         C   s=  t  d  t  d  f } | rx |  j |  } t | j    } x2 | D]* } | | rF d | | | d f GHqF qF Wd  S|  j |  } t | j    } t |  d k r¯ d  S| rå d t  d  t  d  t  d	  t  d
  f GHn  xQ | D]I } | | rì d | | | | d | | | d |  j |  f GHqì qì Wd  S(   NR­   R¬   s   %s=%si   i    s   %-30s %s  %s %s
s   SELinux booleant   Statet   Defaultt   Descriptions   %-30s (%-5s,%5s)  %s(   R   R   R   Rþ   RS   R]  (   R!   R   R   RP  t   on_offRø   Rþ   RÝ   (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR     s"    
0
N(   R?   R@   R"   RO  RA   R]   Rš   RT  Rª   Ru   R   R]  R^  Ry   Re   R   (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyR4  
  s   							
(A   RÒ   RÐ   t   stringRQ   t   tempfileR   RH   R*   Rý  t   shutilR   R8   t   PROGNAMER·   R   R   R   t   IPyR   t   gettextt   bindtextdomaint
   textdomaint   installRe   t	   TypeErrorRö  t   builtinsR,   t   __dict__Rt   RC   R  t   SEMANAGE_FCONTEXT_ALLt   SEMANAGE_FCONTEXT_REGt   SEMANAGE_FCONTEXT_DIRt   SEMANAGE_FCONTEXT_CHARt   SEMANAGE_FCONTEXT_BLOCKt   SEMANAGE_FCONTEXT_SOCKt   SEMANAGE_FCONTEXT_LINKt   SEMANAGE_FCONTEXT_PIPER'  R  R   t   audit_closeR   R   R$  R¿   RE   RP   RY   R[   R\   R}   R«   R±   RÆ   RÊ   R*  Rk  R  R§  RÖ  Rì  R4  (    (    (    s7   /usr/lib64/python2.7/site-packages/seobject/__init__.pyt   <module>   sÊ   





























""	^{Hÿ ÿ ÿ ÿ òøÄÿ 