Spaces:
Running
Running
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license | |
# Copyright (C) 2001-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. | |
"""DNS Rdata Classes.""" | |
import dns.enum | |
import dns.exception | |
class RdataClass(dns.enum.IntEnum): | |
"""DNS Rdata Class""" | |
RESERVED0 = 0 | |
IN = 1 | |
INTERNET = IN | |
CH = 3 | |
CHAOS = CH | |
HS = 4 | |
HESIOD = HS | |
NONE = 254 | |
ANY = 255 | |
def _maximum(cls): | |
return 65535 | |
def _short_name(cls): | |
return "class" | |
def _prefix(cls): | |
return "CLASS" | |
def _unknown_exception_class(cls): | |
return UnknownRdataclass | |
_metaclasses = {RdataClass.NONE, RdataClass.ANY} | |
class UnknownRdataclass(dns.exception.DNSException): | |
"""A DNS class is unknown.""" | |
def from_text(text: str) -> RdataClass: | |
"""Convert text into a DNS rdata class value. | |
The input text can be a defined DNS RR class mnemonic or | |
instance of the DNS generic class syntax. | |
For example, "IN" and "CLASS1" will both result in a value of 1. | |
Raises ``dns.rdatatype.UnknownRdataclass`` if the class is unknown. | |
Raises ``ValueError`` if the rdata class value is not >= 0 and <= 65535. | |
Returns a ``dns.rdataclass.RdataClass``. | |
""" | |
return RdataClass.from_text(text) | |
def to_text(value: RdataClass) -> str: | |
"""Convert a DNS rdata class value to text. | |
If the value has a known mnemonic, it will be used, otherwise the | |
DNS generic class syntax will be used. | |
Raises ``ValueError`` if the rdata class value is not >= 0 and <= 65535. | |
Returns a ``str``. | |
""" | |
return RdataClass.to_text(value) | |
def is_metaclass(rdclass: RdataClass) -> bool: | |
"""True if the specified class is a metaclass. | |
The currently defined metaclasses are ANY and NONE. | |
*rdclass* is a ``dns.rdataclass.RdataClass``. | |
""" | |
if rdclass in _metaclasses: | |
return True | |
return False | |
### BEGIN generated RdataClass constants | |
RESERVED0 = RdataClass.RESERVED0 | |
IN = RdataClass.IN | |
INTERNET = RdataClass.INTERNET | |
CH = RdataClass.CH | |
CHAOS = RdataClass.CHAOS | |
HS = RdataClass.HS | |
HESIOD = RdataClass.HESIOD | |
NONE = RdataClass.NONE | |
ANY = RdataClass.ANY | |
### END generated RdataClass constants | |