
    Gkc^-                        d Z dZdZddlZd Z G d de      Z edd	d
d      Zg g dddgddgddgddgddgddgddgddgddgdd gd!d"gd#d$gd%d&gd'd(gd)d*gg d+d,d-gd.d/gd0d1gd2d3gd4d5gd6d7gd8d9gg d:d;d<gd=d>gd?d@gdAdBgdCdDgdEdFgg dGdHdIgdJdKgdLdMgdNdOgg dPdQdRgdSdTgdUdVgdWdXgdYdZgd[d\gd]d^gd_d`gdadbgdcddgdedfgdgdhgdidjgdkdlgdmdngdodpgdqdrgdsdtgdudvgdwdxgdydzgd{d|gd}d~gddgddgddgddgg dddgddgddgddgddgddgg dddgddgg dddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgg dddgddgddgddgddgddgg d͢ddgddgddgZdԄ Z	dՄ Z
dք Zy)zCyril Jaquierz Copyright (c) 2004 Cyril JaquierGPL    Nc                     t        |        y)zZDefault output handler for printing protocol. 
  Used to ease mocking in the test cases.
	N)print)ss    3/usr/lib/python3/dist-packages/fail2ban/protocol.pyoutputr      s     q    c                       e Zd Zd Zy)dotdictc                     | |   S )N )selfnames     r   __getattr__zdotdict.__getattr__'   s    	dr	   N)__name__
__module____qualname__r   r   r	   r   r   r   &   s    r	   r   r	   s   <F2B_END_COMMAND>s   <F2B_CLOSE_COMMAND>)EMPTYENDCLOSE) BASICr   startzstarts the server and the jailsrestartzrestarts the serverz&restart [--unban] [--if-exists] <JAIL>zBrestarts the jail <JAIL> (alias for 'reload --restart ... <JAIL>')z$reload [--restart] [--unban] [--all]zreloads the configuration without restarting of the server, the option '--restart' activates completely restarting of affected jails, thereby can unban IP addresses (if option '--unban' specified)z1reload [--restart] [--unban] [--if-exists] <JAIL>zIreloads the jail <JAIL>, or restarts it (if option '--restart' specified)stopz(stops all jails and terminate the serverzunban --allz3unbans all IP addresses (in all jails and database)zunban <IP> ... <IP>z'unbans <IP> (in all jails and database)bannedz*return jails with banned IPs as dictionaryzbanned <IP> ... <IP>]z4return list(s) of jails where given IP(s) are bannedstatusz%gets the current status of the serverpingztests if the server is aliveechoz;for internal usage, returns back and outputs a given stringhelpzreturn this outputversionzreturn the server version)r   LOGGINGr   zset loglevel <LEVEL>zsets logging level to <LEVEL>. Levels: CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG, TRACEDEBUG, HEAVYDEBUG or corresponding numeric value (50-5)zget loglevelzgets the logging levelzset logtarget <TARGET>zYsets logging target to <TARGET>. Can be STDOUT, STDERR, SYSLOG, SYSTEMD-JOURNAL or a filezget logtargetzgets logging targetzset syslogsocket auto|<SOCKET>zQsets the syslog socket path to auto or <SOCKET>. Only used if logtarget is SYSLOGzget syslogsocketzgets syslog socket path	flushlogszAflushes the logtarget if a file and reopens it. For log rotation.)r   DATABASEr   zset dbfile <FILE>zKset the location of fail2ban persistent datastore. Set to "None" to disablez
get dbfilez1get the location of fail2ban persistent datastorezset dbmaxmatches <INT>z<sets the max number of matches stored in database per ticketzget dbmaxmatchesz<gets the max number of matches stored in database per ticketzset dbpurgeage <SECONDS>z?sets the max age in <SECONDS> that history of bans will be keptzget dbpurgeagez=gets the max age in seconds that history of bans will be kept)r   zJAIL CONTROLr   zadd <JAIL> <BACKEND>zcreates <JAIL> using <BACKEND>zstart <JAIL>zstarts the jail <JAIL>zstop <JAIL>z*stops the jail <JAIL>. The jail is removedzstatus <JAIL> [FLAVOR]zHgets the current status of <JAIL>, with optional flavor or extended info)r   zJAIL CONFIGURATIONr   zset <JAIL> idle on|offzsets the idle state of <JAIL>z set <JAIL> ignoreself true|falsez'allows the ignoring of own IP addresseszset <JAIL> addignoreip <IP>z&adds <IP> to the ignore list of <JAIL>zset <JAIL> delignoreip <IP>z+removes <IP> from the ignore list of <JAIL>z set <JAIL> ignorecommand <VALUE>zsets ignorecommand of <JAIL>zset <JAIL> ignorecache <VALUE>zsets ignorecache of <JAIL>z%set <JAIL> addlogpath <FILE> ['tail']zmadds <FILE> to the monitoring list of <JAIL>, optionally starting at the 'tail' of the file (default 'head').zset <JAIL> dellogpath <FILE>z1removes <FILE> from the monitoring list of <JAIL>z!set <JAIL> logencoding <ENCODING>z/sets the <ENCODING> of the log files for <JAIL>z"set <JAIL> addjournalmatch <MATCH>z,adds <MATCH> to the journal filter of <JAIL>z"set <JAIL> deljournalmatch <MATCH>z1removes <MATCH> from the journal filter of <JAIL>zset <JAIL> addfailregex <REGEX>zHadds the regular expression <REGEX> which must match failures for <JAIL>zset <JAIL> delfailregex <INDEX>z7removes the regular expression at <INDEX> for failregexz!set <JAIL> addignoreregex <REGEX>zTadds the regular expression <REGEX> which should match pattern to exclude for <JAIL>z!set <JAIL> delignoreregex <INDEX>z9removes the regular expression at <INDEX> for ignoreregexzset <JAIL> findtime <TIME>zPsets the number of seconds <TIME> for which the filter will look back for <JAIL>zset <JAIL> bantime <TIME>zBsets the number of seconds <TIME> a host will be banned for <JAIL>z set <JAIL> datepattern <PATTERN>z6sets the <PATTERN> used to match date/times for <JAIL>zset <JAIL> usedns <VALUE>zsets the usedns mode for <JAIL>z3set <JAIL> attempt <IP> [<failure1> ... <failureN>]z"manually notify about <IP> failurezset <JAIL> banip <IP> ... <IP>zmanually Ban <IP> for <JAIL>z2set <JAIL> unbanip [--report-absent] <IP> ... <IP>zmanually Unban <IP> in <JAIL>zset <JAIL> maxretry <RETRY>zFsets the number of failures <RETRY> before banning the host for <JAIL>zset <JAIL> maxmatches <INT>zDsets the max number of matches stored in memory per ticket in <JAIL>zset <JAIL> maxlines <LINES>z@sets the number of <LINES> to buffer for regex search for <JAIL>z6set <JAIL> addaction <ACT>[ <PYTHONFILE> <JSONKWARGS>]zadds a new action named <ACT> for <JAIL>. Optionally for a Python based action, a <PYTHONFILE> and <JSONKWARGS> can be specified, else will be a Command Actionzset <JAIL> delaction <ACT>z$removes the action <ACT> from <JAIL>)r   zCOMMAND ACTION CONFIGURATIONr   z)set <JAIL> action <ACT> actionstart <CMD>z;sets the start command <CMD> of the action <ACT> for <JAIL>z(set <JAIL> action <ACT> actionstop <CMD>z:sets the stop command <CMD> of the action <ACT> for <JAIL>z)set <JAIL> action <ACT> actioncheck <CMD>z;sets the check command <CMD> of the action <ACT> for <JAIL>z'set <JAIL> action <ACT> actionban <CMD>z9sets the ban command <CMD> of the action <ACT> for <JAIL>z)set <JAIL> action <ACT> actionunban <CMD>z;sets the unban command <CMD> of the action <ACT> for <JAIL>z)set <JAIL> action <ACT> timeout <TIMEOUT>zPsets <TIMEOUT> as the command timeout in seconds for the action <ACT> for <JAIL>)r   zGENERAL ACTION CONFIGURATIONr   z*set <JAIL> action <ACT> <PROPERTY> <VALUE>z>sets the <VALUE> of <PROPERTY> for the action <ACT> for <JAIL>z/set <JAIL> action <ACT> <METHOD>[ <JSONKWARGS>]zDcalls the <METHOD> with <JSONKWARGS> for the action <ACT> for <JAIL>)r   zJAIL INFORMATIONr   zget <JAIL> bannedzreturn banned IPs of <JAIL>z get <JAIL> banned <IP> ... <IP>]zQreturn 1 if IP is banned in <JAIL> otherwise 0, or a list of 1/0 for multiple IPszget <JAIL> logpathz/gets the list of the monitored files for <JAIL>zget <JAIL> logencodingz-gets the encoding of the log files for <JAIL>zget <JAIL> journalmatchz(gets the journal filter match for <JAIL>zget <JAIL> ignoreselfz;gets the current value of the ignoring the own IP addresseszget <JAIL> ignoreipz0gets the list of ignored IP addresses for <JAIL>zget <JAIL> ignorecommandzgets ignorecommand of <JAIL>zget <JAIL> failregexzJgets the list of regular expressions which matches the failures for <JAIL>zget <JAIL> ignoreregexzPgets the list of regular expressions which matches patterns to ignore for <JAIL>zget <JAIL> findtimezIgets the time for which the filter will look back for failures for <JAIL>zget <JAIL> bantimez)gets the time a host is banned for <JAIL>zget <JAIL> datepatternz4gets the pattern used to match date/times for <JAIL>zget <JAIL> usednsz"gets the usedns setting for <JAIL>z$get <JAIL> banip [<SEP>|--with-time]zgets the list of of banned IP addresses for <JAIL>. Optionally the separator character ('<SEP>', default is space) or the option '--with-time' (printing the times of ban) may be specified. The IPs are ordered by end of ban.zget <JAIL> maxretryz.gets the number of failures allowed for <JAIL>zget <JAIL> maxmatcheszDgets the max number of matches stored in memory per ticket in <JAIL>zget <JAIL> maxlinesz-gets the number of lines to buffer for <JAIL>zget <JAIL> actionsz!gets a list of actions for <JAIL>)r   zCOMMAND ACTION INFORMATIONr   z#get <JAIL> action <ACT> actionstartz6gets the start command for the action <ACT> for <JAIL>z"get <JAIL> action <ACT> actionstopz5gets the stop command for the action <ACT> for <JAIL>z#get <JAIL> action <ACT> actioncheckz6gets the check command for the action <ACT> for <JAIL>z!get <JAIL> action <ACT> actionbanz4gets the ban command for the action <ACT> for <JAIL>z#get <JAIL> action <ACT> actionunbanz6gets the unban command for the action <ACT> for <JAIL>zget <JAIL> action <ACT> timeoutzCgets the command timeout in seconds for the action <ACT> for <JAIL>)r   zGENERAL ACTION INFORMATIONr   z!get <JAIL> actionproperties <ACT>z9gets a list of properties for the action <ACT> for <JAIL>zget <JAIL> actionmethods <ACT>z6gets a list of methods for the action <ACT> for <JAIL>z"get <JAIL> action <ACT> <PROPERTY>z<gets the value of <PROPERTY> for the action <ACT> for <JAIL>c            	         d} d}d}d}t         D ]  }|d   dk(  r|rt        d       d}d}t        |d         |k\  rd|z  |d	   z   |d	<   t        j                  |d	   |d
      D ]\  }|r4d| z  |d   z   d|t        |d         z
  z  z   |j                         z   }d}nd| |z   z  |j                         z   }t        |       ^  y )N   )   "   Fr   r   T    )drop_whitespace)protocolr   lentextwrapwrapstrip)INDENTMARGINWIDTHfirstHeadingmfirstnlines           r   printFormattedr9      s    	
	
 QqTRZL	":,
%1Y&
+!
1Q4==1ue< a<!A$QqT(:!;;aggiGDE&6/"QWWY.D	$<r	   c                      d} t         D ]Q  }|d   dk(  r"| rt        d       t        |d   |d          d} -t        d       t        d	|d   z   d
z   |d   z          S t        d       y )NFr   r   z|}r*      Tz|-z(| <span style="white-space:nowrap;"><tt>z</tt></span> || || )r,   r   __printWikiHeader)r4   r5   s     r   	printWikir=      sx    
 ^QqTRZ
4LQqT1Q4 <	$<	
61
=@U
UXYZ[X\
\]^ r	   c                     t        d       t        d| z   dz          t        d       t        |       t        d       t        d       t        d       y )Nr   z=== z ===z{|z'| '''Command''' || || '''Description''')r   )sectiondescs     r   r<   r<      s@    6!"12r	   )
__author____copyright____license__r.   r   dictr   CSPROTOr,   r9   r=   r<   r   r	   r   <module>rF      s  . 
2 
d  ! k k
+ ,k ! "k *+o p	k
 (  *p  qk 5  7B  Ck 	3 4k E Fk A Bk 
7 8k P Qk 
2 3k 	' (k 	F Gk 	 k  ' (!k" #k$  G H%k( ) *)k* v w+k, ' (-k. "#v w/k0 . /1k2 Q R3k4 5k6 e f7k8 B C9k: Y Z;k< S T=k> ^ _?k@ R SAkB CkD 9 :EkF ) *GkH < =IkJ e fKkL MkN : ;OkP $%N OQkR  H ISkT  M NUkV $%C DWkX "#? @YkZ )  +Z  [[k\  !T U]k^ %&W X_k` &'U Vakb &'Z [ckd #$n oekf #$] ^gkh %&| }ikj %&a bkkl q rmkn b cokp $%] ^qkr ? @skt 78\ ]ukv "#A Bwkx 67V Wykz  h i{k|  f g}k~  b ck@ :  <]  ^AkB E FCkD )EkF -.k lGkH ,-i jIkJ -.k lKkL +,g hMkN -.k lOkP -  /A  BQkR )SkT ./o pUkV 34z {WkX YkZ 3 4[k\ $%x y]k^ H I_k` J Kakb F Gckd W Xekf J Kgkh ; <ikj e fkkl m nmkn c dokp B Cqkr Q Rskt : ;ukv (  *K  Lwkx H Iykz ` a{k| G H}k~ : ;k@ &AkB '(` aCkD &'^ _EkF '(` aGkH %&\ ]IkJ '(` aKkL #$i jMkN 'OkP %&a bQkR "#[ \SkT &'e fUkd03r	   