Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
flags.py124 linesDownload Raw Back to dns
1# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license2 3# Copyright (C) 2001-2017 Nominum, Inc.4#5# Permission to use, copy, modify, and distribute this software and its6# documentation for any purpose with or without fee is hereby granted,7# provided that the above copyright notice and this permission notice8# appear in all copies.9#10# THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES11# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF12# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR13# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES14# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN15# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT16# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.17 18"""DNS Message Flags."""19 20import enum21from typing import Any22 23# Standard DNS flags24 25 26class Flag(enum.IntFlag):27    #: Query Response28    QR = 0x800029    #: Authoritative Answer30    AA = 0x040031    #: Truncated Response32    TC = 0x020033    #: Recursion Desired34    RD = 0x010035    #: Recursion Available36    RA = 0x008037    #: Authentic Data38    AD = 0x002039    #: Checking Disabled40    CD = 0x001041 42 43# EDNS flags44 45 46class EDNSFlag(enum.IntFlag):47    #: DNSSEC answer OK48    DO = 0x800049 50 51def _from_text(text: str, enum_class: Any) -> int:52    flags = 053    tokens = text.split()54    for t in tokens:55        flags |= enum_class[t.upper()]56    return flags57 58 59def _to_text(flags: int, enum_class: Any) -> str:60    text_flags = []61    for k, v in enum_class.__members__.items():62        if flags & v != 0:63            text_flags.append(k)64    return " ".join(text_flags)65 66 67def from_text(text: str) -> int:68    """Convert a space-separated list of flag text values into a flags69    value.70 71    Returns an ``int``72    """73 74    return _from_text(text, Flag)75 76 77def to_text(flags: int) -> str:78    """Convert a flags value into a space-separated list of flag text79    values.80 81    Returns a ``str``.82    """83 84    return _to_text(flags, Flag)85 86 87def edns_from_text(text: str) -> int:88    """Convert a space-separated list of EDNS flag text values into a EDNS89    flags value.90 91    Returns an ``int``92    """93 94    return _from_text(text, EDNSFlag)95 96 97def edns_to_text(flags: int) -> str:98    """Convert an EDNS flags value into a space-separated list of EDNS flag99    text values.100 101    Returns a ``str``.102    """103 104    return _to_text(flags, EDNSFlag)105 106 107### BEGIN generated Flag constants108 109QR = Flag.QR110AA = Flag.AA111TC = Flag.TC112RD = Flag.RD113RA = Flag.RA114AD = Flag.AD115CD = Flag.CD116 117### END generated Flag constants118 119### BEGIN generated EDNSFlag constants120 121DO = EDNSFlag.DO122 123### END generated EDNSFlag constants124 
codekingpro/portable-devtools · Team Ai