Skip to content
This repository was archived by the owner on Apr 6, 2022. It is now read-only.
/ pdnsapp Public archive

PowerDNS-based python DNS application microframework

License

Notifications You must be signed in to change notification settings

endreszabo/pdnsapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deprecation notice

The project is deprecated now and this repo has been archived. I moved to CoreDNS which is not only waaay faster, but covers all features pdnsapp had. Ok.. well, almost all. I had to develop some extra coredns plugins to port some niche features anyone would have barely needed on the long run.


pdnsapp

This is a python microframework to help develop DNS-based applications, very much like bottle.py for HTML or lamsonproject for SMTP. It's 'application server' is PowerDNS.

Examples

1. example: myip

The following code will resond with the IP-address of the querying client for myip.end.re:

@match(fqdn='myip.end.re',type='A')
def myip(request):
    return A(data=request['remote-ip'])

2. example: catch-all

Be authoritative for all the zones. It's like wildcards on steroids. Or like PowerDNS superslave being a supermaster instead.

@match(type='SOA')
def catchall(request):
    return SOA("ns0.end.re dnsadm2.end.re %s 10800 3600 604800 3600" % strftime("%Y%m%d%H"))

@match(type='NS')
def catchall(request):
    return [
        NS('ns0.end.re'),
        NS('ns1.end.re'),
    ]   

3. example: geoip

Simple geoip implementation, this one returns differenct IP address for mx0.end.re depending on the client IP address.

from radix import Radix
rtree = Radix()

for subnet in ['192.168.0.0/24', '192.168.1.0/24']:
    rtree.add(subnet)

@match(type='A', fqdn='mx0.end.re')
def geoip(request):
    if rtree.search_best(request['remote-ip']): #if requesting client is in the prefixes listed
        return A('192.168.1.1')
    else:
        return A('44.128.1.1')

4. example: dynamic reverse records

This is for generating reverse (PTR) DNS entries and their forward (A/AAAA) lookup.

About

PowerDNS-based python DNS application microframework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages