feat: ask DNS, and get config from a .env file
This commit is contained in:
parent
f6d23e0f66
commit
c922186b84
4 changed files with 55 additions and 23 deletions
7
.env-example
Normal file
7
.env-example
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
ZONES=example.com,test1.no
|
||||||
|
DB_HOST=localhost
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_USER=test
|
||||||
|
DB_PASS=testpass
|
||||||
|
DB_DB=pdns
|
||||||
|
DNS_MASTER=wile
|
||||||
15
main.py
15
main.py
|
|
@ -1,10 +1,20 @@
|
||||||
|
from decouple import config
|
||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
import MySQLdb as m
|
import MySQLdb as m
|
||||||
import dns.resolver
|
import dns.resolver
|
||||||
|
|
||||||
def read_config():
|
def read_config():
|
||||||
return (['example.com'],'localhost',3306,'test','testpass','pdns','wile')
|
zones_str = config('ZONES', default='example.com')
|
||||||
|
zones = zones_str.split(',')
|
||||||
|
dbhost = config('DB_HOST', 'localhost')
|
||||||
|
dbport = int(config('DB_PORT', '3306'))
|
||||||
|
dbdb = config('DB_DB', 'pdns')
|
||||||
|
dbuser = config('DB_USER', 'test')
|
||||||
|
dbpass = config('DB_PASS', 'testpass')
|
||||||
|
master = config('DNS_MASTER', 'wile')
|
||||||
|
print(f"{zones=} {dbhost=} {dbport=} {dbuser=} {dbpass=} {dbdb=} {master=}")
|
||||||
|
return (zones,dbhost, dbport, dbuser, dbpass, dbdb, master)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
@ -19,6 +29,7 @@ def main():
|
||||||
expected = None
|
expected = None
|
||||||
for ns in nsarr:
|
for ns in nsarr:
|
||||||
# r.nameservers = [ns]
|
# r.nameservers = [ns]
|
||||||
|
try:
|
||||||
answer = r.resolve(qname=zone, rdtype='DNSKEY', tcp=False, search=ns)
|
answer = r.resolve(qname=zone, rdtype='DNSKEY', tcp=False, search=ns)
|
||||||
print(f"{answer=}")
|
print(f"{answer=}")
|
||||||
if not expected:
|
if not expected:
|
||||||
|
|
@ -41,6 +52,8 @@ def main():
|
||||||
carr[2] = newdatestr
|
carr[2] = newdatestr
|
||||||
db.query(f"""UPDATE records SET content = '{' '.join(carr)}' WHERE id={id}""")
|
db.query(f"""UPDATE records SET content = '{' '.join(carr)}' WHERE id={id}""")
|
||||||
db.commit()
|
db.commit()
|
||||||
|
except:
|
||||||
|
print(f"{zone} has no DNSKEY")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,5 @@ requires-python = ">=3.13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dnstools>=0.0.1",
|
"dnstools>=0.0.1",
|
||||||
"mysqlclient>=2.2.8",
|
"mysqlclient>=2.2.8",
|
||||||
|
"python-decouple>=3.8",
|
||||||
]
|
]
|
||||||
|
|
|
||||||
11
uv.lock
generated
11
uv.lock
generated
|
|
@ -39,12 +39,14 @@ source = { virtual = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "dnstools" },
|
{ name = "dnstools" },
|
||||||
{ name = "mysqlclient" },
|
{ name = "mysqlclient" },
|
||||||
|
{ name = "python-decouple" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.metadata]
|
[package.metadata]
|
||||||
requires-dist = [
|
requires-dist = [
|
||||||
{ name = "dnstools", specifier = ">=0.0.1" },
|
{ name = "dnstools", specifier = ">=0.0.1" },
|
||||||
{ name = "mysqlclient", specifier = ">=2.2.8" },
|
{ name = "mysqlclient", specifier = ">=2.2.8" },
|
||||||
|
{ name = "python-decouple", specifier = ">=3.8" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -69,3 +71,12 @@ wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/42/44/6ae21b4e8490eb5167d04fa7452c462ffd72a502b96bf531477ef044a380/mysqlclient-2.2.8-cp314-cp314-win_amd64.whl", hash = "sha256:9bed7c8d3b629bdc09e17fb628d5b3b0a5fd1f12b09432b464b9126c727bedc0", size = 211644, upload-time = "2026-02-10T10:58:45.022Z" },
|
{ url = "https://files.pythonhosted.org/packages/42/44/6ae21b4e8490eb5167d04fa7452c462ffd72a502b96bf531477ef044a380/mysqlclient-2.2.8-cp314-cp314-win_amd64.whl", hash = "sha256:9bed7c8d3b629bdc09e17fb628d5b3b0a5fd1f12b09432b464b9126c727bedc0", size = 211644, upload-time = "2026-02-10T10:58:45.022Z" },
|
||||||
{ url = "https://files.pythonhosted.org/packages/66/e5/037d55623be9f681236e04abe12e1290847c06bd48270c3f19ac33493cbf/mysqlclient-2.2.8-cp314-cp314t-win_amd64.whl", hash = "sha256:260cce0e81446c83bf0a389e0fae38d68547d9f8fc0833bc733014e10ce28a99", size = 213067, upload-time = "2026-02-10T10:58:43.389Z" },
|
{ url = "https://files.pythonhosted.org/packages/66/e5/037d55623be9f681236e04abe12e1290847c06bd48270c3f19ac33493cbf/mysqlclient-2.2.8-cp314-cp314t-win_amd64.whl", hash = "sha256:260cce0e81446c83bf0a389e0fae38d68547d9f8fc0833bc733014e10ce28a99", size = 213067, upload-time = "2026-02-10T10:58:43.389Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "python-decouple"
|
||||||
|
version = "3.8"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/e1/97/373dcd5844ec0ea5893e13c39a2c67e7537987ad8de3842fe078db4582fa/python-decouple-3.8.tar.gz", hash = "sha256:ba6e2657d4f376ecc46f77a3a615e058d93ba5e465c01bbe57289bfb7cce680f", size = 9612, upload-time = "2023-03-01T19:38:38.143Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/a2/d4/9193206c4563ec771faf2ccf54815ca7918529fe81f6adb22ee6d0e06622/python_decouple-3.8-py3-none-any.whl", hash = "sha256:d0d45340815b25f4de59c974b855bb38d03151d81b037d9e3f463b0c9f8cbd66", size = 9947, upload-time = "2023-03-01T19:38:36.015Z" },
|
||||||
|
]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue