3 í«„^¥ã@sZddlZddlZddlmZmZddlmZddlmZddl m Z Gdd„dee ƒZ dS) éN)ÚAF_INETÚAF_INET6é)Ú MatchContext)ÚNodeconIPVersion)Ú PolicyQuerycsheZdZdZdZdZdZedd„ƒZej dd„ƒZedd„ƒZ e j d d„ƒZ ‡fd d „Z d d „Z ‡Z S)Ú NodeconQueryaI Query nodecon statements. Parameter: policy The policy to query. Keyword Parameters/Class attributes: network The IPv4/IPv6 address or IPv4/IPv6 network address with netmask, e.g. 192.168.1.0/255.255.255.0 or "192.168.1.0/24". network_overlap If true, the net will match if it overlaps with the nodecon's network instead of equality. ip_version The IP version of the nodecon to match. (socket.AF_INET for IPv4 or socket.AF_INET6 for IPv6) user The criteria to match the context's user. user_regex If true, regular expression matching will be used on the user. role The criteria to match the context's role. role_regex If true, regular expression matching will be used on the role. type_ The criteria to match the context's type. type_regex If true, regular expression matching will be used on the type. range_ The criteria to match the context's range. range_subset If true, the criteria will match if it is a subset of the context's range. range_overlap If true, the criteria will match if it overlaps any of the context's range. range_superset If true, the criteria will match if it is a superset of the context's range. range_proper If true, use proper superset/subset operations. No effect if not using set operations. NFcCs|jS)N)Ú _ip_version)Úself©r ú$/usr/lib64/python3.6/nodeconquery.pyÚ ip_versionFszNodeconQuery.ip_versioncCs|rtj|ƒ|_nd|_dS)N)rÚlookupr )r Úvaluer r r r JscCs|jS)N)Ú_network)r r r r ÚnetworkQszNodeconQuery.networkcCs|rtj|ƒ|_nd|_dS)N)Ú ipaddressZ ip_networkr)r rr r r rUsc s$tt|ƒj|f|Žtjtƒ|_dS)N)ÚsuperrÚ__init__ÚloggingZ getLoggerÚ__name__Úlog)r ÚpolicyÚkwargs)Ú __class__r r r\szNodeconQuery.__init__ccs®|jjdj|ƒƒ|jjdj|ƒƒ|jjdj|ƒƒ|j|jƒxf|jjƒD]X}|jr~|jrp|jj |jƒs~qNn|j|jks~qN|j r’|j |j kr’qN|j |j ƒs qN|VqNWdS)z-Generator which yields all matching nodecons.z*Generating nodecon results from {0.policy}z4Network: {0.network!r}, overlap: {0.network_overlap}zIP Version: {0.ip_version!r}N) rÚinfoÚformatÚdebugZ_match_context_debugrZnodeconsrÚnetwork_overlapZoverlapsr Z_match_contextÚcontext)r Znodeconr r r Úresults`s    zNodeconQuery.results)rÚ __module__Ú __qualname__Ú__doc__rrr Úpropertyr Úsetterrrr Ú __classcell__r r )rr rs"   r) rrZsocketrrZmixinsrZ policyreprZqueryrrr r r r Ús