a =*f4@sdZdZdZddlZddlZddlmZedZedZ d ej fd ej fd d d d d gZ dZ dZdZdZdZdZdZde e e efe e<de ee efe e<de e e ee efe e<e e e e e ee ee ee ee ee ee ee ee ee edddZdddZzeddeddfZWnd ZYn0d!d"Zd#Zd$ZeefZed%d&ed'ZGd(d)d)ZGd*d+d+eZ d,Z!e!d-Z"Gd.d/d/eZ#dS)0z Cyril Jaquierz Copyright (c) 2004 Cyril JaquierZGPLN)IPAddrz z^(/?)F-([A-Z0-9_\-]+)$z(?:::f{4,6}:)?(?P%s)z (?P%s)z(?P[\w\-.^_]*\w)z (?P\d+)z\[?(?:%s|%s)\]?z (?:%s|%s)z\[?(?:%s|%s)(?:/%s)?\]?z (?P\S+)z(?P\w+))ZIP4zF-IP4/ZIP6zF-IP6/ZADDRzF-ADDR/ZCIDRzF-CIDR/ZSUBNETz F-SUBNET/ZDNSzF-DNS/zF-ID/zF-PORT/fidZfport)idportz ^re(?i:val)$ZreVALz(?z"Regex.__init__..rz-Unable to compile regular expression '%s': %s) _matchCacher_resolveHostTaglstripRegexExceptionR_GLOB2LOCFLAGSsubrecompile MULTILINE _regexObj_regex _altValues _tupleValues groupindex COMPLNAME_CREmatchgroupr ALTNAME_PREappendsortrerror_getGroupsWithAlt _getGroups getGroups)selfregexZ multilinekwargsrnger r r__init__s6    zRegex.__init__cCsd|jj|jfS)Nz%s(%r)) __class____name__r'r5r r r__str__sz Regex.__str__yescs*tddifdd}t||S)Nnlrcs|}|dd}|dkr0tdvr*tntS|dkrVd}|dd<d|fSz t|WStyrYn0t|}|r|}|d}|dr |rd S|Sd|<t |}d |fS|S) NrZHOST)noZ SKIPLINESrAz!\n(?P(?:(?:.*\n)*?))r)z(?P<%s>) r-R_HOSTRI_HOSTRI_ADDRRH4TAGKeyError FCUSTNAME_CREr,groupsrr)mrtnrAZopenTagsZpropsuseDnsr rsubstTags0        z'Regex._resolveHostTag..substTag)dictFTAG_CREr")r6rOrPr rNrrs 'zRegex._resolveHostTagcCs|jSr)r'r>r r rgetRegexszRegex.getRegexcCsddd|DdS)N cSs g|]}d|dddqS)rNrjoin)rvr r rrrz(Regex._tupleLinesBuf..rU) tupleLinesr r r_tupleLinesBufszRegex._tupleLinesBufNc Cs|}t|tst|}|j||_|jr|dur:|}t|dkrV||_g|_ nDz$|jj dd|j dd}Wnt yd}Yn0z"|jj d|jdd}Wnt yt|jj }Yn0|jj dd|}|jj dd|}||||_|d||_ d}|D]d} t|j|dD]J\} } d| ddd| kr6|j |j|| || 7}q q6q |j ||ddS)NrrTrrr) isinstancestrrrYr&searchrr_matchedTupleLines_unmatchedTupleLinesstringrindexstart ValueErrorindexendcountgetSkippedLines enumeraterVr/popextend) r5rXZorgLinesbufZmatchLineStartZ matchLineEndZ lineCount1Z lineCount2r8Z skippedLinerLZmatchedTupleLiner r rr\sZ          z Regex.searchcCs|jr dSdSdS)NTF)rr>r r r hasMatched#szRegex.hasMatchedcCs |jSr)r groupdictr>r r rr3-szRegex._getGroupscCs|j}|jr@|jD](\}}||}|r||s|||<q|jr|jD]B\}}||}||}t|tr~||f7}n||f}|||<qL|Sr)rrlr(rr)rZtuple)r5failrr8rWtr r rr20s        zRegex._getGroupsWithAltcCsdSrr r>r r rr4EszRegex.getGroupscCs|js gSd}d}z4|jd|dur<||jd|7}|d7}Wqty\YqYqty|dtjvrtYqYq0q|dS)Nrrz skiplines%irZPyPyF)rr- IndexErrorrIsysversion splitlines)r5Z skippedLinesr8r r rrfNs     zRegex.getSkippedLinescCs|s gS|jSdSrrkr^r>r r rgetUnmatchedTupleLinesgszRegex.getUnmatchedTupleLinescCs |s gSdd|jDSdS)NcSsg|]}d|qSrrUrliner r rrqrz+Regex.getUnmatchedLines..rtr>r r rgetUnmatchedLinesmszRegex.getUnmatchedLinescCs|s gS|jSdSrrkr]r>r r rgetMatchedTupleLineszszRegex.getMatchedTupleLinescCs |s gSdd|jDSdS)NcSsg|]}d|qSrvrUrwr r rrrz)Regex.getMatchedLines..rzr>r r rgetMatchedLinesszRegex.getMatchedLines)F)r@)N)r= __module__ __qualname__r;r? staticmethodrrSrYr\rkr3r2r4rfruryr{r|r r r rrxs" "  6 .   rc@s eZdZdS)r N)r=r}r~r r r rr sr )r ip4ip6dns)Zmlfidc@s2eZdZd ddZefddZddZdd ZdS) FailRegexNc sRtj|fi|fddtDsNdus@fddtDsNtdjdS)Ncsg|]}|jjvr|qSr r&r*rgrpr>r rrrz&FailRegex.__init__..csg|]}|jjvr|qSr rr) prefRegexr rrrzNo failure-id group in '%s')rr;FAILURE_ID_PRESENTSr r')r5r6rr7r )rr5rr;szFailRegex.__init__c Csvd}|D]<}z|j|}Wnttfy6YqYn0|durqFq|durn|jj}|jj}td||ft|S)Nz!No group found in '%s' using '%s')rr-rprIr_r#r r[)r5rKr rsrr r r getFailIDs zFailRegex.getFailIDcCs |dS)N)rrr)rr>r r rgetHostszFailRegex.getHostcCs(|}t|dt|dp"tjS)N)rrZcidr)r4rrintrZ CIDR_UNSPEC)r5rnr r rgetIPszFailRegex.getIP)N)r=r}r~r;FAILURE_ID_GROPSrrrr r r rrs  r)$ __author__Z __copyright__Z __license__r#rqZipdnsrr$rRrJZIP_4_REZIP_6_RErEZRI_IPV4ZRI_IPV6ZRI_DNSrGrFZRI_CIDRZ RI_SUBNETrHrr\r!rr.Z TUPNAME_PRErrVr+r Exceptionr rrrr r r rsx