Tahoe-lafs

Latest version: v1.20.0

Safety actively analyzes 715128 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 6

1.11

results (on the "Recent Uploads And Downloads" web page) will show unusual
server ids. (1363)

Dependency/Installation changes
-------------------------------

Tahoe now requires Twisted >= 16.1.0, so ensure that unit tests do not fail
because of uncancelled timers left running by HostnameEndpoint. It also
requires the Tor/I2P supporting code from Foolscap >= 0.12.5 . (2781)

Configuration Changes
---------------------

Some small changes were made to the way Tahoe-LAFS is configured, via
``tahoe.cfg`` and other files. In general, node behavior should now be more
predictable, and errors should be surfaced earlier.

* ``tub.port`` is now an Endpoint server specification string (which is
pretty much just like a strports string, but can be extended by plugins).
It now rejects "tcp:0" and "0". The tahoe.cfg value overrides anything
stored on disk (in client.port). This should have no effect on most old
nodes (which did not set tub.port in tahoe.cfg, and which wrote an
allocated port number to client.port the first time they launched). Folks
who want to listen on a specific port number typically set tub.port to
"tcp:12345" or "12345", not "0". (ticket 2491)
* This should enable IPv6 on servers, either via AAAA records or colon-hex
addresses. (2827)
* The "portnumfile" (e.g. NODEDIR/client.port) is written as soon as the port
is allocated, before the tub is created, and only if "tub.port" was empty.
The old code wrote to it unconditionally, and after Tub startup. So if the
user allows NODEDIR/client.port to be written, then later modifies
tahoe.cfg to set "tub.port" to a different value, this difference will
persist (and the node will honor tahoe.cfg "tub.port" exclusively).
* We now encourage static allocation of tub.port, and pre-configuration of
the node's externally-reachable IP address or hostname (by setting
tub.location). Automatic IP-address detection is deprecated. Automatic port
allocation is discouraged. Both are managed by the new arguments to "tahoe
create-node".
* "tahoe start" now creates the Tub, and all primary software components,
before the child process daemonizes. Many configuration errors which would
previously have been reported in a logfile (after node startup), will now
be signalled immediately, via stderr. In these cases, the "tahoe start"
process will exit with a non-zero return code. (2491)
* Unrecognized tahoe.cfg options are rejected at startup, not ignored (2809)
* ``tub.port`` can take multple (comma-separated) endpoints, to listen on
multiple ports at the same time, useful for dual IPv4+IPv6 servers. (867)
* An empty ``tub.port`` means don't listen at all, which is appropriate for
client-only nodes (2816)
* A new setting, ``reveal-ip-address = false``, acts as a safety belt,
causing an error to be thrown if any other setting might reveal the node's
IP address (i.e. it requires Tor or I2P to be used, rather than direct TCP
connections). This is set automatically by ``tahoe create-client
--hide-ip``. (1010)

Server-like nodes (Storage Servers and Introducers), created with ``tahoe
create-node`` and ``tahoe create-introducer``, now accept new arguments to
control how they listen for connections, and how they advertise themselves to
other nodes. You can use ``--listen=tcp`` and ``--hostname=`` to choose a
port automatically, or ``--listen=tor`` / ``--listen=i2p`` to use Tor/I2P
hidden services instead. You can also use ``--port=`` and ``--location=`` to
explicitly control the listener and the advertised location. (2773, 2490)

The "stats-gatherer", used by enterprise deployments to collect runtime
statistics from a fleet of Tahoe storage servers, must now be assigned a
hostname, or location+port pair, at creation time. It will no longer attempt
to guess its location (with /sbin/ifconfig). The "tahoe
create-stats-gatherer" command requires either "--hostname=", or both
"--location=" and "--port". (2773)

To keep your old stats-gatherers working, with their original FURL, you must
determine a suitable --location and --port, and write their values into
NODEDIR/location and NODEDIR/port, respectively. Or you could simply rebuild
it by re-running "tahoe create-stats-gatherer" with the new arguments.

The stats gatherer now updates a JSON file named "stats.json", instead of a
Pickle named "stats.pickle". The munin plugins in
misc/operations_helpers/munin/ have been updated to match, and must be
re-installed and re-configured if you use munin.

Removed Features
----------------

The "key-generator" node type has been removed. This was a standalone process
that maintained a queue of RSA keys, and clients could offload their
key-generation work by adding "key_generator.furl=" in their tahoe.cfg files,
to create mutable files and directories faster. This seemed important back in
2006, but these days computers are faster and RSA key generation only takes
about 90ms. This removes the "tahoe create-key-generator" command. Any
"key_generator.furl" settings in tahoe.cfg will log a warning and are
otherwise ignored. Attempts to "tahoe start" a previously-generated
key-generator node will result in an error. (2783)

Tahoe's HTTP Web-API (aka "the WAPI") had an endpoint named "/file/". This
has been deprecated, and applications should use "/named/" instead. (1903)

The little-used "manhole" debugging feature has been removed. This allowed
you to SSH or Telnet "into" a Tahoe node, providing an interactive
Read-Eval-Print-Loop (REPL) that executed inside the context of the running
process. (2367)

The "tahoe debug trial" and "tahoe debug repl" CLI commands were removed, as
"tox" is now the preferred way to run tests. (2735)

One of the "recent uploads and downloads" status pages was using a
Google-hosted API to draw a timing chart of the "mapupdate" operation. This
has been removed, both for privacy (to avoid revealing the serverids to
Google) and because the API was deprecated several years ago. (1942)

The "_appname.py" feature was removed. Early in Tahoe's history (at
AllMyData), this file allowed the "tahoe" executable to be given a different
name depending upon which Darcs patches were included in the particular
source tree (one for production, another for development, etc). We haven't
needed this for a long time, so it was removed. (2754)

Other Changes
-------------

Documentation is now hosted at http://tahoe-lafs.readthedocs.io/ (not .org).

Tahoe's testing-only dependencies can now be installed by asking for the
[test] extra, so if you want to set up a virtualenv for testing, use "pip
install -e .[test]" instead just of "pip install -e ." . This includes "tox",
"coverage", "pyflakes", "mock", and all the Tor/I2P extras. Most developer
tooling (code-checks, documentation builds, deprecation warnings, etc) have
been moved from a Makefile into tox environments. (2776)

The "Welcome" (web) page now shows more detail about the introducer and
storage-server connections, including which connection handler is being used
(tcp/tor/i2p) and why specific connection hints failed to connect. (2818,
2819)

The little-used "control port" now uses a separate (ephemeral) Tub. This
means the FURL changes each time the node is restarted, and it only listens
on the loopback (127.0.0.1) interface, on a random port. As the control port
is only used by some automated tests (check_memory, check_speed), this
shouldn't affect anyone. (2794)

The slightly-more-used "log port" now also uses a separate (ephemeral) Tub,
with the same consequences. The lack of a stable (and externally-reachable)
logport.furl means it is no longer possible to use ``flogtool tail FURL``
against a distant Tahoe server, however ``flogtool tail
.../nodedir/private/logport.furl`` still works just fine (and is the more
common use case anyways). We might bring back the ability to configure the
port and location of the logport in the future, if there is sufficient
demand, but for now it seems better to avoid the complexity.

The default tahoe.cfg setting of ``web.static = public_html``, when
``NODEDIR/public_html/`` does not exist, no longer causes web browsers to
display a traceback which reveals somewhat-private information like the value
of NODEDIR, and the Python/OS versions in use. Instead it just shows a plain
404 error. (1720)

1.11.0

Not secure
''''''''''''''''''''''''''''

New Build Process
-----------------

``pip install`` (in a virtualenv) is now the recommended way to install
Tahoe-LAFS. The old "bin/tahoe" script (created inside the source tree,
rather than in a virtualenv) has been removed, as has the ancient
"zetuptoolz" fork of setuptools.

Tahoe was started in 2006, and predates pip and virtualenv. From the
very beginning it used a home-made build process that attempted to make
``setup.py build`` behave somewhat like a modern ``pip
install --editable .``. It included a local copy of ``setuptools`` (to
avoid requiring it to be pre-installed), which was then forked as
``zetuptoolz`` to fix bugs during the bad old days of setuptools
non-maintenance. The pseudo-virtualenv used a script named
``bin/tahoe``, created during ``setup.py build``, to set up the $PATH
and $PYTHONPATH as necessary.

Starting with this release, all the custom build process has been
removed, and Tahoe should be installable with standard modern tools. You
will need ``virtualenv`` installed (which provides ``pip`` and
setuptools). Many Python installers include ``virtualenv`` already, and
Debian-like systems can use ``apt-get install python-virtualenv``. If
the command is not available on your system, follow the installation
instructions at https://virtualenv.pypa.io/en/latest/ .

Then, to install the latest version, create a virtualenv and use
``pip``::

virtualenv venv
. venv/bin/activate
(venv) pip install tahoe-lafs
(venv) tahoe --version

To run Tahoe from a source checkout (so you can hack on Tahoe), use
``pip install --editable .`` from the git tree::

git clone https://github.com/tahoe-lafs/tahoe-lafs.git
cd tahoe-lafs
virtualenv venv
. venv/bin/activate
(venv) pip install --editable .
(venv) tahoe --version

The ``pip install`` will download and install all necessary Python
dependencies. Some dependencies require a C compiler and system
libraries to build: on Debian/Ubuntu-like systems, use ``apt-get install
build-essential python-dev libffi-dev libssl-dev``. On Windows and OS-X
platforms, we provide pre-compiled binary wheels at
``https://tahoe-lafs.org/deps/``, removing the need for a compiler.

(1582, 2445, also helped to close: 142, 709, 717, 799, 1220,
1260, 1270, 1403, 1450, 1451, 1504, 1896, 2044, 2221, 2021,
2028, 2066, 2077, 2247, 2255, 2286, 2306, 2473, 2475, 2530,
657, 2446, 2439, 2317, 1753, 1009, 1168, 1238, 1258, 1334,
1346, 1464, 2356, 2570)

New PyPI Distribution Name
--------------------------

Tahoe-LAFS is now known on PyPI as ``tahoe-lafs``. It was formerly known
as ``allmydata-tahoe``. This affects ``pip install`` commands. (2011)

Because of this change, if you use a git checkout, you may need to run
``make distclean`` (to delete the machine-generated
``src/allmydata/_appname.py`` file). You may also need to remove
``allmydata-tahoe`` from any virtualenvs you've created, before
installing ``tahoe-lafs`` into them. If all else fails, make a new git
checkout, and use a new virtualenv.

Note that the importable *package* name is still ``allmydata``, but this
only affects developers, not end-users. This name scheduled to be
changed in a future release. (1950)


Compatibility and Dependency Updates
------------------------------------

Tahoe now requires Python 2.7 on all platforms. (2445)

Tahoe now requires Foolscap 0.10.1, which fixes incompatibilities with
recent Twisted releases. (2510, 2722, 2567)

Tahoe requires Twisted 15.1.0 or later, so it can request the
``Twisted[tls]`` "extra" (this asks Twisted to ask for everything it
needs to provide proper TLS support). (2760)

Tests should now work with both Nevow 0.11 and 0.12 . (2663)

Binary wheels for Windows and OS-X (for all dependencies) have been
built and are hosted at https://tahoe-lafs.org/deps . Use ``pip
install --find-links=URL tahoe-lafs`` to take advantage of them. (2001)

We've removed the SUMO and tahoe-deps tarballs. Please see
docs/desert-island.rst for instructions to build tahoe from offline
systems. (1009, 2530, 2446, 2439)

Configuration Changes
---------------------

A new "peers.preferred" item was added to the ``[client]`` section. This
identifies servers that will be promoted to the front of the
peer-selection list when uploading or downloading files. Servers are
identified by their Node ID (visible on the welcome page). This may be
useful to ensure that one full set of shares are placed on nearby
servers, making later downloads fast (and avoid using scarce remote
bandwidth). The remaining shares can go to distant backup servers. (git
commit 96eaca6)

Aliases can now be unicode. (git commit 46719a8b)

The introducer's "set_encoding_parameters" feature was removed. Once
upon a time, the Introducer could recommend encoding parameters
(shares.needed and shares.total) to all clients, the idea being that the
Introducer had a slightly better idea about the expected size of the
storage server pool than clients might. Client-side support for this was
removed long ago, but the Introducer itself kept delivering
recommendations until this release. (git commit 56a9f5ad)

Other Fixes
-----------

The OS-X .pkg installer has been improved slightly, to clean up after
previous installations better. (2493)

All WUI (Web UI) timestamps should now be a consistent format, using the
gateway machine's local time zone. (1077)

The web "welcome page" has been improved: it shows how long a server has
been connected (in minutes/hours/days, instead of the date+time when the
connection was most recently established). The "announced" column has
been replaced with "Last RX" column that shows when we last heard
anything from the server. The mostly-useless "storage" column has been
removed. (1973)

In the ``tahoe ls`` command, the ``-u`` shortcut for ``--uri`` has been
removed, leaving the shortcut free for the global ``--node-url`` option.
(1949, 2137)

Some internal logging was disabled, to avoid a temporary bug that caused
excessive (perhaps infinite) log messages to be created. (2567)

Other non-user-visible tickets were fixed. (2499, 2511, 2556, 2663,
2723, 2543)

1.10.2

'''''''''''''''''''''''''''

Packaging Changes
-----------------

This release no longer requires the ``mock`` library (which was previously
used in the unit test suite). Shortly after the Tahoe-LAFS 1.10.1 release, a
new version of ``mock`` was released (1.1.0) that proved to be incompatible
with Tahoe's fork of setuptools, preventing Tahoe-1.10.1 from building at
all. `2465`_

The ``tahoe --version`` output is now less likely to include scary diagnostic
warnings that look deceptively like stack traces. `2436`_

The pyasn1 requirement was increased to >= 0.1.8.

.. _`2465`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2465
.. _`2436`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2436

Other Fixes
-----------

A WebAPI ``GET`` would sometimes hang when using the HTTP Range header to
read just part of the file. `2459`_

Using ``tahoe cp`` to copy two different files of the same name into the same
target directory now raises an error, rather than silently overwriting one of
them. `2447`_

All tickets closed in this release: 2328 2436 2446 2447 2459 2460 2461 2462
2465 2470.

.. _`2459`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2459
.. _`2447`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2447

1.10.1

'''''''''''''''''''''''''''

User Interface / Configuration Changes
--------------------------------------

The "``tahoe cp``" CLI command's ``--recursive`` option is now more predictable,
but behaves slightly differently than before. See below for details. Tickets
`712`_, `2329`_.

The SFTP server can now use public-key authentication (instead of only
password-based auth). Public keys are configured through an "account file",
just like passwords. See docs/frontends/FTP-and-SFTP for examples of the
format. `1411`_

The Tahoe node can now be configured to disable automatic IP-address
detection. Using "AUTO" in tahoe.cfg [node]tub.location= (which is now the
default) triggers autodetection. Omit "AUTO" to disable autodetection. "AUTO"
can be combined with static addresses to e.g. use both a stable
UPnP-configured tunneled address and a DHCP-assigned dynamic (local subnet
only) address. See `configuration.rst`_ for details. `754`_

The web-based user interface ("WUI") Directory and Welcome pages have been
redesigned, with improved CSS for narrow windows and more-accessible icons
(using distinctive shapes instead of just colors). `1931`_ `1961`_ `1966`_
`1972`_ `1901`_

.. _`712`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/712
.. _`754`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/754
.. _`1411`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1411
.. _`1901`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1901
.. _`1931`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1931
.. _`1961`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1961
.. _`1966`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1966
.. _`1972`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1972
.. _`2329`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2329
.. _`configuration.rst`: docs/configuration.rst

"tahoe cp" changes
------------------

The many ``cp``-like tools in the Unix world (POSIX ``/bin/cp``, the ``scp``
provided by SSH, ``rsync``) all behave slightly differently in unusual
circumstances, especially when copying whole directories into a target that
may or may not already exist. The most common difference is whether the user
is referring to the source directory as a whole, or to its contents. For
example, should "``cp -r foodir bardir``" create a new directory named
"``bardir/foodir``"? Or should it behave more like "``cp -r foodir/* bardir``"?
Some tools use the presence of a trailing slash to indicate which behavior
you want. Others ignore trailing slashes.

"``tahoe cp``" is no exception to having exceptional cases. This release fixes
some bad behavior and attempts to establish a consistent rationale for its
behavior. The new rule is:

- If the thing being copied is a directory, and it has a name (e.g. it's not
a raw Tahoe-LAFS directorycap), then you are referring to the directory
itself.
- If the thing being copied is an unnamed directory (e.g. raw dircap or
alias), then you are referring to the contents.
- Trailing slashes do not affect the behavior of the copy (although putting
a trailing slash on a file-like target is an error).
- The "``-r``" (``--recursive``) flag does not affect the behavior of the
copy (although omitting ``-r`` when the source is a directory is an error).
- If the target refers to something that does not yet exist:
- and if the source is a single file, then create a new file;
- otherwise, create a directory.

There are two main cases where the behavior of Tahoe-LAFS v1.10.1 differs
from that of the previous v1.10.0 release:

- "``cp DIRCAP/file.txt ./local/missing``" , where "``./local``" is a
directory but "``./local/missing``" does not exist. The implication is
that you want Tahoe to create a new file named "``./local/missing``" and
fill it with the contents of the Tahoe-side ``DIRCAP/file.txt``. In
v1.10.0, a plain "``cp``" would do just this, but "``cp -r``" would do
"``mkdir ./local/missing``" and then create a file named
"``./local/missing/file.txt``". In v1.10.1, both "``cp``" and "``cp -r``"
create a file named "``./local/missing``".
- "``cp -r PARENTCAP/dir ./local/missing``", where ``PARENTCAP/dir/``
contains "``file.txt``", and again "``./local``" is a directory but
"``./local/missing``" does not exist. In both v1.10.0 and v1.10.1, this
first does "``mkdir ./local/missing``". In v1.10.0, it would then copy
the contents of the source directory into the new directory, resulting
in "``./local/missing/file.txt``". In v1.10.1, following the new rule
of "a named directory source refers to the directory itself", the tool
creates "``./local/missing/dir/file.txt``".

Compatibility and Dependency Updates
------------------------------------

Windows now requires Python 2.7. Unix/OS-X platforms can still use either
Python 2.6 or 2.7, however this is probably the last release that will
support 2.6 (it is no longer receiving security updates, and most OS
distributions have switched to 2.7). Tahoe-LAFS now has the following
dependencies:

- Twisted >= 13.0.0
- Nevow >= 0.11.1
- foolscap >= 0.8.0
- service-identity
- characteristic >= 14.0.0
- pyasn1 >= 0.1.4
- pyasn1-modules >= 0.0.5

On Windows, if pywin32 is not installed then the dependencies on Twisted
and Nevow become:

- Twisted >= 11.1.0, <= 12.1.0
- Nevow >= 0.9.33, <= 0.10

On all platforms, if pyOpenSSL >= 0.14 is installed, then it will be used,
but if not then only pyOpenSSL >= 0.13, <= 0.13.1 will be built when directly
invoking `setup.py build` or `setup.py install`.

We strongly advise OS packagers to take the option of making a tahoe-lafs
package depend on pyOpenSSL >= 0.14. In order for that to work, the following
additional Python dependencies are needed:

- cryptography
- cffi >= 0.8
- six >= 1.4.1
- enum34
- pycparser

as well as libffi (for Debian/Ubuntu, the name of the needed OS package is
`libffi6`).

Tahoe-LAFS is now compatible with Setuptools version 8 and Pip version 6 or
later, which should fix execution on Ubuntu 15.04 (it now tolerates PEP440
semantics in dependency specifications). `2354`_ `2242`_

Tahoe-LAFS now depends upon foolscap-0.8.0, which creates better private keys
and certificates than previous versions. To benefit from the improvements
(2048-bit RSA keys and SHA256-based certificates), you must re-generate your
Tahoe nodes (which changes their TubIDs and FURLs). `2400`_

.. _`2242`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2242
.. _`2354`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2354
.. _`2400`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2400

Packaging
---------

A preliminary OS-X package, named "``tahoe-lafs-VERSION-osx.pkg``", is now
being generated. It is a standard double-clickable installer, which creates
``/Applications/tahoe.app`` that embeds a complete runtime tree. However
launching the ``.app`` only brings up a notice on how to run tahoe from the
command line. A future release may turn this into a fully-fledged application
launcher. `182`_ `2393`_ `2323`_

Preliminary Docker support was added. Tahoe container images may be available
on DockerHub. `PR165`_ `2419`_ `2421`_

Old and obsolete Debian packaging tools have been removed. `2282`_

.. _`182`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/182
.. _`2282`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2282
.. _`2323`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2323
.. _`2393`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2393
.. _`2419`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2419
.. _`2421`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2421
.. _`PR165`: https://github.com/tahoe-lafs/tahoe-lafs/pull/165

Minor Changes
-------------

- Welcome page: add per-server "(space) Available" column. `648`_
- check/deep-check learned to accept multiple location arguments. `740`_
- Checker reports: remove needs-rebalancing, add count-happiness. `1784`_ `2105`_
- CLI ``--help``: cite (but don't list) global options on each command. `2233`_
- Fix ftp "``ls``" to work with Twisted 15.0.0. `2394`_

.. _`648`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/648
.. _`740`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/740
.. _`1784`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1784
.. _`2105`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2105
.. _`2233`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2233
.. _`2394`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2394

Roughly 75 tickets were closed in this release: 623 648 712 740 754 898 1146
1159 1336 1381 1411 1634 1674 1698 1707 1717 1737 1784 1800 1807 1842 1847
1901 1918 1953 1960 1961 1966 1969 1972 1974 1988 1992 2005 2008 2023 2027
2028 2034 2048 2067 2086 2105 2121 2128 2165 2193 2208 2209 2233 2235 2242
2245 2248 2249 2249 2280 2281 2282 2290 2305 2312 2323 2340 2354 2380 2393
2394 2398 2400 2415 2416 2417 2433. Another dozen were referenced but not
closed: 182 666 982 1064 1258 1531 1536 1742 1834 1931 1935 2286. Roughly 40
GitHub pull-requests were closed: 32 48 50 56 57 61 62 62 63 64 69 73 81 82
84 85 87 91 94 95 96 103 107 109 112 114 120 122 125 126 133 135 136 137 142
146 149 152 165.

For more information about any ticket, visit e.g.
https://tahoe-lafs.org/trac/tahoe-lafs/ticket/754

1.10.0

'''''''''''''''''''''''''''

New Features
------------

- The Welcome page has been redesigned. This is a preview of the design style
that is likely to be used in other parts of the WUI in future Tahoe-LAFS
versions. (`1713`_, `1457`_, `1735`_)
- A new extensible Introducer protocol has been added, as the basis for
future improvements such as accounting. Compatibility with older nodes is
not affected. When server, introducer, and client are all upgraded, the
welcome page will show node IDs that start with "v0-" instead of the old
tubid. See `<docs/nodekeys.rst>`__ for details. (`466`_)
- The web-API has a new ``relink`` operation that supports directly moving
files between directories. (`1579`_)

Security Improvements
---------------------

- The ``introducer.furl`` for new Introducers is now unguessable. In previous
releases, this FURL used a predictable swissnum, allowing a network
eavesdropper who observes any node connecting to the Introducer to access
the Introducer themselves, and thus use servers or offer storage service to
clients (i.e. "join the grid"). In the new code, the only way to join a
grid is to be told the ``introducer.furl`` by someone who already knew it.
Note that pre-existing introducers are not changed. To force an introducer
to generate a new FURL, delete the existing ``introducer.furl`` file and
restart it. After doing this, the ``[client]introducer.furl`` setting of
every client and server that should connect to that introducer must be
updated. Note that other users of a shared machine may be able to read
``introducer.furl`` from your ``tahoe.cfg`` file unless you configure the
file permissions to prevent them. (`1802`_)
- Both ``introducer.furl`` and ``helper.furl`` are now censored from the
Welcome page, to prevent users of your gateway from learning enough to
create gateway nodes of their own. For existing guessable introducer
FURLs, the ``introducer`` swissnum is still displayed to show that a
guessable FURL is in use. (`860`_)

Command-line Syntax Changes
---------------------------

- Global options to ``tahoe``, such as ``-d``/``--node-directory``, must now
come before rather than after the command name (for example,
``tahoe -d BASEDIR cp -r foo: bar:`` ). (`166`_)

Notable Bugfixes
----------------

- In earlier versions, if a connection problem caused a download failure for
an immutable file, subsequent attempts to download the same file could also
fail. This is now fixed. (`1679`_)
- Filenames in WUI directory pages are now displayed correctly when they
contain characters that require HTML escaping. (`1143`_)
- Non-ASCII node nicknames no longer cause WUI errors. (`1298`_)
- Checking a LIT file using ``tahoe check`` no longer results in an
exception. (`1758`_)
- The SFTP frontend now works with recent versions of Twisted, rather than
giving errors or warnings about use of ``IFinishableConsumer``. (`1926`_,
`1564`_, `1525`_)
- ``tahoe cp --verbose`` now counts the files being processed correctly.
(`1805`_, `1783`_)
- Exceptions no longer trigger an unhelpful crash reporter on Ubuntu 12.04
("Precise") or later. (`1746`_)
- The error message displayed when a CLI tool cannot connect to a gateway has
been improved. (`974`_)
- Other minor fixes: `1781`_, `1812`_, `1915`_, `1484`_, `1525`_

Compatibility and Dependencies
------------------------------

- Python >= 2.6, except Python 3 (`1658`_)
- Twisted >= 11.0.0 (`1771`_)
- mock >= 0.8 (for unit tests)
- pycryptopp >= 0.6.0 (for Ed25519 signatures)
- zope.interface >= 3.6.0 (except 3.6.3 or 3.6.4)

Other Changes
-------------

- The ``flogtool`` utility, used to read detailed event logs, can now be
accessed as ``tahoe debug flogtool`` even when Foolscap is not installed
system-wide. (`1693`_)
- The provisioning/reliability pages were removed from the main client's web
interface, and moved into a standalone web-based tool. Use the ``run.py``
script in ``misc/operations_helpers/provisioning/`` to access them.
- Web clients can now cache (ETag) immutable directory pages. (`443`_)
- `<docs/convergence_secret.rst>`__ was added to document the adminstration
of convergence secrets. (`1761`_)

Precautions when Upgrading
--------------------------

- When upgrading a grid from a recent revision of trunk, follow the
precautions from this `message to the tahoe-dev mailing list`_, to ensure
that announcements to the Introducer are recognized after the upgrade.
This is not necessary when upgrading from a previous release like 1.9.2.

.. _`166`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/166
.. _`443`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/443
.. _`466`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/466
.. _`860`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/860
.. _`974`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/974
.. _`1143`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1143
.. _`1298`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1298
.. _`1457`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1457
.. _`1484`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1484
.. _`1525`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1525
.. _`1564`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1564
.. _`1579`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1579
.. _`1658`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1658
.. _`1679`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1679
.. _`1693`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1693
.. _`1713`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1713
.. _`1735`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1735
.. _`1746`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1746
.. _`1758`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1758
.. _`1761`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1761
.. _`1771`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1771
.. _`1781`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1781
.. _`1783`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1783
.. _`1802`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1802
.. _`1805`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1805
.. _`1812`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1812
.. _`1915`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1915
.. _`1926`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1926
.. _`message to the tahoe-dev mailing list`:
https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2013-March/008079.html

1.9.2

''''''''''''''''''''''''''

Notable Bugfixes
----------------

- Several regressions in support for reading (`1636`_), writing/modifying
(`1670`_, `1749`_), verifying (`1628`_) and repairing (`1655`_, `1669`_,
`1676`_, `1689`_) mutable files have been fixed.
- FTP can now list directories containing mutable files, although it
still does not support reading or writing mutable files. (`680`_)
- The FTP frontend would previously show Jan 1 1970 for all timestamps;
now it shows the correct modification time of the directory entry.
(`1688`_)
- If a node is configured to report incidents to a log gatherer, but the
gatherer is offline when some incidents occur, it would previously not
"catch up" with those incidents as intended. (`1725`_)
- OpenBSD 5 is now supported. (`1584`_)
- The ``count-good-share-hosts`` field of file check results is now
computed correctly. (`1115`_)

Configuration/Behavior Changes
------------------------------

- The capability of the upload directory for the drop-upload frontend
is now specified in the file ``private/drop_upload_dircap`` under
the gateway's node directory, rather than in its ``tahoe.cfg``.
(`1593`_)

Packaging Changes
-----------------

- Tahoe-LAFS can be built correctly from a git repository as well as
from darcs.

Compatibility and Dependencies
------------------------------

- foolscap >= 0.6.3 is required, in order to make Tahoe-LAFS compatible
with Twisted >= 11.1.0. (`1788`_)
- Versions 2.0.1 and 2.4 of PyCrypto are excluded. (`1631`_, `1574`_)

.. _`680`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/680
.. _`1115`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1115
.. _`1574`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1574
.. _`1584`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1584
.. _`1593`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1593
.. _`1628`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1628
.. _`1631`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1631
.. _`1636`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1636
.. _`1655`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1655
.. _`1669`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1669
.. _`1670`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1670
.. _`1676`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1676
.. _`1688`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1688
.. _`1689`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1689
.. _`1725`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1725
.. _`1749`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1749
.. _`1788`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1788

Page 3 of 6

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.