summaryrefslogtreecommitdiff
path: root/project2/proj2_s4498062/dns/resource.py
diff options
context:
space:
mode:
Diffstat (limited to 'project2/proj2_s4498062/dns/resource.py')
-rw-r--r--project2/proj2_s4498062/dns/resource.py26
1 files changed, 11 insertions, 15 deletions
diff --git a/project2/proj2_s4498062/dns/resource.py b/project2/proj2_s4498062/dns/resource.py
index 89201ec..b1c8ae4 100644
--- a/project2/proj2_s4498062/dns/resource.py
+++ b/project2/proj2_s4498062/dns/resource.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python2
-
""" A DNS resource record
This class contains classes for DNS resource records and record data. This
@@ -9,13 +7,14 @@ of your resolver and server.
import socket
import struct
+import time
from dns.types import Type
class ResourceRecord(object):
""" DNS resource record """
- def __init__(self, name, type_, class_, ttl, rdata):
+ def __init__(self, name, type_, class_, ttl, rdata, timestamp=time.time()):
""" Create a new resource record
Args:
@@ -29,6 +28,7 @@ class ResourceRecord(object):
self.class_ = class_
self.ttl = ttl
self.rdata = rdata
+ self.timestamp = timestamp
def match(self, name=None, type_=None, class_=None, ttl=None):
"""Check if the record matches properties"""
@@ -51,16 +51,12 @@ class ResourceRecord(object):
""" Convert ResourceRecord from bytes """
names, offset = parser.from_bytes(packet, offset, 1)
name = names[0]
- type_, class_, ttl, rdlength = struct.unpack_from(
- "!HHIH", packet, offset)
+ type_, class_, ttl, rdlen = struct.unpack_from("!HHIH", packet, offset)
offset += 10
- rdata = RecordData.from_bytes(type_, packet, offset, rdlength, parser)
- offset += rdlength
+ rdata = RecordData.from_bytes(type_, packet, offset, rdlen, parser)
+ offset += rdlen
return cls(name, type_, class_, ttl, rdata), offset
- def __repr__(self):
- return ' '.join(map(str, [self.name, self.type_, self.rdata.data]))
-
class RecordData(object):
""" Record Data """
@@ -121,7 +117,7 @@ class RecordData(object):
class ARecordData(RecordData):
- """ Record data for A type """
+ """Data of an A record"""
def to_bytes(self, offset, composer):
""" Convert to bytes
@@ -147,7 +143,7 @@ class ARecordData(RecordData):
class CNAMERecordData(RecordData):
- """ Record data for CNAME type """
+ """Data of a CNAME record"""
def to_bytes(self, offset, composer):
""" Convert to bytes
@@ -174,7 +170,7 @@ class CNAMERecordData(RecordData):
class NSRecordData(RecordData):
- """ Record data for NS type """
+ """Data of an NS record"""
def to_bytes(self, offset, composer):
""" Convert to bytes
@@ -201,7 +197,7 @@ class NSRecordData(RecordData):
class AAAARecordData(RecordData):
- """ Record data for AAAA type """
+ """Data of an AAAA record"""
def to_bytes(self, offset, composer):
""" Convert to bytes
@@ -227,7 +223,7 @@ class AAAARecordData(RecordData):
class GenericRecordData(RecordData):
- """ Generic Record Data (for other types) """
+ """Data of a generic record"""
def to_bytes(self, offset, composer):
""" Convert to bytes