]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
update, add build status
authorBob Halley <halley@play-bow.org>
Sun, 21 Feb 2016 23:37:40 +0000 (15:37 -0800)
committerBob Halley <halley@play-bow.org>
Sun, 21 Feb 2016 23:37:40 +0000 (15:37 -0800)
README.md [new file with mode: 0644]

diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..8fddae5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,562 @@
+dnspython [![Build Status](https://travis-ci.org/rthalley/dnspython.svg?branch=python3)](https://travis-ci.org/rthalley/dnspython)
+
+## INTRODUCTION
+
+dnspython is a DNS toolkit for Python. It supports almost all record
+types. It can be used for queries, zone transfers, and dynamic
+updates.  It supports TSIG authenticated messages and EDNS0.
+
+dnspython provides both high and low level access to DNS. The high
+level classes perform queries for data of a given name, type, and
+class, and return an answer set.  The low level classes allow direct
+manipulation of DNS zones, messages, names, and records.
+
+To see a few of the ways dnspython can be used, look in the examples/
+directory.
+
+dnspython originated at Nominum where it was developed to facilitate
+the testing of DNS software.  Nominum has generously allowed it to be
+open sourced under a BSD-style license, and helps support its future
+development by continuing to employ the author :).
+
+## INSTALLATION
+- If you have pip installed, you can do this
+`pip install dnspython3`
+- If not just download the source file and unzip it, then run this
+`sudo python3 setup.py install`
+
+## ABOUT THIS RELEASE
+
+This is dnspython3 1.12.0
+
+New since 1.11.1:
+    
+       Added dns.zone.to_text().
+
+       Added support for "options rotate" in /etc/resolv.conf.
+
+       dns.rdtypes.ANY.DNSKEY now has helpers functions to convert
+       between the numeric form of the flags and a set of
+       human-friendly strings
+
+       The reverse name of an IPv6 mapped IPv4 address is now in the
+       IPv4 reverse namespace.
+
+       The test system can now run the tests without requiring
+       dnspython to be installed.
+
+Bugs fixed since 1.11.1:
+
+       dnspython raised an exception when reading a masterfile starting
+       with leading whitespace
+       
+       dnspython was affected by a python slicing API bug present on
+       64-bit windows.
+
+       Unicode escaping was applied at the wrong time.
+
+       RRSIG to_text() did not respect the relativize setting.
+
+       APL RRs with zero rdlength were rejected.
+
+       The tokenizer could put back an unescaped token.
+
+       Making a response to a message signed with TSIG was broken.
+
+       The IXFR state machine didn't handle long IXFR diffs.
+
+       dns.inet.is_multicast had python3 port issues.
+
+New since 1.11.0:
+    
+       Nothing
+
+Bugs fixed since 1.11.1:
+
+       dns.resolver.Resolver erroneously referred to 'retry_servfail'
+       instead of 'self.retry_servfail'.
+
+       dns.tsigkeyring.to_text() would fail trying to convert the
+       keyname to text.
+
+       Multi-message TSIGs were broken for algorithms other than
+       HMAC-MD5 because we weren't passing the right digest module to
+       the HMAC code.
+
+       dns.dnssec._find_candidate_keys() tried to extract the key
+       from the wrong variable name.
+
+       $GENERATE tests were not backward compatible with python 2.4.
+
+       APL RR trailing zero suppression didn't work due to insufficient
+       python 3 porting.
+
+New since 1.10.0:
+
+        $GENERATE support
+
+       TLSA RR support
+
+       Added set_flags() method to dns.resolver.Resolver
+
+Bugs fixed since 1.10.0:
+
+        Names with offsets >= 2^14 are no longer added to the compression
+       table.
+
+       The "::" syntax is not used to shorten a single 16-bit section of
+       the text form an IPv6 address.
+
+       Caches are now locked.
+
+       YXDOMAIN is raised if seen by the resolver.
+
+       Empty rdatasets are not printed.
+
+       DNSKEY key tags are no longer assumed to be unique.
+
+       Python 3 renamed _winreg to winreg, we now cope.
+
+       Python 3 port issues with RSA validation.
+
+New since 1.9.4:
+
+               Added dns.resolver.LRUCache.  In this cache implementation,
+       the cache size is limited to a user-specified number of nodes,
+       and when adding a new node to a full cache the least-recently
+       used node is removed.  If you're crawling the web or otherwise
+       doing lots of resolutions and you are using a cache, switching
+       to the LRUCache is recommended.
+
+       dns.resolver.query() will try TCP if a UDP response is
+       truncated.
+
+       The python socket module's DNS methods can be now be overriden
+       with implementations that use dnspython's resolver.
+
+       Old DNSSEC types KEY, NXT, and SIG have been removed.
+
+       Whitespace is allowed in SSHFP fingerprints.
+
+       Origin checking in dns.zone.from_xfr() can be disabled.
+
+       Trailing junk checking can be disabled.
+
+       A source port can be specified when creating a resolver query.
+
+       All EDNS values may now be specified to dns.message.make_query().
+
+Bugs fixed since 1.9.4:
+
+       IPv4 and IPv6 address processing is now stricter.
+
+       Bounds checking of slices in rdata wire processing is now more
+       strict, and bounds errors (e.g. we got less data than was
+       expected) now raise dns.exception.FormError rather than
+       IndexError.
+
+       Specifying a source port without specifying source used to
+       have no effect, but now uses the wildcard address and the
+       specified port.
+
+New since 1.9.3:
+
+        Nothing.
+
+Bugs fixed since 1.9.3:
+
+       The rdata _wire_cmp() routine now handles relative names.
+
+       The SIG RR implementation was missing 'import struct'.
+
+New since 1.9.2:
+
+       A boolean parameter, 'raise_on_no_answer', has been added to
+       the query() methods.  In no-error, no-data situations, this
+       parameter determines whether NoAnswer should be raised or not.
+       If True, NoAnswer is raised.  If False, then an Answer()
+       object with a None rrset will be returned.
+
+       Resolver Answer() objects now have a canonical_name field.
+
+       Rdata now have a __hash__ method.
+
+Bugs fixed since 1.9.2:
+
+               Dnspython was erroneously doing case-insensitive comparisons
+       of the names in NSEC and RRSIG RRs.
+
+       We now use "is" and not "==" when testing what section an RR
+       is in.
+
+       The resolver now disallows metaqueries.
+
+New since 1.9.1:
+
+       Nothing.
+
+Bugs fixed since 1.9.1:
+
+       The dns.dnssec module didn't work at all due to missing
+       imports that escaped detection in testing because the test
+       suite also did the imports.  The third time is the charm!
+
+New since 1.9.0:
+
+       Nothing.
+
+Bugs fixed since 1.9.0:
+
+        The dns.dnssec module didn't work with DSA due to namespace
+       contamination from a "from"-style import.
+
+New since 1.8.0:
+
+       dnspython now uses poll() instead of select() when available.
+
+       Basic DNSSEC validation can be done using dns.dnsec.validate()
+       and dns.dnssec.validate_rrsig() if you have PyCrypto 2.3 or
+       later installed.  Complete secure resolution is not yet
+       available.
+
+       Added key_id() to the DNSSEC module, which computes the DNSSEC
+       key id of a DNSKEY rdata.
+
+       Added make_ds() to the DNSSEC module, which returns the DS RR
+       for a given DNSKEY rdata.
+
+       dnspython now raises an exception if HMAC-SHA284 or
+       HMAC-SHA512 are used with a Python older than 2.5.2.  (Older
+       Pythons do not compute the correct value.)
+
+       Symbolic constants are now available for TSIG algorithm names.
+
+Bugs fixed since 1.8.0
+
+        dns.resolver.zone_for_name() didn't handle a query response
+       with a CNAME or DNAME correctly in some cases.
+
+        When specifying rdata types and classes as text, Unicode
+       strings may now be used.
+
+       Hashlib compatibility issues have been fixed.
+
+       dns.message now imports dns.edns.
+
+       The TSIG algorithm value was passed incorrectly to use_tsig()
+       in some cases.
+
+New since 1.7.1:
+
+       Support for hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384
+       and hmac-sha512 has been contributed by Kevin Chen.
+
+       The tokenizer's tokens are now Token objects instead of (type,
+       value) tuples.
+
+Bugs fixed since 1.7.1:
+
+        Escapes in masterfiles now work correctly.  Previously they
+       were only working correctly when the text involved was part of
+       a domain name.
+
+       When constructing a DDNS update, if the present() method was
+       used with a single rdata, a zero TTL was not added.
+
+       The entropy pool needed locking to be thread safe.
+
+       The entropy pool's reading of /dev/random could cause
+       dnspython to block.
+
+       The entropy pool did buffered reads, potentially consuming more
+       randomness than we needed.
+
+       The entropy pool did not seed with high quality randomness on
+       Windows.
+
+       SRV records were compared incorrectly.
+
+       In the e164 query function, the resolver parameter was not
+       used.
+
+New since 1.7.0:
+
+       Nothing
+
+Bugs fixed since 1.7.0:
+
+       The 1.7.0 kitting process inadventently omitted the code for the
+       DLV RR.
+
+       Negative DDNS prerequisites are now handled correctly.
+
+New since 1.6.0:
+
+       Rdatas now have a to_digestable() method, which returns the
+       DNSSEC canonical form of the rdata, suitable for use in
+       signature computations.
+
+       The NSEC3, NSEC3PARAM, DLV, and HIP RR types are now supported.
+
+       An entropy module has been added and is used to randomize query ids.
+
+       EDNS0 options are now supported.
+
+       UDP IXFR is now supported.
+
+       The wire format parser now has a 'one_rr_per_rrset' mode, which
+       suppresses the usual coalescing of all RRs of a given type into a
+       single RRset.
+
+       Various helpful DNSSEC-related constants are now defined.
+
+       The resolver's query() method now has an optional 'source' parameter,
+        allowing the source IP address to be specified.
+
+Bugs fixed since 1.6.0:
+
+       On Windows, the resolver set the domain incorrectly.
+
+       DS RR parsing only allowed one Base64 chunk.
+
+       TSIG validation didn't always use absolute names.
+
+       NSEC.to_text() only printed the last window.
+
+       We did not canonicalize IPv6 addresses before comparing them; we
+       would thus treat equivalent but different textual forms, e.g.
+       "1:00::1" and "1::1" as being non-equivalent.
+
+       If the peer set a TSIG error, we didn't raise an exception.
+
+       Some EDNS bugs in the message code have been fixed (see the ChangeLog
+       for details).
+
+New since 1.5.0:
+       Added dns.inet.is_multicast().
+
+Bugs fixed since 1.5.0:
+       
+       If select() raises an exception due to EINTR, we should just
+       select() again.
+
+       If the queried address is a multicast address, then don't
+       check that the address of the response is the same as the
+       address queried.
+
+       NAPTR comparisons didn't compare the preference field due to a
+       typo.
+
+       Testing of whether a Windows NIC is enabled now works on Vista
+       thanks to code contributed by Paul Marks.
+
+New since 1.4.0:
+
+       Answer objects now support more of the python sequence
+       protocol, forwarding the requests to the answer rrset.
+       E.g. "for a in answer" is equivalent to "for a in
+       answer.rrset", "answer[i]" is equivalent to "answer.rrset[i]",
+       and "answer[i:j]" is equivalent to "answer.rrset[i:j]".
+
+       Making requests using EDNS, including indicating DNSSEC awareness,
+       is now easier.  For example, you can now say:
+
+          q = dns.message.make_query('www.dnspython.org', 'MX',
+                                     want_dnssec=True)
+
+       dns.query.xfr() can now be used for IXFR.
+
+       Support has been added for the DHCID, IPSECKEY, and SPF RR types.
+
+       UDP messages from unexpected sources can now be ignored by
+       setting ignore_unexpected to True when calling dns.query.udp.
+
+Bugs fixed since 1.4.0:
+
+        If /etc/resolv.conf didn't exist, we raised an exception
+       instead of simply using the default resolver configuration.
+
+       In dns.resolver.Resolver._config_win32_fromkey(), we were
+       passing the wrong variable to self._config_win32_search().
+
+New since 1.3.5:
+
+        You can now convert E.164 numbers to/from their ENUM name
+        forms:
+
+             >>> 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'
+
+       You can now convert IPv4 and IPv6 address to/from their
+       corresponding DNS reverse map names:
+
+             >>> 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'
+
+       You can now convert between Unicode strings and their IDN ACE
+       form:
+
+             >>> 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.'
+
+       The origin parameter to dns.zone.from_text() and dns.zone.to_text()
+       is now optional.  If not specified, the origin will be taken from
+       the first $ORIGIN statement in the master file.
+
+       Sanity checking of a zone can be disabled; this is useful when
+       working with files which are zone fragments.
+
+Bugs fixed since 1.3.5:
+
+       The correct delimiter was not used when retrieving the
+       list of nameservers from the registry in certain versions of
+       windows.
+
+        The floating-point version of latitude and longitude in LOC RRs
+       (float_latitude and float_longitude) had incorrect signs for
+       south latitudes and west longitudes.
+
+       BIND 8 TTL syntax is now accepted in all TTL-like places (i.e.
+       SOA fields refresh, retry, expire, and minimum; SIG/RRSIG
+       field original_ttl).
+
+       TTLs are now bounds checked when their text form is parsed,
+       and their values must be in the closed interval [0, 2^31 - 1].
+
+New since 1.3.4:
+
+       In the resolver, if time goes backward a little bit, ignore
+       it.
+
+       zone_for_name() has been added to the resolver module.  It
+       returns the zone which is authoritative for the specified
+       name, which is handy for dynamic update.  E.g.
+
+             import dns.resolver
+             print dns.resolver.zone_for_name('www.dnspython.org')
+
+       will output "dnspython.org." and
+
+             print dns.resolver.zone_for_name('a.b.c.d.e.f.example.')
+
+       will output ".".
+
+       The default resolver can be fetched with the
+       get_default_resolver() method.
+
+       You can now get the parent (immediate superdomain) of a name
+       by using the parent() method.
+
+       Zone.iterate_rdatasets() and Zone.iterate_rdatas() now have
+       a default rdtype of dns.rdatatype.ANY like the documentation
+       says.
+
+       A Dynamic DNS example, ddns.py, has been added.
+
+New since 1.3.3:
+
+       The source address and port may now be specified when calling
+       dns.query.{udp,tcp,xfr}.
+       
+       The resolver now does exponential backoff each time it runs
+       through all of the nameservers.
+
+       Rcodes which indicate a nameserver is likely to be a
+       "permanent failure" for a query cause the nameserver to be removed
+       from the mix for that query.
+
+New since 1.3.2:
+
+       dns.message.Message.find_rrset() now uses an index, vastly
+       improving the from_wire() performance of large messages such
+       as zone transfers.
+
+       Added dns.message.make_response(), which creates a skeletal
+       response for the specified query.
+
+       Added opcode() and set_opcode() convenience methods to the
+       dns.message.Message class.  Added the request_payload
+       attribute to the Message class.
+
+        The 'file' parameter of dns.name.Name.to_wire() is now
+       optional; if omitted, the wire form will be returned as the
+       value of the function.
+
+       dns.zone.from_xfr() in relativization mode incorrectly set
+       zone.origin to the empty name.
+
+       The masterfile parser incorrectly rejected TXT records where a
+       value was not quoted.
+
+New since 1.3.1:
+
+       The NSEC format doesn't allow specifying types by number, so
+       we shouldn't either.  (Using the unknown type format is still
+       OK though.)
+
+       The resolver wasn't catching dns.exception.Timeout, so a timeout
+       erroneously caused the whole resolution to fail instead of just
+       going on to the next server.
+
+       The renderer module didn't import random, causing an exception
+       to be raised if a query id wasn't provided when a Renderer was
+       created.
+
+        The conversion of LOC milliseconds values from text to binary was
+       incorrect if the length of the milliseconds string was not 3.
+
+New since 1.3.0:
+
+       Added support for the SSHFP type.
+
+New since 1.2.0:
+
+       Added support for new DNSSEC types RRSIG, NSEC, and DNSKEY.
+
+This release fixes all known bugs.
+
+See the ChangeLog file for more detailed information on changes since
+the prior release.
+
+
+## REQUIREMENTS
+
+Python 3.3 or later.
+
+
+## HOME PAGE
+
+For the latest in releases, documentation, and information, visit the
+dnspython home page at
+
+       http://www.dnspython.org/
+
+
+
+## DOCUMENTATION
+
+Documentation is sparse at the moment.  Use pydoc, or read the HTML
+documentation at the dnspython home page, or download the HTML
+documentation.
+
+
+## BUG REPORTS
+
+Bug reports may be sent to bugs@dnspython.org
+
+
+## MAILING LISTS
+
+A number of mailing lists are available.  Visit the dnspython home
+page to subscribe or unsubscribe.