home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import struct
- import dns.exception as dns
- import dns.rdata as dns
- import dns.name as dns
-
- class SOA(dns.rdata.Rdata):
- __slots__ = [
- 'mname',
- 'rname',
- 'serial',
- 'refresh',
- 'retry',
- 'expire',
- 'minimum']
-
- def __init__(self, rdclass, rdtype, mname, rname, serial, refresh, retry, expire, minimum):
- super(SOA, self).__init__(rdclass, rdtype)
- self.mname = mname
- self.rname = rname
- self.serial = serial
- self.refresh = refresh
- self.retry = retry
- self.expire = expire
- self.minimum = minimum
-
-
- def to_text(self, origin = None, relativize = True, **kw):
- mname = self.mname.choose_relativity(origin, relativize)
- rname = self.rname.choose_relativity(origin, relativize)
- return '%s %s %d %d %d %d %d' % (mname, rname, self.serial, self.refresh, self.retry, self.expire, self.minimum)
-
-
- def from_text(cls, rdclass, rdtype, tok, origin = None, relativize = True):
- mname = tok.get_name()
- rname = tok.get_name()
- mname = mname.choose_relativity(origin, relativize)
- rname = rname.choose_relativity(origin, relativize)
- serial = tok.get_uint32()
- refresh = tok.get_ttl()
- retry = tok.get_ttl()
- expire = tok.get_ttl()
- minimum = tok.get_ttl()
- tok.get_eol()
- return cls(rdclass, rdtype, mname, rname, serial, refresh, retry, expire, minimum)
-
- from_text = classmethod(from_text)
-
- def to_wire(self, file, compress = None, origin = None):
- self.mname.to_wire(file, compress, origin)
- self.rname.to_wire(file, compress, origin)
- five_ints = struct.pack('!IIIII', self.serial, self.refresh, self.retry, self.expire, self.minimum)
- file.write(five_ints)
-
-
- def from_wire(cls, rdclass, rdtype, wire, current, rdlen, origin = None):
- (mname, cused) = dns.name.from_wire(wire[:current + rdlen], current)
- current += cused
- rdlen -= cused
- (rname, cused) = dns.name.from_wire(wire[:current + rdlen], current)
- current += cused
- rdlen -= cused
- if rdlen != 20:
- raise dns.exception.FormError
- rdlen != 20
- five_ints = struct.unpack('!IIIII', wire[current:current + rdlen])
- if origin is not None:
- mname = mname.relativize(origin)
- rname = rname.relativize(origin)
-
- return cls(rdclass, rdtype, mname, rname, five_ints[0], five_ints[1], five_ints[2], five_ints[3], five_ints[4])
-
- from_wire = classmethod(from_wire)
-
- def choose_relativity(self, origin = None, relativize = True):
- self.mname = self.mname.choose_relativity(origin, relativize)
- self.rname = self.rname.choose_relativity(origin, relativize)
-
-
- def _cmp(self, other):
- v = cmp(self.mname, other.mname)
- if v == 0:
- v = cmp(self.rname, other.rname)
- if v == 0:
- self_ints = struct.pack('!IIIII', self.serial, self.refresh, self.retry, self.expire, self.minimum)
- other_ints = struct.pack('!IIIII', other.serial, other.refresh, other.retry, other.expire, other.minimum)
- v = cmp(self_ints, other_ints)
-
-
- return v
-
-
-