Skip to content
/ slimDNS Public

A no-dependency DNS server written in vanilla Python.

Notifications You must be signed in to change notification settings

Torxed/slimDNS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

slimDNS

A simple DNS server written in vanilla Python.

Installation

pip install slimDNS

or simply git clone this repository.

Minimal example

import slimDNS

dns = slimDNS.server(slimDNS.UDP)

dns.run()

This would host a DNS server without any records.
There's two ways you can add records:

Swap out all records via annotation

@dns.records
def records(server):
	return {
		"example.com" : {
			"A" : {"target" : "264.30.198.2", "ttl" : 60},
			"SOA" : {"target" : "example.com", "ttl" : 60},
			"NS" : {"target" : "example.com", "ttl" : 60, "priority" : 10}
		},
		"nas.example.com" : {
			"A" : {"target" : "264.30.198.2", "type" : "A", "ttl" : 60}
		},
		"_matrix._tcp.riot.example.com" : {
			"SRV" : {"ttl" : 60, "priority" : 10, "port" : 8448, "target" : "nas.example.com"}
		}

	}

Which would swap out all current records for the defined set of records.

Add, delete and update records

dns.remove('example.com', 'A')
dns.add('example.com', 'A', '264.30.198.1')
dns.update('example.com', 'A', '264.30.198.5')

Which would remove the A record example.com,
Then add a new similar one with a new IP.
Finally, update that new record with a new IP.

Note

Requires Python 3.8+ & Linux (not tested on other platforms).