Загрузить файлы в «venv/Lib/site-packages/dns/rdtypes/ANY»
This commit is contained in:
30
venv/Lib/site-packages/dns/rdtypes/ANY/EUI48.py
Normal file
30
venv/Lib/site-packages/dns/rdtypes/ANY/EUI48.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
|
||||||
|
|
||||||
|
# Copyright (C) 2015 Red Hat, Inc.
|
||||||
|
# Author: Petr Spacek <pspacek@redhat.com>
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, and distribute this software and its
|
||||||
|
# documentation for any purpose with or without fee is hereby granted,
|
||||||
|
# provided that the above copyright notice and this permission notice
|
||||||
|
# appear in all copies.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED 'AS IS' AND RED HAT DISCLAIMS ALL WARRANTIES
|
||||||
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
|
||||||
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||||
|
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
import dns.immutable
|
||||||
|
import dns.rdtypes.euibase
|
||||||
|
|
||||||
|
|
||||||
|
@dns.immutable.immutable
|
||||||
|
class EUI48(dns.rdtypes.euibase.EUIBase):
|
||||||
|
"""EUI48 record"""
|
||||||
|
|
||||||
|
# see: rfc7043.txt
|
||||||
|
|
||||||
|
byte_len = 6 # 0123456789ab (in hex)
|
||||||
|
text_len = byte_len * 3 - 1 # 01-23-45-67-89-ab
|
||||||
30
venv/Lib/site-packages/dns/rdtypes/ANY/EUI64.py
Normal file
30
venv/Lib/site-packages/dns/rdtypes/ANY/EUI64.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
|
||||||
|
|
||||||
|
# Copyright (C) 2015 Red Hat, Inc.
|
||||||
|
# Author: Petr Spacek <pspacek@redhat.com>
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, and distribute this software and its
|
||||||
|
# documentation for any purpose with or without fee is hereby granted,
|
||||||
|
# provided that the above copyright notice and this permission notice
|
||||||
|
# appear in all copies.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED 'AS IS' AND RED HAT DISCLAIMS ALL WARRANTIES
|
||||||
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
|
||||||
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||||
|
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
import dns.immutable
|
||||||
|
import dns.rdtypes.euibase
|
||||||
|
|
||||||
|
|
||||||
|
@dns.immutable.immutable
|
||||||
|
class EUI64(dns.rdtypes.euibase.EUIBase):
|
||||||
|
"""EUI64 record"""
|
||||||
|
|
||||||
|
# see: rfc7043.txt
|
||||||
|
|
||||||
|
byte_len = 8 # 0123456789abcdef (in hex)
|
||||||
|
text_len = byte_len * 3 - 1 # 01-23-45-67-89-ab-cd-ef
|
||||||
126
venv/Lib/site-packages/dns/rdtypes/ANY/GPOS.py
Normal file
126
venv/Lib/site-packages/dns/rdtypes/ANY/GPOS.py
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
|
||||||
|
|
||||||
|
# Copyright (C) 2003-2007, 2009-2011 Nominum, Inc.
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, and distribute this software and its
|
||||||
|
# documentation for any purpose with or without fee is hereby granted,
|
||||||
|
# provided that the above copyright notice and this permission notice
|
||||||
|
# appear in all copies.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
|
||||||
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
|
||||||
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||||
|
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
import struct
|
||||||
|
|
||||||
|
import dns.exception
|
||||||
|
import dns.immutable
|
||||||
|
import dns.rdata
|
||||||
|
import dns.tokenizer
|
||||||
|
|
||||||
|
|
||||||
|
def _validate_float_string(what):
|
||||||
|
if len(what) == 0:
|
||||||
|
raise dns.exception.FormError
|
||||||
|
if what[0] == b"-"[0] or what[0] == b"+"[0]:
|
||||||
|
what = what[1:]
|
||||||
|
if what.isdigit():
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
(left, right) = what.split(b".")
|
||||||
|
except ValueError:
|
||||||
|
raise dns.exception.FormError
|
||||||
|
if left == b"" and right == b"":
|
||||||
|
raise dns.exception.FormError
|
||||||
|
if not left == b"" and not left.decode().isdigit():
|
||||||
|
raise dns.exception.FormError
|
||||||
|
if not right == b"" and not right.decode().isdigit():
|
||||||
|
raise dns.exception.FormError
|
||||||
|
|
||||||
|
|
||||||
|
@dns.immutable.immutable
|
||||||
|
class GPOS(dns.rdata.Rdata):
|
||||||
|
"""GPOS record"""
|
||||||
|
|
||||||
|
# see: RFC 1712
|
||||||
|
|
||||||
|
__slots__ = ["latitude", "longitude", "altitude"]
|
||||||
|
|
||||||
|
def __init__(self, rdclass, rdtype, latitude, longitude, altitude):
|
||||||
|
super().__init__(rdclass, rdtype)
|
||||||
|
if isinstance(latitude, float) or isinstance(latitude, int):
|
||||||
|
latitude = str(latitude)
|
||||||
|
if isinstance(longitude, float) or isinstance(longitude, int):
|
||||||
|
longitude = str(longitude)
|
||||||
|
if isinstance(altitude, float) or isinstance(altitude, int):
|
||||||
|
altitude = str(altitude)
|
||||||
|
latitude = self._as_bytes(latitude, True, 255)
|
||||||
|
longitude = self._as_bytes(longitude, True, 255)
|
||||||
|
altitude = self._as_bytes(altitude, True, 255)
|
||||||
|
_validate_float_string(latitude)
|
||||||
|
_validate_float_string(longitude)
|
||||||
|
_validate_float_string(altitude)
|
||||||
|
self.latitude = latitude
|
||||||
|
self.longitude = longitude
|
||||||
|
self.altitude = altitude
|
||||||
|
flat = self.float_latitude
|
||||||
|
if flat < -90.0 or flat > 90.0:
|
||||||
|
raise dns.exception.FormError("bad latitude")
|
||||||
|
flong = self.float_longitude
|
||||||
|
if flong < -180.0 or flong > 180.0:
|
||||||
|
raise dns.exception.FormError("bad longitude")
|
||||||
|
|
||||||
|
def to_text(self, origin=None, relativize=True, **kw):
|
||||||
|
return (
|
||||||
|
f"{self.latitude.decode()} {self.longitude.decode()} "
|
||||||
|
f"{self.altitude.decode()}"
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_text(
|
||||||
|
cls, rdclass, rdtype, tok, origin=None, relativize=True, relativize_to=None
|
||||||
|
):
|
||||||
|
latitude = tok.get_string()
|
||||||
|
longitude = tok.get_string()
|
||||||
|
altitude = tok.get_string()
|
||||||
|
return cls(rdclass, rdtype, latitude, longitude, altitude)
|
||||||
|
|
||||||
|
def _to_wire(self, file, compress=None, origin=None, canonicalize=False):
|
||||||
|
l = len(self.latitude)
|
||||||
|
assert l < 256
|
||||||
|
file.write(struct.pack("!B", l))
|
||||||
|
file.write(self.latitude)
|
||||||
|
l = len(self.longitude)
|
||||||
|
assert l < 256
|
||||||
|
file.write(struct.pack("!B", l))
|
||||||
|
file.write(self.longitude)
|
||||||
|
l = len(self.altitude)
|
||||||
|
assert l < 256
|
||||||
|
file.write(struct.pack("!B", l))
|
||||||
|
file.write(self.altitude)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_wire_parser(cls, rdclass, rdtype, parser, origin=None):
|
||||||
|
latitude = parser.get_counted_bytes()
|
||||||
|
longitude = parser.get_counted_bytes()
|
||||||
|
altitude = parser.get_counted_bytes()
|
||||||
|
return cls(rdclass, rdtype, latitude, longitude, altitude)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def float_latitude(self):
|
||||||
|
"latitude as a floating point value"
|
||||||
|
return float(self.latitude)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def float_longitude(self):
|
||||||
|
"longitude as a floating point value"
|
||||||
|
return float(self.longitude)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def float_altitude(self):
|
||||||
|
"altitude as a floating point value"
|
||||||
|
return float(self.altitude)
|
||||||
64
venv/Lib/site-packages/dns/rdtypes/ANY/HINFO.py
Normal file
64
venv/Lib/site-packages/dns/rdtypes/ANY/HINFO.py
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
|
||||||
|
|
||||||
|
# Copyright (C) 2003-2007, 2009-2011 Nominum, Inc.
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, and distribute this software and its
|
||||||
|
# documentation for any purpose with or without fee is hereby granted,
|
||||||
|
# provided that the above copyright notice and this permission notice
|
||||||
|
# appear in all copies.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
|
||||||
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
|
||||||
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||||
|
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
import struct
|
||||||
|
|
||||||
|
import dns.exception
|
||||||
|
import dns.immutable
|
||||||
|
import dns.rdata
|
||||||
|
import dns.tokenizer
|
||||||
|
|
||||||
|
|
||||||
|
@dns.immutable.immutable
|
||||||
|
class HINFO(dns.rdata.Rdata):
|
||||||
|
"""HINFO record"""
|
||||||
|
|
||||||
|
# see: RFC 1035
|
||||||
|
|
||||||
|
__slots__ = ["cpu", "os"]
|
||||||
|
|
||||||
|
def __init__(self, rdclass, rdtype, cpu, os):
|
||||||
|
super().__init__(rdclass, rdtype)
|
||||||
|
self.cpu = self._as_bytes(cpu, True, 255)
|
||||||
|
self.os = self._as_bytes(os, True, 255)
|
||||||
|
|
||||||
|
def to_text(self, origin=None, relativize=True, **kw):
|
||||||
|
return f'"{dns.rdata._escapify(self.cpu)}" "{dns.rdata._escapify(self.os)}"'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_text(
|
||||||
|
cls, rdclass, rdtype, tok, origin=None, relativize=True, relativize_to=None
|
||||||
|
):
|
||||||
|
cpu = tok.get_string(max_length=255)
|
||||||
|
os = tok.get_string(max_length=255)
|
||||||
|
return cls(rdclass, rdtype, cpu, os)
|
||||||
|
|
||||||
|
def _to_wire(self, file, compress=None, origin=None, canonicalize=False):
|
||||||
|
l = len(self.cpu)
|
||||||
|
assert l < 256
|
||||||
|
file.write(struct.pack("!B", l))
|
||||||
|
file.write(self.cpu)
|
||||||
|
l = len(self.os)
|
||||||
|
assert l < 256
|
||||||
|
file.write(struct.pack("!B", l))
|
||||||
|
file.write(self.os)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_wire_parser(cls, rdclass, rdtype, parser, origin=None):
|
||||||
|
cpu = parser.get_counted_bytes()
|
||||||
|
os = parser.get_counted_bytes()
|
||||||
|
return cls(rdclass, rdtype, cpu, os)
|
||||||
85
venv/Lib/site-packages/dns/rdtypes/ANY/HIP.py
Normal file
85
venv/Lib/site-packages/dns/rdtypes/ANY/HIP.py
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
|
||||||
|
|
||||||
|
# Copyright (C) 2010, 2011 Nominum, Inc.
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, and distribute this software and its
|
||||||
|
# documentation for any purpose with or without fee is hereby granted,
|
||||||
|
# provided that the above copyright notice and this permission notice
|
||||||
|
# appear in all copies.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
|
||||||
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
|
||||||
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||||
|
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
import base64
|
||||||
|
import binascii
|
||||||
|
import struct
|
||||||
|
|
||||||
|
import dns.exception
|
||||||
|
import dns.immutable
|
||||||
|
import dns.rdata
|
||||||
|
import dns.rdatatype
|
||||||
|
|
||||||
|
|
||||||
|
@dns.immutable.immutable
|
||||||
|
class HIP(dns.rdata.Rdata):
|
||||||
|
"""HIP record"""
|
||||||
|
|
||||||
|
# see: RFC 5205
|
||||||
|
|
||||||
|
__slots__ = ["hit", "algorithm", "key", "servers"]
|
||||||
|
|
||||||
|
def __init__(self, rdclass, rdtype, hit, algorithm, key, servers):
|
||||||
|
super().__init__(rdclass, rdtype)
|
||||||
|
self.hit = self._as_bytes(hit, True, 255)
|
||||||
|
self.algorithm = self._as_uint8(algorithm)
|
||||||
|
self.key = self._as_bytes(key, True)
|
||||||
|
self.servers = self._as_tuple(servers, self._as_name)
|
||||||
|
|
||||||
|
def to_text(self, origin=None, relativize=True, **kw):
|
||||||
|
hit = binascii.hexlify(self.hit).decode()
|
||||||
|
key = base64.b64encode(self.key).replace(b"\n", b"").decode()
|
||||||
|
text = ""
|
||||||
|
servers = []
|
||||||
|
for server in self.servers:
|
||||||
|
servers.append(server.choose_relativity(origin, relativize))
|
||||||
|
if len(servers) > 0:
|
||||||
|
text += " " + " ".join(x.to_unicode() for x in servers)
|
||||||
|
return f"{self.algorithm} {hit} {key}{text}"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_text(
|
||||||
|
cls, rdclass, rdtype, tok, origin=None, relativize=True, relativize_to=None
|
||||||
|
):
|
||||||
|
algorithm = tok.get_uint8()
|
||||||
|
hit = binascii.unhexlify(tok.get_string().encode())
|
||||||
|
key = base64.b64decode(tok.get_string().encode())
|
||||||
|
servers = []
|
||||||
|
for token in tok.get_remaining():
|
||||||
|
server = tok.as_name(token, origin, relativize, relativize_to)
|
||||||
|
servers.append(server)
|
||||||
|
return cls(rdclass, rdtype, hit, algorithm, key, servers)
|
||||||
|
|
||||||
|
def _to_wire(self, file, compress=None, origin=None, canonicalize=False):
|
||||||
|
lh = len(self.hit)
|
||||||
|
lk = len(self.key)
|
||||||
|
file.write(struct.pack("!BBH", lh, self.algorithm, lk))
|
||||||
|
file.write(self.hit)
|
||||||
|
file.write(self.key)
|
||||||
|
for server in self.servers:
|
||||||
|
server.to_wire(file, None, origin, False)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_wire_parser(cls, rdclass, rdtype, parser, origin=None):
|
||||||
|
(lh, algorithm, lk) = parser.get_struct("!BBH")
|
||||||
|
hit = parser.get_bytes(lh)
|
||||||
|
key = parser.get_bytes(lk)
|
||||||
|
servers = []
|
||||||
|
while parser.remaining() > 0:
|
||||||
|
server = parser.get_name(origin)
|
||||||
|
servers.append(server)
|
||||||
|
return cls(rdclass, rdtype, hit, algorithm, key, servers)
|
||||||
Reference in New Issue
Block a user