Viewing File: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyo
c`c @ s d g Z d d l Z d d l m Z d d l m Z d d l m Z m Z m
Z
d d l m Z d d l
m Z d d l m Z m Z d d l Z i d g d
6d d d
g d 6d d
d g d 6Z i Z i Z i Z x e j D] Z g e e <e e e <xl e e D]` Z e e j d e e e j d e e f e e j d e e e j d e q
Wq Wd e f d YZ d S( t ebtablesiN( t runProg( t log( t tempFilet readfilet splitArgs( t COMMANDS( t ipXtables( t
FirewallErrort INVALID_IPVt BROUTINGt broutet
PREROUTINGt POSTROUTINGt OUTPUTt natt INPUTt FORWARDt filters -N %s_directs -I %s 1 -j %s_directs -I %s_direct 1 -j RETURNs %s_directc B s e Z d Z d 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 d
Z d Z d Z d d Z d Z d Z d Z d Z d d Z d Z RS( t ebR c C sY t | j | _ t d | j | _ | j | _ | j | _ | j g | _ d S( Ns
%s-restore(
R t ipvt _commandt _restore_commandt _detect_restore_noflush_optiont restore_noflush_optiont _detect_concurrent_optiont concurrent_optiont fill_existst available_tables( t self( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt __init__9 s
c C s4 t j j | j | _ t j j | j | _ d S( N( t ost patht existsR t command_existsR t restore_command_exists( R ( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyR A s c C s; d } t | j d d g } | d d k r7 d } n | S( Nt s --concurrents -Li ( R R ( R R t ret( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyR E s
c C s3 g } y | j | d Wn t k
r. t SXt S( Nt off( t set_rulest
ValueErrort Falset True( R t rules( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyR O s
c C s g } | j r1 | j | k r1 | j | j n | g | D] } d | ^ q; 7} t j d | j | j d j | t | j | \ } } | d k r t d | j d j | | f n | S( Ns %ss %s: %s %st i s '%s %s' failed: %s( R t appendR t debug2t __class__R t joinR R( ( R t argst _argst itemt statusR% ( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt __runY s !%c C s@ x9 d d d g D]( } | | k r t t d | q q Wd S( Ns
%%REJECT%%s %%ICMP%%s %%LOGTYPE%%s '%s' invalid for ebtables( R R ( R t rulet str( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt _rule_validatef s c C s | t k o | t | k S( N( t BUILT_IN_CHAINS( R R t tablet chain( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt is_chain_builtinl s c C sg g } | rJ | j d | d | g | j d | d | d d d g n | j d | d | g | S( Ns -ts -Ns -It 1s -jt RETURNs -X( R- ( R t addR: R; R+ ( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt build_chain_rulesp s %c C sL d | g } | r. | d | t | g 7} n | d | g 7} | | 7} | S( Ns -ts -Is -D( R7 ( R R? R: R; t indexR1 R6 ( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt
build_rule{ s
c C s
t j | S( N( R t common_reverse_rule( R R1 ( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt reverse_rule s c C s t j | d S( N( R t common_check_passthrough( R R1 ( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt check_passthrough s c C s
t j | S( N( R t common_reverse_passthrough( R R1 ( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt reverse_passthrough s c C s t } d } i } x+| D]#} | } | j | xp d d g D]b } y | j | } Wn t k
ro qC Xt | | d k rC | j | | j | } qC qC Wxz t t | D]f } x] t j D]R }
|
| | k r | | j d o| | j
d r d | | | | <q q Wq W| j | g j | q WxN | D]F } | j
d | x, | | D] } | j
d j | d qlWqJW| j t j | j } t j d
| j | j d | j | j f g } | j d t | j | d
| j \ }
} t j d k rt | j } | d k rd } xc | D]X } t j d | | f d d d d | j
d st j d d d n | d 7} qJWqn t j | j |
d k rt d | j d j | | f n | S( NR s -ts --tablei t "s "%s"s *%s
R, s
s %s: %s %ss %s: %ds --noflusht stdini s %8d: %st nofmtt nli R$ s '%s %s' failed: %s( R R8 RA R( t lent popt ranget stringt
whitespacet
startswitht endswitht
setdefaultR- t writeR0 t closeR t statt nameR R. R/ R t st_sizeR t getDebugLogLevelR t Nonet debug3t unlink( R R+ t
log_deniedt temp_fileR: t table_rulest _ruleR6 t optt it cRW R1 R4 R% t linest line( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyR' s\
#
"
#c C s | j | | j | S( N( R8 t _ebtables__run( R R6 R^ ( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt set_rule s
c C s g } | r | g n t j } x | D] } | | j k rM | j | q( y7 | j d | d g | j j | | j | Wq( t k
r t j d | q( Xq( W| S( Ns -ts -Ls# ebtables table '%s' does not exist.( R9 t keysR R- Rg R( R t debug1( R R: R% t tables( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt get_available_tables s
c C s i S( N( ( R R: ( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt get_zone_table_chains s c C si g } x\ t j D]N } | | j k r1 q n x- d d d g D] } | j d | | g qA Wq W| S( Ns -Fs -Xs -Zs -t( R9 Ri Rl R- ( R R+ R: t flag( ( s: /usr/lib/python2.7/site-packages/firewall/core/ebtables.pyt build_flush_rules s c C sj g } x] t j D]O } | | j k r1 q n x. t | D]"