[tor-dev] txtorcon 18.0.0

meejah meejah at meejah.ca
Tue Jun 26 03:41:50 UTC 2018

Hash: SHA256

I'm very pleased to announce txtorcon 18.0.0. This introduces a new
Onion services API (including v3 support) and a bunch of other changes
(including a new versioning scheme).

Starting now, versioning is more Twisted-like: the first number is the
year, the second is the "release in that year" and the minor number is
for bug-fixes. No backwards-incompatible changes will occur without
first being deprecated for at least one full release (this has been my
practice anyway, so using "SemVer" no longer made sense).

The documentation is updated with all the new Onion APIs, and a full
list of changes follows:

 * await_all_uploads= option when creating Onions
 * properly re-map progress percentages (including descriptor uploads)
 * properly wait for all event-listeners during startup
 * re-work how TorState.event_map works, hopefully reducing
   reproducible-builds issues
 * TorControlProtocol.add_event_listener and
   TorControlProtocol.remove_event_listener are now async methods
   returning Deferred -- they always should have been; new code can
   now be assured that the event-listener change is known to Tor by
   awaiting this Deferred.
 * TorControlProtocol.get_conf_single method added, which gets and returns
   (asynchronously) a single GETCONF key (instead of a dict)
 * also TorControlProtocol.get_info_single similar to above
 * if Tor disconnects while a command is in-progress or pending, the
   .errback() for the corresponding Deferred is now correctly fired
   (with a TorDisconnectError)
 * tired: get_global_tor() (now deprecated)
   wired: txtorcon.get_global_tor_instance

 * Adds a comprehensive set of Onion Services APIs (for all six
   variations). For non-authenticated services, instances of
   IOnionService represent services; for authenticated services,
   instances of IAuthenticatedOnionClients encapsulated named lists of
   clients (each client is an instance implementing IOnionService).
 * Version 3 ("Proposition 279") Onion service support (same APIs) as
   released in latest Tor
 * Four new methods to handle creating endpoints for Onion services
   (either ephemeral or not and authenticated or not):
   * Tor.create_authenticated_onion_endpoint
   * Tor.create_authenticated_filesystem_onion_endpoint
   * Tor.create_onion_endpoint
   * Tor.create_filesystem_onion_endpoint
 * see create_onion for information on how to choose an
   appropriate type of Onion Service.

 * Tor.create_onion_service to add a new ephemeral Onion service to
   Tor. This uses the ADD_ONION command under the hood and can be
   version 2 or version 3. Note that there is an endpoint-style API as
   well so you don't have to worry about mapping ports yourself (see
 * Tor.create_filesystem_onion_service to add a new Onion service to
   Tor with configuration (private keys) stored in a provided
   directory. These can be version 2 or version 3 services. Note that
   there is an endpoint-style API as well so you don't have to worry
   about mapping ports yourself (see below).

 * Additional APIs to make visiting authenticated Onion services as a
   client easier:

 * Tor.add_onion_authentication will add a client-side Onion service
   authentication token. If you add a token for a service which
   already has a token, it is an error if they don't match. This
   corresponds to HidServAuth lines in torrc.
 * Tor.remove_onion_authentication will remove a previously added
   client-side Onion service authentication token. Fires with True if
   such a token existed and was removed or False if no existing token
   was found.
 * Tor.onion_authentication (Python3 only) an async context-manager
   that adds and removes an Onion authentication token (i.e. adds in
   on __aenter__ and removes it on __aexit__). Allows code like:
 * onion services support listening on Unix paths.
 * make sure README renders on Warehouse/PyPI

You can download the release from PyPI or GitHub (or of course "pip
install txtorcon"):


Releases are also available from the hidden service:


...and now also available via a "version 3" service:


You can verify the sha256sum of both by running the following 4 lines
in a shell wherever you have the files downloaded:

cat <<EOF | sha256sum --check
818f6ec96a9d60cb4cb47d98f2c843c7a83004c25be07daafeb9eb9aaed74f7c  dist/txtorcon-18.0.0.tar.gz
d2f91a3770d7fd8c46372e5573bb23ab65c1be33f12e9ff4ac4af24e6f5f6069  dist/txtorcon-18.0.0-py2.py3-none-any.whl



More information about the tor-dev mailing list