a =Æ*f;$ã@s¼dZdZdZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z ddlmZd d lmZd d lmZmZmZmZmZeeƒZGd d „d eƒZGdd„de ƒZGdd„deƒZdS)z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierZGPLéNé)ÚConfigReaderUnsharedÚ ConfigReaderÚNoSectionError)Ú FilterReader)Ú ActionReaderé)Úversion)Ú _merge_dictsÚ getLoggerÚextractOptionsÚsplitWithOptionsÚ splitwordsc@s eZdZdS)Ú NoJailErrorN©Ú__name__Ú __module__Ú __qualname__©rrú>/usr/lib/python3.9/site-packages/fail2ban/client/jailreader.pyr*src@s>eZdZd!dd„Zedd„ƒZdd„Zdd „Zd d „Zd d „Z e dd„ƒZ ddgddgddgdœZ ddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgdœZ e  ej ¡egd¢eej  ¡ƒƒZd"dd„Zedd„ƒZdd„Zd#dd „ZdS)$Ú JailReaderFcKs6tj|fi|¤Ž||_d|_||_tƒ|_d|_dS©N)rÚ__init__Ú_JailReader__nameÚ_JailReader__filterÚ_JailReader__force_enableÚlistÚ_JailReader__actionsÚ_JailReader__opts)ÚselfÚnameZ force_enableÚkwargsrrrr/s zJailReader.__init__cCs|jSr)r©rrrrÚoptions7szJailReader.optionscCs ||_dSr©r)rÚvaluerrrÚsetName;szJailReader.setNamecCs|jSrr$r"rrrÚgetName>szJailReader.getNamecCs,t |d¡}|j| ¡vr(td|jƒ‚|S)NZjailz%Jail %r was not found among available)rÚreadrZsectionsr)rÚoutrrrr(As  ÿzJailReader.readcCs|jp|jo|j dd¡S)NÚenabledF)rrÚgetr"rrrÚ isEnabledJsÿzJailReader.isEnabledcCs>g}t |¡D]*}tj |¡r*| |¡qt d|¡q|S)z|Given a path for glob return list of files to be passed to server. Dangling symlinks are warned about and not returned z4File %s is a dangling link, thus cannot be monitored)ÚglobÚosÚpathÚexistsÚappendÚlogSysÚwarning)r/ÚpathListÚprrrÚ_globNs   zJailReader._globÚboolÚstringÚautoÚ)r*ÚbackendÚfilterÚintN)r*r;ZmaxretryZ maxmatchesZfindtimeZbantimezbantime.incrementzbantime.factorzbantime.formulazbantime.multiplierszbantime.maxtimezbantime.rndtimezbantime.overalljailsZ ignorecommandZ ignoreselfÚignoreipZ ignorecacher<Z logtimezoneZ logencodingÚlogpathÚaction)r@r<r*r;c Csn| ¡}| t|dœ¡zútj||j|jdd|_|jsBtdƒ‚|rTt |j|ƒ|_|  ¡sbWdS|jd}|r:zt |ƒ\}}Wn4t y¶}ztd||fƒ‚WYd}~n d}~00|rÆt ||ƒ}t ||j||j|d|_|j ¡}|søtd|ƒ‚|j |j d d ¡¡|jj|jdd t ||j|j ¡d ¡nd|_t d |j¡t ||j|j¡|_|jsttdƒ‚|jrŠ|j |j¡t|jdƒD]Z}zø| ¡}|s´Wq˜zt |ƒ\} } Wn6t yú}ztd||fƒ‚WYd}~n d}~00|  d¡rJ|j d|jd|  dtj  | ¡d¡tj !|d| ¡t" #| ¡g¡nJt$| |j| |j|d} |  ¡}|rˆ|  |j¡|j | ¡n td| ƒ‚WnZty¬‚YnFt%yð}z,tj&d|ddt d||fƒ‚WYd}~n d}~00q˜t'|jƒst d|j¡WnTtyh}z:t(|ƒ}t )|¡|jsHt*ƒ|_||jd<WYd}~dSd}~00dS)N)Zfail2ban_versionZfail2ban_confpathT)Z shouldExistzInit jail options failedr<z Invalid filter definition %r: %s)Ú share_configÚbasedirzUnable to read the filter %rr;r:)Úallzknown/zNo filter set for jail %szRead jail options failedr@z Invalid action definition %r: %sz.pyÚsetZ addactionZactnamerzaction.dzUnable to read action %rzCaught exception: %s)Úexc_infoz!Error in action definition %r: %rzNo actions were defined for %sú config-errorF)+Z getBaseDirZmerge_defaultsr rÚ getOptionsrÚ_configOpts1strÚ JailDefErrorr r,r Ú ValueErrorrrArr(ZapplyAutoOptionsr+Z merge_sectionÚ getCombinedr2r3Ú _configOptsr ÚstripÚendswithrr1Úpopr.r/ÚsplitextÚjoinÚjsonÚdumpsrÚ ExceptionÚdebugÚlenÚstrÚerrorÚdict) rZaddOptsrBZfltZ filterNameZ filterOptÚeÚretZactZactNameZactOptr@rrrrG}s¨þÿ & þ  & ÿù þ *   zJailReader.getOptionscCs|jSr)rr"rrrr<åszJailReader.filtercCs|js |jSt|j|j ¡ƒSr)rrr rKr"rrrrKészJailReader.getCombinedc Csðg}g}|j d¡}|r6| dd|j|fgg¡|S|jrL| |j ¡¡t ||j|j¡|j dd¡}|j ¡D]\}}|dkrL|  d¡r–qvd}|  d¡D]|} |   d d ¡} t | ƒd krÄ| n | dd f\} } t  | ¡} t | ƒdkrøt d | ¡| D]"} |d 7}| d |jd| | g¡qüq¤|sd|j} |s@t| ƒ‚t | ¡qv|dkrr| d |jdgt|ƒ¡qv|t jvrv| d |j||g¡qv|r ||7}|jD]0}t|ttfƒrÊ| | ¡¡n | |¡q¦| dd|j|g¡|S)zÀConvert read before __opts to the commands stream Parameters ---------- allow_missing : bool Either to allow log files to be missing entirely. Primarily is used for testing rFz5Jail '%s' skipped, because of wrong configuration: %sr;r9r?ZsystemdrÚ ú rÚheadzNo file(s) found for glob %srDZ addlogpathz'Have not found any log file for %s jailr>Z addignoreipÚadd)rr+ÚextendrrÚconvertrZ _fillStreamÚitemsÚ startswithÚsplitÚrsplitrVrr6r2Znoticer1rJr3rÚ _ignoreOptsrÚ isinstancerrÚinsert)rZallow_no_filesÚstreamZstream2rZr;Úoptr%Z found_filesr/Útailr4r5Úmsgr@rrrraîsR        ÿ     zJailReader.convert)F)N)F)rrrrÚpropertyr#r&r'r(r,Ú staticmethodr6rHrLÚupdaterrDrÚkeysrfrGr<rKrarrrrr-sV    ýê  h rc@s eZdZdS)rINrrrrrrI&srI)Ú __author__Z __copyright__Z __license__r-rRZos.pathr.ÚreZ configreaderrrrZ filterreaderrZ actionreaderrr Zhelpersr r r r rrr2rJrrrTrIrrrrÚs    z