本文整理汇总了Python中dns.flags方法的典型用法代码示例。如果您正苦于以下问题:Python dns.flags方法的具体用法?Python dns.flags怎么用?Python dns.flags使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类dns
的用法示例。
在下文中一共展示了dns.flags方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: check_recursive
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def check_recursive(ns_server, timeout):
"""
Check if a NS Server is recursive.
"""
is_recursive = False
query = dns.message.make_query('www.google.com.', dns.rdatatype.NS)
try:
response = dns.query.udp(query, ns_server, timeout)
recursion_flag_pattern = "\.*RA\.*"
flags = dns.flags.to_text(response.flags)
result = re.findall(recursion_flag_pattern, flags)
if (result):
print_error("\t Recursion enabled on NS Server {0}".format(ns_server))
is_recursive = True
except (socket.error, dns.exception.Timeout):
return is_recursive
return is_recursive
示例2: query_ds
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def query_ds(target, ns, timeout=5.0):
"""
Function for performing DS Record queries. Returns answer object. Since a
timeout will break the DS NSEC chain of a zone walk it will exit if a timeout
happens.
"""
try:
query = dns.message.make_query(target, dns.rdatatype.DS, dns.rdataclass.IN)
query.flags += dns.flags.CD
query.use_edns(edns=True, payload=4096)
query.want_dnssec(True)
answer = dns.query.udp(query, ns, timeout)
except dns.exception.Timeout:
print_error("A timeout error occurred please make sure you can reach the target DNS Servers")
print_error(
"directly and requests are not being filtered. Increase the timeout from {0} second".format(timeout))
print_error("to a higher number with --lifetime <time> option.")
sys.exit(1)
except:
print("Unexpected error: {0}".format(sys.exc_info()[0]))
raise
return answer
示例3: _make_dns_message
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def _make_dns_message(self, zone_name, notify=False):
"""
This constructs a SOA query or a dns NOTIFY message.
:param zone_name: The zone name for which a SOA/NOTIFY needs to be
sent.
:param notify: If true, a notify message is constructed else a SOA
message is constructed.
:return: The constructed message.
"""
dns_message = dns.message.make_query(zone_name, dns.rdatatype.SOA)
dns_message.flags = 0
if notify:
dns_message.set_opcode(dns.opcode.NOTIFY)
dns_message.flags |= dns.flags.AA
else:
# Setting the flags to RD causes BIND9 to respond with a NXDOMAIN.
dns_message.set_opcode(dns.opcode.QUERY)
dns_message.flags |= dns.flags.RD
return dns_message
示例4: is_response
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def is_response(self, other):
"""Is other a response to self?
@rtype: bool"""
if other.flags & dns.flags.QR == 0 or \
self.id != other.id or \
dns.opcode.from_flags(self.flags) != \
dns.opcode.from_flags(other.flags):
return False
if dns.rcode.from_flags(other.flags, other.ednsflags) != \
dns.rcode.NOERROR:
return True
if dns.opcode.is_update(self.flags):
return True
for n in self.question:
if n not in other.question:
return False
for n in other.question:
if n not in self.question:
return False
return True
示例5: read
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def read(self):
"""Read a wire format DNS message and build a dns.message.Message
object."""
l = len(self.wire)
if l < 12:
raise ShortHeader
(self.message.id, self.message.flags, qcount, ancount,
aucount, adcount) = struct.unpack('!HHHHHH', self.wire[:12])
self.current = 12
if dns.opcode.is_update(self.message.flags):
self.updating = True
self._get_question(qcount)
if self.question_only:
return
self._get_section(self.message.answer, ancount)
self._get_section(self.message.authority, aucount)
self._get_section(self.message.additional, adcount)
if not self.ignore_trailing and self.current != l:
raise TrailingJunk
if self.message.multi and self.message.tsig_ctx and \
not self.message.had_tsig:
self.message.tsig_ctx.update(self.wire)
示例6: reset
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def reset(self):
"""Reset all resolver configuration to the defaults."""
self.domain = \
dns.name.Name(dns.name.from_text(socket.gethostname())[1:])
if len(self.domain) == 0:
self.domain = dns.name.root
self.nameservers = []
self.nameserver_ports = {}
self.port = 53
self.search = []
self.timeout = 2.0
self.lifetime = 30.0
self.keyring = None
self.keyname = None
self.keyalgorithm = dns.tsig.default_algorithm
self.edns = -1
self.ednsflags = 0
self.payload = 0
self.cache = None
self.flags = None
self.retry_servfail = False
self.rotate = False
示例7: is_response
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def is_response(self, other):
"""Is other a response to self?
@rtype: bool"""
if other.flags & dns.flags.QR == 0 or \
self.id != other.id or \
dns.opcode.from_flags(self.flags) != \
dns.opcode.from_flags(other.flags):
return False
if dns.rcode.from_flags(other.flags, other.ednsflags) != \
dns.rcode.NOERROR:
return True
if dns.opcode.is_update(self.flags):
return True
for n in self.question:
if n not in other.question:
return False
for n in other.question:
if n not in self.question:
return False
return True
示例8: read
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def read(self):
"""Read a wire format DNS message and build a dns.message.Message
object."""
l = len(self.wire)
if l < 12:
raise ShortHeader
(self.message.id, self.message.flags, qcount, ancount,
aucount, adcount) = struct.unpack('!HHHHHH', self.wire[:12])
self.current = 12
if dns.opcode.is_update(self.message.flags):
self.updating = True
self._get_question(qcount)
if self.question_only:
return
self._get_section(self.message.answer, ancount)
self._get_section(self.message.authority, aucount)
self._get_section(self.message.additional, adcount)
if not self.ignore_trailing and self.current != l:
raise TrailingJunk
if self.message.multi and self.message.tsig_ctx and \
not self.message.had_tsig:
self.message.tsig_ctx.update(self.wire)
示例9: reset
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def reset(self):
"""Reset all resolver configuration to the defaults."""
self.domain = \
dns.name.Name(dns.name.from_text(socket.gethostname())[1:])
if len(self.domain) == 0:
self.domain = dns.name.root
self.nameservers = []
self.search = []
self.port = 53
self.timeout = 2.0
self.lifetime = 30.0
self.keyring = None
self.keyname = None
self.keyalgorithm = dns.tsig.default_algorithm
self.edns = -1
self.ednsflags = 0
self.payload = 0
self.cache = None
self.flags = None
self.retry_servfail = False
示例10: in_cache
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def in_cache(dict_file, ns):
"""
Function for Cache Snooping, it will check a given NS server for specific
type of records for a given domain are in it's cache.
"""
found_records = []
with open(dict_file) as f:
for zone in f:
dom_to_query = str.strip(zone)
query = dns.message.make_query(dom_to_query, dns.rdatatype.A, dns.rdataclass.IN)
query.flags ^= dns.flags.RD
answer = dns.query.udp(query, ns)
if len(answer.answer) > 0:
for an in answer.answer:
for rcd in an:
if rcd.rdtype == 1:
print_status("\tName: {0} TTL: {1} Address: {2} Type: A".format(an.name, an.ttl, rcd.address))
found_records.extend([{'type': "A", 'name': an.name,
'address': rcd.address, 'ttl': an.ttl}])
elif rcd.rdtype == 5:
print_status("\tName: {0} TTL: {1} Target: {2} Type: CNAME".format(an.name, an.ttl, rcd.target))
found_records.extend([{'type': "CNAME", 'name': an.name,
'target': rcd.target, 'ttl': an.ttl}])
else:
print_status()
return found_records
示例11: dns_sec_check
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def dns_sec_check(domain, res):
"""
Check if a zone is configured for DNSSEC and if so if NSEC or NSEC3 is used.
"""
try:
answer = res._res.query(domain, 'DNSKEY')
print_status("DNSSEC is configured for {0}".format(domain))
nsectype = get_nsec_type(domain, res)
print_status("DNSKEYs:")
for rdata in answer:
if rdata.flags == 256:
key_type = "ZSK"
if rdata.flags == 257:
key_type = "KSk"
print_status("\t{0} {1} {2} {3}".format(nsectype, key_type, algorithm_to_text(rdata.algorithm),
dns.rdata._hexify(rdata.key)))
except dns.resolver.NXDOMAIN:
print_error("Could not resolve domain: {0}".format(domain))
sys.exit(1)
except dns.exception.Timeout:
print_error("A timeout error occurred please make sure you can reach the target DNS Servers")
print_error("directly and requests are not being filtered. Increase the timeout from {0} second".format(
res._res.timeout))
print_error("to a higher number with --lifetime <time> option.")
sys.exit(1)
except dns.resolver.NoAnswer:
print_error("DNSSEC is not configured for {0}".format(domain))
示例12: get_a_answer
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def get_a_answer(target, ns, timeout):
query = dns.message.make_query(target, dns.rdatatype.A, dns.rdataclass.IN)
query.flags += dns.flags.CD
query.use_edns(edns=True, payload=4096)
query.want_dnssec(True)
answer = dns.query.udp(query, ns, timeout)
return answer
示例13: _create_axfr_renderer
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def _create_axfr_renderer(self, request):
# Build up a dummy response, we're stealing it's logic for building
# the Flags.
response = dns.message.make_response(request)
response.flags |= dns.flags.AA
response.set_rcode(dns.rcode.NOERROR)
max_message_size = self._get_max_message_size(request.had_tsig)
renderer = dns.renderer.Renderer(
response.id, response.flags, max_message_size)
for q in request.question:
renderer.add_question(q.name, q.rdtype, q.rdclass)
return renderer
示例14: _make_dns_message
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def _make_dns_message(self, zone_name, opcode, rdatatype, rdclass):
dns_message = dns.message.make_query(zone_name, rdatatype,
rdclass=rdclass)
dns_message.flags = 0
dns_message.set_opcode(opcode)
dns_message.flags |= dns.flags.AA
return dns_message
示例15: __init__
# 需要导入模块: import dns [as 别名]
# 或者: from dns import flags [as 别名]
def __init__(self, id=None):
if id is None:
self.id = dns.entropy.random_16()
else:
self.id = id
self.flags = 0
self.question = []
self.answer = []
self.authority = []
self.additional = []
self.edns = -1
self.ednsflags = 0
self.payload = 0
self.options = []
self.request_payload = 0
self.keyring = None
self.keyname = None
self.keyalgorithm = dns.tsig.default_algorithm
self.request_mac = ''
self.other_data = ''
self.tsig_error = 0
self.fudge = 300
self.original_id = self.id
self.mac = ''
self.xfr = False
self.origin = None
self.tsig_ctx = None
self.had_tsig = False
self.multi = False
self.first = True
self.index = {}