diff options
Diffstat (limited to 'project2/proj2_s4498062/dns/server.py')
-rw-r--r-- | project2/proj2_s4498062/dns/server.py | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/project2/proj2_s4498062/dns/server.py b/project2/proj2_s4498062/dns/server.py index d4e3109..f01043d 100644 --- a/project2/proj2_s4498062/dns/server.py +++ b/project2/proj2_s4498062/dns/server.py @@ -1,13 +1,16 @@ -#!/usr/bin/env python2 - """ A recursive DNS server This module provides a recursive DNS server. You will have to implement this server using the algorithm described in section 4.3.2 of RFC 1034. """ +import re from threading import Thread +import dns.regexes as rgx +from dns.classes import Class +from dns.types import Type + class RequestHandler(Thread): """ A handler for requests to the DNS server """ @@ -51,3 +54,17 @@ class Server(object): """ Shutdown the server """ self.done = True # TODO: shutdown socket + + def parse_zone_file(self, fname): + with open(fname) as zonef: + zone = zonef.read() + for match in re.finditer(rgx.ZONE_LINE_DOMAIN, zone, re.MULTILINE): + match = match.groups() + name = match[0] + ttl = int(match[1] or match[4] or ttl) + class_ = Class.from_string( + match[2] or match[3] or Class.to_string(class_)) + type_ = Type.from_string(match[5]) + data = match[6] + print match + print name, ttl, Class.to_string(class_), Type.to_string(type_), data |