1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607
|
.. _releases:
Releases
========
There isn't a "release schedule" in any sense. If there is something
in master your project depends upon, let me know and I'll do a
release.
txtorcon follows `calendar versioning <http://calver.org/>`_ with the
major version being the 2-digit year. The second digit will be
"non-trivial" releases and the third will be for bugfix releases. So
the second release in 2019 would be "19.2.0" and a bug-fix release of
that will be "19.2.1".
See also :ref:`api_stability`.
unreleased
----------
`git master <https://github.com/meejah/txtorcon>`_ *will likely become v19.0.0*
v18.3.0
-------
* `txtorcon-18.3.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-18.3.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/18.3.0>`_ (:download:`local-sig </../signatues/txtorcon-18.3.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-18.3.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v18.3.0.tar.gz>`_)
* add `singleHop={true,false}` for endpoint-strings as well
v18.2.0
-------
* `txtorcon-18.2.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-18.2.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/18.2.0>`_ (:download:`local-sig </../signatues/txtorcon-18.2.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-18.2.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v18.2.0.tar.gz>`_)
* add `privateKeyFile=` option to endpoint parser (ticket 313)
* use `privateKey=` option properly in endpoint parser
* support `NonAnonymous` mode for `ADD_ONION` via `single_hop=` kwarg
v18.1.0
-------
September 26, 2018
* `txtorcon-18.1.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-18.1.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/18.1.0>`_ (:download:`local-sig </../signatues/txtorcon-18.1.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-18.1.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v18.1.0.tar.gz>`_)
* better error-reporting (include REASON and REMOTE_REASON if
available) when circuit-builds fail (thanks `David Stainton
<https://github.com/david415>`_)
* more-robust detection of "do we have Python3" (thanks `Balint
Reczey <https://github.com/rbalint>`_)
* fix parsing of Unix-sockets for SOCKS
* better handling of concurrent Web agent requests before SOCKS ports
are known
* allow fowarding to ip:port pairs for Onion services when using the
"list of 2-tuples" method of specifying the remote vs local
connections.
v18.0.2
-------
July 2, 2018
* `txtorcon-18.0.2.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-18.0.2.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/18.0.2>`_ (:download:`local-sig </../signatues/txtorcon-18.0.2.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-18.0.2.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v18.0.2.tar.gz>`_)
* Python3.4 doesn't support async-def or await
v18.0.1
-------
June 30, 2018
* `txtorcon-18.0.1.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-18.0.1.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/18.0.1>`_ (:download:`local-sig </../signatues/txtorcon-18.0.1.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-18.0.1.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v18.0.1.tar.gz>`_)
* fix a Python2/3 regression when parsing onion services
v18.0.0
-------
June 21, 2018
* `txtorcon-18.0.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-18.0.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/18.0.0>`_ (:download:`local-sig </../signatues/txtorcon-18.0.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-18.0.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v18.0.0.tar.gz>`_)
* `await_all_uploads` options 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
* :meth:`txtorcon.TorControlProtocol.add_event_listener` and
:meth:`txtorcon.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.
* :meth:`txtorcon.TorControlProtocol.get_conf_single` method added, which
gets and returns (asynchronously) a single GETCONF key (instead of a dict)
* also :meth:`txtorcon.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 :class:`txtorcon.TorDisconnectError`
* tired: `get_global_tor()` (now deprecated)
wired: :meth:`txtorcon.get_global_tor_instance`
* Adds a comprehensive set of Onion Services APIs (for all six
variations). For non-authenticated services, instances of
:class:`txtorcon.IOnionService` represent services; for
authenticated services, instances of
:class:`txtorcon.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):
** :method:`txtorcon.Tor.create_authenticated_onion_endpoint`
** :method:`txtorcon.Tor.create_authenticated_filesystem_onion_endpoint`
** :method:`txtorcon.Tor.create_onion_endpoint`
** :method:`txtorcon.Tor.create_filesystem_onion_endpoint`
* see :ref:`create_onion` for information on how to choose an
appropriate type of Onion Service.
* :method:`txtorcon.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 below).
* :method:`txtorcon.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:
* :method:`txtorcon.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.
* :method:`txtorcon.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.
* :method:`txtorcon.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__`).
* onion services support listening on Unix paths.
* make sure README renders on Warehouse/PyPI
v0.20.0
-------
February 22, 2018
* `txtorcon-0.20.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.20.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.20.0>`_ (:download:`local-sig </../signatues/txtorcon-0.20.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.20.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.20.0.tar.gz>`_)
* doc fixes from `hotelzululima <https://twitter.com/hotelzululima>`_
* fix endpoints so `.connect` on them works properly more than once
from `Brian Warner <https://github.com/warner>`_
* allow a `CertificateOptions` to be passed as `tls=` to endpoints
* add method :func:`txtorcon.Tor.is_ready`
* add method :func:`txtorcon.Tor.become_ready`
* fix handling of certain defaults (`*PortLines` and friends)
* fix last router (usually) missing with (new) `MicroDescriptorParser`
* use OnionOO via Onion service `tgel7v4rpcllsrk2.onion` for :func:`txtorcon.Router.get_onionoo_details`
* fix parsing of Router started-times
* `Issue 255 <https://github.com/meejah/txtorcon/issues/255>`_ removed routers now deleted following NEWCONSENSUS
* `Issue 279 <https://github.com/meejah/txtorcon/issues/279>`_ remember proxy endpoint
v0.19.3
-------
May 24, 2017
* `txtorcon-0.19.3.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.19.3.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.19.3>`_ (:download:`local-sig </../signatues/txtorcon-0.19.3.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.19.3.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.19.3.tar.gz>`_)
* Incorrect parsing of SocksPort options (see `Issue 237 <https://github.com/meejah/txtorcon/issues/237>`_)
v0.19.2
-------
May 11, 2017
* `txtorcon-0.19.2.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.19.2.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.19.2>`_ (:download:`local-sig </../signatues/txtorcon-0.19.2.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.19.2.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.19.2.tar.gz>`_)
* Work around a bug in `incremental` (see `Issue 233 <https://github.com/meejah/txtorcon/issues/233>`_)
* Fix for `Issue 190 <https://github.com/meejah/txtorcon/issues/190>`_ from Felipe Dau.
* add :meth:`txtorcon.Circuit.when_built`.
v0.19.1
-------
April 26, 2017
* `txtorcon-0.19.1.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.19.1.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.19.1>`_ (:download:`local-sig </../signatues/txtorcon-0.19.1.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.19.1.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.19.1.tar.gz>`_)
* Fix a regression in ``launch_tor``, see `Issue 227 <https://github.com/meejah/txtorcon/issues/227>`_
v0.19.0
-------
April 20, 2017
* `txtorcon-0.19.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.19.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.19.0>`_ (:download:`local-sig </../signatues/txtorcon-0.19.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.19.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.19.0.tar.gz>`_)
* Full Python3 support
* Drop `txsocksx` and use a custom implementation (this also
implements the custom Tor SOCKS5 methods RESOLVE and RESOLVE_PTR
* Drop support for older Twisted releases (12, 13 and 14 are no
longer supported).
* Add a top-level API object, :class:`txtorcon.Tor` that abstracts a
running Tor. Instances of this class are created with
:meth:`txtorcon.connect` or :meth:`txtorcon.launch`. These
instances are intended to be "the" high-level API and most users
shouldn't need anything else.
* Integrated support for `twisted.web.client.Agent`, baked into
:class:`txtorcon.Tor`. This allows simple, straightforward use of
treq_ or "raw" `twisted.web.client` for making client-type Web
requests via Tor. Automatically handles configuration of SOCKS
ports. See :meth:`txtorcon.Tor.web_agent`
* new high-level API for putting streams on specific Circuits. This
adds :meth:`txtorcon.Circuit.stream_via` and
:meth:`txtorcon.Circuit.web_agent` methods that work the same as
the "Tor" equivalent methods except they use a specific
circuit. This makes :meth:`txtorcon.TorState.set_attacher` the
"low-level" / "expert" interface. Most users should only need the
new API.
* big revamp / re-write of the documentation, including the new
`Programming Guide
<https://txtorcon.readthedocs.io/en/latest/guide.html>`_
* `Issue 203 <https://github.com/meejah/txtorcon/issues/203>`_
* new helper: :meth:`txtorcon.Router.get_onionoo_details`_
* new helper: :func:`txtorcon.util.create_tbb_web_headers`_
* `Issue 72 <https://github.com/meejah/txtorcon/issues/72>`_
* `Felipe Dau <https://github.com/felipedau>`_ added specific
`SocksError` subclasses for all the available SOCKS5 errors.
* (more) Python3 fixes from `rodrigc <https://github.com/rodrigc>`_
.. _Automat: https://github.com/glyph/automat
.. _treq: https://pypi.python.org/pypi/treq
v0.18.0
-------
January 11, 2017
* `txtorcon-0.18.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.18.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.18.0>`_ (:download:`local-sig </../signatues/txtorcon-0.18.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.18.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.18.0.tar.gz>`_)
* `issue 200 <https://github.com/meejah/txtorcon/issues/200>`_: better feedback if the cookie data can't be read
v0.17.0
-------
*October 4, 2016*
* `txtorcon-0.17.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.17.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.17.0>`_ (:download:`local-sig </../signatues/txtorcon-0.17.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.17.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.17.0.tar.gz>`_)
* `issue 187 <https://github.com/meejah/txtorcon/issues/187>`_: fix unix-socket control endpoints
* sometimes mapping streams to hostnames wasn't working properly
* backwards-compatibility API for `socks_hostname` was incorrectly named
v0.16.1
-------
*August 31, 2016*
* `txtorcon-0.16.1.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.16.1.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.16.1>`_ (:download:`local-sig </../signatues/txtorcon-0.16.1.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.16.1.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.16.1.tar.gz>`_)
* `issue 172 <https://github.com/meejah/txtorcon/issues/172>`_: give `TorProcessProtocol` a `.quit` method
* `issue 181 <https://github.com/meejah/txtorcon/issues/181>`_: enable SOCKS5-over-unix-sockets for TorClientEndpoint (thanks to `david415 <https://github.com/david415>`_
v0.16.0
-------
* there wasn't one, `because reasons <https://github.com/meejah/txtorcon/commit/e4291c01ff223d3cb7774437cafa2f06ca195bcf>`_.
v0.15.1
-------
* `txtorcon-0.15.1.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.15.1.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.15.1>`_ (:download:`local-sig </../signatues/txtorcon-0.15.1.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.15.1.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.15.1.tar.gz>`_)
* fix `issue 179 <https://github.com/meejah/txtorcon/issues/179>`_ with `Circuit.age`.
v0.15.0
-------
*July 26, 2016*
* `txtorcon-0.15.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.15.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.15.0>`_ (:download:`local-sig </../signatues/txtorcon-0.15.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.15.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.15.0.tar.gz>`_)
* added support for NULL control-port-authentication which is often
appropriate when used with a UNIX domain socket
* switched to `ipaddress
<https://docs.python.org/3/library/ipaddress.html>`_ instead of
Google's ``ipaddr``; the API should be the same from a user
perspective but **packagers and tutorials** will want to change
their instructions slightly (``pip install ipaddress`` or ``apt-get
install python-ipaddress`` are the new ways).
* support the new ADD_ONION and DEL_ONION "ephemeral hidden services"
commands in TorConfig
* a first stealth-authentication implementation (for "normal" hidden
services, not ephemeral)
* bug-fix from `david415 <https://github.com/david415>`_ to raise
ConnectionRefusedError instead of StopIteration when running out of
SOCKS ports.
* new feature from `david415 <https://github.com/david415>`_ adding a
``build_timeout_circuit`` method which provides a Deferred that
callbacks only when the circuit is completely built and errbacks if
the provided timeout expires. This is useful because
:meth:`txtorcon.TorState.build_circuit` callbacks as soon as a Circuit
instance can be provided (and then you'd use
:meth:`txtorcon.Circuit.when_built` to find out when it's done building).
* new feature from `coffeemakr <https://github.com/coffeemakr>`_
falling back to password authentication if cookie authentication
isn't available (or fails, e.g. because the file isn't readable).
* both TorState and TorConfig now have a ``.from_protocol`` class-method.
* spec-compliant string-un-escaping from `coffeemakr <https://github.com/coffeemakr>`_
* a proposed new API: :meth:`txtorcon.connect`
* fix `issue 176 <https://github.com/meejah/txtorcon/issues/176>`_
v0.14.2
-------
*December 2, 2015*
* `txtorcon-0.14.2.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.14.2.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.14.2>`_ (:download:`local-sig </../signatues/txtorcon-0.14.2.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.14.2.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.14.2.tar.gz>`_)
* compatibility for Twisted 15.5.0 (released on 0.14.x for `OONI <http://ooni.io/>`_)
v0.14.1
-------
*October 25, 2015*
* subtle bug with ``.is_built`` on Circuit; changing the API (but
with backwards-compatibility until 0.15.0 at least)
v0.14.0
-------
*September 26, 2015*
* `txtorcon-0.14.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.14.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.14.0>`_ (:download:`local-sig </../signatues/txtorcon-0.14.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.14.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.14.0.tar.gz>`_)
* :class:`txtorcon.interface.IStreamAttacher` handling was missing ``None`` and ``DO_NOT_ATTACH`` cases if a Deferred was returned.
* add ``.is_built`` Deferred to :class:`txtorcon.Circuit` that gets `callback()`d when the circuit becomes BUILT
* `david415 <https://github.com/david415>`_ ported his ``tor:``
endpoint parser so now both client and server endpoints are
supported. This means **any** Twisted program using endpoints can
use Tor as a client. For example, to connect to txtorcon's Web site:
``ep = clientFromString("tor:timaq4ygg2iegci7.onion:80")``.
(In the future, I'd like to automatically launch Tor if required, too).
* Python3 fixes from `isis <https://github.com/isislovecruft>`_ (note: needs Twisted 15.4.0+)
v0.13.0
-------
*May 10, 2015*
* `txtorcon-0.13.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.13.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.13.0>`_ (:download:`local-sig </../signatues/txtorcon-0.13.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.13.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.13.0.tar.gz>`_)
* support ``basic`` and ``stealth`` hidden service authorization, and parse ``client_keys`` files.
* 2x speedup for TorState parsing (mostly by lazy-parsing timestamps)
* can now parse ~75000 microdescriptors/second per core of 3.4GHz Xeon E3
* ``launch_tor`` now doesn't use a temporary ``torrc`` (command-line options instead)
* tons of pep8 cleanups
* several improvements to hidden-service configuration from `sambuddhabasu1`_.
* populated valid signals from ``GETINFO signals/names`` from `sambuddhabasu1`_.
.. _sambuddhabasu1: https://github.com/sammyshj
v0.12.0
-------
*February 3, 2015*
* `txtorcon-0.12.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.12.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.12.0>`_ (:download:`local-sig </../signatues/txtorcon-0.12.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.12.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.12.0.tar.gz>`_)
* doc, code and import cleanups from `Kali Kaneko <https://github.com/kalikaneko>`_
* HiddenServiceDirGroupReadable support
* Issue #80: honour ``ControlPort 0`` in incoming TorConfig
instance. The caller owns both pieces: you have to figure out when
it's bootstraped, and are responsible for killing it off.
* Issue #88: clarify documentation and fix appending to some config lists
* If GeoIP data isn't loaded in Tor, it sends protocol errors; if
txtorcon also hasn't got GeoIP data, the queries for country-code
fail; this error is now ignored.
* **100% unit-test coverage!** (line coverage)
* PyPy support (well, at least all tests pass)
* TCP4HiddenServiceEndpoint now waits for descriptor upload before
the ``listen()`` call does its callback (this means when using
``onion:`` endpoint strings, or any of the :doc:`endpoints APIs
<txtorcon-endpoints>` your hidden service is 100% ready for action
when you receive the callback)
* ``TimeIntervalCommaList`` from Tor config supported
* :class:`TorControlProtocol <txtorcon.TorControlProtocol>` now has a ``.all_routers`` member (a ``set()`` of all Routers)
* documentation fix from `sammyshj <https://github.com/sammyshj>`_
v0.11.0
-------
*August 16, 2014*
* September 6, 2015. bugfix release: `txtorcon-0.11.1.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.11.1.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.11.1>`_ (:download:`local-sig </../signatues/txtorcon-0.11.1.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.11.1.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.11.1.tar.gz>`_)
* fixed Debian bug `797261 <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=797261>`_ causing 3 tests to fail
* `txtorcon-0.11.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.11.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.11.0>`_ (:download:`local-sig </../signatues/txtorcon-0.11.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.11.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.11.0.tar.gz>`_)
* More control for ``launch_tor``: access stdout, stderr in real-time
and control whether we kill Tor on and stderr output. See issue #79.
* Warning about ``build_circuit`` being called without a guard first
is now optional (default is still warn) (from arlolra_)
* ``available_tcp_port()`` now in util (from arlolra_)
* ``TorState`` now has a ``.routers_by_hash`` member (from arlolra_)
.. _arlolra: https://github.com/arlolra
v0.10.1
-------
*July 20, 2014*
* `txtorcon-0.10.1.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.10.1.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.10.1>`_ (:download:`local-sig </../signatues/txtorcon-0.10.1.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.10.1.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.10.1.tar.gz>`_)
* fix bug incorrectly issuing RuntimeError in brief window of time on event-listeners
* issue #78: Add tox tests and fix for Twisted 12.0.0 (and prior), as this is what Debian squeeze ships
* issue #77: properly expand relative and tilde paths for ``hiddenServiceDir`` via endpoints
v0.10.0
-------
*June 15, 2014*
* `txtorcon-0.10.0.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.10.0.tar.gz>`_ (`PyPI <https://pypi.python.org/pypi/txtorcon/0.10.0>`_ (:download:`local-sig </../signatues/txtorcon-0.10.0.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.10.0.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.10.0.tar.gz>`_)
* In collaboration with `David Stainton <https://github.com/david415>`_ after a pull-request, we
have endpoint parser plugins for Twisted! This means code like
``serverFromString("onion:80").listen(...)`` is enough to start a
service.
* The above **also** means that **any** endpoint-using Twisted program can immediately offer its TCP services via Hidden Service with **no code changes**. For example, using Twisted Web to serve a WSGI web application would be simply: ``twistd web --port onion:80 --wsgi web.app``
* switch to a slightly-modified `Alabaster Sphinx theme <https://github.com/bitprophet/alabaster>`_
* added howtos to documentation
v0.9.2
------
*April 23, 2014*
* `txtorcon-0.9.2.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.9.2.tar.gz>`_ (:download:`local-sig </../signatues/txtorcon-0.9.2.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.9.2.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.9.2.tar.gz>`_)
* add ``on_disconnect`` callback for TorControlProtocol (no more monkey-patching Protocol API)
* add ``age()`` method to Circuit
* add ``time_created`` property to Circuit
* don't incorrectly listen for NEWDESC events in TorState
* add ``.flags`` dict to track flags in Circuit, Stream
* ``build_circuit()`` can now take hex IDs (as well as Router instances)
* add ``unique_name`` property to Router (returns the hex id, unless ``Named`` then return name)
* add ``location`` property to Router
* ``TorState.close_circuit`` now takes either a Circuit ID or Circuit instance
* ``TorState.close_stream`` now takes either a Stream ID or Stream instance
* support both GeoIP API versions
* more test-coverage
* small patch from `enriquefynn <https://github.com/enriquefynn>`_ improving ``tor`` binary locating
* strip OK lines in TorControlProtocol (see `issue #8 <https://github.com/meejah/txtorcon/issues/8>`_)
* use TERM not KILL when Tor launch times out (see `issue #68 <https://github.com/meejah/txtorcon/pull/68>`_) from ``hellais``
v0.9.1
------
*January 20, 2014*
* `txtorcon-0.9.1.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.9.1.tar.gz>`_ (:download:`local-sig </../signatues/txtorcon-0.9.1.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.9.1.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.9.1.tar.gz>`_)
* put test/ directory at the top level
* using "`coverage <http://nedbatchelder.com/code/coverage/>`_" tool instead of custom script
* using `coveralls.io <https://coveralls.io/r/meejah/txtorcon>`_ and `travis-ci <https://travis-ci.org/meejah/txtorcon>`_ for test coverage and continuous integration
* `issue #56 <https://github.com/meejah/txtorcon/issues/56>`_: added Circuit.close() and Stream.close() starting from aagbsn's patch
* parsing issues with multi-line keyword discovered and resolved
* preserve router nicks from long-names if consensus lacks an entry (e.g. bridges)
* using `Twine <https://github.com/dstufft/twine>`_ for releases
* `Wheel <http://wheel.readthedocs.org/en/latest/>`_ release now also available
* `issue #57 <https://github.com/meejah/txtorcon/issues/57>`_: "python setup.py develop" now supported
* `issue #59 <https://github.com/meejah/txtorcon/pull/59>`_: if tor_launch() times out, Tor is properly killed (starting with pull-request from Ryman)
* experimental docker.io-based tests (for HS listening, and tor_launch() timeouts)
* `issue #55 <https://github.com/meejah/txtorcon/issues/55>`_: pubkey link on readthedocs
* `issue #63 <https://github.com/meejah/txtorcon/issues/55>`_
* clean up GeoIP handling, and support pygeoip both pre and post 0.3
* slightly improve unit-test coverage (now at 97%, 61 lines of 2031 missing)
* added a `Walkthrough <walkthrough.html>`_ to the documentation
v0.8.2
------
*November 22, 2013*
* `txtorcon-0.8.2.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.8.2.tar.gz>`_ (:download:`local-sig </../signatues/txtorcon-0.8.2.tar.gz.asc>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.8.2.tar.gz.asc?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.8.2.tar.gz>`_)
* ensure hidden service server-side endpoints listen only on 127.0.0.1
v0.8.1
------
*May 13, 2013*
* `txtorcon-0.8.1.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.8.1.tar.gz>`_ (:download:`local-sign </../signatues/txtorcon-0.8.1.tar.gz.sig>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.8.1.tar.gz.sig?raw=true>`_) (`source <https://github.com/meejah/txtorcon/archive/v0.8.1.tar.gz>`_)
* fixed improper import in setup.py preventing 0.8.0 from installing
* signatures with proper subkey this time
* Proper file-flushing in tests and PyPy fixes from Lukas Lueg
* docs build issue from isis
v0.8.0
------
*April 11, 2013* (actually uploaded May 11)
* **Please use 0.8.1; this won't install due to import problem in setup.py (unless you have pypissh).**
* following `semantic versioning <http://semver.org/>`_;
* slight **API change** :meth:`.ICircuitListener.circuit_failed`, :meth:`~.ICircuitListener.circuit_closed` and :meth:`.IStreamListener.stream_failed`, :meth:`~.IStreamListener.stream_closed` and :meth:`~.IStreamListener.stream_detach` all now include any keywords in the notification method (some of these lacked flags, or only included some) (`issue #18 <https://github.com/meejah/txtorcon/issues/18>`_);
* launch_tor() can take a timeout (starting with a patch from hellais);
* cleanup from aagbsn;
* more test coverage;
* run tests cleanly without graphviz (from lukaslueg);
* `issue #26 <https://github.com/meejah/txtorcon/issues/26>`_ fix from lukaslueg;
* pep8 and whitespace targets plus massive cleanup (now pep8 clean, from lukaslueg);
* `issue #30 <https://github.com/meejah/txtorcon/issues/30>`_ fix reported by webmeister making ipaddr actually-optional;
* example using synchronous web server (built-in SimpleHTTPServer) with txtorcon (from lukaslueg);
* TorState can now create circuits without an explicit path;
* passwords for non-cookie authenticated sessions use a password callback (that may return a Deferred) instead of a string (`issue #44 <https://github.com/meejah/txtorcon/issues/44>`_);
* fixes for AddrMap in case `#8596 <https://trac.torproject.org/projects/tor/ticket/8596>`_ is implemented;
v0.7
----
*November 21, 2012*
* `txtorcon-0.7.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.7.tar.gz>`_ (:download:`local-sig <../signatues/txtorcon-0.7.tar.gz.sig>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.7.tar.gz.sig?raw=true>`_) (`source <https://github.com/meejah/txtorcon/tarball/v0.7>`_)
* `issue #20 <https://github.com/meejah/txtorcon/issues/20>`_ config object now hooked up correctly after launch_tor();
* `patch <https://github.com/meejah/txtorcon/pull/22>`_ from hellais for properly handling data_dir given to TCPHiddenServiceEndpoint;
* `.tac example <https://github.com/meejah/txtorcon/pull/19>`_ from mmaker;
* allow TorConfig().hiddenservices.append(hs) to work properly with no attached protocol
v0.6
----
*October 10, 2012*
* `txtorcon-0.6.tar.gz <http://timaq4ygg2iegci7.onion/txtorcon-0.6.tar.gz>`_ (:download:`local-sig <../signatues/txtorcon-0.6.tar.gz.sig>` or `github-sig <https://github.com/meejah/txtorcon/blob/master/signatues/txtorcon-0.6.tar.gz.sig?raw=true>`_) (`source <https://github.com/meejah/txtorcon/tarball/v0.6>`_)
* debian packaging (mmaker);
* psutil fully gone;
* *changed API* for launch_tor() to use TorConfig instead of args;
* TorConfig.save() works properly with no connected Tor;
* fix incorrect handling of 650 immediately after connect;
* `pep8 compliance <http://www.python.org/dev/peps/pep-0008/>`_;
* use assertEqual in tests;
* messages with embdedded keywords work properly;
* fix bug with setup.py + pip;
* `issue #15 <https://github.com/meejah/txtorcon/issues/15>`_ reported along with patch by `Isis Lovecruft <https://github.com/isislovecruft>`_;
* consolidate requirements (from `aagbsn <https://github.com/aagbsn>`_);
* increased test coverage and various minor fixes;
* https URIs for ReadTheDocs;
v0.5
----
June 20, 2012
* `txtorcon-0.5.tar.gz <txtorcon-0.5.tar.gz>`_ (`txtorcon-0.5.tar.gz.sig <txtorcon-0.5.tar.gz.sig>`_) (`source <https://github.com/meejah/txtorcon/tarball/v0.5>`_)
* remove psutil as a dependency, including from `util.process_from_address`
v0.4
----
June 6, 2012
* `txtorcon-0.4.tar.gz <txtorcon-0.4.tar.gz>`_ (`txtorcon-0.4.tar.gz.sig <txtorcon-0.4.tar.gz.sig>`_)
* remove built documentation from distribution;
* fix PyPI problems ("pip install txtorcon" now works)
v0.3
----
* 0.3 was broken when released (docs couldn't build).
v0.2
----
June 1, 2012
* `txtorcon-0.2.tar.gz <txtorcon-0.2.tar.gz>`_ (`txtorcon-0.2.tar.gz.sig <txtorcon-0.2.tar.gz.sig>`_)
* incremental parsing;
* faster TorState startup;
* SAFECOOKIE support;
* several bug fixes;
* options to `circuit_failure_rates.py` example to make it actually-useful;
* include built documentation + sources in tarball;
* include tests in tarball;
* improved logging;
* patches from `mmaker <https://github.com/mmaker>`_ and `kneufeld <https://github.com/kneufeld>`_;
v0.1
----
march, 2012
* `txtorcon-0.1.tar.gz <txtorcon-0.1.tar.gz>`_ (`txtorcon-0.1.tar.gz.sig <txtorcon-0.1.tar.gz.sig>`_)
|