golden hour
/usr/lib/python3.9/site-packages/dns
⬆️ Go Up
Upload
File/Folder
Size
Actions
__init__.py
1.62 KB
Del
OK
__pycache__
-
Del
OK
_asyncbackend.py
2.3 KB
Del
OK
_asyncio_backend.py
8.76 KB
Del
OK
_ddr.py
5.12 KB
Del
OK
_features.py
2.33 KB
Del
OK
_immutable_ctx.py
2.4 KB
Del
OK
asyncbackend.py
2.73 KB
Del
OK
asyncquery.py
26.22 KB
Del
OK
asyncresolver.py
17.43 KB
Del
OK
dnssec.py
39.74 KB
Del
OK
dnssecalgs
-
Del
OK
dnssectypes.py
1.76 KB
Del
OK
e164.py
3.88 KB
Del
OK
edns.py
14.91 KB
Del
OK
entropy.py
4.14 KB
Del
OK
enum.py
3.6 KB
Del
OK
exception.py
5.82 KB
Del
OK
flags.py
2.69 KB
Del
OK
grange.py
2.1 KB
Del
OK
immutable.py
1.97 KB
Del
OK
inet.py
5.64 KB
Del
OK
ipv4.py
2.49 KB
Del
OK
ipv6.py
6.45 KB
Del
OK
message.py
64.45 KB
Del
OK
name.py
41.67 KB
Del
OK
namedict.py
3.91 KB
Del
OK
nameserver.py
9.68 KB
Del
OK
node.py
12.37 KB
Del
OK
opcode.py
2.67 KB
Del
OK
query.py
53.55 KB
Del
OK
quic
-
Del
OK
rcode.py
4.06 KB
Del
OK
rdata.py
28.77 KB
Del
OK
rdataclass.py
2.91 KB
Del
OK
rdataset.py
16.36 KB
Del
OK
rdatatype.py
7.17 KB
Del
OK
rdtypes
-
Del
OK
renderer.py
10.99 KB
Del
OK
resolver.py
71.83 KB
Del
OK
reversename.py
3.74 KB
Del
OK
rrset.py
8.96 KB
Del
OK
serial.py
3.52 KB
Del
OK
set.py
8.88 KB
Del
OK
tokenizer.py
23.03 KB
Del
OK
transaction.py
22.11 KB
Del
OK
tsig.py
11.15 KB
Del
OK
tsigkeyring.py
2.57 KB
Del
OK
ttl.py
2.91 KB
Del
OK
update.py
11.96 KB
Del
OK
version.py
1.88 KB
Del
OK
versioned.py
11.49 KB
Del
OK
win32util.py
8.89 KB
Del
OK
wire.py
2.76 KB
Del
OK
xfr.py
12.96 KB
Del
OK
zone.py
50.87 KB
Del
OK
zonefile.py
27.27 KB
Del
OK
zonetypes.py
690 B
Del
OK
Edit: wire.py
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license import contextlib import struct from typing import Iterator, Optional, Tuple import dns.exception import dns.name class Parser: def __init__(self, wire: bytes, current: int = 0): self.wire = wire self.current = 0 self.end = len(self.wire) if current: self.seek(current) self.furthest = current def remaining(self) -> int: return self.end - self.current def get_bytes(self, size: int) -> bytes: assert size >= 0 if size > self.remaining(): raise dns.exception.FormError output = self.wire[self.current : self.current + size] self.current += size self.furthest = max(self.furthest, self.current) return output def get_counted_bytes(self, length_size: int = 1) -> bytes: length = int.from_bytes(self.get_bytes(length_size), "big") return self.get_bytes(length) def get_remaining(self) -> bytes: return self.get_bytes(self.remaining()) def get_uint8(self) -> int: return struct.unpack("!B", self.get_bytes(1))[0] def get_uint16(self) -> int: return struct.unpack("!H", self.get_bytes(2))[0] def get_uint32(self) -> int: return struct.unpack("!I", self.get_bytes(4))[0] def get_uint48(self) -> int: return int.from_bytes(self.get_bytes(6), "big") def get_struct(self, format: str) -> Tuple: return struct.unpack(format, self.get_bytes(struct.calcsize(format))) def get_name(self, origin: Optional["dns.name.Name"] = None) -> "dns.name.Name": name = dns.name.from_wire_parser(self) if origin: name = name.relativize(origin) return name def seek(self, where: int) -> None: # Note that seeking to the end is OK! (If you try to read # after such a seek, you'll get an exception as expected.) if where < 0 or where > self.end: raise dns.exception.FormError self.current = where @contextlib.contextmanager def restrict_to(self, size: int) -> Iterator: assert size >= 0 if size > self.remaining(): raise dns.exception.FormError saved_end = self.end try: self.end = self.current + size yield # We make this check here and not in the finally as we # don't want to raise if we're already raising for some # other reason. if self.current != self.end: raise dns.exception.FormError finally: self.end = saved_end @contextlib.contextmanager def restore_furthest(self) -> Iterator: try: yield None finally: self.current = self.furthest
Save