ogf"dZdZdZddlZddlZddlZddlZddlm Z m Z ddl m Z ddl mZd d lmZd d lmZmZmZmZeeZGd d e ZGddeZy)z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierGPLN)ConfigReaderUnshared ConfigReader) FilterReader) ActionReader)version) getLoggerextractOptionssplitWithOptions splitwordsceZdZd%dZedZdZdZdZdZ e dZ d dgd d gd d gd Z idd dgdd d gdddgdddgdd dgdd dgdd dgdd dgdd dgdd dgdd dgdd dgdd dgdd dgdd dgdd dgd d dgd d gd dgd dgd dgd d gd!Z e jejegd"eejj%zZd#Zd%d$Zy)& JailReaderFc tj|fi|||_d|_||_t |_d|_yN)r__init___JailReader__name_JailReader__filter_JailReader__force_enablelist_JailReader__actions_JailReader__opts)selfname force_enablekwargss sI$'# ++ ( ; ++  *rcr|jxs*|jxr|jjddS)NenabledF)rrgetr!s r isEnabledzJailReader.isEnabledGs0   6;;44;;??9e46rcg}tj|D]K}tjj|r|j |4t j d|zM|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)globospathexistsappendlogSyswarning)r6pathListps r_globzJailReader._globKsW ( 99T?OaggnnQ OOA NNIAMN O /rboolstringauto)r0backendfilterr0rBmaxretryintN maxmatchesfindtimebantimezbantime.incrementzbantime.factorzbantime.formulazbantime.multiplierszbantime.maxtimezbantime.rndtimezbantime.overalljails ignorecommand ignoreselfignoreip ignorecache)rC logtimezone logencodinglogpathaction)rPrCr0c T |j}|jt|d tj||j |j d|_|js td|jsy|jd}|r t|\}}t||j ||j||_|jj}|std |z|jj!|jj#d d |jj |jd tj$||j |jj'd n)d|_t(j+d|j ztj||j |j,|_|js td|jr%|jj |jt/|jdD]@} |j1}|s t|\}} |j3dr|j4j7d|j d| j9dt:j<j?|dt:j<jA|d|tCjD| gn{tG||j | |j|} | j}|r7| j |j|j4j7| ntd|zCtM|j4s"t(j+d|j zy#t$r}td|d|d}~wwxYw#t$r}td|d|d}~wwxYw#t$rtH$r.}t(jKd|dtd|d|d}~wwxYw#t$rT}tO|}t(jQ||jstS|_||jd<Yd}~yd}~wwxYw)N)fail2ban_versionfail2ban_confpathT) shouldExistzInit jail options failedrCzInvalid filter definition z: ) share_configbasedirzUnable to read the filter %rrBrA)allzknown/zNo filter set for jail %szRead jail options failedrPzInvalid action definition z.pyset addactionactnamerzaction.dzUnable to read action %rzCaught exception: %s)exc_infozError in action definition zNo actions were defined for %s config-errorF)* getBaseDirmerge_defaultsr r getOptionsr_configOpts1str JailDefErrorr2r r-rrUrr+applyAutoOptionsr1 merge_section getCombinedr9r: _configOptsr stripendswithrr8popr5r6splitextjoinjsondumpsr Exceptiondebuglenstrerrordict) rrVflt filterName filterOpteretactactNameactOptrPs rr_zJailReader.getOptionszs OO ' W((t{{D ??;"FF dnn  NN3dkkAB Q G c1E FFGF H sAF GGH,   F \\(!d\; S!D EEF  1v1 <<? ++&DK!"4;;~  sAQ Q O$F'Q PQ O%.DP:Q  O" OO""Q % P.O??PPQ)QQQ R'A R""R'c g}g}|jjd}|r&|jdd|jd|gg|S|jr)|j|jj t j||j|j|jjD]\}}|dk(r |jjddjdr9d}|jd D]}|jd d }t|d kDr|n|dd f\}} tj|} t| dk(rtj!d |z| D]'} |d z }|j#d|jd| | g)|rd|jz} |s t%| tj'| |dk(r|} #|dk(r,|j#d|jdgt)|zT|tj*vsh|j#d|j||g|r||z }|j,D]I}t/|t0t2fr |j|j 9|j#|K|j5dd|j g|S)zConvert 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 r\zJail 'z+' skipped, because of wrong configuration: rOrBrAsystemdr  rheadzNo file(s) found for glob %srX addlogpathz'Have not found any log file for %s jailrK addignoreipadd)rr1extendrrconvertr _fillStreamitems startswithsplitrsplitrorr=r9noticer8r-r:r _ignoreOptsr isinstancerrinsert)rallow_no_filesstreamstream2rvoptr% found_filesr6tailr;r<msgrBrPs rrzJailReader.convertss & ' kkoon%! ==>^b^i^ikl#mnop = ]] ==&&()64;; <KK%%'4jc5 Y {{y"%00;XK D! 4 KKQ Td)a-$d1gv->ZT4  &X H  mm2T9:4Qk nn t{{L!T244 4  4t{{ BS  sO ^^C yG z MM5$++}5 58IIJ :))) MM5$++sE23346 fff. => MM&.."# MM&   --E4;;01 -r)F)__name__ __module__ __qualname__rpropertyr"r&r(r+r2 staticmethodr=r`reupdaterrXrkeysrr_rrrrr*s   6  e_  rN  fe_ h  udm   x   h  ~Xt$h%(D)h%h%64.Hd#  x!"(D!#$rND!D!  rN-0 L,,-2T,:R:R:W:W:Y5ZZ[bH7rrc eZdZy)raN)rrrrrrrarasrra) __author__ __copyright__ __license__r4rkos.pathr5re configreaderrr filterreaderr actionreaderrr helpersr r r rrr9rrmrarrrrs[. 2   <&&MM 8 kkZ9r