GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

rthalley

dnspython – Python用の強力なDNSツールキット

投稿日:

Python用の強力なDNSツールキット http://www.dnspython.org

dnspython

前書き

dnspythonはPython用のDNSツールキットです。 ほぼすべてのレコードタイプをサポートしています。 これは、クエリ、ゾーン転送、および動的更新に使用できます。 TSIG認証メッセージとEDNS0をサポートしています。

dnspythonは、DNSへの高レベルアクセスと低レベルアクセスの両方を提供します。 高水準クラスは、指定された名前、型、およびクラスのデータに対してクエリを実行し、回答セットを返します。 低レベルのクラスでは、DNSゾーン、メッセージ、名前、およびレコードを直接操作できます。

dnspythonの使用方法のいくつかを見るには、 examples/ディレクトリを見てください。

dnspythonはDNSで動作するユーティリティであるため、 /etc/hostsは使用されません。 単純なフォワードDNSルックアップの場合は、 socket.gethostbyname()を使用する方が良いでしょう。

dnspythonは、DNSソフトウェアのテストを容易にするために開発されたNominumで作成されました。 Nominumは、BSDスタイルのライセンスでオープンソース化することを惜しみなく許可し、著者を引き続き採用することで将来の発展を支援します:)。

インストール

  • 多くのディストリビューションにはdnspythonがパッケージ化されていますので、最初にチェックしてください。
  • pipがインストールされている場合、 pip install dnspython実行できます
  • ソースファイルをダウンロードして解凍するだけでなく、 sudo python setup.py install

このリリースについて

これはdnspython 1.16.0です

1.15.0からの新機能:

XXXTBSXXX

1.15.0から修正されたバグ:

  • DNSSEC署名の検証で名前が正しく確認されませんでした。 [Issue#295]

  • NXDOMAIN例外は、そのdocstringを使用すべきではありません。 [問題#253]

1.14.0からの新機能:

  • IDNA 2008のサポートは、「idna」モジュールがインストールされ、IDNA 2008が要求されている場合に利用可能になりました。 新しいIDNAコーデックメカニズムは現在、dns.name.from_text()またはdns.name.from_unicode()への直接呼び出しにのみ有効ですが、将来のリリースではdnspython全体に展開されます。 IDNA 2008コーデックを使用してマスターファイルを読むことができます。

  • デフォルトでは、dns.name.to_unicode()は入力がどのIDNAのバージョンに準拠しているか厳密ではありません。 厳密なIDNAコーデックの1つを使用すると、厳密性を要求できます。

  • AVC RRがサポートされるようになりました。

1.14.0から修正されたバグ:

  • さまざまな出力モードでの改行に関するいくつかの問題に対処しました。

  • dns.name.to_text()はPython 3.xでバイトを返すようになりました。

  • Python 2/3コードラインのマージのためのその他の修正。

  • pylintサポートが追加された後の多くの “lint”修正。

  • 乱数ジェネレータはfork()の後に再シードします。

要件

Python 2.6以降。

トップページ

最新のリリース、ドキュメント、および情報については、dnspythonのホームページ( http://www.dnspython.org/)を参照してください。

バグの報告

バグレポートは、 https://github.com/rthalley/dnspython/issuesで開くか、 bugs@dnspython.orgに送付してください。

メーリングリスト

多数のメーリングリストが利用可能です。 サブスクリプションまたはサブスクライブ解除を行うには、dnspythonホームページを参照してください。

プレリリース情報

1.13.0からの新機能:

  • CSYNC RRがサポートされるようになりました。

  • dns/message.pymake_query ): use_ednsが指定されていない場合、 use_ednsuse_ednsを有効にすることを意味する値を設定します。

1.13.0から修正されたバグ:

  • TSIG署名アルゴリズムの設定は、Python 2とPython 3のコードラインマージによって壊れていました。

  • LOC RRのバグは、N / SとE / Wの区別をそれぞれ赤道または首相の程度で破壊しました。

  • その他 Python 2&3マージからのフォールアウトに対処するための修正。 修正#156、#157、#158、#159、#160。

  • 削除されたドキュメントストリングが参照されたときに発生した問題についてPython最適化を実行しています。 修正#154

  • dns.zone.from_text()は、ゾーンの提供を誤って要求しました。 修正#153

1.12.0からの新機能:

  • Dnspythonは現在、Python 2とPython 3の単一のソースを使用しているため、Python 2とPython 3のブランチ間の厄介なマージを排除しています。 この課題に取り組み、それをうまく活用してくれたArthur Gautierにありがとうございました! それは大きな仕事でした!

  • 2.6より古いPythonのサポートが落ちました。

  • 3.3より古いPythonのサポートが落ちました。

  • ゾーンの原点は文字列として指定できます。

  • すべてのDNSExceptionsの豊富な文字列表現。

  • setuptoolsがdistutilsを置き換えました

  • CAA、CDS、CDNSKEY、EUI48、EUI64、およびURI RRタイプのサポートが追加されました。

  • 名前はピクルプロトコルをサポートするようになりました。

  • ポートは、スタブリゾルバでネームサーバごとに指定できます。

1.12.0から修正されたバグ:

  • 多くのUnicode名のバグが修正されました。

  • resolv.conf処理で、トークンの数が少なすぎる行は拒否されるようになりました。

  • NameDictsは最大深度値を正しく維持し、適切に更新します。

1.11.1以降の新機能:

  • dns.zone.to_text()追加しました。

  • /etc/resolv.conf “options rotate”のサポートが追加されました。

  • dns.rdtypes.ANY.DNSKEYは、数値形式のフラグと人にやさしい文字列のセットを変換するヘルパー関数がdns.rdtypes.ANY.DNSKEYされました

  • IPv6マップされたIPv4アドレスの逆の名前は、IPv4逆ネームスペースにあります。

  • テストシステムは、dnspythonのインストールを必要とせずにテストを実行できるようになりました。

  • 予備楕円曲線DNSSEC検証(ECDSAモジュールが必要)

1.11.1から修正されたバグ:

  • 先行する空白で始まるマスターファイルを読み込むときにdnspythonが例外を発生させた

  • dnspythonは、64ビットウィンドウにPythonスライシングAPIバグが存在することによって影響を受けていました。

  • 間違った時刻にUnicodeエスケープが適用されました。

  • RRSIGのto_text()はrelativize設定を尊重しませんでした。

  • rdlengthがゼロのAPL RRは拒否されました。

  • トークナイザは、エスケープされていないトークンを戻すことができます。

  • TSIGで署名されたメッセージへの応答が壊れました。

  • IXFR状態マシンは、長いIXFR diffを処理しませんでした。

1.11.0以降の新機能:

  • 何も

1.11.0から修正されたバグ:

  • dns.resolver.Resolver retry_servfailではなくdns.resolver.Resolver誤って参照しself.retry_servfail

  • dns.tsigkeyring.to_text()は、キー名をテキストに変換しようとして失敗します。

  • 正しいダイジェストモジュールをHMACコードに渡していないため、マルチメッセージTSIGがHMAC-MD5以外のアルゴリズムで破損しました。

  • dns.dnssec._find_candidate_keys()は間違った変数名からキーを抽出しようとしました。

  • $ GENERATEテストは、Python 2.4と下位互換性がありませんでした。

1.10.0以降の新機能:

  • $ GENERATEのサポート

  • TLSA RRのサポート

  • dns.resolver.Resolverにset_flags()メソッドを追加しました。

1.10.0から修正されたバグ:

  • オフセット> = 2 ^ 14の名前は圧縮テーブルに追加されなくなりました。

  • “::”構文は、IPv6アドレスのテキスト形式の単一の16ビットセクションを短縮するためには使用されません。

  • キャッシュがロックされました。

  • YXDOMAINは、リゾルバから見れば発生します。

  • 空のrdatasetsは印刷されません。

  • DNSKEYキータグはもはやユニークであるとはみなされません。

1.9.4以降の新機能:

  • dns.resolver.LRUCacheを追加しました。 このキャッシュ実装では、キャッシュ・サイズはユーザー指定のノード数に制限され、新しいノードをフル・キャッシュに追加するとき、最も最近に使用されたノードは除去されます。 Webをクロールしている場合や、それ以外の方法で多くのことを行い、キャッシュを使用している場合は、LRUCacheに切り替えることをお勧めします。

  • dns.resolver.query()は、UDP応答が切り捨てられた場合にTCPを試行します。

  • PythonソケットモジュールのDNSメソッドは、dnspythonのリゾルバを使用する実装でオーバーライドできるようになりました。

  • 古いDNSSECタイプKEY、NXT、およびSIGは削除されました。

  • 空白はSSHFPの指紋で許可されます。

  • dns.zone.from_xfr()オリジンチェックを無効にすることができます。

  • 後続のジャンクチェックを無効にすることができます。

  • リゾルバクエリを作成するときにソースポートを指定できます。

  • すべてのEDNS値をdns.message.make_query()指定できるようになりました。

1.9.4から修正されたバグ:

  • IPv4とIPv6のアドレス処理がより厳しくなりました。

  • rdataワイヤ処理におけるスライスの境界チェックがより厳しくなり、境界エラー(たとえば、予想よりもデータが少なくなった)がIndexErrorではなくdns.exception.FormErrorなりました。

  • ソースポートを指定せずに送信元ポートを指定しても効果はありませんでしたが、ワイルドカードアドレスと指定されたポートが使用されるようになりました。

1.9.3以降の新機能:

  • 何もない。

1.9.3から修正されたバグ:

  • rdata _wire_cmp()ルーチンは相対名を扱うようになりました。

  • SIG RRの実装にimport structがありませんでした。

1.9.2以降の新機能:

  • ブール値のパラメータraise_on_no_answerquery()メソッドに追加されました。 エラーなし、データなしの状況では、このパラメータはNoAnswerを発生させるかどうかを決定します。 Trueの場合、 NoAnswerが発生します。 Falseの場合、None rrsetを持つAnswer()オブジェクトが返されます。

  • Resolver Answer()オブジェクトにcanonical_nameフィールドが追加されました。

  • Rdataに__hash__メソッドが__hash__

1.9.2から修正されたバグ:

  • Dnspythonは、NSECとRRSIG RRの名前の大文字と小文字を区別しない比較を誤って行っていました。

  • RRがどのセクションに含まれているかをテストするとき、 isとnotを使用します。

  • リゾルバは現在、メタクエリを許可していません。

1.9.1以降の新機能:

  • 何もない。

1.9.1から修正されたバグ:

  • テストスイートでもインポートが行われたため、 dns.dnssecモジュールはテストでの検出を逃したインポートがないため、まったく動作しませんでした。 3回目は魅力です!

1.9.0以降の新機能:

  • 何もない。

1.9.0から修正されたバグ:

  • dns.dnssecモジュールは、 “from”形式のインポートによる名前空間の汚染のためにDSAで動作しませんでした。

1.8.0以降の新機能:

  • dnspythonは、利用可能な場合にselect()代わりにpoll()使用するようになりました。

  • PyCrypto 2.3以降がインストールされている場合は、 dns.dnssec.validate_rrsig()およびdns.dnssec.validate_rrsig()を使用して基本的なDNSSEC検証を行うことができます。 完全な安全な解決はまだ利用できません。

  • key_id()をDNSSECモジュールに追加しました。これは、DNSKEY rdataのDNSSECキーIDを計算します。

  • 与えられたDNSKEY rdataのDS RRを返すDNSSECモジュールにmake_ds()を追加しました。

  • HMAC-SHA284またはHMAC-SHA512が2.5.2より古いPythonで使用されている場合、dnspythonは例外を発生させるようになりました。 (古いPythonは正しい値を計算しません。)

  • シンボリック定数は、TSIGアルゴリズム名で利用できるようになりました。

1.8.0から修正されたバグ

  • dns.resolver.zone_for_name()は、場合によってはCNAMEまたはDNAMEを持つクエリ応答を正しく処理しませんでした。

  • rdataの型とクラスをテキストとして指定するときに、Unicode文字列を使用できるようになりました。

  • Hashlibの互換性に関する問題が修正されました。

  • dns.messageインポートしdns.edns

  • 場合によっては、TSIGアルゴリズムの値がuse_tsig()に誤って渡されuse_tsig()

1.7.1以降の新機能:

  • hmac-sha1、hmac-sha224、hmac-sha256、hmac-sha384、hmac-sha512のサポートは、Kevin Chenによって提供されています。

  • トークナイザのトークンは、(タイプ、値)タプルの代わりにトークンオブジェクトになりました。

1.7.1以降に修正されたバグ:

  • マスターファイルのエスケープが正しく機能するようになりました。 以前は、関連テキストがドメイン名の一部であった場合にのみ正しく動作していました。

  • DDNSアップデートを作成するときに、 present()メソッドが単一のrdataと共に使用された場合、ゼロTTLは追加されませんでした。

  • エントロピープールはスレッドセーフであるためにロックが必要でした。

  • エントロピープールの/dev/randomの読み込みによって、dnspythonがブロックされる可能性があります。

  • エントロピープールはバッファされた読み込みを行い、必要以上にランダム性を消費する可能性があります。

  • エントロピープールは、Windows上で高品質のランダム性を与えることはありませんでした。

  • SRVレコードが誤って比較されました。

  • e164クエリ関数では、リゾルバパラメータは使用されませんでした。

1.7.0以降の新機能:

  • 何も

1.7.0以降に修正されたバグ:

  • 1.7.0キッティングプロセスは、誤ってDLV RRのコードを省略しました。

  • ネガティブなDDNSの前提条件が正しく処理されるようになりました。

1.6.0以降の新機能:

  • Rdatasにto_digestable()メソッドがto_digestable() 。このメソッドは、署名計算に使用するのに適したDNSSEC標準形式のrdataを返します。

  • NSEC3、NSEC3PARAM、DLV、およびHIP RRタイプがサポートされるようになりました。

  • エントロピーモジュールが追加され、クエリーIDをランダム化するために使用されます。

  • EDNS0オプションがサポートされるようになりました。

  • UDP IXFRがサポートされるようになりました。

  • ワイヤ形式のパーサにはone_rr_per_rrsetモードがone_rr_per_rrsetた。 one_rr_per_rrsetモードでは、特定のタイプのすべてのRRを単一のRRsetにまとめることを抑制します。

  • さまざまな有用なDNSSEC関連の定数が定義されました。

  • リゾルバのquery()メソッドにオプションのsourceパラメータが追加され、送信元IPアドレスを指定できるようになりました。

1.6.0から修正されたバグ:

  • Windowsでは、リゾルバはドメインを正しく設定しませんでした。

  • DS RR解析では、1つのBase64チャンクしか許可されませんでした。

  • TSIGの検証では必ずしも絶対名は使用されませんでした。

  • NSEC.to_text()は最後のウィンドウだけを表示しました。

  • IPv6アドレスを比較する前に標準化していませんでした。 我々は等価であるが異なるテキスト形式、例えば “1:00 :: 1″と “1 :: 1″を等価でないものとして扱うことになる。

  • ピアがTSIGエラーを設定した場合、例外は発生しませんでした。

  • メッセージコードの一部のEDNSバグが修正されました(詳細はChangeLogを参照)。

1.5.0以降の新機能:

  • dns.inet.is_multicast()を追加しました。

1.5.0から修正されたバグ:

  • select()がEINTRのために例外を発生させた場合select()を再度select()だけです。

  • 照会されたアドレスがマルチキャスト・アドレスである場合、照会されたアドレスが照会されたアドレスと同じであることをチェックしないでください。

  • NAPTRの比較は、タイプミスのために嗜好フィールドを比較しなかった。

  • Windows NICが有効になっているかどうかのテストは、Paul Marksが提供したコードのおかげでVista上で動作するようになりました。

1.4.0以降の新機能:

  • AnswerオブジェクトはPythonシーケンスプロトコルの多くをサポートし、要求を回答rrsetに転送します。 例えばfor a in answerfor a in answer.rrsetanswer[i]answer.rrset[i]と同等で、 answer[i:j]answer.rrset[i:j]と同じです。

  • DNSSECの意識表示を含む、EDNSを使用したリクエストの作成が簡単になりました。 たとえば、次のように言うことができます: q = dns.message.make_query('www.dnspython.org', 'MX', want_dnssec=True)

  • dns.query.xfr()をIXFRに使用できるようになりました。

  • DHCID、IPSECKEY、およびSPF RRタイプのサポートが追加されました。

  • ignore_unexpectedを呼び出すときにignore_unexpectedをTrueに設定すると、予期しないソースからのUDPメッセージを無視できるようになりdns.query.udp

1.4.0以降に修正されたバグ:

  • /etc/resolv.confが存在しない場合、単純にデフォルトリゾルバ設定を使用するのではなく、例外を発生させました。

  • dns.resolver.Resolver._config_win32_fromkey()では、間違った変数をself._config_win32_search()渡していました。

1.3.5以降の新機能:

  • E.164番号をENUM名の形式に変換することができます:

    >>> import dns.e164
    >>> n = dns.e164.from_e164("+1 555 1212")
    >>> n
    <DNS name 2.1.2.1.5.5.5.1.e164.arpa.>
    >>> dns.e164.to_e164(n)
    '+15551212'
  • IPv4とIPv6アドレスを対応するDNSリバースマップ名との間で変換することができます:

    >>> import dns.reversename
    >>> n = dns.reversename.from_address("127.0.0.1")
    >>> n
    <DNS name 1.0.0.127.in-addr.arpa.>
    >>> dns.reversename.to_address(n)
    '127.0.0.1'
  • Unicode文字列とIDN ACEフォームの間で変換できるようになりました。

    >>> n = dns.name.from_text(u'les-\u00e9l\u00e8ves.example.')
    >>> n
    <DNS name xn--les-lves-50ai.example.>
    >>> n.to_unicode()
    u'les-\xe9l\xe8ves.example.'
  • dns.zone.from_text()およびdns.zone.to_text()のoriginパラメータは現在オプションです。 指定しない場合、原点はマスターファイルの最初の$ ORIGINステートメントから取得されます。

  • ゾーンの正常性チェックを無効にすることができます。 これは、ゾーンの断片であるファイルを操作する場合に便利です。

1.3.5から修正されたバグ:

  • 特定のバージョンのWindowsでは、レジストリからネームサーバーのリストを取得するときに、正しい区切り文字は使用されませんでした。

  • LOC RR( float_latitudeおよびfloat_longitude )の浮動小数点バージョンの緯度および経度には、南緯および西経の誤った符号がありました。

  • BIND 8のTTL構文は、すべてのTTLのような場所(SOAフィールドのリフレッシュ、再試行、期限切れ、最小値、SIG / RRSIGフィールドoriginal_ttl)で受け入れられるようになりました。

  • TTLは、テキスト形式が解析されるときにチェックされ、その値は閉じられた間隔[0, 2^31 - 1]なければなりません。

1.3.4以降の新機能:

  • レゾルバで、時間が少し後ろに行くなら、それを無視してください。

  • zone_for_name()がリゾルバモジュールに追加されました。 指定された名前に対して権限のあるゾーンが返されます。これは動的更新に便利です。 例えば

    import dns.resolver
    print dns.resolver.zone_for_name('www.dnspython.org')
    

    "dnspython.org."を出力します"dnspython.org." print dns.resolver.zone_for_name('abcdefexample.')を出力すると"."が出力されます"."

  • デフォルトのリゾルバは、 get_default_resolver()メソッドで取得できます。

  • parent()メソッドを使用して、名前の親(直前のスーパードメイン)を取得できるようになりました。

  • ドキュメントにあるように、 Zone.iterate_rdatasets()Zone.iterate_rdatas()のデフォルトのrdtypeはdns.rdatatype.ANYになりました。

  • ダイナミックDNSの例ddns.pyが追加されました。

1.3.3以降の新機能:

  • dns.query.{udp,tcp,xfr}呼び出すときに、送信元アドレスとポートを指定できるようになりました。

  • リゾルバは、すべてのネームサーバを実行するたびに指数バックオフを行います。

  • ネームサーバがクエリの「永続的な失敗」である可能性が高いことを示すRコードは、ネームサーバがそのクエリのミックスから削除される原因となります。

1.3.2以降の新機能:

  • dns.message.Message.find_rrset()はインデックスを使用するようになり、ゾーン転送などの大きなメッセージのfrom_wire()パフォーマンスが大幅に向上しfrom_wire()

  • dns.message.make_response()追加され、指定されたクエリの骨格応答が作成されます。

  • dns.message.Messageクラスにopcode()およびset_opcode()メソッドを追加しました。 request_payload属性をMessageクラスに追加しました。

  • dns.name.Name.to_wire()fileパラメータは現在オプションです。 省略された場合、ワイヤフォームは関数の値として返されます。

  • 相対化モードのdns.zone.from_xfr()は、 zone.originを空の名前に間違って設定します。

  • マスターファイルパーサーは、値が引用符で囲まれていないTXTレコードを間違って拒否しました。

1.3.1以降の新機能:

  • NSEC形式では数値で型を指定することはできませんので、どちらも指定しないでください。 (未知の型の書式を使用してもOKです。)

  • リゾルバはdns.exception.Timeout捕まえていなかったので、タイムアウトにより誤って次のサーバに行くのではなく、全体の解決が失敗しました。

  • レンダラーモジュールがランダムをインポートしなかったため、レンダーが作成されたときにクエリIDが提供されなかった場合に例外が発生しました。

  • ミリ秒文字列の長さが3でない場合、LOCミリ秒値のテキストからバイナリへの変換は正しくありませんでした。

1.3.0以降の新機能:

  • SSHFPタイプのサポートが追加されました。

1.2.0以降の新機能:

  • 新しいDNSSECタイプRRSIG、NSEC、およびDNSKEYのサポートが追加されました。

  • このリリースでは、すべての既知のバグが修正されています。

  • 以前のリリース以降の変更の詳細については、ChangeLogファイルを参照してください。







-rthalley
-

執筆者:

rthalley

dnspython – Python用の強力なDNSツールキット

投稿日:

(さらに…)







-rthalley
-

執筆者: