a =*f@spdZdZdZddlmZddlZddlmZmZdd l m Z m Z e e Z ejZGd d d ZGd d d eZdS)z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierZGPL)LockN) FailTicket BanTicket) getLogger BgServicec@sxeZdZddZddZddZddZd d Zd d Zd dZ ddZ dddZ ddZ ddZ ddZdddZdS) FailManagercCs4t|_t|_d|_d|_d|_d|_t|_ dS)NiXr) r_FailManager__lockdict_FailManager__failList_FailManager__maxRetry_FailManager__maxTime_FailManager__failTotal maxMatchesr_FailManager__bgSvcselfr?/usr/lib/python3.9/site-packages/fail2ban/server/failmanager.py__init__(szFailManager.__init__cCs ||_dSNrrvaluerrr setFailTotal1szFailManager.setFailTotalcCs|jSrrrrrr getFailTotal4szFailManager.getFailTotalcCsP|j6t|jtddt|jDfWdS1sB0YdS)NcSsg|] }|qSrgetRetry).0frrr :z,FailManager.getFailCount..)r lenrsumlistvaluesrrrr getFailCount7szFailManager.getFailCountcCs ||_dSrrrrrr setMaxRetry<szFailManager.setMaxRetrycCs|jSrr*rrrr getMaxRetry?szFailManager.getMaxRetrycCs ||_dSrrrrrr setMaxTimeBszFailManager.setMaxTimecCs|jSrr-rrrr getMaxTimeEszFailManager.getMaxTimerFc Csd}|j|}z|j|}||ur4d}d}n*|jrB|nd}|}|dkr^|d7}|} || |j| ||||jr|}t ||jkr| ||j dn | dWnzt y<|st |tr|YWdSt |tr |}n t|}||kr.||||j|<Yn0|}|jd7_ttkrddd|jD} ttd|jt |j| fWdn1s0Y|j|S)Nrrz, cSs g|]\}}d||fqS)z%s:%dr)r!kvrrrr#vsz*FailManager.addFailure..zMTotal # of detected failures: %d. Current failures from %d IPs (IP:count): %s)r ZgetIDrrZ getMatchesZ getAttemptgetTimeZ adjustTimerZincr%Z setMatchesKeyError isinstancerr rwrapZsetRetryrlogSysZgetEffectiveLevellogLeveljoinitemslogrservice) rticketcountZobservedZattemptsfidZfDatamatchesZattemptZunixTimeZfailures_summaryrrr addFailureHsP      & zFailManager.addFailurecCs t|jSr)r%rrrrrsize~szFailManager.sizecs|j8|jfdd|jD}t|t|jkrFt|_nt|s^WddSt|dt|jdkr|D] }|j|=q|ntfdd|jD|_Wdn1s0Y|jdS)Ncs g|]\}}|kr|qSrr2r!r>itemtimerrr#s  z'FailManager.cleanup..g@g@c3s&|]\}}|kr||fVqdSrrBrCrErr s  z&FailManager.cleanup..)rr rr9r%r rr;)rrFZtodeleter>rrErcleanups   <zFailManager.cleanupc CsJ|j0z |j|=Wnty&Yn0Wdn1s<0YdSr)r rr3)rr>rrr delFailures   zFailManager.delFailureNcCs|jj|dur ||jvr |gn|jD]:}|j|}||jkr&|j|=|WdSq&Wdn1sv0Y|jtdSr)r rr rrr;FailManagerEmpty)rr>datarrrtoBans" 6 zFailManager.toBan)rF)N)__name__ __module__ __qualname__rrrr)r+r,r.r/r@rArHrIrLrrrrr &s  6r c@s eZdZdS)rJN)rMrNrOrrrrrJsrJ) __author__Z __copyright__Z __license__ threadingrZloggingr<rrZhelpersrrrMr6DEBUGr7r ExceptionrJrrrrs