ogf4dZdZdZddlZddlZddlZddlmZejdZ ejdZ d ejd d ejd d d d dd gZ dZdZdZdZdZdZdZde ede ede e<de ede ed e e<de ede ede ede e<e ee ee ee ee ee ee ee ee ee ee ee edddZdddZ ej.d d!ejd"d#fZd%Zd&Zd'ZeefZejd(dj;ezd)zZGd*d+ZGd,d-e Z!d.Z"e"d/zZ#Gd0d1eZ$y#d$ZY`xYw)2z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierGPLN)IPAddrz z^(/?)F-([A-Z0-9_\-]+)$z(?:::f{4,6}:)?(?P)z(?Pz(?P[\w\-.^_]*\w)z (?P\d+)z\[?(?:|z)\]?z(?:z)(?:/z)?\]?z (?P\S+)z(?P\w+))IP4zF-IP4/IP6zF-IP6/ADDRzF-ADDR/CIDRzF-CIDR/SUBNETz F-SUBNET/DNSzF-DNS/zF-ID/zF-PORT/fidfport)idportz ^re(?i:val)$reVALz(?4;4?411 T1SVc-PQBR>S5SQ T&qAA GGAJ 1771:.Q [ ooaU# !u%&??(+DOO((?:(?:.*\n)*?))rrz(?P<>) r:R_HOSTRI_HOSTRI_ADDRRH4TAGKeyError FCUSTNAME_CREr9groupsrr!)mrtnrSopenTagspropsuseDnss r substTagz'Regex._resolveHostTag..substTags 3 Ab 2Fl V72' @@ @@K tBq&E$K /2% 77 ":   21  A 1Bt R  ZHRL BB  :sA A#"A#)dictFTAG_CREr-)rDrerfrcrds ` @@r r)zRegex._resolveHostTags1V( %$N h &&r"c|jSr)r2rPs r getRegexzRegex.getRegexs r"c zdj|Dcgc]}dj|dddc}dzScc}w)N rr)join) tupleLinesvs r _tupleLinesBufzRegex._tupleLinesBufs4 Z8BGGAccFO8 9D @@8s8Nc|}t|tstj|}|jj ||_|j r||}t|dkr||_g|_ y |j jjdd|j jdzdz} |j jjd|j jdz dz}|j jj!dd|}|j jj!dd|}||||_|d||_ d}|j#D]z} t%|j|dD]]\} } dj'| ddd| k(s!|jj)|jj+|| z|| z }z||jj-||dyy#t$rd}YdwxYw#t$r#t|j j}YNwxYw)Nrrlrrr) isinstancestrr&rpr1searchr(r6_matchedTupleLines_unmatchedTupleLinesstringrindexstart ValueErrorindexendcountgetSkippedLines enumeratermr<popextend) rCrnorgLinesbufmatchLineStart matchLineEnd lineCount1 lineCount2rH skippedLineramatchedTupleLines r rtz Regex.searchsL# J $   j )3^^**3/$ : (mq&D "D&&--44 At%%'*-/01^ 1$$++11 D   "Q &(*+,\ !!((.. 1nJ!!((.. 1lJ&z*=D (* 5D A++- ) ab!!#   !#A#& '; 6   '' ##AaC(*Avq    $$Xjk%:;G ^ 1((//0\1s&7AH=AH$ H! H!$(IIc|jryy)NTF)r(rPs r hasMatchedzRegex.hasMatched$s   r"c6|jjSr)r( groupdictrPs r rAzRegex._getGroups.s   # # %%r"c|jj}|jr?|jD]0\}}|j|}|s|j|r,|||<2|jrV|jD]G\}}|j|}|j|}t |t r||fz }n||f}|||<I|Sr)r(rr3rr4rrtuple)rCfailrGrHrots r r@zRegex._getGroupsWithAlt1s   # # %$ __oosq  A!T!W  sq  A  A!U1$YQ AQDG +r"cyrrrPs r rBzRegex.getGroupsFsr"c.|jsgSd}d} |jjd|z!||jjd|zz }|dz }F#t$rYn!t$rdtj vrYnwxYw|j dS)Nrrz skiplines%irPyPyF)r(r: IndexErrorr^sysversion splitlines)rC skippedLinesrHs r r~zRegex.getSkippedLinesOs   9,!    ma/0<T%%++MA,=>>\FA     S[[       ''sAA B%BBc>|jsgS|jSr)rrvrPs r getUnmatchedTupleLineszRegex.getUnmatchedTupleLineshs   9  # ##r"c|jsgS|jDcgc]}dj|c}Scc}wNr)rrvrmrClines r getUnmatchedLineszRegex.getUnmatchedLinesns3   9%)%>%> ?T2774= ?? ?<c>|jsgS|jSr)rrurPs r getMatchedTupleLineszRegex.getMatchedTupleLines{s   9  ! !!r"c|jsgS|jDcgc]}dj|c}Scc}wr)rrurmrs r getMatchedLineszRegex.getMatchedLiness3   9%)%<%< =T2774= == =r)F)yesr)rO __module__ __qualname__rKrQ staticmethodr)rjrprtrrAr@rBr~rrrrrr"r r&r&ysr iD;.'.'l AA(<\&*(2$ @" >r"r&c eZdZy)r+N)rOrrrr"r r+r+sr"r+)rip4ip6dns)mlfidc*eZdZddZefdZdZdZy) FailRegexNc 0tj||fi|tDcgc]}||jjvs|c}sH|-tDcgc]}||jjvs|c}st d|j zyycc}wcc}w)NzNo failure-id group in '%s')r&rKFAILURE_ID_PRESENTSr1r5r+r2)rCrD prefRegexrFgrps r rKzFailRegex.__init__s..u''- R38Q8Q1Q3 R+Usi6I6I6T6T/TU 5 C DD V S RUsBBB-Bcd}|D]"} |jj|}|"n|>|jj}|jj }t d|d|dt|S#ttf$rYwxYw)NzNo group found in 'z ' using '')r(r:rr^rwr.r+rs)rCr`rrsrs r getFailIDzFailRegex.getFailIDs #  c     %C o   [ 1 1 q!D EE S/ x    sA55BBc$|jdS)N)rrr)rrPs r getHostzFailRegex.getHosts - ..r"c|j}t|jdt|j dxstj S)N)rrcidr)rBrrintr CIDR_UNSPEC)rCrs r getIPzFailRegex.getIPs=  $ ~.DHHV4D4ZHZHZ0[ \\r"r)rOrrrKFAILURE_ID_GROPSrrrrr"r rrsE -,/]r"r)% __author__ __copyright__ __license__r.r>ripdnsrr/rhr_IP_4_REIP_6_RErZRI_IPV4RI_IPV6RI_DNSr\r[RI_CIDR RI_SUBNETr]rrtr,r!r; TUPNAME_PREr7rmr8r& Exceptionr+rrrrr"r rs ( 2    2::& ' 45 '-nn6(        )/&/Kw#)'?F6NDw28/6'?TZ[bTcey / 7O / 7O '? 7O '? 7O 9  I  . 6N  "- 6    >7#RZZ BCVM  k*  5388M#::=PPQ L>L>dY0'34]4]{ s ''E((E.