fixes and start implemeting doq

This commit is contained in:
Robert Walter
2024-03-19 17:29:45 +01:00
parent 35ed90d23b
commit 7c32bed902
3 changed files with 25 additions and 4 deletions

View File

@@ -1,3 +1,4 @@
#!/bin/env python
import argparse
import dns.message
import dns.name
@@ -6,13 +7,14 @@ import dns.rdatatype
import dns.resolver
import httpx
import ipaddress
import asyncio
from sys import exit
parser = argparse.ArgumentParser(
epilog="Nagios/Icinga compatible check for DNS, DOT (DNS over TLS), DOH (DNS over HTTPS)",
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument("-m", "--mode", choices=["dns", "dot", "doh"], \
parser.add_argument("-m", "--mode", choices=["dns", "dot", "doh","doq"], \
default="dns", help="Check Mode: dns = normal DNS query\n dot = DNS over TLS\n doh = DNS over HTTPs\ndefault: %(default)s")
parser.add_argument("-t", "--type", choices=["A", "AAAA", "TXT"], \
default="A", help="Type to check\ndefault: %(default)s")
@@ -42,6 +44,18 @@ def doh(query,server):
return r.answer
except httpx.ConnectError as e:
print(e)
def doq(query,server):
async def amulti(query):
global response
async with dns.quic.AsyncioQuicManager() as manager:
connection = manager.connect(get_ip(server), 853)
r = await dns.asyncquery.quic(query, get_ip(server), port=443, connection=connection)
print(r)
response = r
asyncio.run(amulti(query))
return response
def dot(query,server):
server = get_ip(server)
@@ -61,6 +75,7 @@ def query(mode,address,type,server):
if(mode == "dns"): response = dns53(query,server)
if(mode == "dot"): response = dot(query,server)
if(mode == "doh"): response = doh(query,server)
if(mode == "doq"): response = doq(query,server)
analyze(address,type,server,response)
def analyze(address,type,server,response):