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.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/project2/proj2_s4498062/dns/server.py b/project2/proj2_s4498062/dns/server.py
index f830651..10cad8b 100644
--- a/project2/proj2_s4498062/dns/server.py
+++ b/project2/proj2_s4498062/dns/server.py
@@ -12,7 +12,8 @@ from dns.classes import Class
from dns.types import Type
from dns.message import Header, Message
from dns.resolver import Resolver
-from dns.resource import ResourceRecord, ARecordData, CNAMERecordData
+from dns.resource import \
+ ResourceRecord, ARecordData, NSRecordData, CNAMERecordData
class RequestHandler(Thread):
@@ -112,12 +113,21 @@ class Server(object):
ttl, class_ = 3600000, Class.IN
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)
+ name = match[0][:-1]
+ ttl = int(match[1] or match[4] or ttl * 1000) / 1000
class_ = Class.from_string(
match[2] or match[3] or Class.to_string(class_))
type_ = Type.from_string(match[5])
data = match[6]
- record = ResourceRecord(name, type_, class_, ttl, data)
+ if type_ == Type.A:
+ cls = ARecordData
+ elif type_ == Type.NS:
+ cls = NSRecordData
+ elif type_ == Type.CNAME:
+ cls = CNAMERecordData
+ else:
+ continue
+
+ record = ResourceRecord(name, type_, class_, ttl, cls(data))
self.zone.append(record)