a =Æ*fÕ?ã@sRdZdZdZddlZddlZddlmZmZddlm Z ee ƒZ Gdd „d ƒZ dS) z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierZGPLéNé)Ú getLoggerÚlogging)Úversionc@s>eZdZdd„Zdd„Zdd„Zddd „Zd d „Zd d „ZdS)Ú TransmittercCs||_d|_dS)Nr)Ú_Transmitter__serverÚ_Transmitter__quiet)ÚselfZserver©r ú?/usr/lib/python3.9/site-packages/fail2ban/server/transmitter.pyÚ__init__,szTransmitter.__init__c Csrt dd|¡z| |¡}d|f}WnHtyl}z0tjd||t ¡tjkdd|f}WYd}~n d}~00|S)Néz Command: %rrz"Command %r has failed. Received %r)Úexc_infoé)ÚlogSysÚlogÚ_Transmitter__commandHandlerÚ ExceptionÚerrorZgetEffectiveLevelrÚDEBUG)r ÚcommandÚretZackÚer r r Úproceed6s   þzTransmitter.proceedc CsF|d}|dkrdS|dkrp|d}|dkr:td|fƒ‚z |d}Wnty\d }Yn0|j ||¡|S|d krŒ| |dd…d ¡S|d kr¦| |dd…¡S|d krÆ|d}|j |¡dS|dkrt|ƒdkrè|j ¡n.|ddkr|j ¡n|d}|j  |¡dS|dkrž|dd…}d|_ zH|jj |dd iŽ|dD]}|  |¡qRWd|_ |jj |ddiŽnd|_ |jj |ddiŽ0dS|dkröt|ƒdkrö|dd…}t|ƒdkrè|ddkrè|j  ¡S|j  d|¡S|dkr|j d|dd…¡S|dkr,|dd…S|dkrDt d¡dS|dkr†d|_ z$|dD]}|  |¡q^Wd|_ nd|_ 0dS|dkrª|d}t t|ƒ¡dS|dkr¾|j ¡S|dkrÚ| |dd…¡S|dkrö| |dd…¡S|dvr|j dd ¡S|d!krtjS|d"kr:t |d¡dStd#ƒ‚dS)$NrZpingZpongÚaddrú--allzReserved name %rrÚautoz multi-setTÚsetÚstartÚstopÚreloadéZbeginFZOKZunbanÚbannedZechoz server-statusz Status: readyz Server readyz server-streamÚsleepZ flushlogsÚgetÚstatus)ÚstatsZ statisticZ statisticsr&rz config-errorzInvalid command)rÚ IndexErrorrZaddJailÚ_Transmitter__commandSetZ startJailÚlenÚquitZ stopAllJailZstopJailrZ reloadJailsrÚ setUnbanIPr"rÚdebugÚtimer#ÚfloatZ flushLogsÚ_Transmitter__commandGetr%rr)r rÚnameZbackendZoptsÚcmdÚvaluer r r Z__commandHandlerHsœ            ÿ                 zTransmitter.__commandHandlerFcCsJ |d}|dkr8|d}|j |¡|jr.dS|j ¡S|dkrt|d}|j |¡rh|jr^dS|j ¡Stdƒ‚ nÀ|dkr°|d}|j |¡r¤|jršdS|j ¡Stdƒ‚ n„|dkrÚ|d}|j  |¡|jrÖdS|S|d krø|d}|j  |¡S|d kr@|j  |d¡|j  ¡}|dur*dS|jr6dS|j S nô|d kr”|j  ¡}|durpt tjd ¡dSt|dƒ|_|jrŠdS|jS n |d krä|j  ¡}|durÄt tjd¡dS|d|_|jrÚdS|jS nP|ddkrN|ddkr|j |d¡n&|ddkr.|j |d¡ntdƒ‚|jrBdS|j |¡S|ddkrŠ|d}|j ||¡|jr~dS|j |¡S|ddkrÒ|dd…D]}|j ||¡q¤|jrÆdS|j |¡S|ddkr|d}|j ||¡|jrdS|j |¡S|ddkrJ|d}|j ||¡|jr>dS|j |¡S|ddkr†|d}|j ||¡|jrzdS|j |¡S|ddkr |d}d}t |ƒdkrâ|d !¡dkrÆd}n|d !¡dkrøt"d ƒ‚nt |ƒdkrøt"d!ƒ‚|j #|||¡|jrdS|j $|¡S|dd"kr\|d}|j %||¡|jrPdS|j $|¡S|dd#kr˜|d}|j &||¡|jrŒdS|j '|¡S|dd$krØ|dd…}|j (||¡|jrÌdS|j )|¡S|dd%kr|dd…}|j *||¡|jr dS|j )|¡S|dd&krf|d}|j +||¡|jrHdS|j ,|¡}|rb| -¡Sd'S|dd(kr°|d}|jj.|||d)|r˜dS|jr¤dS|j /|¡S|dd*krðt|dƒ}|j 0||¡|jrädS|j /|¡S|dd+kr:|d}|jj1|||d)|r"dS|jr.dS|j 2|¡S|dd,krzt|dƒ}|j 3||¡|jrndS|j 2|¡S|dd-kr¶|d}|j 4||¡|jrªdS|j 5|¡S|dd.krò|d}|j 6||¡|jrædS|j 7|¡S|dd/kr.|d}|j 8||¡|jr"dS|j 9|¡S|dd0krj|d}|j :||¡|jr^dS|j ;|¡S|dd1krª|d}|j <|t|ƒ¡|jrždS|j =|¡S|dd2krê|d}|j >|t|ƒ¡|jrÞdS|j ?|¡S|dd3kr*|d}|j @|t|ƒ¡|jrdS|j A|¡S|dd4krf|d}|j B||¡|jrZdS|j C|¡S|dd5kr |dd…}|jrŒdS|jjD|g|¢RŽS|d Ed6¡rö|d}|dt d6ƒd…}|j F|||¡|jrèdS|j G||¡S|dd7k r|dd…}|j H||¡S|dd8k rnd} |dd9k rL|dd…}nd} |dd…}|jjI||| d:S|dd;k rØ|dg} t |ƒdk r°|  J|dtK L|d¡g¡|jjM|g| ¢RŽ|j rÐdS| dS|ddd?| ¡| d}tPtQ| |dƒƒ r”t | ƒdk rztK L| d¡ni}tQ| |ƒfi|¤Žn| d}tR| ||ƒ q2dS|d}tPtQ| |dƒƒ r t |ƒdk rætK L|d¡ni}|j rödStQ| |ƒfi|¤ŽS|d}tR| ||ƒ|j r*dStQ| |ƒStd@|dfƒ‚dS)ANrÚloglevelrÚ logtargetzFailed to change log targetÚ syslogsocketzFailed to change syslog socketZ allowipv6ÚthreadÚdbfileÚ dbmaxmatchesz6dbmaxmatches setting was not in effect since no db yetÚ dbpurgeagez4dbpurgeage setting was not in effect since no db yetZidlerZonTZoffFz*Invalid idle option, must be 'on' or 'off'Ú ignoreselfZ addignoreipZ delignoreipÚ ignorecommandÚ ignorecacheZ addlogpathér!ÚtailÚheadz$File option must be 'head' or 'tail'z$Only one file can be added at a timeZ dellogpathÚ logencodingZaddjournalmatchZdeljournalmatchÚ prefregexÚZ addfailregex)ÚmultipleZ delfailregexZaddignoreregexZdelignoreregexÚusednsÚfindtimeÚ datepatternÚ logtimezoneÚ maxmatchesÚmaxretryÚmaxlinesÚbantimeZattemptúbantime.ÚbanipZunbanipz--report-absent)ÚifexistsZ addactionZ delactionÚactionr z %rz9Invalid command %r (no set action or not yet implemented))SrZ setLogLevelrÚ getLogLevelZ setLogTargetÚ getLogTargetrZsetSyslogSocketÚgetSyslogSocketZsetIPv6IsAllowedZsetThreadOptionsZ setDatabaseÚ getDatabaseÚfilenamerrrZMSGÚintÚ maxMatchesÚpurgeageZ setIdleJailZ getIdleJailZ setIgnoreSelfÚ getIgnoreSelfZ addIgnoreIPÚ getIgnoreIPZ delIgnoreIPZsetIgnoreCommandÚgetIgnoreCommandZsetIgnoreCacheÚgetIgnoreCacher)ÚlowerÚ ValueErrorZ addLogPathÚ getLogPathZ delLogPathZsetLogEncodingÚgetLogEncodingZaddJournalMatchÚgetJournalMatchZdelJournalMatchZ setPrefRegexÚ getPrefRegexÚgetRegexZ addFailRegexÚ getFailRegexZ delFailRegexZaddIgnoreRegexÚgetIgnoreRegexZdelIgnoreRegexZ setUseDnsÚ getUseDnsZ setFindTimeÚ getFindTimeZsetDatePatternÚgetDatePatternZsetLogTimeZoneÚgetLogTimeZoneZ setMaxMatchesÚ getMaxMatchesZ setMaxRetryÚ getMaxRetryZ setMaxLinesÚ getMaxLinesZ setBanTimeÚ getBanTimeZ addAttemptIPÚ startswithZsetBanTimeExtraÚgetBanTimeExtraZsetBanIPr+ÚextendÚjsonÚloadsZ addActionZ delActionÚ getActionÚcallableÚgetattrÚsetattr)r rrCr0r2Údbr>ÚvÚoptrNÚargsÚ actionnamerOr1Z actionkeyÚ actionvaluer r r Z __commandSetœsÞ                                                                                                  zTransmitter.__commandSetcs|d}|dkr|j ¡S|dkr,|j ¡S|dkr>|j ¡S|dkrP|j ¡S|dkrx|j ¡}|durndS|jSnŒ|dkr |j ¡}|dur–dS|jSnd|dkrÈ|j ¡}|dur¾dS|jSn<|d d krì|j  ||d d…¡S|d d kr|j  |¡S|d d kr |j  |¡S|d dkr:|j  |¡S|d dkrT|j  |¡S|d dkrn|j |¡S|d dkrˆ|j |¡S|d dkr¢|j |¡S|d dkrÎ|j |¡}|rÊ| ¡SdS|d dkrè|j |¡S|d dkr|j |¡S|d dkr|j |¡S|d dkr6|j |¡S|d dkrP|j |¡S|d dkrj|j |¡S|d dkr„|j |¡S|d dkrž|j |¡S|d dkr¸|j |¡S|d dkrÒ|j |¡S|d dkr|jj|t|ƒd ko|d d kd!S|d  d"¡r8|d td"ƒd…}|j  ||¡S|d d#krZt!|j "|¡ #¡ƒS|d d$kr|d }|d%}|j $||¡‰t%ˆ|ƒS|d d&krÊ|d }|j $||¡‰‡fd'd(„t&ˆƒDƒS|d d)kr|d }|j $||¡‰‡fd*d(„t&ˆƒDƒSt'd+ƒ‚dS),Nrr3r4r5r6r7r8r9rr"rZlogpathr@Z journalmatchr:Zignoreipr;r<rArBZ failregexZ ignoreregexrDrErFrGrHrIrJrKrMz --with-time)ZwithTimerLÚactionsrOr!Zactionpropertiescs(g|] }| d¡sttˆ|ƒƒs|‘qS©Ú_©rmrsrt©Ú.0Úkey©rOr r Ú ös þz,Transmitter.__commandGet..Z actionmethodscs(g|] }| d¡sttˆ|ƒƒr|‘qSr}rr€rƒr r r„ýsÿz6Invalid command (no get action or not yet implemented))(rrPrQrRZgetThreadOptionsrSrTrVrWr"r^r_r`rXrYrZr[rarbrcrdrerfrgrhrirjrkrlZ getBanListr)rmrnÚlistZ getActionsÚkeysrrrtÚdirr)r rr0rvrwrxrzr{r rƒr Z __commandGets´                            ÿ  ÿ ÿzTransmitter.__commandGetcCs€t|ƒdkr|j ¡St|ƒdkrtt|ƒdkrt|d}t|ƒdkrJ|dnd}|dkrd|j d|¡S|jj||dStdƒ‚dS)NrrrZbasicr)ÚflavorzInvalid command (no status))r)rr%Z statusJailr)r rr0rˆr r r r%s  zTransmitter.statusN)F) Ú__name__Ú __module__Ú __qualname__r rrr(r/r%r r r r r%s T er) Ú __author__Z __copyright__Z __license__r-rpZhelpersrrrBrr‰rrr r r r Ús