From d75b1edf651a755b6890c8dc85a2571799fe3e8a Mon Sep 17 00:00:00 2001 From: Max Christian Pohle Date: Thu, 21 Nov 2019 02:24:24 +0100 Subject: Started to add more generic zones And added shell files to do the same thing as wsgi, but without network --- pdnsutil-update.csh | 8 ++++++++ pdnsutil-update.sh | 14 ++++++++++++++ wsgi.py | 22 ++++++++++++---------- 3 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 pdnsutil-update.csh create mode 100644 pdnsutil-update.sh diff --git a/pdnsutil-update.csh b/pdnsutil-update.csh new file mode 100644 index 0000000..8cc00d1 --- /dev/null +++ b/pdnsutil-update.csh @@ -0,0 +1,8 @@ +#!/bin/csh +set host=$1 +shift +pdnsutil delete-rrset wire-me.de $host A +foreach ip ($*) + echo "Adding $ip to $host" + pdnsutil add-record wire-me.de $host A $ip +end diff --git a/pdnsutil-update.sh b/pdnsutil-update.sh new file mode 100644 index 0000000..6f46279 --- /dev/null +++ b/pdnsutil-update.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +zone=$1 +shift +host=$1 +shift + +set -x +pdnsutil delete-rrset $zone $host A +for ip in "$@" +do + echo " Adding $ip" + pdnsutil add-record $zone $host A $ip +done diff --git a/wsgi.py b/wsgi.py index 49224b9..cfa1326 100644 --- a/wsgi.py +++ b/wsgi.py @@ -1,19 +1,21 @@ #!/usr/bin/env python3.6 - import time import re import subprocess from cgi import parse_qs -def application(environ, start_response): - d = parse_qs(environ['QUERY_STRING']) +zone = "wire-me.de" +def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) - if re.match('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', d.get('ip', ['0'])[0]): - ip = d.get('ip', ['0'])[0].encode() - if re.match('[0-9a-z]+', d.get('host', [''])[0]): - host = d.get('host', ['0'])[0].encode() - yield(subprocess.run(["/usr/local/bin/pdnsutil", "delete-rrset", "wire-me.de", host, "A"], stdout=subprocess.PIPE).stdout) - yield(subprocess.run(["/usr/local/bin/pdnsutil", "add-record", "wire-me.de", host, "A", ip], stdout=subprocess.PIPE)) - yield(subprocess.run(["/usr/local/bin/pdnsutil", "list-zone", "wire-me.de"], stdout=subprocess.PIPE).stdout) + args = parse_qs(environ['QUERY_STRING']) + host = args.get('host', ['0'])[0] + + if re.match('[0-9a-z-_]+', host): + yield(subprocess.run(["/usr/local/bin/pdnsutil", "delete-rrset", zone, host, "A"], stdout=subprocess.PIPE).stdout) + + for ip in args.get('ip', ['0']): + if re.match('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', ip): + yield(subprocess.run(["/usr/local/bin/pdnsutil", "add-record", zone, host, "A", ip], stdout=subprocess.PIPE)) + yield(subprocess.run(["/usr/local/bin/pdnsutil", "list-zone", zone], stdout=subprocess.PIPE).stdout) -- cgit v1.2.3