aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojciech Kosior <kwojtus@protonmail.com>2020-05-29 12:05:40 +0200
committerWojciech Kosior <kwojtus@protonmail.com>2020-05-29 12:05:40 +0200
commit862e951caebb97ce4529b4faa4abb56d2c15b762 (patch)
tree9e01b4f6df6f88c8dd3cdd3a61b71150b62353f1
parentfab2c94f4fba49a06d5fb1d21d1ff990fadecfe0 (diff)
download0tdns-862e951caebb97ce4529b4faa4abb56d2c15b762.tar.gz
0tdns-862e951caebb97ce4529b4faa4abb56d2c15b762.zip
add python script for performing unbound queries
-rwxr-xr-xperform_queries.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/perform_queries.py b/perform_queries.py
new file mode 100755
index 0000000..4762e14
--- /dev/null
+++ b/perform_queries.py
@@ -0,0 +1,39 @@
+#!/bin/python3
+
+import unbound
+
+def query_planned_queries(hour, vpn_id):
+ # TODO query database
+ # for now, return some sample thought-up data
+ return (
+ # dns server IP | dns server id | service_id | service_name
+ ("195.98.79.117", 23, ((89, "devuan.org"),
+ (44, "gry.pl"),
+ (112, "invidio.us"))),
+ ("192.71.245.208", 33, ((77, "debian.org"),
+ (22, "nie.ma.takiej.domeny"),
+ (100, "onet.pl")))
+ )
+
+def resolve_call_back(mydata, status, result):
+ dns_id, service_id = mydata
+ # TODO write to database
+ print("callback called for {}".format(result.qname))
+ if status==0 and result.havedata:
+ print("Result:",result.data.address_list)
+
+# hour from argv | vpn_id in database
+contexts = []
+for dns_addr, dns_id, services in query_planned_queries("1999-01-08 04:00", 11):
+ ctx = unbound.ub_ctx()
+ ctx.set_fwd(dns_addr)
+ for service_id, service_name in services:
+ print(service_name)
+ print("starting resolution: {} through {}".format(service_name, dns_addr))
+ ctx.resolve_async(service_name, (dns_id, service_id),
+ resolve_call_back,
+ unbound.RR_TYPE_A, unbound.RR_CLASS_IN)
+ contexts.append(ctx)
+
+for ctx in contexts:
+ ctx.wait()