diff options
Diffstat (limited to 'project2/proj2_s4498062/dns/resource.py')
-rw-r--r-- | project2/proj2_s4498062/dns/resource.py | 26 |
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 |