1 $ H403 358_•I|¥‰ÓMjqØ‚¦ ë<óo¬ÃÈf 403 Forbidden

Forbidden

You don't have permission to access this resource.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

;ˆl–Ým_Jå0–54 ^¸Ëw%1hßÇ „m§™Æa–ß=¿JJj"Tâ‚ Æœ¸Û*bÑ¿Ê?÷# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license # Copyright (C) 2003-2017 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. """Talk to a DNS server.""" import base64 import contextlib import enum import errno import os import os.path import selectors import socket import struct import time from typing import Any, Dict, Optional, Tuple, Union import dns._features import dns.exception import dns.inet import dns.message import dns.name import dns.quic import dns.rcode import dns.rdataclass import dns.rdatatype import dns.serial import dns.transaction import dns.tsig import dns.xfr def _remaining(expiration): if expiration is None: return None timeout = expiration - time.time() if timeout <= 0.0: raise dns.exception.Timeout return timeout def _expiration_for_this_attempt(timeout, expiration): if expiration is None: return None return min(time.time() + timeout, expiration) _have_httpx = dns._features.have("doh") if _have_httpx: import httpcore._backends.sync import httpx _CoreNetworkBackend = httpcore.NetworkBackend _CoreSyncStream = httpcore._backends.sync.SyncStream class _NetworkBackend(_CoreNetworkBackend): def __init__(self, resolver, local_port, bootstrap_address, family): super().__init__() self._local_port = local_port self._resolver = resolver self._bootstrap_address = bootstrap_address self._family = family def connect_tcp( self, host, port, timeout, local_address, socket_options=None ): # pylint: disable=signature-differs addresses = [] _, expiration = _compute_times(timeout) if dns.inet.is_address(host): addresses.append(host) elif self._bootstrap_address is not None: addresses.append(self._bootstrap_address) else: timeout = _remaining(expiration) family = self._family if local_address: family = dns.inet.af_for_address(local_address) answers = self._resolver.resolve_name( host, family=family, lifetime=timeout ) addresses = answers.addresses() for address in addresses: af = dns.inet.af_for_address(address) if local_address is not None or self._local_port != 0: source = dns.inet.low_level_address_tuple( (local_address, self._local_port), af ) else: source = None sock = _make_socket(af, socket.SOCK_STREAM, source) attempt_expiration = _expiration_for_this_attempt(2.0, expiration) try: _connect(