+
    #fdÚå  ã                   ó°   € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtH	t	 ^ RI
HtHtHtHtHtHt ^ RIt ! R R]P&                  P(                  4      tR# )z-backend_iptables.py: iptables backend for ufwN)ÚUFWErrorÚUFWRule)ÚwarnÚdebugÚmsgÚcmdÚcmd_pipeÚ	_findpathc                   óª   a € ] tR t^t o RtRR ltR tR tR tRR lt	R t
R	 tR
 tR tR tR tR tRR ltRR ltR tRR ltR tR tR tRtV tR# )ÚUFWBackendIptableszInstance class for UFWBackendNc           	     ó$  € R\         P                  P                  ,           R,           V n        W n        W0n        / p\        \         P                  P                  V4      p\        P                  P                  VR4      VR&   \        P                  P                  VR4      VR&   \        P                  P                  VR4      VR&   \        P                  P                  VR	4      VR
&   \        P                  P                  VR4      VR&   \        P                  P                  VR4      VR&   \        P                  P                  \        \         P                  P                  V4      R4      VR&   \         P                  P                  P                  V RWW#R7       R. R. R. R. /V n        R FÇ  pRpVR8X  d)   V P!                  4       '       d
   Wv,          pM	VR8X  d   K4  R  F;  pR! F2  p	V: RV: RV	: 2p
V P                  V,          P#                  V
4       K4  	  K=  	  V P                  R,          P#                  VR,           4       V P                  R,          P#                  VR,           4       KÉ  	  . R"OV n        RV n        R# )#z!UFWBackendIptables initializationz# z
_comment #zufw/user.rulesÚruleszufw/before.rulesÚbefore_ruleszufw/after.rulesÚafter_ruleszufw/user6.rulesÚrules6zufw/before6.rulesÚbefore6_ruleszufw/after6.rulesÚafter6_ruleszufw-initÚinitÚiptables)ÚrootdirÚdatadirÚbeforeÚuserÚafterÚmiscÚ6ÚufwÚ-z	-logging-z-logging-denyz-logging-allowz[UFW LIMIT BLOCK]N)Ú4r   )r   r   r   ©ÚinputÚoutputÚforward)ú-mÚlimitú--limitz3/minuteú-jÚLOGú--log-prefix)r   ÚcommonÚprogramNameÚcomment_strr   r   r	   Ú
config_dirÚosÚpathÚjoinÚ	state_dirÚbackendÚ
UFWBackendÚ__init__ÚchainsÚuse_ipv6ÚappendÚufw_user_limit_logÚufw_user_limit_log_text)ÚselfÚdryrunr   r   Úfilesr,   ÚverÚchain_prefixÚlocÚtargetÚchains   &&&&       Ú6/usr/lib/python3/dist-packages/ufw/backend_iptables.pyr3   ÚUFWBackendIptables.__init__    s  € à¤#§*¡*×"8Ñ"8Õ8¸<ÕGˆÔØŒØŒàˆÜœsŸz™z×4Ñ4°gÓ>ˆ
äŸ™Ÿ™ jÐ2BÓCˆˆg‰Ü "§¡§¡¨ZÐ9KÓ LˆˆnÑÜ!Ÿw™wŸ|™|¨JÐ8IÓJˆˆmÑÜŸ'™'Ÿ,™, zÐ3DÓEˆˆh‰Ü!#§¡§¡¨jÐ:MÓ!NˆˆoÑÜ "§¡§¡¨ZÐ9KÓ LˆˆnÑô
 Ÿ™Ÿ™¤Y¬s¯z©z×/CÑ/CÀWÓ%MØ%/ó1ˆˆf‰ô 	�‰×Ñ×'Ñ'¨¨j¸&Ø07ð 	(ô 	Jð    V¨R°¸"¸fÀbÐIˆŒÛˆCØ ˆLØ�cŒzØ—=‘=—?’?Ø Õ'‘LØ˜C”ZÙã2�Û<�FÛ2>ÃÂVÐL�EØ—K‘K Õ$×+Ñ+¨EÖ2ó =ñ 3ð �K‰K˜Õ×&Ñ& |°oÕ'EÔFØ�K‰K˜Õ×&Ñ& |Ð6FÕ'FÖGñ ò"#3ˆÔð (;ˆÖ$ó    c                ó   € \        R4      pV P                  R,          R8X  d   VR,          pV# V P                  R,          R8X  d   VR,          pV# V P                  R,          R8X  d   VR,          pV# VR	,          pV# )
zGet current policyzNew profiles:Údefault_application_policyÚacceptz allowÚdropz denyÚrejectz rejectz skip)Ú_Údefaults)r9   Úrstrs   & rA   Úget_default_application_policyÚ1UFWBackendIptables.get_default_application_policyP   sˆ   € ä�Ó!ˆØ�=‰=Ð5Õ6¸(ÔBØ�HÕˆDð ˆð �]‰]Ð7Õ8¸FÔBØ�G�OˆDð ˆð �]‰]Ð7Õ8¸HÔDØ�IÕˆDð ˆð �G�OˆDàˆrC   c           	     óh  € V P                   '       Eg'   VR8w  d,   VR8w  d%   VR8w  d   \        R4      V,          p\        V4      hVR8w  d,   VR8w  d%   VR8w  d   \        R4      V,          p\        V4      hR	pVR8X  d   R
pM	VR8X  d   RpRpRpVR8X  d2    V P                  V P                  R,          RV,          R4       RpRpMhVR8X  d2    V P                  V P                  R,          RV,          R4       RpRpM0 V P                  V P                  R,          RV,          R4       RpRp\        P                  ! RT,           4      pT P                  R,          T P                  R,          3 FÂ  p \        P                  P                  T4      p	T	R,          p
T	R,           Fi  pTP                  T4      '       d1   \        P                  P                  Y§P                  Yk4      4       KJ  \        P                  P                  Y«4       Kk  	   \        P                  P                  T	4       KÄ  	  \        R4      RVRV/,          pV\        R4      ,          pV#   \
         d    h i ; i  \
         d    h i ; i  \
         d    h i ; i  \
         d    h i ; i  \
         d    h i ; i)zSets default policy of firewallÚallowÚdenyrH   zUnsupported policy '%s'ÚincomingÚoutgoingÚroutedz%Unsupported policy for direction '%s'ÚINPUTÚOUTPUTÚFORWARDÚ rJ   zDEFAULT_%s_POLICYz"ACCEPT"z	UFW BLOCKz	UFW ALLOWz"REJECT"z"DROP"r   r   ÚtmpÚorigz5Default %(direction)s policy changed to '%(policy)s'
Ú	directionÚpolicyz*(be sure to update your rules accordingly))r:   rI   r   Úset_defaultr;   Ú	ExceptionÚreÚcompiler   ÚutilÚ
open_filesÚsearchÚwrite_to_fileÚsubÚclose_files)r9   r[   rZ   Úerr_msgr@   Úold_log_strÚnew_log_strÚpatÚfÚfnsÚfdÚlinerK   s   &&&          rA   Úset_default_policyÚ%UFWBackendIptables.set_default_policy^   s›  € à�{�{‰{Ø˜Ô  V¨vÔ%5¸&ÀHÔ:LÜÐ5Ó6¸&ÕA�Ü˜wÓ'Ð'à˜JÔ&¨9¸
Ô+BØ˜HÔ$ÜÐCÓDØ&õ(�ä˜wÓ'Ð'àˆEØ˜JÔ&Ø ‘Ø˜hÔ&Ø!�àˆKØˆKØ˜Ô ðØ×$Ñ$ T§Z¡Z°
Õ%;Ø,?À5Õ,IØ,8ô:ð
 *�Ø)‘Ø˜8Ô#ðØ×$Ñ$ T§Z¡Z°
Õ%;Ø,?À5Õ,IØ,8ô:ð
 *�Ø)‘ðØ×$Ñ$ T§Z¡Z°
Õ%;Ø,?À5Õ,IØ,6ô8ð
 *�Ø)�ô —*’*˜S ;Õ.Ó/ˆCØ—j‘j Õ/°·±¸NÕ1KÓL�ðÜŸ(™(×-Ñ-¨aÓ0�Cð ˜•Z�à ŸK˜K�DØ—z‘z $×'Ò'ÜŸ™×.Ñ.¨r·7±7¸;Ó3MÖNäŸ™×.Ñ.¨rÖ8ñ	 (ðÜ—H‘H×(Ñ(¨Ö-ñ Mô$ ÐIÓJØ 	¨8°VÐ<õ>ˆà”Ð>Ó?Õ?ˆàˆøô_ !ô Øðûô !ô Øðûô !ô Øðûô !ô Øðûô !ô Øðús<   Â+I$ Ã+I4 Ä+J Å8JÈJ$É$I1É4JÊJÊJ!Ê$J1c                ó
  € V P                   '       d.   R\        R4      ,           pVR\        R4      ,           ,          pV# V P                  4        . R+Op. p. pVR8X  d   VP                  R4       . R,Op. R-OpEMVR8X  dÏ   R. F3  pVP                  RV,          4       VP                  RV,          4       K5  	  R/ F3  pVP                  RV,          4       VP                  RV,          4       K5  	  R0 F3  pVP                  R	V,          4       VP                  R	V,          4       K5  	  R1 F  pVP                  R
V,          4       K  	  EM-VR8X  d<   R2 F3  pVP                  RV,          4       VP                  RV,          4       K5  	  EMëVR8X  dÀ   R2 F3  pVP                  RV,          4       VP                  RV,          4       K5  	  V P                  R,          R,          '       d#   VP                  R4       VP                  R4       V P                  R,          R,          '       d#   VP                  R4       VP                  R4       EM%VR8X  d;   R2 F3  pVP                  RV,          4       VP                  RV,          4       K5  	  MäVR8X  dÞ   R2 F“  pVP                  RV,          4       VP                  RV,          4       VP                  RV,          4       VP                  RV,          4       VP                  R V,          4       VP                  R!V,          4       K•  	  VP                  R"4       VP                  R#4       VP                  R$4       VP                  R%4       R&V,          pV F¨  pR'V9   dN   VP                  R'4      w  r–VR(V	,          ,          p\        V P                  .V,           VRV	.,           4      w  r«M'\        V P                  .V,           V.,           4      w  r«W+,          pVR8w  d
   VR),          pV
^ 8w  g   KŸ  \        V4      h	  VR8X  g   V P                  4       '       d¸   VR*,          pV F¨  pR'V9   dN   VP                  R'4      w  r–VR(V	,          ,          p\        V P                  .V,           VRV	.,           4      w  r«M'\        V P                  .V,           V.,           4      w  r«W+,          pVR8w  d
   VR),          pV
^ 8w  g   KŸ  \        V4      h	  V# )3z'Show current running status of firewallú> zChecking raw iptables
zChecking raw ip6tables
Úrawz-tÚbuiltinsz	filter:%sz	mangle:%szraw:%sznat:%sr   zufw-before-%szufw6-before-%sr   úufw-user-%súufw6-user-%sr$   r   zufw-user-limit-acceptúufw-user-limitr   zufw6-user-limit-acceptúufw6-user-limitr   zufw-after-%szufw6-after-%sÚloggingzufw-before-logging-%szufw6-before-logging-%szufw-user-logging-%szufw6-user-logging-%szufw-after-logging-%szufw6-after-logging-%szufw-logging-allowzufw-logging-denyzufw6-logging-allowzufw6-logging-denyzIPV4 (%s):
Ú:z(%s) Ú
z

IPV6:
)ú-nz-vz-xú-L)ÚfilterÚnatÚmanglerr   )r}   r   rr   )rT   rV   rU   )Ú
PREROUTINGrT   rV   rU   ÚPOSTROUTING)r€   rU   )r€   r�   rU   )r    r"   r!   )r:   rI   Úinitcapsr6   ÚcapsÚsplitr   r   r   r5   Ú	ip6tables)r9   Ú
rules_typeÚoutÚargsÚitemsÚitems6ÚcÚbÚiÚtÚrcrX   s   &&          rA   Úget_running_rawÚ"UFWBackendIptables.get_running_raw©   s)  € à�;�;ˆ;ØœÐ4Ó5Õ5ˆCØ�4œ!Ð6Ó7Õ7Õ7ˆCØˆJð 	�‰Œâ'ˆØˆØˆà˜ÔØ�K‰K˜ÔÚ6ˆEÚ0ŠFØ˜:Ô%Û3�Ø—‘˜[¨1�_Ô-Ø—‘˜k¨A�oÖ.ñ 4ó%�à—‘˜[¨1�_Ô-Ø—‘˜k¨A�oÖ.ñ%ó .�Ø—‘˜X¨�\Ô*Ø—‘˜h¨�lÖ+ñ .ó =�Ø—‘˜X¨�\Ö*ó =à˜8Ô#Û3�Ø—‘˜_¨qÕ0Ô1Ø—‘Ð.°Õ2Ö3ó 4ð ˜6Ô!Û3�Ø—‘˜]¨QÕ.Ô/Ø—‘˜n¨qÕ0Ö1ñ 4ð �y‰y˜Õ! #×&Ô&Ø—‘Ð4Ô5Ø—‘Ð-Ô.Ø�y‰y˜Õ! #×&Ô&Ø—‘Ð6Ô7Ø—‘Ð/Ô0ùØ˜7Ô"Û3�Ø—‘˜^¨aÕ/Ô0Ø—‘˜o°Õ1Ö2ò 4ð ˜9Ô$Û3�Ø—‘Ð4°qÕ8Ô9Ø—‘Ð6¸Õ:Ô;Ø—‘Ð2°QÕ6Ô7Ø—‘Ð4°qÕ8Ô9Ø—‘Ð3°aÕ7Ô8Ø—‘Ð5¸Õ9Ö:ñ 4ð �L‰LÐ,Ô-Ø�L‰LÐ+Ô,Ø�M‰MÐ.Ô/Ø�M‰MÐ-Ô.à 
Õ+ˆÛˆAØ�aŒxØŸ™ ›‘�Ø�w !•}Õ$�Ü §¡ °$Õ 6¸!¸TÀ1¸Õ EÓF‘	��Sä §¡ °$Õ 6¸!¸Õ <Ó=‘	�Ø�JˆCØ˜UÔ"Ø�t•�Ø�QŽwÜ˜s“mÐ#ñ ð ˜Ô $§-¡-§/¢/Ø�=Õ ˆCÛ�Ø˜!”8ØŸW™W S›\‘F�QØ˜7 a�=Õ(�CÜ # T§]¡] O°dÕ$:¸aÀÀq¸\Õ$IÓ J‘I�R˜ä # T§^¡^Ð$4°tÕ$;¸q¸cÕ$AÓ B‘I�RØ•
�Ø Ô&Ø˜4•K�CØ˜–7Ü" 3›-Ð'ñ ð ˆ
rC   c           
     óæ  € RpV P                   '       dD   R\        R4      ,           pV P                  4       '       d   VR\        R4      ,           ,          pV# \        R4      pR6 F¬  p\        V P                  RR	V,          R
.4      w  rcV^8X  d   \        R4      u # V^ 8w  d   \        VRV,          ,           4      hV P                  4       '       g   Kq  \        V P                  RRV,          R
.4      w  rgV^ 8w  g   Kœ  \        VR,           4      h	  RpRp	Rp
V P                  V P                  ,           p^p/ pV EFm  pRp/ pRpRpV'       gU   VP                  R8w  g   VP                  R8w  d3   RpVP                  4       pVV9   d   \        RV,          4       Kc  RVV&   R7 EFâ  pRVV&   RpRpVR8X  db   VP                  pV'       gA   VP                  R8w  d0   VP                  pVP                  '       d   VR8X  d
   VR,          pMmVP                  pM`VP                   pV'       gA   VP                  R8w  d0   VP                  pVP                  '       d   VR8X  d
   VR,          pMVP"                  pVR8w  d   VR8w  d   VVV&   VR8w  Ed{   VV,          R8X  d   VVV&   MVV;;,          RV,           ,          uu&   V'       d8   VP$                  R8w  d'   VV;;,          RVP$                  ,           ,          uu&   V'       Ed   VR8X  d{   VP                  R8w  dj   VV;;,          RVP                  ,          ,          uu&   VP                  '       d   VR8X  d   VV;;,          R,          uu&   VV;;,          R,          uu&   VR8X  d{   VP                  R8w  dj   VV;;,          RVP                  ,          ,          uu&   VP                  '       d   VR8X  d   VV;;,          R,          uu&   VV;;,          R,          uu&   VR8X  Ed   VR8X  g   VR8X  d˜   RVV&   V'       dn   VP$                  R8w  d]   VP                  VP                   8X  dB   VP                  VP"                  8X  d'   VV;;,          RVP$                  ,           ,          uu&   VR8X  d   VV;;,          R,          uu&   M²V'       dS   VP$                  R8w  dB   VP                  VP"                  8X  d'   VV;;,          RVP$                  ,           ,          uu&   MWVP                  '       dF   VP                   R8X  d5   VP                  R8X  d$   RVV,          9  d   VV;;,          R,          uu&   VP&                  '       d†   VR8X  d8   VP(                  R8w  d'   VV;;,          RVP(                  ,          ,          uu&   VR8X  d>   VP*                  R8w  d*   VV;;,          RVP*                  ,          ,          uu&   EKZ  EK]  EK`  VR8X  d8   VP(                  R8w  d'   VV;;,          RVP(                  ,          ,          uu&   VR8X  g   EK¨  VP*                  R8w  g   EK¼  VV;;,          RVP*                  ,          ,          uu&   EKå  	  . pRpVP,                  '       g    VP.                  P1                  4       R8X  d˜   VP,                  '       d*   VP3                  VP,                  P1                  4       4       V'       d-   VP.                  R8X  d   VP3                  VP.                  4       \5        V4      ^ 8”  d   RR P7                  V4      ,          pV'       d   VR!V,          ,          pVP.                  P9                  4       pVP&                  '       d   R"pVP.                  R#8X  d%   VP&                  '       g   V'       g   V'       g   RpRpVP:                  R8w  d   R$VP=                  4       ,          pVVR,          :R% RRP7                  VP>                  P9                  4       V.4      :R& VR,          :R% V: V: R'2,          pV'       d
   W�,          pM=VP&                  '       d
   W¯,          p
M"VP.                  R8X  d
   WŸ,          p	MW�,          pV^,          pEKp  	  VR8w  g   V	R8w  g	   V
R8w  Ed   R(pV'       d
   VR),          p\        R*4      p\        R+4      p\        R,4      pR-pVVVV3,          pV'       d
   VR),          pVVR.\5        V4      ,          R.\5        V4      ,          R.\5        V4      ,          3,          ,          pVV,          pVR8w  d
   VV,          pVR8w  d   V	R8w  d   V\        R'4      ,          pV	R8w  d
   VV	,          pVR8w  d   V
R8w  d   V\        R'4      ,          pV
R8w  d
   VV
,          pTpV'       dƒ   V PA                  4       w  p p!\        R84      R#V PC                  4       RV PC                  R4      R/V PC                  RR4      /,          p"V PE                  4       p#\        R04      R1V!R2V"R3V#R4V/,          # \        R54      V,          # )9zShow ufw managed rulesrW   rq   zChecking iptables
zChecking ip6tables
úproblem runningr!   r"   r|   rt   r{   zStatus: inactivez iptables: %s
ru   ú
 ip6tablesTFzSkipping found tuple '%s'ÚdstÚsrcz::/0ú (v6)z	0.0.0.0/0ÚanyÚ Ú/z (%sÚ)ÚAnywherez on %sr‡   z (%s)z, z[%2d] ÚFWDÚinz # %sÚ26Ú12rz   z

z     ÚToÚFromÚActionz%-26s %-12s%s
r   rS   z0Status: active
%(log)s
%(pol)s
%(app)s%(status)sÚlogÚpolÚappÚstatuszStatus: active%sr   )r•   r–   zCDefault: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed))#r:   rI   r5   r   r   r   r…   r   r   ÚdappÚsappÚget_app_tupler   r•   Úv6Údportr–   ÚsportÚprotocolr"   Úinterface_inÚinterface_outÚlogtyperZ   Úlowerr6   Úlenr/   ÚupperÚcommentÚget_commentÚactionÚget_loglevelÚ_get_default_policyrL   )$r9   ÚverboseÚ
show_countr‡   rf   rZ   r�   Úout6ÚsÚstr_outÚstr_rter   ÚcountÚ	app_rulesÚrÚtmp_strÚlocationÚtuplÚ
show_protor>   ÚportrX   ÚattribsÚ
attrib_strÚdir_strr+   Úfull_strÚstr_toÚstr_fromÚ
str_actionÚrules_header_fmtÚrules_headerÚlevelÚlogging_strÚ
policy_strÚapp_policy_strs$   &&&                                 rA   Ú
get_statusÚUFWBackendIptables.get_status  s:  € àˆØ�;�;ˆ;ØœÐ0Ó1Õ1ˆCØ�}‰}�ŠØ�tœaÐ 6Ó7Õ7Õ7�ØˆJäÐ%Ó&ˆÛ7ˆIä˜TŸ]™]¨DØ)¨YÕ7¸ð?ó @‰IˆRà�QŒwÜÐ+Ó,Ò,Ø�q”Ü˜wÐ):¸cÕ)BÕBÓCÐCà�}‰}�ŒÜ  $§.¡.°$Ø!/°9Õ!=¸tð"Eó F‘
�à˜–7Ü" 7¨\Õ#9Ó:Ð:ñ 8ð ˆØˆØˆØ—
‘
˜TŸ[™[Õ(ˆØˆØˆ	ÜˆAØˆGØˆHØˆDØˆJß §¡¨"¤°·±¸"´Ø"�
Ø—‘Ó(�à˜9Ô$ÜÐ5¸Õ>Ô?Ùà&*�I˜d‘Oä'�Ø "�˜‘à�Ø�Ø˜%”<ØŸ%™%�Cß" q§v¡v°¤|Ø Ÿv™v˜ØŸ4Ÿ4˜4 C¨6¤MØ  G�O˜Døà Ÿw™w™àŸ%™%�Cß" q§v¡v°¤|Ø Ÿv™v˜ØŸ4Ÿ4˜4 C¨6¤MØ  G�O˜Døà Ÿw™w˜à˜+Ô%¨#°¬-Ø$'�H˜S‘Mà˜5•=Ø •}¨Ô*Ø(,˜ šà  Ÿ¨¨t­Õ3›ç! a§j¡j°EÔ&9Ø  Ÿ¨¨q¯z©zÕ)9Õ9›ç�wØ %œ<¨A¯F©F°b¬LØ$ SŸM¨V°q·v±vÕ->Õ>›MØ ŸtŸt˜t¨¨v¬Ø (¨§°Õ 8£Ø$ SŸM¨SÕ0›MØ %œ<¨A¯F©F°b¬LØ$ SŸM¨V°q·v±vÕ->Õ>›MØ ŸtŸt˜t¨¨v¬Ø (¨§°Õ 8£Ø$ SŸM¨SÕ0›Mà˜5•=Ø˜kÔ)¨S°F¬]Ø(2˜ ™÷ &¨!¯*©*¸Ô*=ØŸ5™5 A§E¡Eœ>¨a¯g©g¸¿¹Ô.@Ø$ SŸM¨S°1·:±:Õ-=Õ=›Mà &œ=Ø$ SŸM¨WÕ4›Mø÷ &¨!¯*©*¸Ô*=ØŸ7™7 a§g¡gÔ-Ø$ SŸM¨S°1·:±:Õ-=Õ=›MøØ—T—T�T˜aŸe™e vœo°!·%±%¸6´/Ø h¨s¥mÔ3ð ˜S—M WÕ,“Mð —9—9�9Ø˜e”|¨¯©¸"Ô(<Ø  Ÿ¨°Q·^±^Õ)DÕD›Ø˜e”|¨¯©¸2Ô(=Ø  Ÿ¨°Q·_±_Õ)EÕEžò )>’|ð ˜e”|¨¯©¸"Ô(<Ø  Ÿ¨°Q·^±^Õ)DÕD›Ø˜e—|¨¯©¸2×(=Ø  Ÿ¨°Q·_±_Õ)EÕEžñq (ðt ˆGØˆJØ�y�yˆy˜AŸK™K×-Ñ-Ó/°5Ô8Ø—9—9�9Ø—N‘N 1§9¡9§?¡?Ó#4Ô5ç !§+¡+°Ô"6Ø—N‘N 1§;¡;Ô/Ü�w“< !Ô#Ø!(¨D¯I©I°gÓ,>Õ!?�J÷ Ø˜8 uÕ-Õ-�à—k‘k×'Ñ'Ó)ˆGØ�y�yˆyØ�à�{‰{˜dÔ"¨1¯9¯9¨9ß§:Ø�àˆKØ�y‰y˜BŒØ%¨¯©«Õ7�Ø°8¸E·?±?Ø03·±¸!¿(¹(¿.¹.Ó:JØ:Að:Cö 1Dà08¸·°ÂÛ0;ð	=õ =ˆG÷ Ø•‘à—9—9�9ØÕ&‘GØ—[‘[ EÔ)ØÕ&‘Gà•L�AØ�Q�J‹Eñi ðl �Œ7�g ”m w°"¥}ØˆHßØ˜GÕ#�Ü�t“WˆFÜ˜“yˆHÜ˜8›ˆJØ0Ðà+¨v°zÀ8Ð.LÕLˆLßØ Õ'�ØÐ,Ø ¤3 v£;Õ.Ø ¤3 z£?Õ2Ø ¤3 x£=Õ0ð2õ2õ 2ˆLð
 ˜Õ$ˆHà�BŒwØ˜A•�Ø�BŒw˜7 bœ=ØœA˜d›GÕ#�Ø˜"Œ}Ø˜GÕ#�Ø�BŒw˜7 bœ=ØœA˜d›GÕ#�Ø˜"Œ}Ø˜GÕ#�àˆAçØ#'×#4Ñ#4Ó#6Ñ ˆU�KÜð 1ó 2ð  $ T×%=Ñ%=Ó%?Ø$ d×&>Ñ&>¸xÓ&HØ'¨×)AÑ)AÀ)ØBFó*HðIõJˆJð "×@Ñ@ÓBˆNÜÐJÓKØ˜k¨5°*Ø˜n¨h¸ð;õ<ð <ô Ð'Ó(¨AÕ.Ð.rC   c                ó  € V P                   '       d   \        R\        R4      ,           4       R# . pVP                  V P                  R,          4       V P
                  eg   V P                  eY   VP                  R4       VP                  V P
                  4       VP                  R4       VP                  V P                  4       VP                  R4       \        V4      w  r#V^ 8w  d   \        RV,          4      p\        V4      hR# )	zStop the firewallrq   úrunning ufw-initr   Nú	--rootdirú	--datadirz
force-stopúproblem running ufw-init
%s)	r:   r   rI   r6   r;   r   r   r   r   ©r9   rˆ   r�   r‡   rf   s   &    rA   Ústop_firewallÚ UFWBackendIptables.stop_firewallë  sÁ   € à�;�;ˆ;Ü�”qÐ+Ó,Õ,Ö-àˆDØ�K‰K˜Ÿ
™
 6Õ*Ô+Ø�|‰|Ò'¨D¯L©LÒ,DØ—‘˜KÔ(Ø—‘˜DŸL™LÔ)Ø—‘˜KÔ(Ø—‘˜DŸL™LÔ)Ø�K‰K˜Ô%Ü˜D›	‰IˆRØ�QŒwÜÐ:¸SÕ@ÓA�Ü˜wÓ'Ð'ñ rC   c                ó®  € V P                   '       d   \        R\        R4      ,           4       R# . pVP                  V P                  R,          4       V P
                  eg   V P                  eY   VP                  R4       VP                  V P
                  4       VP                  R4       VP                  V P                  4       VP                  R4       \        V4      w  r#V^ 8w  d   \        RV,          4      p\        V4      hR	V P                  9  g:   V P                  R	,          \        V P                  P                  4       4      9  d    V P                  R
4       R#  V P                  V P                  R	,          4       R#   \         d    \        R4      p\        T4      hi ; i  \         d    \        R4      p\        T4      hi ; i)zStart the firewallrq   rØ   r   NrÙ   rÚ   ÚstartrÛ   ÚloglevelÚlowzCould not set LOGLEVELzCould not load logging rules)r:   r   rI   r6   r;   r   r   r   r   rJ   ÚlistÚ	loglevelsÚkeysÚset_loglevelr]   Úupdate_loggingrÜ   s   &    rA   Ústart_firewallÚ!UFWBackendIptables.start_firewallý  sg  € à�;�;ˆ;Ü�”qÐ+Ó,Õ,Ö-àˆDØ�K‰K˜Ÿ
™
 6Õ*Ô+Ø�|‰|Ò'¨D¯L©LÒ,DØ—‘˜KÔ(Ø—‘˜DŸL™LÔ)Ø—‘˜KÔ(Ø—‘˜DŸL™LÔ)Ø�K‰K˜Ô Ü˜D›	‰IˆRØ�QŒwÜÐ:¸SÕ@ÓA�Ü˜wÓ'Ð'à §¡Ô.Ø�}‰}˜ZÕ(´°T·^±^×5HÑ5HÓ5JÓ0KÔKð,Ø×%Ñ% eÖ,ð
,Ø×'Ñ'¨¯©°jÕ(AÖBøô !ô ,ÜÐ 8Ó9�GÜ" 7Ó+Ð+ð,ûô !ô ,ÜÐ >Ó?�GÜ" 7Ó+Ð+ð,ús   ÅF Å)"F2 Æ"F/Æ2"Gc                óÔ  € V P                   '       d   R# V P                  4        RpV P                  pV'       d   RpV P                  pR F™  pVR8X  g   VR8X  dU   V'       d#   V P                  R,          R,          '       g   K;  V'       g#   V P                  R,          R,          '       g   Ke  \        VRR	VR
,           V,           .4      w  rVV^ 8w  g   K�  \        R4        R# 	  R# )zCheck if all chains existFr   Úufw6r$   úlimit-acceptr   r   r{   r|   ú-user-z_need_reload: forcing reloadT)r    r!   r"   r$   rì   )r:   r‚   r   r…   rƒ   r   r   )r9   r«   ÚprefixÚexer@   r�   r‡   s   &&     rA   Ú_need_reloadÚUFWBackendIptables._need_reload  s»   € à�;�;ˆ;Ùð 	�‰ŒàˆØ�m‰mˆßØˆFØ—.‘.ˆCãNˆEØ˜Ô 5¨NÔ#:ß˜dŸi™i¨Õ0°×5Ô5Ùß D§I¡I¨gÕ$6°s×$;Ô$;Ùä˜S $¨¨f°xÕ.?À%Õ.GÐHÓI‰IˆRØ�QŽwÜÐ4Ô5Úñ Oñ rC   c                óÒ  € \        R4      pV P                  '       d1   \        R4       V P                  4       '       d   \        R4       R# R# V P	                  4       '       dê    V P
                  R,           F+  pV P                  VRV.4       V P                  VRV.4       K-  	  \        RT P                  R,          .T P                  R	.4      w  r4T^ 8w  d   \        TR
,           4      hT P                  4       '       dI   \        RT P                  R,          .T P                  R	.4      w  r4T^ 8w  d   \        TR,           4      hR# R# R#   \         d    \        T4      hi ; i)zReload firewall rules filer“   z> | iptables-restorez> | ip6tables-restorer   ú-Fú-ZÚcatr   r{   z	 iptablesr   r”   N)rI   r:   r   r5   Ú
is_enabledr4   Ú
_chain_cmdr]   r   r   r;   Úiptables_restoreÚip6tables_restore)r9   rf   r‹   r�   r‡   s   &    rA   Ú_reload_user_rulesÚ%UFWBackendIptables._reload_user_rules:  s@  € äÐ%Ó&ˆØ�;�;ˆ;ÜÐ&Ô'Ø�}‰}�ŠÜÐ+Ö,ñ à�_‰_×Òð(ØŸ™ V×,Ð,�AØ—O‘O A¨¨a yÔ1Ø—O‘O A¨¨a yÖ1ñ -ô ! %¨¯©°GÕ)<Ð!=Ø"&×"7Ñ"7¸Ð!>ó@‰IˆRà�QŒwÜ˜w¨Õ4Ó5Ð5à�}‰}�ŠÜ$ e¨T¯Z©Z¸Õ-AÐ%BØ&*×&<Ñ&<¸dÐ%CóE‘	�à˜”7Ü" 7¨\Õ#9Ó:Ð:ñ ñ ñ øô ô (Ü˜wÓ'Ð'ð(ús   Á%AE ÅE&c                óz  € . p\         P                  ! R4      p\         P                  ! R4      p\         P                  ! R4      pVP                  V4      '       dÆ   VP                  V4      '       d�   VP                  V4      '       d3   VP                  VP	                  RVP	                  RV4      4      4       M!VP                  VP	                  RV4      4       VP                  VP	                  RV4      4       M3VP                  VP	                  RV4      4       MVP                  V4       \         P                  ! R4      p\         P                  ! R	4      p	\         P                  ! R
4      p
Rp\        V4       EFx  w  rÍVP                  V4      '       g   K  VP	                  RV4      P                  4       pVP                  4       R8X  d   RpMVP                  4       R8X  d   RpMRpV: RV: R2pV	P                  V4      '       g
   RV,           pVP	                  RV4      WL&   VP                  WÈP	                  RV,           R,           V,           V4      4       VP                  WÊP	                  RV,           R,           V,           VP	                  RV4      4      4       VP                  WÊP	                  RV,           R,           V,           VP	                  RV,           V4      4      4       EK{  	  \         P                  ! R4      p\        V4       F˜  w  rÍVP                  V4      '       g   K  VP	                  RV4      pVP	                  R V,           R,           V4      pVP	                  RV,           R,           V4      pVWL&   VP                  VV4       VP                  VV4       Kš  	  V# )!z5Return list of iptables rules appropriate for sendingz-p all zport z-j (REJECT(_log(-all)?)?)z-p tcp z-j \1 --reject-with tcp-resetz-p udp rW   z(.*)-j ([A-Z]+)_log(-all)?(.*)z-j [A-Z]+_log-allz(-A|-D) ([a-zA-Z0-9\-]+)z'-m limit --limit 3/min --limit-burst 10ú\2rF   ÚALLOWr$   ÚLIMITÚBLOCKz -j LOG --log-prefix "[UFW ú] "z-m conntrack --ctstate NEW z	\1-j \2\4z\1-j z-user-logging-z\1 z\1-j RETURNú\1z	 -j LIMITz+ -m conntrack --ctstate NEW -m recent --setz -j z-user-limitz-user-limit-acceptzL -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 6 -j )	r^   r_   rb   r6   rd   Ú	enumerateÚstripr²   Úinsert)r9   Úfrulerî   ÚsuffixÚsnippetsÚ	pat_protoÚpat_portÚ
pat_rejectÚpat_logÚ
pat_logallÚ	pat_chainÚ
limit_argsr�   r½   r[   ÚlstrÚ	pat_limitÚtmp1Útmp2Útmp3s   &&&&                rA   Ú_get_rules_from_formattedÚ,UFWBackendIptables._get_rules_from_formattedV  s#  € àˆô —J’J˜zÓ*ˆ	Ü—:’:˜hÓ'ˆÜ—Z’ZÐ <Ó=ˆ
Ø×Ñ˜E×"Ò"Ø�‰˜u×%Ò%Ø×$Ñ$ U×+Ò+Ø—O‘O I§M¡M°)Ø"Ÿ™Ð'GØóó% õ !ð —O‘O I§M¡M°)¸UÓ$CÔDØ—‘ 	§¡¨i¸Ó ?Õ@à—‘ 	§¡¨b°%Ó 8Õ9à�O‰O˜EÔ"ô —*’*Ð>Ó?ˆÜ—Z’ZÐ 4Ó5ˆ
Ü—J’JÐ:Ó;ˆ	Ø>ˆ
Ü˜h×'‰DˆAØ�~‰~˜a× Ô Ø Ÿ™ U¨AÓ.×4Ñ4Ó6�Ø—<‘<“> XÔ-Ø$‘FØ—\‘\“^ wÔ.Ø$‘Fà$�Fã?IÛð�à!×(Ñ(¨×+Ò+Ø8¸4Õ?�DØ%Ÿk™k¨,¸Ó:�‘Ø—‘ §;¡;¨x¸&Õ/@Ø/?õ0@ØBHõ0IØJKó$Mô Nà—‘ §=¡=°¸&µØ1Aõ2BØDJõ2Kà18·±¸^Ø12ó24ó$5ô 6ð —‘ §=¡=°¸&µØ1Aõ2BØDJõ2Kà18·±¸UÀT½\È1Ó1Mó$O÷ Pñ+ (ô4 —J’J˜|Ó,ˆ	Ü˜hÖ'‰DˆAØ×Ñ ×"Ô"Ø —}‘}Ð%RØ%&ó(�à —}‘}ð &,à.4õ&5à7Dõ&EàFGóI�ð !—}‘} V¨f¥_Ð7KÕ%KÈQÓO�Ø"�‘Ø—‘  4Ô(Ø—‘  4Ö(ñ (ð ˆrC   c                ó  € . pV P                  WV4      p\        P                  ! R4      p\        V4       FÍ  w  rxVP	                  VP                  RV4      P                  4       4       VP                  V4      '       g   KM  WG,          P	                  R4       WG,          P	                  VP                  RV4      P                  RR4      4       WG;;,          VP                  RV4      P                  4       ,          uu&   KÏ  	  V# )zLReturn list of iptables rules appropriate for sending as arguments
to cmd()
z(.*) --log-prefix (".* ")(.*)r  r(   rý   Ú"rW   z\3)	r  r^   r_   r  r6   rd   r„   ÚmatchÚreplace)	r9   r  rî   r  r  Ústr_snippetsri   r�   r½   s	   &&&&     rA   Ú_get_lists_from_formattedÚ,UFWBackendIptables._get_lists_from_formattedš  sÉ   € ð ˆØ×5Ñ5°eÀVÓLˆô �jŠjÐ9Ó:ˆÜ˜lÖ+‰DˆAØ�O‰O˜CŸG™G E¨1Ó-×3Ñ3Ó5Ô6Ø�y‰y˜�|Œ|Ø•×"Ñ" >Ô2Ø•×"Ñ" 3§7¡7¨5°!Ó#4×#<Ñ#<¸SÀ"Ó#EÔFØ—˜sŸw™w u¨aÓ0×6Ñ6Ó8Õ8•ñ ,ð ˆrC   c                ó¤
  € V P                   R,          .pV P                  4       '       d#   VP                  V P                   R,          4       V EF   p \        P                  P                  V4      p\        P                  ! R4      p\        P                  ! R4      p\        P                  ! R4      pT EF#  pTp	Rp
RT9   d$   TP                  R4      w  r›TP                  4       p
TP                  T	4      '       g   KK  TP                  RT	4      p\        P                  ! R	TP                  4       4      p\        T4      ^8  g   \        T4      ^	8”  d    \        R
4      T,          p\!        T4       KÁ  RpRpRp\        T4      ^8X  g   \        T4      ^	8X  Ed€   \        R4      T,          pTR,          P                  R4      ^ ,          pRTR,          9   Ed@   RTR,          9   d¨   TP#                  TR,          4      '       dŠ   TP#                  TR,          4      '       dl   TR,          P                  R4      ^ ,          P%                  R4      ^,          pTR,          P                  R4      ^,          P%                  R4      ^,          pMŠTR,          P'                  R4      '       d!   TR,          P%                  R4      ^,          pMLTR,          P'                  R4      '       d!   TR,          P%                  R4      ^,          pM\!        T4       EKg   T^ ,          pRpRT9   d   RpTP                  R4      ^,          p\        T4      ^8  d8   \)        TT^,          T^,          T^,          T^,          T^,          TTT
4	      pM¤\)        TT^,          T^,          T^,          T^,          T^,          TTT
4	      p\        P                  ! R4      pT^,          R8w  d   TP                  RT^,          4      Tn        T^,          R8w  d   TP                  RT^,          4      Tn        TR8w  d   TP/                  RT4       TR8w  d   TP/                  RT4       Y P                   R,          8X  d0   TP1                  R4       T P2                  P                  T4       EK÷  TP1                  R4       T P4                  P                  T4       EK&  	  TP7                  4        EK£  	  R#   \         d    \        R4      T,          p\        T4      hi ; i  \         d#    \        R4      T,          p\!        T4        EK—  i ; i)z$Read in rules that were added by ufwr   r   zCouldn't open '%s' for readingz^### tuple ###\s*zin_\w+zout_\w+rW   z	 comment=z\s+z)Skipping malformed tuple (bad length): %srž   z$Skipping malformed tuple (iface): %srI   Ú!Úin_Úout_Fry   Tú%20r   r™   r‡   zSkipping malformed tuple: %sNéÿÿÿÿ)r;   r5   r6   r   r`   Úopen_file_readr]   rI   r   r^   r_   r„   r  r  rd   r³   r   rb   Ú	partitionÚ
startswithr   r¨   r©   Úset_interfaceÚset_v6r   r   Úclose)r9   Úrfnsrj   rY   rf   Ú	pat_tupleÚpat_iface_inÚpat_iface_outÚ	orig_linerm   rµ   ÚhexrÅ   rX   ÚwmsgÚdtyper¯   r°   r·   r"   ÚruleÚ	pat_spaceÚwarn_msgs   &                      rA   Ú_read_rulesÚUFWBackendIptables._read_rules¬  sI  € à—
‘
˜7Õ#Ð$ˆØ�=‰=�?Š?Ø�K‰K˜Ÿ
™
 8Õ,Ô-äˆAð(Ü—x‘x×.Ñ.¨qÓ1�ô
 Ÿ
š
Ð#7Ó8ˆIÜŸ:š: iÓ0ˆLÜŸJšJ zÓ2ˆMÜ!�	Ø �à�à )Ô+Ø )§¡°Ó =‘I�DØ!Ÿi™i›k�Gà—?‘? 4×(Ô(Ø$Ÿ=™=¨¨TÓ2�DÜŸ(š( 6¨4¯:©:«<Ó8�CÜ˜3“x !”|¤s¨3£x°!¤|Ü Ð!LÓMØ$(õ *˜ä˜Tœ
Ù ð !%˜Ø')˜Ø(*˜Ü˜s›8 qœ=¬C°«H¸­MÜ#$Ð%KÓ#LØ(,õ$.˜Dà$'¨¥G§M¡M°#Ó$6°qÕ$9˜EØ" c¨"¥g�~Ø#&¨#¨b­'¤>Ø#/×#6Ñ#6°s¸2µw×#?Ò#?Ø#0×#7Ñ#7¸¸B½×#@Ò#@ð ),¨B­¯©°cÓ(:¸1Õ(=×(GÑ(GÈÓ(LÈQÕ(Oð %1ð ),¨B­¯©°cÓ(:¸1Õ(=×(GÑ(GÈÓ(LÈQÕ(Oñ %2à%(¨¥W×%7Ñ%7¸×%>Ò%>à36°rµ7×3DÑ3DÀSÓ3IÈ!Õ3L¡LØ%(¨¥W×%7Ñ%7¸×%?Ò%?à47¸µG×4EÑ4EÀcÓ4JÈ1Õ4M¡Mä$(¨¤JÚ$,ð%Ø%(¨¥V˜FØ&+˜Gà" fœ}Ø*. Ø)/¯©°cÓ):¸1Õ)= Ü" 3›x¨!œ|Ü'.¨v°s¸1µv¸sÀ1½vÀsÈ1ÅvØ/2°1­v°s¸1µv¸uÀgØ/6ó(8¡ô (/¨v°s¸1µv¸sÀ1½vÀsÈ1ÅvØ/2°1­v°s¸1µv¸uÀgØ/6ó(8 ô -/¯JªJ°uÓ,= 	Ø#& q¥6¨S¤=Ø09·±¸cÀ3ÀqÅ6Ó0J D¤IØ#& q¥6¨S¤=Ø09·±¸cÀ3ÀqÅ6Ó0J D¤IØ+¨rÔ1Ø $× 2Ñ 2°4¸Ô FØ,°Ô2Ø $× 2Ñ 2°5¸-Ô Hð §
¡
¨8Õ 4Ô4Ø ŸK™K¨Ô-Ø ŸK™K×.Ñ.¨t×4à ŸK™K¨Ô.Ø ŸJ™J×-Ñ-¨d×3ñc "ðf �J‰J�Ló{ øô ô (ÜÐ<Ó=ÀÕC�Ü˜wÓ'Ð'ð(ûô\  (ô %Ü'(Ð)GÓ'HØ)-õ(/˜Hä  œNÛ$ð	%ús   ÁS6ÌE	T"Ó6)TÔ"(UÕUc                ó–  € V P                   R,          pV'       d   V P                   R,          p\        P                  ! V\        P                  4      '       g   \	        RV,          4      p\        V4      h \        P                  P                  V4      pT P                  4        RpT P                  pT'       d   RpT P                  pT P                  '       d    \        P                  P!                  4       pM	TR,          p\        P                  P#                  TR4       \        P                  P#                  TRT,           R	,           4       \        P                  P#                  TRT,           R
,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       TR8X  d!   T P$                  R,          R,          '       g(   TR8X  d}   T P$                  R,          R,          '       d]   \        P                  P#                  TRT,           R,           4       \        P                  P#                  TRT,           R,           4       \        P                  P#                  TR4       T EF”  pTP&                  p	TP(                  '       d   RTP&                  ,           p	TP*                  R8w  d   T	RTP*                  ,           ,          p	Rp
TP,                  R8X  d   TP.                  R8X  d   TP0                  p
M™TP,                  R8w  d1   TP.                  R8w  d    R TP,                  : R!TP.                  : 2p
MXTP,                  R8w  d%   Y¨P0                  : RTP,                  : 2,          p
M#Y¨P0                  : RTP.                  : 2,          p
TP2                  R8X  dµ   TP4                  R8X  d¤   R"T	: R#TP6                  : R#TP8                  : R#TP:                  : R#TP<                  : R#TP>                  : R#T
: 2pTP@                  R8w  d   TR$TP@                  ,          ,          p\        P                  P#                  Y{R%,           4       EM\B        PD                  ! R#4      pR&pTP2                  '       d   TPG                  R'TP2                  4      pR&pTP4                  '       d   TPG                  R'TP4                  4      pR"T	: R#TP6                  : R#TP8                  : R#TP:                  : R#TP<                  : R#TP>                  : R#T: R#T: R#T
: 2pTP@                  R8w  d   TR$TP@                  ,          ,          p\        P                  P#                  Y{R%,           4       R(pTP(                  '       d   R)pMTP0                  R*8X  d   R+pT: R,T: 2pR-T: R#TPI                  4       : R%2pT PK                  TTT4       F#  p\        P                  P#                  TT4       K%  	  EK—  	  \        P                  P#                  TR.4       \        P                  P#                  TR/4        T PM                  T PN                  R0,          4      pT F�  w  ppp\Q        T4      ^ 8”  d   T^ ,          R18X  d   K'  TPS                  TR&,           4      '       g   KG  \        P                  P#                  TR#PU                  T4      PW                  R2R34      PW                  R4R54      R%,           4       KŸ  	  \        P                  P#                  TR64       TR8X  d!   T P$                  R,          R,          '       g*   TR8X  EdC   T P$                  R,          R,          '       Ed"   \        P                  P#                  TR74       T PN                  R0,          R88w  dn   \        P                  P#                  TR-T,           R9,           R#PU                  T PX                  4      ,           R:,           T PZ                  ,           R;,           4       \        P                  P#                  TR-T,           R<,           4       \        P                  P#                  TR-T,           R=,           4       \        P                  P#                  TR>4       \        P                  P#                  TR?4        T P                  '       d#   \        P                  P]                  TR@4       RA# \        P                  P]                  T4       RA#   \         d    h i ; i  \         d    h i ; i  \         d    h i ; i)Bz.Write out new rules to file to user chain filer   r   z'%s' is not writabler   rë   rX   z*filter
ry   z-user-input - [0:0]
z-user-output - [0:0]
z-user-forward - [0:0]
z-before-logging-input - [0:0]
z-before-logging-output - [0:0]
z -before-logging-forward - [0:0]
z-user-logging-input - [0:0]
z-user-logging-output - [0:0]
z-user-logging-forward - [0:0]
z-after-logging-input - [0:0]
z-after-logging-output - [0:0]
z-after-logging-forward - [0:0]
z-logging-deny - [0:0]
z-logging-allow - [0:0]
r$   r   r   z-user-limit - [0:0]
z-user-limit-accept - [0:0]
z### RULES ###
zroute:rW   rI   r   z!out_z
### tuple ### r™   z comment=%srz   r   r"  r    r"   r‡   r!   rí   z-A z
### END RULES ###
z
### LOGGING ###
rá   ú-DÚ[z"[z] r  z### END LOGGING ###
z
### RATE LIMITING ###
Úoffz-user-limit z "z "
z-user-limit -j REJECT
z-user-limit-accept -j ACCEPT
z### END RATE LIMITING ###
zCOMMIT
FN)/r;   r-   ÚaccessÚW_OKrI   r   r   r`   ra   r]   r‚   r   r   r:   ÚsysÚstdoutÚfilenorc   rƒ   r·   r"   r±   r¯   r°   rZ   r¨   r©   r®   r¬   r•   r­   r–   rµ   r^   r_   rd   Úformat_ruler  Ú_get_logging_rulesrJ   r³   r&  r/   r  r7   r8   re   )r9   r«   Ú
rules_filerf   rk   r=   r   rl   rÂ   r·   ÚifacesÚtstrr3  r¨   r©   Úchain_suffixr@   Úrule_strr½   Úlrules_tr‹   Úqs   &&                    rA   Ú_write_rulesÚUFWBackendIptables._write_rules  s^  € à—Z‘Z Õ(ˆ
ßØŸ™ HÕ-ˆJô �yŠy˜¤R§W¡W×-Ò-ÜÐ.°*Õ=Ó>ˆGÜ˜7Ó#Ð#ð	Ü—(‘(×%Ñ% jÓ1ˆCð
 	�‰ŒàˆØ—
‘
ˆßØ!ˆLØ—K‘KˆEà�;�;ˆ;Ü—‘×"Ñ"Ó$‰Bà�U•ˆBô 	�‰×Ñ˜r ;Ô/Ü�‰×Ñ˜r 3¨Õ#5Ð8OÕ#OÔPÜ�‰×Ñ˜r 3¨Õ#5Ø)Aõ$Bô 	Cä�‰×Ñ˜r 3¨Õ#5Ø)Bõ$Cô 	Dô 	�‰×Ñ˜r 3¨Õ#5Ø)Jõ$Kô 	Lä�‰×Ñ˜r 3¨Õ#5Ø)Kõ$Lô 	Mä�‰×Ñ˜r 3¨Õ#5Ø)Lõ$Mô 	Nä�‰×Ñ˜r 3¨Õ#5Ø)Hõ$Iô 	Jä�‰×Ñ˜r 3¨Õ#5Ø)Iõ$Jô 	Kä�‰×Ñ˜r 3¨Õ#5Ø)Jõ$Kô 	Lä�‰×Ñ˜r 3¨Õ#5Ø)Iõ$Jô 	Kä�‰×Ñ˜r 3¨Õ#5Ø)Jõ$Kô 	Lä�‰×Ñ˜r 3¨Õ#5Ø)Kõ$Lô 	Mä�‰×Ñ˜r 3¨Õ#5Ø)Bõ$Cô 	Dä�‰×Ñ˜r 3¨Õ#5Ø)Cõ$Dô 	Eð ˜EÔ! d§i¡i°Õ&8¸×&=Ô&=Ø˜FÔ" t§y¡y°Õ'9¸#×'>Ô'>Ü�H‰H×"Ñ" 2 s¨\Õ'9Ø-Dõ(Eô Fä�H‰H×"Ñ" 2 s¨\Õ'9Ø-Kõ(Lô Mô 	�‰×Ñ˜rÐ#4Ô5ô ˆAØ—X‘XˆFà�y�yˆyØ! A§H¡HÕ,�Ø�y‰y˜BŒØ˜# §	¡	�/Õ)�àˆFØ�~‰~ Ô#¨¯©¸2Ô(=ØŸ™‘Ø—‘ 2Ô%¨!¯/©/¸RÕ*?Ø+,¯>¬>¸1¿?»?ÐK‘à—>‘> RÔ'Ø¯¬°a·n³nÐEÕE‘Fà¯¬°a·o³oÐFÕF�Fà�v‰v˜Œ| §¡¨"¥ã˜aŸjœj¨!¯'¬'°1·5´5¸!¿'¼'À1Ç5Ä5Úð�ð —9‘9 ”?Ø˜M¨A¯I©IÕ5Õ5�DÜ—‘×&Ñ& r°$­;Ö7äŸJšJ s›O�	Ø�Ø—6—6�6Ø$Ÿ=™=¨°·±Ó7�DØ�Ø—6—6�6Ø$Ÿ=™=¨°·±Ó7�Døã §
¤
¨A¯G¬G°Q·U´U¸A¿G¼GÀQÇUÄUÛ›d¢Fð,�ð —9‘9 ”?Ø˜M¨A¯I©IÕ5Õ5�DÜ—‘×&Ñ& r°$­;Ô7à"ˆLØ�y�yˆyØ(‘Ø—‘ Ô%Ø'�Û$0²,Ð?‰EÛ',¨a¯m©m®oÐ>ˆHà×3Ñ3°H¸lØ4@öB�ä—‘×&Ñ& r¨1Ö-ôBñc ôl 	�‰×Ñ˜rÐ#:Ô;ô 	�‰×Ñ˜rÐ#8Ô9ð	Ø×.Ñ.¨t¯}©}¸ZÕ/HÓIˆHó  ‰GˆAˆq�!Ü�1‹v˜Œz˜a �d dœlÙØ�|‰|˜L¨3Õ.×/Ô/Ü—‘×&Ñ& rØ—H‘H˜Q“K×'Ñ'¨¨TÓ2×:Ñ:¸4ÀÓGØõöñ	  ô 	�‰×Ñ˜rÐ#:Ô;ð ˜EÔ! d§i¡i°Õ&8¸×&=Ô&=Ø˜FÕ" t§y¡y°Õ'9¸#×'>Õ'>Ü�H‰H×"Ñ" 2Ð'BÔCØ�}‰}˜ZÕ(¨EÔ1Ü—‘×&Ñ& r¨5Ø%õ,&Ø(6õ,7àŸ™ $×"9Ñ"9Ó:õ,;ð õ,ð "&×!=Ñ!=õ,>ð AHõ,Hô Iô �H‰H×"Ñ" 2 u¨|Õ';Ø2õ(3ô 4ä�H‰H×"Ñ" 2 u¨|Õ';Ø9õ(:ô ;ä�H‰H×"Ñ" 2Ð'DÔEä�‰×Ñ˜r :Ô.ð	Ø�{�{ˆ{Ü—‘×$Ñ$ S¨%Ö0ä—‘×$Ñ$ SÖ)øôo ô 	Øð	ûôn ô 	Øð	ûôB ô 	Øð	ús0   Á8l á"l+ ël; ë l; ë:l; ìl(ì+l8ì;mc                óþ  € V P                  4        RpVP                  '       d{   V P                  4       '       g   \        R4      p\	        V4      hVP
                  R8X  d=   V P                  R,          R,          '       g   \        R4      VP
                  ,          # MMVP
                  R8X  d=   V P                  R,          R,          '       g   \        R4      VP
                  ,          # VP                  '       d9   VP                  R8w  d(   VP                  R	8w  d   \        R
4      p\	        V4      h. pRpRpV P                  pVP                  p	VP                  '       dK   V P                  R8  d.   VP                  R8w  g   VP                  R8w  d   \        R4      # V P                  pV	^ 8  g   V	\        V4      8”  d   \        R4      V	,          p\	        V4      hV	^ 8”  d)   VP                   '       d   \        R4      p\	        V4      h VP#                  4        ^p
Rp^ pR/pT EFÃ  p TP#                  4        TP&                  TP(                  TP                  TP                  3pY©8X  ds   T^,          R8X  d   T^,          R8X  d   T
^8”  g#   T^,          R8X  d   T^,          R8X  g   Yß8w  d%   RpTP+                  TP-                  4       4       R/pM	T	^,          p	TpT
^,          p
\.        P0                  ! Yá4      pT^8  d
   T^,          pT^ 8X  dJ   T'       gB   T'       g:   RpTP                   '       g#   TP+                  TP-                  4       4       EK9  EK<  TR08X  d)   TP                   '       d   TP2                  R8X  d   RpEKk  T^ 8  dA   TP                   '       g/   T'       g'   RpRpTP+                  TP-                  4       4       EK²  TP+                  T4       EKÆ  	  T'       d1   T^ 8”  d)   \        R4      pTP                  '       d
   TR,          pT# M×T'       g2   TP                   '       g    TP+                  TP-                  4       4       T'       gM   TP                   '       d;   T P4                  '       g)   \        R4      pTP                  '       d
   TR,          pT# T'       dC   TP                   '       g1   T'       g)   \        R4      pTP                  '       d
   TR,          pT# TP                  '       d   YPn        MYPn	         T P7                  TP                  4       \        R4      pTP                  '       d   \        R4      pT P9                  4       '       Ed   T P4                  '       Egù   RpT'       g*   T P;                  TP                  4      '       g	   T'       dx   RpT'       d   T\        R4      ,          pMT\        R4      ,          pTP                  '       d
   TR,          pT'       d    T P=                  4        M³T\        R4      ,          pM T'       dj   TP                   '       dX   Rp\        R4      pTP                  '       d
   TR,          pT'       d    T P=                  4        RpMBT\        R4      ,          pM/T'       g(   T'       g    TP                   '       g   Rp\        R4      pTR8w  Ed§   T P>                  pRpTP                  '       d   T P@                  pR pTR,          pR!pTPB                  '       d   R"pMTPD                  R#8X  d   R$pT: R%T: 2p\        R&4      p\G        TR'TR(.4      w  ppT^ 8w  d   \	        T4      hT: R)T: R)TPI                  4       : 2p\J        PL                  ! R*4      pT PO                  TTT4       FÅ  p\G        T.T,           4      w  ppT^ 8w  d&   \Q        T\R        PT                  4       \	        T4       TR8X  g   KN  TPW                  R)PY                  T4      4      '       g   Kv  TP[                  R+R)PY                  T4      4      p\G        TRTR,R-.4      w  ppT^ 8w  g   K³  \]        R.T,          4       KÇ  	  T#   \$         d    h i ; i  \$         d    h i ; i  \         d    h \$         d    \        R4      p\	        T4        EL›i ; i  \$         d    h i ; i  \$         d    h i ; i)1a(  Updates firewall with rule by:
* appending the rule to the chain if new rule and firewall enabled
* deleting the rule from the chain if found and firewall enabled
* inserting the rule if possible and firewall enabled
* updating user rules file
* reloading the user rules file if rule is modified
rW   z)Adding IPv6 rule failed: IPv6 not enabledr$   r   z#Skipping unsupported IPv6 '%s' ruler   z#Skipping unsupported IPv4 '%s' ruleÚudpÚtcpz/Must specify 'tcp' or 'udp' with multiple portsFz1.4z:Skipping IPv6 application rule. Need at least iptables 1.4zInvalid position '%d'z Cannot specify insert and deleteTz Skipping inserting existing ruler—   z"Could not delete non-existent rulezSkipping adding existing rulezCouldn't update rules filezRules updatedzRules updated (v6)zRule insertedzRule updatedz (skipped reloading firewall)r8  zRule deletedú-Az
Rule addedr   rë   r    r"   r‡   r!   rí   ú!Could not update running firewallr|   r{   r™   z(-A +)(ufw6?-user-[a-z\-]+)(.*)rý   r&   ÚRETURNzFAILOK: -D %s -j RETURN)rW   rW   rW   rW   éþÿÿÿ)/r‚   r«   r5   rI   r   r·   rƒ   Úmultir®   r   ÚpositionÚiptables_versionr¨   r©   r   r³   ÚremoveÚ	normalizer]   r•   r–   r6   Údup_ruler   r  rµ   r:   rI  rö   rð   rú   r   r…   r"   rZ   r   r@  r^   r_   r  r   r=  Ústderrrb   r/   rd   r   )r9   r2  Úallow_reloadrK   rf   ÚnewrulesÚfoundÚmodifiedr   rS  rÀ   ÚinsertedÚmatchesÚlastrÂ   ÚcurrentÚretÚflagrï   r=   rE  r@   r�   r‡   rF  r  r½   r‹   s   &&&                         rA   Úset_ruleÚUFWBackendIptables.set_ruleº  s  € ð 	�‰Œàˆà�7�7ˆ7Ø—=‘=—?’?ÜÐGÓH�Ü˜wÓ'Ð'Ø�{‰{˜gÔ%¨d¯i©i¸Õ.@À×.EÔ.EäÐ>Ó?À4Ç;Á;ÕOÐOøà�{‰{˜gÔ%¨d¯i©i¸Õ.@À×.EÔ.EäÐ>Ó?À4Ç;Á;ÕOÐOà�:�:ˆ:˜$Ÿ-™-¨5Ô0°T·]±]ÀeÔ5KÜÐIÓJˆGÜ˜7Ó#Ð#àˆØˆØˆà—
‘
ˆØ—=‘=ˆØ�7�7ˆ7Ø×$Ñ$ uÔ,°$·)±)¸r´/Ø26·)±)¸r´/ÜÐUÓVÐVØ—K‘KˆEð �aŒ<˜8¤c¨%£jÔ0ÜÐ/Ó0°HÕ=ˆGÜ˜7Ó#Ð#à�aŒ<˜DŸKŸK˜KÜÐ:Ó;ˆGÜ˜7Ó#Ð#ð	Ø�N‰NÔð ˆØˆØˆØˆÜˆAðØ—‘”ð —u‘u˜aŸe™e Q§V¡V¨Q¯V©VÐ4ˆGØÔ ð ˜•G˜r”M d¨1¥g°¤m¸À¼	Ø˜A•J "Ô$¨°­°rÔ)9Ø”?Ø#�HØ—O‘O D§M¡M£OÔ4Ø+‘Dà •M�HØˆDØ�Q�JˆEä—-’- Ó(ˆCØ�QŒwØ˜1•�à�aŒx§¯hð �Ø—{—{�{Ø—O‘O D§M¡M£O×4ò #à˜”˜tŸ{Ÿ{˜{¨t¯|©|¸rÔ/Aà“Ø�q” §§ ·Xð �Ø�Ø—‘ §¡£×0à—‘ ×"ñY ÷\ Ø˜Œ{ÜÐ;Ó<�Ø—7—7�7Ø˜G•O�DØ�ð	 ÷  §§ Ø—‘ §¡£Ô0÷ ˜TŸ[Ÿ[˜[°··°ÜÐ=Ó>�Ø—7—7�7Ø˜G•O�DØ�ß˜tŸ{Ÿ{˜{·8ÜÐ8Ó9�Ø—7—7�7Ø˜G•O�DØ�à�7�7ˆ7Ø"�Kà!ŒJð	Ø×Ñ˜dŸg™gÔ&ô �Ó!ˆØ�7�7ˆ7ÜÐ)Ó*ˆDð �?‰?×Ó T§[§[¡[ØˆDß˜4×,Ñ,¨T¯W©W×5Ò5¿Ø�ßØœA˜oÓ.Õ.‘DàœA˜nÓ-Õ-�DØ—7—7�7Ø˜G•O�DßðØ×/Ñ/Õ1ð œAÐ=Ó>Õ>‘Dß˜4Ÿ;Ÿ;˜;Ø�Ü˜Ó(�ð —7—7�7Ø˜G•O�DßðØ×/Ñ/Ô1ð ‘DàœAÐ=Ó>Õ>‘Dß§8°D·K·K°KØ�Ü˜“�à�r�zØ—m‘m�Ø$�Ø—7—7�7ØŸ.™.�CØ#)�LØ˜G•O�DØ&�Ø—<—<�<Ø#,‘LØ—^‘^ uÔ,Ø#+�LÛ(4²lÐC�ô Ð?Ó@�Ü  d¨E°4Ð 8Ó9‘	��SØ˜”7Ü" 7Ó+Ð+ã)-«u°d×6FÑ6FÕ6HÐI�ÜŸ*š*Ð%GÓH�Ø×7Ñ7¸Ø8DØ8DöF�Aô !$ S E¨A¥I£‘I�R˜Ø˜Q”wÜ˜C¤§¡Ô,Ü  Ô)ð ˜t–|¨¯©°s·x±xÀ³{×(CÔ(CØ#ŸK™K¨¨s¯x©x¸«{Ó;˜Ü$'¨¨d°A°t¸XÐ(FÓ$G™	˜˜SØ ž7Ü!Ð";¸qÕ"AÖBñFð ˆøô[ ô 	Øð	ûô ô ØðûôT ô 	ØÜô 	ÜÐ4Ó5ˆGÜ�W×ð	ûô2 %ô Øðûô  %ô ØðúsH   Èb È3bÔ%b, Øc Úc/ âbâb)â,cãcãcãc,ã/c<c                óv  € . p. pV'       d   V P                   pMV P                  pVP                  4       pVP                  V4       VP	                  4        VP                  4       pV FL  pVP                  4       pVP	                  4        VP                  4       p	W–8X  g   K;  VP                  V4       KN  	  V# )z@Return a list of UFWRules from the system based on template rule)r   r   rW  r(  rV  rª   r6   )
r9   Útemplater«   r   rÁ   ÚnormrÅ   rÂ   rX   Ú	tmp_tuples
   &&&       rA   Úget_app_rules_from_systemÚ,UFWBackendIptables.get_app_rules_from_systemŸ  sš   € àˆØˆ	çØ—K‘K‰Eà—J‘JˆEà× Ñ Ó"ˆØ�‰�BŒØ�‰ÔØ×!Ñ!Ó#ˆãˆAØ—*‘*“,ˆCØ�M‰MŒOØ×)Ñ)Ó+ˆIØÖ Ø× Ñ  Ö%ñ ð ÐrC   c                ó  € V P                   pVP                  R4      '       d   V P                  p\        V.V,           4      w  rVV^ 8w  d:   \	        RV,          4      pV'       d   \        RV,           4       R# \        V4      hR# )zPerform command on chainrë   zCould not perform '%s'zFAILOK: N)r   r&  r…   r   rI   r   r   )r9   r@   rˆ   Úfail_okrï   r�   r‡   rf   s   &&&&    rA   r÷   ÚUFWBackendIptables._chain_cmd·  sn   € à�m‰mˆØ×Ñ˜F×#Ò#Ø—.‘.ˆCÜ˜˜ �Ó%‰	ˆØ�Œ7ÜÐ0°DÕ9Ó:ˆGßÜ�j 7Õ*Ö+ä˜wÓ'Ð'ñ rC   c                óÞ  € V P                   '       d   R# V P                  4        . p V P                  V4      p T P	                  RR7       T P	                  RR7       T P                  4       '       g   R# \        R4      pT P                  R,          T P                  R,          ,           T P                  R	,          ,           T P                  R
,          ,            F  p T P                  TRTR.4       K  	   T P                  R,          T P                  R	,          ,           T P                  R
,          ,            F+  pT P                  TRT.4       T P                  TRT.4       K-  	  T Fu  w  rEpRp\        T4      ^ 8”  d   T^ ,          R8X  d   Rp TR8X  d4   \        T4      ^8”  d$   T P                  TR.TR,          ,           RR7       T P                  YET4       Kw  	  R Fï  pT P                  R,          R,          '       d   TR8X  g,   T P                  R,          R,          '       g   KL  TR8X  g   KU  T P                  TRT.T P                  ,           T P                  R,           .,           RR7       T P                  R,          R8w  g   K¯  T P                  TRT.T P                  ,           T P                  R,           .,           RR7       Kñ  	  R#   \         d    h i ; i  \
         d    h \         d    \        R4      p\        T4        EL¿i ; i  \         d    \        T4      hi ; i  \         d    \        T4      hi ; i  \         d    \        T4      hi ; i)z#Update loglevel of running firewallNF)r«   Tz&Couldn't update rules file for loggingrO  r   r   r   r   r|   r{   ró   rô   r8  Údelete_first:é   NN)rl  rv   rw   r$   r   r   r™   rá   r:  ú-I)rv   rw   )r:   r‚   rA  r]   rI  r   rI   rö   r4   r÷   r³   rƒ   r7   r8   rJ   )	r9   rÑ   Úrules_trf   r‹   rÂ   rH  rl  r@   s	   &&       rA   rç   Ú!UFWBackendIptables.update_loggingÄ  s  € à�;�;ˆ;Ùð 	�‰Œàˆð	Ø×-Ñ-¨eÓ4ˆGð
	Ø×Ñ ÐÔ'Ø×Ñ ÐÔ&ð �‰× Ò Ùô Ð7Ó8ˆØ—‘˜XÕ&¨¯©°VÕ)<Õ<Ø�;‰;�wÕõ Ø"&§+¡+¨fÕ"5÷6ð 6ˆAð(Ø—‘  D¨!¨T ?Ö3ñ6ð	$Ø—[‘[ Õ*¨T¯[©[¸Õ-AÕAØ�{‰{˜6Õ"÷#ð #�à—‘  D¨! 9Ô-Ø—‘  D¨! 9Ö-ñ#ó ‰GˆA�!ØˆGÜ�1‹v˜Œz˜a �d dœlØ�ð(Ø˜Ô&¬3¨q«6°A¬:Ø—O‘O A¨ v°°"µ¥~¸t�OÔDØ—‘  gÖ.ñ ó ;ˆEØ—	‘	˜'Õ" 3×'Ô'¨EÐ5EÔ,EØ—	‘	˜'Õ" 3×'Ö'¨EÐ5FÖ,FØ—‘ ¨¨e }Ø $× 7Ñ 7õ(8à!%×!=Ñ!=ÀÕ!CÐ Dõ(Eð )-ð  ô .ð —=‘= Õ,°Ö5Ø—O‘O E¨D°%¨=Ø$(×$;Ñ$;õ,<à%)×%AÑ%AÀCÕ%GÐ$Hõ,Ið -1ð $ö 2ó ;øôe ô 	Øð	ûô ô 	ØÜô 	ÜÐ@ÓAˆGÜ�W×ð	ûô ô (Ü˜wÓ'Ð'ð(ûô ô 	$Ü˜7Ó#Ð#ð	$ûô ô (Ü˜wÓ'Ð'ð(úsH   ¨K º$K. Ã L!Ã:A2L; ÆAMËK+Ë.LÌLÌLÌ!L8Ì;MÍM,c                ó‚  € . pV\        V P                  P                  4       4      9  d   \        R4      V,          p\	        V4      hVR8X  d5   V P
                  R,           F  pVP                  VRVRR.R.4       K  	  V# V P
                  R,           F  pVP                  VRVRR.R	.4       K  	  . ROpV P                  V,          V P                  R,          8¼  Ed   . pV P                  V,          V P                  R,          8  d   TpV P
                  R,           FÄ  pR  F»  pVP                  V4      '       g   K  V P                  V4      R8X  g   V P                  V4      R8X  d&   RpVP                  VRVRRRV.V,           R	.4       Km  V P                  V,          V P                  R,          8¼  g   K˜  RpVP                  VRVRRRV.V,           R	.4       K½  	  KÆ  	  . pV P                  V,          V P                  R,          8  d   TpV P
                  R,           FÉ  pVP                  R4      '       d   RpM‹VP                  R4      '       du   RpV P                  V,          V P                  R,          8  d%   VP                  VRVR
RRRRR.V,           R	.4       M%VP                  VRVR
RRRRRRR.
V,           R	.4       VP                  VRVRRRX.V,           R	.4       KË  	  V P                  V,          V P                  R,          8¼  dŸ   . pV P                  V,          V P                  R,          8  d   TpV P                  V,          V P                  R,          8  d   . R!OV,           pRpV P
                  R,           F$  pVP                  VRVRRRV.V,           R	.4       K&  	  V# )"z%Get rules for specified logging levelzInvalid log level '%s'r:  r   rq  r&   rP  ro  r8  rW   r#   râ   Úhighr   rH   rP   z[UFW BLOCK] rN  r'   r(   Úmediumz[UFW ALLOW] r   rO   Ú	conntrackú	--ctstateÚINVALIDz[UFW AUDIT INVALID] Úfullz[UFW AUDIT] r   )r#   r$   r%   z3/minz--limit-burstÚ10r   )r#   rw  rx  ÚNEW)	rã   rä   rå   rI   r   r4   r6   Úendswithr¹   )	r9   rÑ   rr  rf   r‹   r  ÚlargsrŽ   rî   s	   &&       rA   rA  Ú%UFWBackendIptables._get_logging_rules  s½  € àˆàœ˜TŸ^™^×0Ñ0Ó2Ó3Ô3ÜÐ0Ó1°UÕ;ˆGÜ˜7Ó#Ð#à�EŒ>ð —[‘[ ×(Ð(�Ø—‘  D¨!¨T°8Ð#<¸nÐMÖNñ )àˆNð —[‘[ ×(Ð(�Ø—‘  D¨!¨T°8Ð#<¸bÐAÖBñ )ò Pˆ
ð �>‰>˜%Õ  D§N¡N°5Õ$9Õ9àˆEà�~‰~˜eÕ$ t§~¡~°fÕ'=Ô=Ø"�Ø—[‘[ ×)Ð)�Û7�AØ—z‘z !—}”}Ø×3Ñ3°AÓ6¸(ÔBØ×3Ñ3°AÓ6¸&Ô@Ø%3˜FØ#ŸN™N¨A°°a¸¸uØ0>Àð0Hà05õ06à79ð,;ö <ð "Ÿ^™^¨EÕ2°d·n±nÀXÕ6NÖNØ%3˜FØ#ŸN™N¨A°°a¸¸uØ0>Àð0Hà05õ06à79ð,;ö <ó 8ñ *ð  ˆEà�~‰~˜eÕ$ t§~¡~°fÕ'=Ô=Ø"�à—[‘[ ×(Ð(�Ø—:‘:˜g×&Ò&Ø+‘FØ—Z‘Z ×'Ò'Ø+�FØ—~‘~ eÕ,¨t¯~©~¸hÕ/GÔGàŸ™¨¨D°!°T¸;Ø,7¸Ø,0°(ð,<à>Cõ,DàEGð(Iõ Jð  Ÿ™¨¨D°!°T¸;Ø,7¸Ø,0°%Ø,:Ø,Bð	,Dð
 ).õ,.ð
 02ð(3ô 4ð —‘  D¨!¨T°5Ø$2°Fð$<Ø>Cõ$DØEGð Iö Jñ# )ð* �>‰>˜%Õ  D§N¡N°8Õ$<Ô<àˆEð �~‰~˜eÕ$ t§~¡~°fÕ'=Ô=Ø"�ð �~‰~˜eÕ$ t§~¡~°fÕ'=Ô=Ú?À*ÕL�à#ˆFØ—[‘[ ×*Ð*�Ø—‘  D¨!¨T°5Ø$2°Fð$<Ø>Cõ$DØEGð Iö Jñ +ð ˆrC   c           
     ó´  € Rp\        \        P                  P                  V P                  4      p. pV P
                   Fà  pV P
                  V,          P                  R4      '       g   K-  VP                  V P
                  V,          4       \        P                  P                  VR\        P                  P                  V P
                  V,          4      4      p\        P                  P                  V4      '       d   KÅ  \        R4      V,          p\        V4      h	  \        P                   ! R4      pV FN  pV: RV: 2p\        P                  P#                  V4      '       g   K3  \        R4      V,          p\        V4      h	  V F\  pV: RV: 2pV\        R4      R	\        P                  P                  V4      R
V/,          ,          p\        P$                  ! WE4       K^  	  V EF2  pV: RV: 2p\&        P(                  ! \        P                  P                  VR\        P                  P                  V4      4      \        P                  P+                  V4      4       \&        P,                  ! W„4        \        P.                  ! V4      p	V	\.        P0                  ,          p
T
\.        P6                  ,          '       d   T\        R4      T,          ,          pKù  T
\.        P8                  ,          '       g   EK  T\        R4      T,          ,          pEK5  	  V#   \2         d#    \        R4      T,          p\5        T4        EKe  i ; i)zReset the firewallrW   z.rulesr   zCould not find '%s'. Abortingz%Y%m%d_%H%M%SÚ.z'%s' already exists. Abortingz"Backing up '%(old)s' to '%(new)s'
ÚoldÚnewzCouldn't stat '%s'zWARN: '%s' is world writablezWARN: '%s' is world readable)r	   r   r)   Ú	share_dirr   r;   r}  r6   r-   r.   r/   ÚbasenameÚisfilerI   r   ÚtimeÚstrftimeÚexistsÚrenameÚshutilÚcopyÚdirnameÚcopymodeÚstatÚST_MODEr]   r   ÚS_IWOTHÚS_IROTH)r9   Úresr„  Úallfilesr�   Úfnrf   Úextr‚  ÚstatinfoÚmoder4  s   &           rA   ÚresetÚUFWBackendIptables.reseth  sk  € àˆÜœcŸj™j×2Ñ2°D·L±LÓAˆ	àˆØ—”ˆAØ—:‘:˜a•=×)Ñ)¨(×3Ò3ÙØ�O‰O˜DŸJ™J q�MÔ*Ü—‘—‘˜i¨Ü Ÿg™g×.Ñ.¨t¯z©z¸!­}Ó=ó?ˆBä—7‘7—>‘> "×%Ô%ÜÐ;Ó<ÀÕC�Ü˜wÓ'Ð'ñ ô �mŠm˜OÓ,ˆó ˆAÛšsÐ#ˆBÜ�w‰w�~‰~˜b×!Ô!ÜÐ;Ó<ÀÕC�Ü˜wÓ'Ð'ñ	 ó ˆAÛšsÐ#ˆBØ”1Ð:Ó;ØœRŸW™W×-Ñ-¨aÓ0°%¸Ð<õ>õ >ˆCä�IŠI�aÖñ	 ô ˆAÛ¢Ð$ˆCÜ�KŠKœŸ™Ÿ™ Y°
Ü%'§W¡W×%5Ñ%5°aÓ%8ó:äŸ™Ÿ™¨Ó*ô,ô �OŠO˜CÔ#ðÜŸ7š7 1›:�Ø¤§¡Õ-�ð ”d—l‘l×"Ô"Ø”qÐ7Ó8¸AÕ>Õ>’ØœŸ™×$×$Ø”qÐ7Ó8¸AÕ>Õ>“ñ% ð( ˆ
øô ô ÜÐ1Ó2°aÕ8�Ü�X”Ûðús   Ê-L*Ì*(MÍM)r4   r+   r   r   r   r   r7   r8   )NN)FF)F)T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r3   rL   rn   r�   rÕ   rÝ   rè   rð   rú   r  r  r5  rI  rc  ri  r÷   rç   rA  r™  Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @rA   r   r      s€   ø‡ € Ù'ô.;ò`òIòV[ôzc/òJ(ò$,òBò8;ò8BòHò$côJgôRcòJô0(òH2òTX÷t8ð 8rC   r   )rŸ  r-   r^   r‹  r�  r=  r‡  Ú
ufw.commonr   r   Úufw.utilr   r   r   r   r   r	   Úufw.backendr   r1   r2   r   © rC   rA   Ú<module>r§     s@   ðÙ 3ó" 
Û 	Û Û Û 
Û ç (ß ?× ?Û ôB˜Ÿ™×/Ñ/ö BrC   