+
    È4iì|  ã                   ó"  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt  ! R R4      t ! R R]4      t ! R R	]4      t	 ! R
 R]4      t
 ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R4      t ! R R4      tR# )é    N©ÚUFWError)Údebugc                   ó6   a € ] tR t^,t o RtR tR tR tRtV t	R# )Ú
UFWCommandz"Generic class for parser commands.c                ó‚   € W n         . V n        WP                  9  d   V P                  P                  V4       Wn        R # ©N)ÚcommandÚtypesÚappendÚtype)Úselfr   r
   s   &&&Ú,/usr/lib/python3/dist-packages/ufw/parser.pyÚ__init__ÚUFWCommand.__init__.   s/   € ØŒØˆŒ
Ø—z‘zÔ!Ø�J‰J×Ñ˜dÔ#ØŽ	ó    c                óz   € \        V4      ^8  d   \        4       h\        V^ ,          P                  4       4      pV# ©é   )ÚlenÚ
ValueErrorÚUFWParserResponseÚlower©r   ÚargvÚrs   && r   ÚparseÚUFWCommand.parse5   s.   € Üˆt‹9�qŒ=Ü“,Ðä˜d 1�gŸm™m›oÓ.ˆàˆr   c                ó   € \        R 4      h)z!UFWCommand.help: need to overrider   )r   Úargss   &&r   ÚhelpÚUFWCommand.help=   s   € ÜÐ:Ó;Ð;r   )r
   r   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r!   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   ,   s   ø‡ € Ù,òò÷<ð <r   r   c                   óF   a € ] tR t^At o RtR tR tR t]! ]4      tRt	V t
R# )ÚUFWCommandRulez#Class for parsing ufw rule commandsc                ó6   € R p\         P                  WV4       R# )ÚruleN©r   r   ©r   r
   r   s   && r   r   ÚUFWCommandRule.__init__C   ó   € ØˆÜ×Ñ˜D¨Ö0r   c           	     óº  € R pR pR pRpRpR pR pR p	R p
Rp\        V4      ^ 8”  d5   V^ ,          P                  4       R8X  d   VP                  V^ ,          4       \        V4      ^ 8”  Ed   V^ ,          P                  4       R8X  dY   \        V4      ^8”  dI   RpVP                  V^ ,          4       Rp \        V^ ,          4      pVe   \        RV,          4      pV# M’V^ ,          P                  4       R8X  dV   \        V4      ^8  d   \        4       hV^,          p	V	R	8X  g   V	R
8X  d   \        R4      V	,          p\        V4      hV^ V^  M!V^ ,          P                  4       R8X  d   RAp	V^  V^ ,          pVR8w  d    VR8w  d   VR8w  d   VR8w  d   \        4       h\        V4      pV^8  d   \        4       hRpV^8”  dP   V^,          P                  4       R8X  g   V^,          P                  4       R8X  d   V^,          P                  4       pV^8”  dl   V^,          R8w  d^   V^,          P                  4       R8X  g   V^,          P                  4       R8X  d&   V^,          P                  4       pV^ \        V4      pRpV^8”  d¹   VP                  R4      ^ 8”  g   VP                  R4      ^ 8”  d�   \        R4      pV^,          P                  4       R8w  d(   V^,          P                  4       R8w  d   \        V4      hV^8  g   V^,          P                  4       R8w  d   \        V4      hV^ \        V4      pRp^ pV'       dC   V^8”  d<   V^,          P                  4       R8X  g   V^,          P                  4       R8X  d   ^pMAV^8”  d;   V^,          P                  4       R8X  g   V^,          P                  4       R8X  d   ^pV^ 8”  d&   VV,          P                  4       p
VV \        V4      pRV9   d   \        R4      p\        V4      hRV9   d   \        R4      p\        V4      hR pRV9   d„   VP                  R4      pV\        V4      ^,
          8X  d   \        R4      p\        V4      hVV^,           ,          pRV9   d   \        R4      p\        V4      hVV^,            VV \        V4      pV^8  g   V^8”  d   \        4       hTpV
R 8w  d   VRV
,           ,          p\        P                  P                  VRRV\        P                  P                  V4      R7      pV'       d   W³n        MV	R 8w  d    VP!                  V	4       V^8X  dü   \        P"                  P%                  V^,          4      '       d(    \        P                  P'                  V^,          4       VP(                  R 8X  d–    \        P                  P-                  V^,          4      w  pp\.        P0                  ! R!T4      '       g'   R"T9   g   R#T9   d   \        R$4      p\        T4      hTp TP3                  T4       TP+                  TR 4       RpEMÎEMÌV^,           ^,          ^ 8w  d   \        R&4      p\        V4      hR'V9  d,   R(V9  d%   RV9  d   RV9  d   \        R)4      p\        V4      h. RBOpVP                  R(4      ^8”  g±   VP                  R'4      ^8”  g›   VP                  R*4      ^8”  g…   VP                  R+4      ^8”  go   VP                  R4      ^8”  gY   VP                  R4      ^8”  gC   VP                  R,4      ^8”  g-   VP                  R,4      ^ 8”  d-   VP                  R*4      ^ 8”  d   \        R-4      p\        V4      h^ pR pV EF6  pV^,          ^ 8w  d3   VV,          V9  d%   \        R.4      VV,          ,          p\        V4      hVR*8X  dG   V^,           V8  d#    VP3                  VV^,           ,          4       EM²\        R/4      p\        V4      hVR8X  g   VR8X  d   V^,           V8  dT    VR8X  d#   VP5                  RVV^,           ,          4       EMVVR8X  d!   VP5                  RVV^,           ,          4       EM-\        R04      V,          p\        V4      hVR'8X  d�   V^,           V8  dl    VV^,           ,          P                  4       pVR8X  d   R1pRpM+\        P                  P7                  VR24      '       d   R3pMR4pVP9                  V4       R5pEM�\        R64      p\        V4      hVR(8X  d�   V^,           V8  dk    VV^,           ,          P                  4       pVR8X  d   R1pRpM+\        P                  P7                  VR24      '       d   R3pMR4pVP;                  V4       R pMû\        R74      p\        V4      hVR+8X  g   VR,8X  dØ   V^,           V8  d´   VR 8X  d   \        R84      V,          p\        V4      hVV^,           ,          pVR,8X  d   VR58X  d	   VVn        MUVVn        MM\.        P0                  ! R!V4      '       g1   R"V9   g   R#V9   d   \        R$4      p\        V4      hVR58X  d   TpMTp VP+                  VV4       M\        R94      p\        V4      hV^,          pEK9  	  VR8X  d   VR8X  d   RpM=VR8w  d$   VR8w  d   WV8w  d   \        R:4      p\        V4      hVR8w  d   TpM	VR8w  d   TpVR 8w  g	   VR 8w  Ed   R pVR 8w  d!    \        P                  P'                  V4      pVR 8w  d   VR8X  g   VR 8X  d"    \        P                  P'                  V4      pMO \        P                  P'                  V4      pTR8X  g   TT8X  d   TpMTR8X  d   M\        R<4      p\        T4      hVP>                  R8X  d   VP3                  V4       M?VR8w  d9   VP>                  V8w  d(   \        R=4      VP>                  ,          p\        V4      hV'       d`   VP>                  \        P                  P@                  9   d&   VR8X  d   \C        R>VP>                  ,          4       R4pVPE                  V4       \        V4      pV PF                  VPH                  R?&   W=PH                  R&   WMPH                  R@&   V#   \         d    T^ ,          p ELGi ; i  \         d    h i ; i  \         d.    RpT^,          Tn        TP+                  T^,          R 4        ELži ; i  \         d   p\        T4      hRp?ii ; i  \         d    \        R%4      p\        T4      hi ; i  \         d    h i ; i  \         d    h i ; i  \         d    h i ; i  \         d    h i ; i  \         d    h i ; i  \         d    \        R;4      p\        T4      hi ; i  \         d    \        R;4      p\        T4      hi ; i  \         d    \        R;4      p\        T4      hi ; i)CÚ ÚanyFr/   ÚdeleteTNz	delete-%dÚinsertÚ0z-1z#Cannot insert rule at position '%s'ÚprependÚallowÚdenyÚrejectÚlimitÚinÚoutÚonzInvalid interface clauseÚlogzlog-allzOption 'log' not allowed herez!Option 'log-all' not allowed hereÚcommentz*Option 'comment' missing required argumentÚ'zComment may not contain "'"Ú_)Ú	directionrC   ÚbothÚdstz^\d([0-9,:]*\d+)*$Ú,Ú:zPort ranges must be numericzBad portzWrong number of argumentsÚfromÚtozNeed 'to' or 'from' clauseÚprotoÚportÚappzImproper rule syntaxzInvalid token '%s'zInvalid 'proto' clausezInvalid '%s' clauseú	0.0.0.0/0Ú6Úv6Úv4ÚsrczInvalid 'from' clausezInvalid 'to' clausezNeed 'from' or 'to' with '%s'zInvalid 'port' clausez%Mixed IP versions for 'from' and 'to'zCould not find protocolzProtocol mismatch (from/to)z,Protocol mismatch with specified protocol %sz*Adjusting iptype to 'v4' for protocol '%s'r   Úiptypeéÿÿÿÿ)rM   rK   rL   rN   rO   r?   r@   )%r   r   ÚremoveÚintÚ	Exceptionr   r   rE   r   ÚcountÚindexÚufwÚcommonÚUFWRuleÚutilÚ
hex_encodeÚset_positionÚapplicationsÚvalid_profile_nameÚget_services_protoÚdappÚset_portÚparse_port_protoÚreÚmatchÚset_protocolÚset_interfaceÚvalid_addressÚset_srcÚset_dstÚsappÚprotocolÚipv4_only_protocolsr   Úverifyr   Údata) r   r   Úactionr/   r   Ú	from_typeÚto_typeÚfrom_serviceÚ
to_serviceÚ
insert_posÚlogtyperW   Úrule_numr   Úerr_msgÚnargsÚrule_directionÚhas_interfaceÚlog_idxrC   Úcomment_idxÚrule_actionrN   rM   ÚeÚkeysÚiÚlocÚargÚfaddrÚsaddrÚtmps    &&                              r   r   ÚUFWCommandRule.parseG   s÷  € ØˆØˆØˆØˆ	ØˆØˆØˆ
Øˆ
ØˆØˆäˆt‹9�qŒ=˜T !�WŸ]™]›_°Ô6Ø�K‰K˜˜Q�Ô ô ˆt‹9�q�=Ø�A�w�}‰}‹ (Ô*¬s°4«y¸1¬}Ø�Ø—‘˜D �GÔ$Ø�ð%Ü" 4¨¥7›|�Hð
 Ò'Ü)¨+¸Õ*@ÓA�AØ�Hð (ð �a•—‘“ HÔ,Ü�t“9˜q”=Ü$›,Ð&Ø! !�W�
ð  Ô$¨
°dÔ(:ÜÐ EÓFØ!+õ-�Gä" 7Ó+Ð+ð ˜�GØ˜‘Gà�a•—‘“ IÔ-Ø�
Ø˜�Gà˜!•WˆFà�WÔ ¨6Ô!1°fÀÔ6HØ�WÔÜ“,Ðä�D“	ˆØ�1Œ9Ü“,Ðð ˆØ�1Œ9˜$˜q�'Ÿ-™-›/¨TÔ1Ø˜q�'Ÿ-™-›/¨UÔ2Ø! !�WŸ]™]›_ˆNð �1Œ9˜˜a� Dœ¨d°1­g¯m©m«oÀÔ.EØ.2°1­g¯m©m«oÀÔ.FØ! !�WŸ]™]›_ˆNØ�Q�Ü˜“IˆEð ˆØ�1Œ9˜$Ÿ*™* TÓ*¨QÔ.°$·*±*¸UÓ2CÀaÔ2GÜÐ2Ó3ˆGà�A�w�}‰}‹ $Ô&¨4°­7¯=©=«?¸eÔ+CÜ˜wÓ'Ð'Ø�qŒy˜D �GŸM™M›O¨tÔ3Ü˜wÓ'Ð'à�Q�Ü˜“IˆEØ ˆMàˆß˜U QœY¨D°­G¯M©M«O¸uÔ,DØ,0°­G¯M©M«O¸yÔ,HØ‰GØ�QŒY˜D �GŸM™M›O¨uÔ4Ø �7Ÿ=™=›?¨iÔ7ØˆGà�QŒ;Ø˜7•m×)Ñ)Ó+ˆGà�W�Ü˜“IˆEà�DŒ=ÜÐ7Ó8ˆGÜ˜7Ó#Ð#à˜ÔÜÐ;Ó<ˆGÜ˜7Ó#Ð#àˆØ˜ÔØŸ*™* YÓ/ˆKØœc $›i¨!�mÔ+ÜÐHÓI�Ü˜wÓ'Ð'Ø˜; q�=Õ)ˆGð �gŒ~ÜÐ;Ó<�Ü  Ó)Ð)à�[ •]Ð#Ø�[Ð!Ü˜“IˆEà�1Œ9˜ œ
Ü“,ÐàˆØ�bŒ=Ø˜3 �=Õ(ˆKÜ�z‰z×!Ñ! +¨u°eØ,:Ü*-¯(©(×*=Ñ*=¸gÓ*Fð "ó Hˆ÷ Ø �KØ˜2ÔðØ×!Ñ! *Ô-ð �AŒ:ä×Ñ×2Ñ2°4¸µ7×;Ò;ð2Ü—H‘H×/Ñ/°°QµÔ8ð
 �y‰y˜BŒð&Ü$'§H¡H×$=Ñ$=¸dÀ1½gÓ$F‘M�T˜5ô —x’xÐ 5°t×<Ò<Ø˜d”{ c¨T¤kÜ"#Ð$AÓ"B˜Ü& wÓ/Ð/Ø!%�Jð,Ø×%Ñ% eÔ,Ø—M‘M $¨Ô.Ø!’Dñ ð& �a�i˜1�_ Ô!ÜÐ3Ó4ˆGÜ˜7Ó#Ð#Ø˜4Ô D°Ô$4¸ÀTÔ9IØ˜$ÔÜÐ4Ó5ˆGÜ˜7Ó#Ð#ò IˆDð �z‰z˜$Ó !Ô#Ø�z‰z˜&Ó! AÔ%Ø�z‰z˜'Ó" QÔ&Ø�z‰z˜&Ó! AÔ%Ø�z‰z˜$Ó !Ô#Ø�z‰z˜%Ó  1Ô$Ø�z‰z˜%Ó  1Ô$Ø�z‰z˜%Ó  1Ô$¨¯©°GÓ)<¸qÔ)@ÜÐ2Ó3�Ü˜wÓ'Ð'àˆAØˆCÜ�Ø�q•5˜A”: $ q¥'°Ô"5ÜÐ 4Ó5¸¸a½ÕA�GÜ" 7Ó+Ð+Ø˜'”>Ø˜•s˜U”{ð"Ø ×-Ñ-¨d°1°Qµ3­iÖ8ô #$Ð$<Ó"=˜Ü& wÓ/Ð/Ø˜D”[ C¨5¤LØ˜•s˜U”{ð"Ø" dœ{Ø $× 2Ñ 2°4¸¸aÀ½c½Ö CØ!$¨¤Ø $× 2Ñ 2°5¸$¸qÀ½s½)Ô Dùô #$Ð$9Ó":¸cÕ"B˜Ü& wÓ/Ð/Ø˜F”]Ø˜•s˜U”{ð"Ø$(¨¨1­¥I§O¡OÓ$5˜EØ$¨œ~Ø(3 Ø,1¡	ä#&§8¡8×#9Ñ#9¸%À×#EÒ#EØ04¡Ià04 IØ ŸL™L¨Ô/ð $šô
 #$Ð$;Ó"<˜Ü& wÓ/Ð/Ø˜D”[Ø˜•s˜U”{ð"Ø$(¨¨1­¥I§O¡OÓ$5˜EØ$¨œ~Ø(3 Ø*/¡ä#&§8¡8×#9Ñ#9¸%À×#EÒ#EØ.2¡Gà.2 GØ ŸL™L¨Ô/ð $™ô
 #$Ð$9Ó":˜Ü& wÓ/Ð/Ø˜F”] c¨U¤lØ˜•s˜U”{Ø "œ9Ü&'Ð(GÓ&HØ),õ'.˜Gä"*¨7Ó"3Ð3à" 1 Q¥3�i˜Ø %œ<Ø" eœ|Ø,/ ¥	à,/ ¥	Ü!#§¢Ð*?À×!EÒ!EØ" cœz¨S°C¬ZÜ*+Ð,IÓ*J Ü&.¨wÓ&7Ð 7à" eœ|Ø/2¡à-0 
ð"Ø ŸM™M¨#¨sÕ3ô #$Ð$;Ó"<˜Ü& wÓ/Ð/Ø�Q•“ñW ð\ ˜EÔ! g°Ô&6Ø‘Ø˜eÔ#¨°5Ô(8ØÔ%ÜÐCÓD�Ü˜wÓ'Ð'Ø˜eÔ#Ø ‘Ø˜EÔ!Ø�ð ˜Ô˜|¨rÕ1ØˆEØ˜RÔð,ÜŸH™H×7Ñ7¸
ÓC�Eð ˜rÔ!Ø˜E”> U¨b¤[ð0Ü #§¡× ;Ñ ;¸LÓ I™ð0Ü!Ÿh™h×9Ñ9¸,ÓG˜ð  ”~¨°#¬Ø #™Ø œØä"#Ð$AÓ"B˜Ü& wÓ/Ð/ð �}‰} Ô%Ø×!Ñ! %Õ(Ø˜%” D§M¡M°UÔ$:ÜÐJÓKØ!Ÿ]™]õ,�ä˜wÓ'Ð'÷ Ø�}‰}¤§¡× <Ñ <Ô<Ø�vŒ~ÜÐBØ—}‘}õ&ô 'à�ð �K‰K˜Ôä˜fÓ%ˆØŸ™ˆ�‰ˆv‰Ø�‰ˆv‰Ø�‰ˆxÑàˆøôO !ô %Ø! !�W“Fð%ûôl ô Øðûô !ô 2Ø!�DØ $ Q¥�D”IØ—M‘M $ q¥'¨5×1ð2ûô "ô &Ü" 1›+Ð%ûð&ûô  ô ,Ü 
›m�GÜ" 7Ó+Ð+ð,ûôH  )ô "Ø!ð"ûô  )ô "Ø!ð"ûô*  )ô "Ø!ð"ûô,  )ô "Ø!ð"ûôB  )ô "Ø!ð"ûô8 !ô ,ô  Ð 9Ó:�GÜ" 7Ó+Ð+ð,ûô %ô 0ô #$Ð$=Ó">˜Ü& wÓ/Ð/ð0ûô %ô 0ô #$Ð$=Ó">˜Ü& wÓ/Ð/ð0úsÈ   Â3s5 Õt Ö&t  ×)u Ø8%u9 ß>vá'v.á;'v.ãAv>ä'v>å-Awæ=wê(wíw. í;x îx8 ó5tôtôtô 4uõuõu6õ&u1õ1u6õ9"vöv+ö.v;ö>w÷w÷w+÷."xø"x5ø8"yc                ó*  € V P                   pV P                  R8X  g   V P                  R8X  Ed¢   V P                  R8X  g   V P                  R8X  Ed   V P                  R8X  Edm   V P                  R8X  Ed[   V P
                  R8X  EdI   V P                  R8X  Ed7   V P                  R8w  Ed%   V P                  R8X  d   VRV P                  ,          ,          pV P                  R8w  d   VRV P                  ,          ,          pV P                  R8w  dH   RV P                  9   d   VRV P                  ,          ,          pM`VRV P                  ,          ,          pMEVRV P                  ,          ,          pV P                  R8w  d   VR	V P                  ,          ,          pV P                  R8w  d   VR
V P                  4       ,          ,          pV# V P
                  R8w  d   VRV P
                  ,          ,          pV P                  R8w  d   VRV P                  ,          ,          pM+V P                  R8X  d   VRV P                  ,          ,          pV P                  R8w  d   VRV P                  ,          ,          pR FÚ  pVR8X  d(   V P                  pV P                  pV P                  pRpM&V P                  pV P                  pV P                  pRpVR8X  g   VR8X  d   RpVR8w  g   VR8w  g
   VR8w  g   K~  VRV: RV: 2,          pVR8w  d,   RV9   d   VRV,          ,          pK¯  VRV,          ,          pKÁ  VR8w  g   KÊ  VRV,          ,          pKÜ  	  RV9  d3   RV9  d,   V P
                  R8X  d   V P                  R8X  d
   VR,          pV P                  R8w  d=   V P                  R8X  d,   V P                  R8X  d   VRV P                  ,          ,          pV P                  R8w  d   VR
V P                  4       ,          ,          pV# )zGet command string for rulerP   z::/0r6   r5   r@   z %sÚ z '%s'z/%sz comment '%s'z	 in on %sz
 out on %srT   rK   rL   z	 app '%s'z app %sz port %sz to z from z to anyz	 proto %s)rT   rH   )rt   rH   rT   Úsportro   Úinterface_inÚinterface_outÚdportrF   rz   re   rp   rC   Úget_comment)r   Úresr…   r†   rN   rO   Údirs   &      r   Úget_commandÚUFWCommandRule.get_commandÇ  s  € à�h‰hˆà�E‰E�[Ô  A§E¡E¨V¥OØ�E‰E�[Ô  A§E¡E¨V¥OØ�7‰7�eÕØ�6‰6�R�<Ø�>‰>˜RÕØ�?‰?˜bÕ Ø�7‰7�eÕà�{‰{˜eÔ#Ø�u˜qŸ{™{Õ*Õ*�Ø�y‰y˜BŒØ�u˜qŸy™yÕ(Õ(�Ø�v‰v˜Œ|Ø˜!Ÿ&™&”=Ø˜7 Q§V¡VÕ+Õ+‘Cà˜5 1§6¡6�>Õ)‘Cà�u˜qŸw™w•Õ&�Ø—:‘: Ô&Ø˜5 1§:¡:Õ-Õ-�CØ�y‰y˜BŒØ�¨¯©«Õ8Õ8�ðd ˆ
ð_ �~‰~ Ô#Ø�{ Q§^¡^Õ3Õ3�Ø�‰ "Ô$Ø�| a§o¡oÕ5Õ5‘Ø—‘ Ô%Ø�u˜qŸ{™{Õ*Õ*�Ø�y‰y˜BŒØ�u˜qŸy™yÕ(Õ(�ã#�Ø˜”:ØŸ%™%�CØŸ7™7�DØŸ&™&�CØ ‘CàŸ%™%�CØŸ7™7�DØŸ&™&�CØ�Cà˜+Ô%¨°¬Ø�Cà˜%”< 4¨5¤=°C¸2¶IÙ£sªCÐ0Õ0�CØ˜b”yØ #œ:Ø ;°Õ#4Õ4šCà 9¨s¥?Õ2šCØ žØ˜z¨DÕ0Õ0šñ/ $ð8 ˜SÔ  X°SÔ%8Ø—N‘N bÔ(¨Q¯_©_ÀÔ-BØ�yÕ �à�z‰z˜UÔ" q§v¡v°¤|¸¿¹À"¼Ø�{ Q§Z¡ZÕ/Õ/�à�y‰y˜BŒØ�¨¯©«Õ8Õ8�àˆ
r   © N)r#   r$   r%   r&   r'   r   r   r•   Ústaticmethodr(   r)   r*   s   @r   r-   r-   A   s'   ø‡ € Ù-ò1ò~ò@LñZ ˜{Ó+†Kr   r-   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚUFWCommandRouteRulei  z)Class for parsing ufw route rule commandsc                ó>   € \         P                  W4       R V n        R# )ÚrouteN)r-   r   r   )r   r
   s   &&r   r   ÚUFWCommandRouteRule.__init__  s   € Ü×Ñ Ô.ØˆŽ	r   c                óæ  € V^ ,          R8X  g   Q hRV9   dS   VP                  R4      pRp\        V4      V8”  d0    \        W^,           ,          4       \        R4      p\	        V4      hRpRpRpRP                  V4      pRV9   dƒ   RV9   d|   R	pVP                  R
4      VP                  R	4      8”  d   R
pWP                  V4      ^,           ,          pV^ VP                  V4       WP                  V4      ^,           R ,           pM`\        P                  ! RV4      '       gB   \        P                  ! RV4      '       g%   RV9   g   RV9   d   \        R4      p\	        V4      hTpRV^ &   \        P                  W4      pRVP                  9   dK   RVP                  R,          n        V'       d+   V'       d#   VP                  R,          P                  We4       V#   \
         d     EL…i ; i)r   rœ   r7   r5   z9'route delete NUM' unsupported. Use 'delete NUM' instead.Nr�   z in on z out on r@   r?   z (in|out) on z app (in|out) z in z out z'Invalid interface clause for route ruler/   T)r[   r   rX   rE   r   r   Újoinrh   Úsearchr-   r   rs   Úforwardrk   )	r   r   Úidxr|   Ú	rule_argvÚ	interfaceÚstripÚsr   s	   &&       r   r   ÚUFWCommandRouteRule.parse  s´  € Ø�A�w˜'Ô!Ð"Ð!ð �tÔØ—*‘*˜XÓ&ˆCØˆGÜ�4‹y˜3Œðä˜ 1�W�Ô&ÜÐ [Ó\�GÜ" 7Ó+Ð+ð ˆ	Øˆ	Øˆð �H‰H�T‹NˆØ˜Œ>˜j¨AœoØˆEØ�z‰z˜$Ó $§*¡*¨UÓ"3Ô3Ø�ð
 ŸZ™Z¨Ó.°Õ2Õ3ˆIØ˜Q˜tŸz™z¨%Ó0Ð1°D¿¹ÀEÓ9JÈ1Õ9LÐ9MÐ4NÕN‰IÜ—’Ð+¨Q×/Ò/Ü—’Ð,¨a×0Ò0Ø˜Œk˜W¨œ\ô ÐAÓBˆGÜ˜7Ó#Ð#àˆIàˆ	�!‰Ü× Ñ  Ó1ˆØ�Q—V‘VÔØ%)ˆA�F‰F�6�NÔ"ßŸØ—‘�v•×,Ñ,¨UÔ>àˆøôW "ô âðús   ¼.G! Ç!G0Ç/G0)r   N©	r#   r$   r%   r&   r'   r   r   r(   r)   r*   s   @r   rš   rš     s   ø‡ € Ù3ò÷8ð 8r   rš   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚUFWCommandAppiX  z*Class for parsing ufw application commandsc                ó6   € R p\         P                  WV4       R# )rO   Nr0   r1   s   && r   r   ÚUFWCommandApp.__init__Z  s   € ØˆÜ×Ñ˜D¨Ö0r   c                ód  € RpRpRpV^ ,          R8w  d   \        4       hV^  \        V4      pV^ ,          P                  4       pVR8X  g   VR8X  dw   V^8¼  d-   V^,          R8X  d   RpVP                  R4       \        V4      pV^8  d   \        4       h\	        V^,          4      P                  R4      pV'       d
   VR	,          pVR
8X  d   V^8w  d   \        4       hVR8X  d˜   V^8  d   \        4       hV^,          P                  4       R8X  d   RpMgV^,          P                  4       R8X  d   RpMHV^,          P                  4       R8X  d   RpM)V^,          P                  4       R8X  d   RpM
\        4       h\        V4      pV P                  VP                  R&   W&P                  R&   V# )zParse applications command.r5   FrO   ÚinfoÚupdatez	--add-newTz[']z	-with-newÚlistÚdefaultr;   údefault-allowr<   údefault-denyr=   údefault-rejectÚskipzdefault-skipr   Úname)	r   r   r   rW   Ústrr¥   r   r   rs   )r   r   r¶   rt   Úaddnewr}   r   s   &&     r   r   ÚUFWCommandApp.parse^  sq  € àˆØˆØˆà��7�eÔÜ“,ÐØ�ˆGä�D“	ˆØ�a•—‘“ˆà�VÔ˜v¨Ô1Ø˜Œz˜d 1�g¨Ô4Ø�Ø—‘˜KÔ(Ü˜D›	�à�qŒyÜ “lÐ"ô �t˜A•w“<×%Ñ% eÓ,ˆDçØ˜+Õ%�à�VÔ ¨¤
Ü“,Ðà�YÔØ�qŒyÜ “lÐ"Ø�A�w�}‰}‹ 'Ô)Ø(‘Ø�a•—‘“ FÔ*Ø'‘Ø�a•—‘“ HÔ,Ø)‘Ø�a•—‘“ FÔ*Ø'‘ä “lÐ"ä˜fÓ%ˆØŸ™ˆ�‰ˆv‰Ø�‰ˆv‰àˆr   r—   Nr¨   r*   s   @r   rª   rª   X  s   ø‡ € Ù4ò1÷2ð 2r   rª   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚUFWCommandBasici“  z$Class for parsing ufw basic commandsc                ó6   € R p\         P                  WV4       R# )ÚbasicNr0   r1   s   && r   r   ÚUFWCommandBasic.__init__•  s   € ØˆÜ×Ñ˜D¨Ö0r   c                ó`   € \        V4      ^8w  d   \        4       h\        P                  W4      # r   )r   r   r   r   )r   r   s   &&r   r   ÚUFWCommandBasic.parse™  s&   € Üˆt‹9˜Œ>Ü“,ÐÜ×Ñ Ó+Ð+r   r—   Nr¨   r*   s   @r   r»   r»   “  s   ø‡ € Ù.ò1÷,ð ,r   r»   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚUFWCommandDefaultiŸ  z&Class for parsing ufw default commandsc                ó6   € R p\         P                  WV4       R# )r±   Nr0   r1   s   && r   r   ÚUFWCommandDefault.__init__¡  ó   € ØˆÜ×Ñ˜D¨Ö0r   c                ó(  € \        V4      ^8  d   \        4       hRpRp\        V4      ^8”  Edc   V^,          P                  4       R8w  d—   V^,          P                  4       R8w  d{   V^,          P                  4       R8w  d_   V^,          P                  4       R8w  dC   V^,          P                  4       R8w  d'   V^,          P                  4       R8w  d   \        4       hV^,          P                  4       P                  R4      '       d   RpM�V^,          P                  4       P                  R	4      '       d   RpMRV^,          P                  4       R8X  g   V^,          P                  4       R8X  d   RpMV^,          P                  4       pV^,          P                  4       R
8X  d   RpMHV^,          P                  4       R8X  d   RpM)V^,          P                  4       R8X  d   RpM
\        4       hVRV,          ,          p\	        V4      # )é   r5   ÚincomingÚinputÚroutedr¡   ÚoutputÚoutgoingr?   r@   r<   r³   r;   r²   r=   r´   z-%s)r   r   r   Ú
startswithr   )r   r   rt   rF   s   &&  r   r   ÚUFWCommandDefault.parse¥  s€  € äˆt‹9�qŒ=Ü“,Ðð ˆØˆ	Üˆt‹9�q�=Ø�A�w�}‰}‹ *Ô,Ø�A�w�}‰}‹ 'Ô)Ø�A�w�}‰}‹ (Ô*Ø�A�w�}‰}‹ )Ô+Ø�A�w�}‰}‹ (Ô*Ø�A�w�}‰}‹ *Ô,Ü “lÐ"Ø�A�w�}‰}‹×)Ñ)¨$×/Ò/Ø&‘	Ø�a•—‘“×+Ñ+¨E×2Ò2Ø&‘	Ø�a•—‘“ HÔ,°°Qµ·±³À9Ô0LØ$‘	à  �GŸM™M›O�	ð ��7�=‰=‹?˜fÔ$Ø#‰FØ�!�W�]‰]‹_ Ô'Ø$‰FØ�!�W�]‰]‹_ Ô(Ø%‰Fä“,Ðà�%˜9Õ%Õ%ˆä  Ó(Ð(r   r—   Nr¨   r*   s   @r   rÂ   rÂ   Ÿ  s   ø‡ € Ù0ò1÷%)ð %)r   rÂ   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚUFWCommandLoggingiÍ  z&Class for parsing ufw logging commandsc                ó6   € R p\         P                  WV4       R# )ÚloggingNr0   r1   s   && r   r   ÚUFWCommandLogging.__init__Ï  rÅ   r   c                óB  € R p\        V4      ^8  d   \        4       hV^,          P                  4       R8X  d   RpMÚV^,          P                  4       R8X  gq   V^,          P                  4       R8X  gU   V^,          P                  4       R8X  g9   V^,          P                  4       R8X  g   V^,          P                  4       R8X  dE   RpV^,          P                  4       R8w  d&   VR	V^,          P                  4       ,           ,          pM
\        4       h\        V4      # )
r5   Úoffzlogging-offrA   ÚlowÚmediumÚhighÚfullz
logging-onrE   ©r   r   r   r   ©r   r   rt   s   && r   r   ÚUFWCommandLogging.parseÓ  sÍ   € ØˆÜˆt‹9�qŒ=Ü“,ÐØ�!�W�]‰]‹_ Ô%Ø"‰FØ�!�W�]‰]‹_ Ô$¨¨Q­¯©«¸5Ô(@Ø�!�W�]‰]‹_ Ô(¨D°­G¯M©M«O¸vÔ,EØ�!�W�]‰]‹_ Ô&Ø!ˆFØ�A�w�}‰}‹ $Ô&Ø˜#  Q¥§¡£Õ/Õ/�øä“,Ðä  Ó(Ð(r   r—   Nr¨   r*   s   @r   rÐ   rÐ   Í  s   ø‡ € Ù0ò1÷)ð )r   rÐ   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚUFWCommandStatusiå  z%Class for parsing ufw status commandsc                ó6   € R p\         P                  WV4       R# )ÚstatusNr0   r1   s   && r   r   ÚUFWCommandStatus.__init__ç  s   € ØˆÜ×Ñ˜D¨Ö0r   c                ó*  € \         P                  W4      p\        V4      ^8X  d
   RVn        V# \        V4      ^8”  dU   V^,          P	                  4       R8X  d
   RVn        V# V^,          P	                  4       R8X  d
   RVn        V# \        4       hV# )r   rà   Úverbosezstatus-verboseÚnumberedzstatus-numbered)r   r   r   rt   r   r   r   s   && r   r   ÚUFWCommandStatus.parseë  s‰   € Ü×Ñ˜TÓ(ˆÜˆt‹9˜Œ>ØˆAŒHð ˆô �‹Y˜Œ]Ø�A�w�}‰}‹ )Ô+Ø+�”ð
 ˆð	 �a•—‘“ JÔ.Ø,�”ð ˆô !“lÐ"Øˆr   r—   Nr¨   r*   s   @r   rÞ   rÞ   å  s   ø‡ € Ù/ò1÷ð r   rÞ   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚUFWCommandShowiù  z#Class for parsing ufw show commandsc                ó6   € R p\         P                  WV4       R# )ÚshowNr0   r1   s   && r   r   ÚUFWCommandShow.__init__û  r3   r   c                óT  € R p\        V4      ^8X  d   \        4       hV^,          P                  4       R8X  d   RpMãV^,          P                  4       R8X  d   RpMÄV^,          P                  4       R8X  d   RpM¥V^,          P                  4       R8X  d   RpM†V^,          P                  4       R	8X  d   R
pMgV^,          P                  4       R8X  d   RpMHV^,          P                  4       R8X  d   RpM)V^,          P                  4       R8X  d   RpM
\        4       h\        V4      # )r5   Úrawzshow-rawzbefore-ruleszshow-beforez
user-rulesz	show-userzafter-rulesz
show-afterzlogging-ruleszshow-loggingÚbuiltinszshow-builtinsÚ	listeningzshow-listeningÚaddedz
show-addedrÚ   rÛ   s   && r   r   ÚUFWCommandShow.parseÿ  så   € ØˆÜˆt‹9˜Œ>Ü“,ÐØ�!�W�]‰]‹_ Ô%Ø‰FØ�!�W�]‰]‹_ Ô.Ø"‰FØ�!�W�]‰]‹_ Ô,Ø ‰FØ�!�W�]‰]‹_ Ô-Ø!‰FØ�!�W�]‰]‹_ Ô/Ø#‰FØ�!�W�]‰]‹_ 
Ô*Ø$‰FØ�!�W�]‰]‹_ Ô+Ø%‰FØ�!�W�]‰]‹_ Ô'Ø!‰Fä“,Ðä  Ó(Ð(r   r—   Nr¨   r*   s   @r   rç   rç   ù  s   ø‡ € Ù-ò1÷)ð )r   rç   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r   i  zClass for ufw parser responsec                óZ   € VP                  4       V n        R V n        R V n        / V n        R# )FN)r   rt   ÚdryrunÚforcers   )r   rt   s   &&r   r   ÚUFWParserResponse.__init__  s$   € Ø—l‘l“nˆŒØˆŒØˆŒ
ØˆŽ	r   c                ó  € R V P                   ,          p\        V P                  P                  4       4      pVP	                  4        V F&  pVRV: RV P                  V,          : R2,          pK(  	  VR,          p\        V4      # )zaction='%s'rI   z='rD   Ú
)rt   r°   rs   r„   ÚsortÚrepr)r   r¦   r„   r…   s   &   r   Ú__str__ÚUFWParserResponse.__str__!  sc   € Ø˜TŸ[™[Õ)ˆÜ�D—I‘I—N‘NÓ$Ó%ˆØ�	‰	ŒÛˆAÙ›q $§)¡)¨A§, ,Ð/Õ/ŠAñ à	ˆT�	ˆä�A‹wˆr   )rt   rs   ró   rô   N)	r#   r$   r%   r&   r'   r   rú   r(   r)   r*   s   @r   r   r     s   ø‡ € Ù'ò÷ð r   r   c                   ó<   a € ] tR tRt o RtR tR tR tR tRt	V t
R# )	Ú	UFWParseri,  zClass for ufw parserc                ó   € / V n         R # r	   ©Úcommands)r   s   &r   r   ÚUFWParser.__init__.  s	   € ØˆŽr   c                ó0  € VP                  4       \        V P                  P                  4       4      9  d   \	        4       hVP                  4       \        V P                  V,          P                  4       4      9  d   \	        4       hVP                  4       # )z=Return command if it is allowed, otherwise raise an exception)r   r°   r   r„   r   )r   r   Úcmds   &&&r   Úallowed_commandÚUFWParser.allowed_command1  sc   € à�:‰:‹<œt D§M¡M×$6Ñ$6Ó$8Ó9Ô9Ü“,Ðà�9‰9‹;œd 4§=¡=°Õ#6×#;Ñ#;Ó#=Ó>Ô>Ü“,Ðà�y‰y‹{Ðr   c                ó¢  € Rp\        V4      ^ 8”  d7   V^ ,          P                  4       R8X  d   RpVP                  V^ ,          4       Rp\        V4      ^ 8”  dS   V^ ,          P                  4       R8X  g   V^ ,          P                  4       R8X  d   RpVP                  V^ ,          4       RpRpV^ ,          P                  4       p\        V4      ^8”  d‡   V\        V P                  P                  4       4      9   d_   V^,          P                  4       \        V P                  V,          P                  4       4      9   d   TpV^,          P                  4       pM©Tp\        V P                  P                  4       4       Fw  pW@P                  V,          9   g   K  \        V P                  V,          V,          \        4      '       d,   \        V P                  V,          V,          R4      R8w  d   Ku  Tp M	  VR8X  d   RpV P                  WT4      pV P                  V,          V,          pVP                  V4      p	W)n        W9n        V	# )	z(Parse command. Returns a UFWParserActionFz	--dry-runTz--forcez-fr5   r   r/   )r   r   rW   r°   r   r„   Ú
isinstancer-   Úgetattrr  r   ró   rô   )
r   r    ró   rô   r  r   rŠ   r…   rt   Úresponses
   &&        r   Úparse_commandÚUFWParser.parse_command;  s¾  € àˆÜˆt‹9�qŒ=˜T !�WŸ]™]›_°Ô;ØˆFØ�K‰K˜˜Q�Ô àˆÜˆt‹9�qŒ=˜d 1�gŸm™m›o°Ô:Ø" 1�gŸm™m›o°Ô5ØˆEØ�K‰K˜˜Q�Ô àˆØˆà�1�g�m‰m‹oˆÜˆt‹9�qŒ=˜S¤D¨¯©×);Ñ);Ó)=Ó$>Ô>Ø�Q•—‘“¤4¨¯©°cÕ(:×(?Ñ(?Ó(AÓ#BÔBØˆDØ�q•'—-‘-“/‰Cð ˆCÜ˜$Ÿ-™-×,Ñ,Ó.Ö/�ØŸ-™-¨Õ*Ö*ô " $§-¡-°Õ"2°3Õ"7¼×HÒHÜ˜tŸ}™}¨QÕ/°Õ4°fÓ=ÀÔGÙ Ø�DÙñ 0ð �rŒzØ�à×%Ñ% dÓ0ˆà�m‰m˜DÕ! &Õ)ˆØ—9‘9˜T“?ˆØ ŒØŒàˆr   c                ó´  € VP                   e   VP                   R8X  d   RVP                  ,          pMRVP                   ,          pVP                  V P                  9  d   / V P                  VP                  &   W P                  VP                  ,          9   d   \        R4      V,          p\	        V4      hWP                  VP                  ,          V&   R# )z"Register a command with the parserNr5   z%szCommand '%s' already exists)r
   r   r   rE   r   )r   ÚcÚkeyr|   s   &&  r   Úregister_commandÚUFWParser.register_commandi  s–   € à�9‰9Ò §	¡	¨R¤à˜!Ÿ&™&•/‰Cà˜!Ÿ)™)Õ$ˆCà�6‰6˜Ÿ™Ô&Ø$&ˆD�M‰M˜!Ÿ&™&Ñ!Ø—-‘- §¡Õ'Ô'ÜÐ5Ó6¸#Õ>ˆGÜ˜7Ó#Ð#Ø%&�‰�a—f‘fÕ˜cÓ"r   rÿ   N)r#   r$   r%   r&   r'   r   r  r
  r  r(   r)   r*   s   @r   rý   rý   ,  s"   ø‡ € Ùòòò,÷\'ð 'r   rý   )rh   Úufw.utilr\   Úufw.applicationsÚ
ufw.commonr   r   r   r-   rš   rª   r»   rÂ   rÐ   rÞ   rç   r   rý   r—   r   r   Ú<module>r     sž   ðóJ 
Û Û Ý Ý ÷<ñ <ô*S,�Zô S,ôl>˜.ô >ôB8�Jô 8ôv	,�jô 	,ô+)˜
ô +)ô\)˜
ô )ô0�zô ô()�Zô )÷@ñ ÷&J'ó J'r   