summaryrefslogtreecommitdiff
path: root/project2/proj2_s4498062/dns/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'project2/proj2_s4498062/dns/server.py')
-rw-r--r--project2/proj2_s4498062/dns/server.py21
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