+
    4Ssi$                     r    ^ RI t ^ RIHtHt ^ RIHt ^ RIt^ RIHtH	t	 ^ RI
Ht R tR t ! R R	]]	4      tR# )
    N)PopenPIPE)which)
gp_pol_ext
gp_applier)logc                      \        R 4      pVeT   V.pVP                  \        V 4      4       \        V\        \        R7      pVP                  4       w  rEVP                  V3# R# )zfirewall-cmd)stdoutstderr)zfirewall-cmd not found)r   extendlistr   r   communicate
returncode)argsfw_cmdcmdp
stdoutdata_s   *     ;/usr/lib/python3/dist-packages/samba/gp/gp_firewalld_ext.pyfirewall_cmdr      sY    >"Fh

4:#d40
||Z''++    c                     \        V\        4      '       d   V : R V: 2R,           # V : RRP                  VP                  4        UUu. uF  w  r#V: R V: 2NK  	  upp4      : R2# u uppi )= )
isinstancestrjoinitems)namerule_segmentkvs   &&  r   rule_segment_parser%   $   s^    ,$$.#55HH<3E3E3GH3G41A&3GHIK 	KHs   	A)c                   J   a  ] tR t^+t o R tR tR tR tR tR t	R t
RtV tR	# )
gp_firewalld_extc                    R # )zSecurity/Firewalld )selfs   &r   __str__gp_firewalld_ext.__str__,   s    #r   c                   . p\        R RV,          4      ^ ,          pV^ 8w  d   \        P                  ! RV4       M,RV,          pV P                  WV4       VP	                  V4       \        R4      w  rFV^ 8w  d   \        P                  ! RV4       VP                  4       P                  4        FL  p\        R RV,          RVP                  4       ,          4      pV^ 8w  g   K5  \        P                  ! RV4       KN  	  V# )--permanentz--new-zone=%szFailed to add new zonezzone:%sz--list-interfacesz!Failed to set interfaces for zone	--zone=%sz--add-interface=%s)r   r   errorcache_add_attributeappendstripsplitdecode)r*   guidzone
zone_attrsret	attributeout	interfaces   &&&     r   
apply_zonegp_firewalld_ext.apply_zone/   s    
=/D*@A!D!8II.5!D(I$$Td;i( 34!8II94@**,I}kD.@3i6F6F6HHJCax		=tD	 -
 r   c           
        . pVP                  4        EF  w  rEV EF  pR V9   d   \        R VR ,          4      pMRpR	 F\  pVP                  4        U	u. uF  qP                  V4      '       g   K  V	NK  	  p
p	V
 F  pV\        WV,          4      ,          pK  	  K^  	  \	        . R
O4      p\	        VP                  4       4      pVP                  V4      p\        V4      ^8X  d<   V\        \        V4      ^ ,          V\        V4      ^ ,          ,          4      ,          pM\        P                  ! R4       \        RRV,          RVP                  4       4      ^ ,          pV^ 8w  d   \        P                  ! RV4       EKf  V P                  V4      pRV: RV: 2pV P                  VVV4       VP                  V4       EK  	  EK  	  V# u up	i )rulezrule zInvalid firewall rule syntaxr.   r/   z--add-rich-rulezFailed to add firewall rulezrule::)sourcedestinationserviceportprotocolz
icmp-block
masqueradez	icmp-typezforward-portzsource-portr   audit)acceptrejectdropmark)r    r%   keys
startswithsetintersectionlenr   r   r0   r   r3   generate_value_hashr1   r2   )r*   r6   	rule_dict
rule_attrsr7   rulesr@   rule_parsedsegmentsnamesr!   actionssegmentsactionr9   rhashr:   s   &&&               r   apply_rulesgp_firewalld_ext.apply_rulesC   s   
$??,KDT>"4VT&\"JK")K 0G )-		M1||G7LQQEM %#'9$T
'KK !& 0 BCtyy{+ --h7v;!##5d6l1o6:4<?6K$M MK II<="=+2D#4k6G6G6IKKLN!8II;[I 44[AE04e <I,,T9kJ%%i09  -< ) Ns   G
0G
c                   VP                  R 4      '       dN   \        RRV,          4      ^ ,          pV^ 8w  d   \        P                  ! RV4       R	# V P	                  W4       R	# VP                  R4      '       dd   VP                  R4      w  rVp\        RRV,          RV4      ^ ,          pV^ 8w  d   \        P                  ! RV4       R	# V P	                  W4       R	# R	# )
r7   r.   z--delete-zone=%szFailed to remove zoner@   rA   r/   z--remove-rich-rulezFailed to remove firewall ruleN)rN   r   r   r0   cache_remove_attributer4   )r*   r6   r:   valuer9   r   r7   s   &&&&   r   unapplygp_firewalld_ext.unapplye   s    ''}1E9;;<>Cax		159++D<!!&))"-JAQ}kD.@3U<<=?Cax		:EB++D< *r   c                    V! V!  # )Nr)   )r*   applier_funcr   s   &&*r   applygp_firewalld_ext.applyv   s    T""r   c                   V FR  w  r4\        V 4      V9   g   K  V\        V 4      ,          P                  4        F  w  rVV P                  W5V4       K  	  KT  	  V EF  pVP                  '       g   K  R pRp	\        P
                  P                  VP                  V	4      p
V P                  V
4      pV'       g   Ka  . pVP                   EF  pVP                  P                  V4      '       g   K'  VP                  P                  R4      '       dW   VP                  V P                  V P                  VP                  \         P"                  ! VP$                  4      4      4       K  VP                  P                  R4      '       g   K  VP&                  R8X  d   K  VP                  V P                  V P(                  VP                  VP$                  4      4       EK  	  V P+                  VP                  VR7       EK  	  R# )/Software\Policies\Samba\Unix Settings\FirewalldMACHINE/Registry.polRulesZones
**delvals.)keepN)r   r    rc   file_sys_pathospathr   parseentrieskeynamerN   endswithr   rg   r^   r!   jsonloadsdata	valuenamer=   clean)r*   deleted_gpo_listchanged_gpo_listr6   settingsr:   rb   gposectionpol_filerr   pol_confattrses   &&&           r   process_group_policy%gp_firewalld_ext.process_group_policyy   sr   .ND4yH$(0T(;(A(A(C$ILL%8 )D /
 $C   O1ww||C$5$5x@::d+!))Ayy++G4499--g66!LLD4D4Dchh48JJqvv4F*H IYY//88 {{l: (!LLDOOSXX45FF*< = * 

388%
0+ $r   c                   / pR pRpVP                   '       Edc   \        P                  P                  VP                   V4      pV P	                  V4      pV'       g   V# VP
                   EF  pVP                  P                  V4      '       g   K'  VP                  P                  R4      '       dR   VP                  R8X  d   K[  RVP                  4       9  d   . VR&   VR,          P                  VP                  4       K  VP                  P                  R4      '       g   K  RVP                  4       9  d   . VR&   VR,          P                  \        P                  ! VP                  4      4       EK  	  V# )rk   rj   rm   rn   rl   )rp   rq   rr   r   rs   rt   ru   rN   rv   rz   rM   r2   ry   rw   rx   )r*   r   outputr   r   rr   r   r   s   &&      r   rsopgp_firewalld_ext.rsop   s   )G77<< 1 18<Dzz$'H%%99''00yy))'22;;,6$"&++-7.0F7Ow..qvv6++G44"&++-7.0F7Ow..tzz!&&/AB & r   r)   N)__name__
__module____qualname____firstlineno__r+   r=   r^   rc   rg   r   r   __static_attributes____classdictcell__)__classdict__s   @r   r'   r'   +   s.     $( D="#1: r   r'   )rq   
subprocessr   r   shutilr   rw   samba.gp.gpclassr   r   samba.gp.util.loggingr   r   r%   r'   r)   r   r   <module>r      s4   " 
 "   3 %
,K@z: @r   