mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-30 09:48:56 +00:00
fix warnings from rst2html
Apparently the in-line link syntax with "<>" in them causes these warnings. I don't know why. I changed them all to a slightly more verbose syntax. Thanks to Mike Kazantzsev's review comment (https://github.com/tahoe-lafs/tahoe-lafs/pull/67#commitcomment-4561370), I moved the links to the end of each section.
This commit is contained in:
parent
82579cec96
commit
0bebbe3290
@ -20,7 +20,7 @@ Tahoe-LAFS Architecture
|
|||||||
Overview
|
Overview
|
||||||
========
|
========
|
||||||
|
|
||||||
(See the `docs/specifications directory <specifications>`_ for more details.)
|
(See the `docs/specifications directory`_ for more details.)
|
||||||
|
|
||||||
There are three layers: the key-value store, the filesystem, and the
|
There are three layers: the key-value store, the filesystem, and the
|
||||||
application.
|
application.
|
||||||
@ -45,10 +45,10 @@ Allmydata.com used it for a backup service: the application periodically
|
|||||||
copies files from the local disk onto the decentralized filesystem. We later
|
copies files from the local disk onto the decentralized filesystem. We later
|
||||||
provide read-only access to those files, allowing users to recover them.
|
provide read-only access to those files, allowing users to recover them.
|
||||||
There are several other applications built on top of the Tahoe-LAFS
|
There are several other applications built on top of the Tahoe-LAFS
|
||||||
filesystem (see the `RelatedProjects
|
filesystem (see the RelatedProjects_ page of the wiki for a list).
|
||||||
<https://tahoe-lafs.org/trac/tahoe-lafs/wiki/RelatedProjects>`_ page of the
|
|
||||||
wiki for a list).
|
|
||||||
|
|
||||||
|
.. _docs/specifications directory: specifications
|
||||||
|
.. _RelatedProjects: https://tahoe-lafs.org/trac/tahoe-lafs/wiki/RelatedProjects
|
||||||
|
|
||||||
The Key-Value Store
|
The Key-Value Store
|
||||||
===================
|
===================
|
||||||
@ -316,7 +316,9 @@ commercially-run grid for which all of the storage servers are in a colo
|
|||||||
facility with high interconnect bandwidth. In this case, the helper is placed
|
facility with high interconnect bandwidth. In this case, the helper is placed
|
||||||
in the same facility, so the helper-to-storage-server bandwidth is huge.
|
in the same facility, so the helper-to-storage-server bandwidth is huge.
|
||||||
|
|
||||||
See `<helper.rst>`_ for details about the upload helper.
|
See helper.rst_ for details about the upload helper.
|
||||||
|
|
||||||
|
.. _helper.rst: helper.rst
|
||||||
|
|
||||||
|
|
||||||
The Filesystem Layer
|
The Filesystem Layer
|
||||||
@ -368,8 +370,10 @@ clients are responsible for renewing their leases on a periodic basis at
|
|||||||
least frequently enough to prevent any of the leases from expiring before the
|
least frequently enough to prevent any of the leases from expiring before the
|
||||||
next renewal pass.
|
next renewal pass.
|
||||||
|
|
||||||
See `<garbage-collection.rst>`_ for further information, and for how to
|
See garbage-collection.rst_ for further information, and for how to configure
|
||||||
configure garbage collection.
|
garbage collection.
|
||||||
|
|
||||||
|
.. _garbage-collection.rst: garbage-collection.rst
|
||||||
|
|
||||||
|
|
||||||
File Repairer
|
File Repairer
|
||||||
|
@ -45,16 +45,17 @@ The item descriptions below use the following types:
|
|||||||
|
|
||||||
a Twisted listening-port specification string, like "``tcp:80``" or
|
a Twisted listening-port specification string, like "``tcp:80``" or
|
||||||
"``tcp:3456:interface=127.0.0.1``". For a full description of the format,
|
"``tcp:3456:interface=127.0.0.1``". For a full description of the format,
|
||||||
see `the Twisted strports documentation
|
see `the Twisted strports documentation`_. Please note, if interface= is
|
||||||
<https://twistedmatrix.com/documents/current/api/twisted.application.strports.html>`_.
|
not specified, Tahoe-LAFS will attempt to bind the port specified on all
|
||||||
Please note, if interface= is not specified, Tahoe-LAFS will attempt to
|
interfaces.
|
||||||
bind the port specified on all interfaces.
|
|
||||||
|
|
||||||
``FURL string``
|
``FURL string``
|
||||||
|
|
||||||
a Foolscap endpoint identifier, like
|
a Foolscap endpoint identifier, like
|
||||||
``pb://soklj4y7eok5c3xkmjeqpw@192.168.69.247:44801/eqpwqtzm``
|
``pb://soklj4y7eok5c3xkmjeqpw@192.168.69.247:44801/eqpwqtzm``
|
||||||
|
|
||||||
|
.. _the Twisted strports documentation: https://twistedmatrix.com/documents/current/api/twisted.application.strports.html
|
||||||
|
|
||||||
|
|
||||||
Node Types
|
Node Types
|
||||||
==========
|
==========
|
||||||
@ -103,7 +104,7 @@ set the ``tub.location`` option described below.
|
|||||||
|
|
||||||
This controls where the node's web server should listen, providing node
|
This controls where the node's web server should listen, providing node
|
||||||
status and, if the node is a client/server, providing web-API service as
|
status and, if the node is a client/server, providing web-API service as
|
||||||
defined in `webapi.rst <frontends/webapi.rst>_`.
|
defined in webapi.rst_.
|
||||||
|
|
||||||
This file contains a Twisted "strports" specification such as "``3456``"
|
This file contains a Twisted "strports" specification such as "``3456``"
|
||||||
or "``tcp:3456:interface=127.0.0.1``". The "``tahoe create-node``" or
|
or "``tcp:3456:interface=127.0.0.1``". The "``tahoe create-node``" or
|
||||||
@ -286,6 +287,8 @@ set the ``tub.location`` option described below.
|
|||||||
used for files that usually (on a Unix system) go into ``/tmp``. The
|
used for files that usually (on a Unix system) go into ``/tmp``. The
|
||||||
string will be interpreted relative to the node's base directory.
|
string will be interpreted relative to the node's base directory.
|
||||||
|
|
||||||
|
.. _webapi.rst: frontends/webapi.rst
|
||||||
|
|
||||||
|
|
||||||
Client Configuration
|
Client Configuration
|
||||||
====================
|
====================
|
||||||
@ -303,7 +306,7 @@ Client Configuration
|
|||||||
``helper.furl = (FURL string, optional)``
|
``helper.furl = (FURL string, optional)``
|
||||||
|
|
||||||
If provided, the node will attempt to connect to and use the given helper
|
If provided, the node will attempt to connect to and use the given helper
|
||||||
for uploads. See `<helper.rst>`_ for details.
|
for uploads. See helper.rst_ for details.
|
||||||
|
|
||||||
``key_generator.furl = (FURL string, optional)``
|
``key_generator.furl = (FURL string, optional)``
|
||||||
|
|
||||||
@ -339,7 +342,7 @@ Client Configuration
|
|||||||
ratios are more reliable, and small ``N``/``k`` ratios use less disk
|
ratios are more reliable, and small ``N``/``k`` ratios use less disk
|
||||||
space. ``N`` cannot be larger than 256, because of the 8-bit
|
space. ``N`` cannot be larger than 256, because of the 8-bit
|
||||||
erasure-coding algorithm that Tahoe-LAFS uses. ``k`` can not be greater
|
erasure-coding algorithm that Tahoe-LAFS uses. ``k`` can not be greater
|
||||||
than ``N``. See `<performance.rst>`_ for more details.
|
than ``N``. See performance.rst_ for more details.
|
||||||
|
|
||||||
``shares.happy`` allows you control over how well to "spread out" the
|
``shares.happy`` allows you control over how well to "spread out" the
|
||||||
shares of an immutable file. For a successful upload, shares are
|
shares of an immutable file. For a successful upload, shares are
|
||||||
@ -377,8 +380,11 @@ Client Configuration
|
|||||||
controlled by this parameter and will always use SDMF. We may revisit
|
controlled by this parameter and will always use SDMF. We may revisit
|
||||||
this decision in future versions of Tahoe-LAFS.
|
this decision in future versions of Tahoe-LAFS.
|
||||||
|
|
||||||
See `<specifications/mutable.rst>`_ for details about mutable file
|
See mutable.rst_ for details about mutable file formats.
|
||||||
formats.
|
|
||||||
|
.. _helper.rst: helper.rst
|
||||||
|
.. _performance.rst: performance.rst
|
||||||
|
.. _mutable.rst: specifications/mutable.rst
|
||||||
|
|
||||||
Frontend Configuration
|
Frontend Configuration
|
||||||
======================
|
======================
|
||||||
@ -395,30 +401,33 @@ HTTP
|
|||||||
directories and files, as well as a number of pages to check on the
|
directories and files, as well as a number of pages to check on the
|
||||||
status of your Tahoe node. It also provides a machine-oriented "WAPI",
|
status of your Tahoe node. It also provides a machine-oriented "WAPI",
|
||||||
with a REST-ful HTTP interface that can be used by other programs
|
with a REST-ful HTTP interface that can be used by other programs
|
||||||
(including the CLI tools). Please see `<frontends/webapi.rst>`_ for full
|
(including the CLI tools). Please see webapi.rst_ for full details, and
|
||||||
details, and the ``web.port`` and ``web.static`` config variables above.
|
the ``web.port`` and ``web.static`` config variables above. The
|
||||||
The `<frontends/download-status.rst>`_ document also describes a few WUI
|
`download-status.rst`_ document also describes a few WUI status pages.
|
||||||
status pages.
|
|
||||||
|
|
||||||
CLI
|
CLI
|
||||||
|
|
||||||
The main "bin/tahoe" executable includes subcommands for manipulating the
|
The main "bin/tahoe" executable includes subcommands for manipulating the
|
||||||
filesystem, uploading/downloading files, and creating/running Tahoe
|
filesystem, uploading/downloading files, and creating/running Tahoe
|
||||||
nodes. See `<frontends/CLI.rst>`_ for details.
|
nodes. See CLI.rst_ for details.
|
||||||
|
|
||||||
SFTP, FTP
|
SFTP, FTP
|
||||||
|
|
||||||
Tahoe can also run both SFTP and FTP servers, and map a username/password
|
Tahoe can also run both SFTP and FTP servers, and map a username/password
|
||||||
pair to a top-level Tahoe directory. See `<frontends/FTP-and-SFTP.rst>`_
|
pair to a top-level Tahoe directory. See FTP-and-SFTP.rst_ for
|
||||||
for instructions on configuring these services, and the ``[sftpd]`` and
|
instructions on configuring these services, and the ``[sftpd]`` and
|
||||||
``[ftpd]`` sections of ``tahoe.cfg``.
|
``[ftpd]`` sections of ``tahoe.cfg``.
|
||||||
|
|
||||||
Drop-Upload
|
Drop-Upload
|
||||||
|
|
||||||
As of Tahoe-LAFS v1.9.0, a node running on Linux can be configured to
|
As of Tahoe-LAFS v1.9.0, a node running on Linux can be configured to
|
||||||
automatically upload files that are created or changed in a specified
|
automatically upload files that are created or changed in a specified
|
||||||
local directory. See `<frontends/drop-upload.rst>`_ for details.
|
local directory. See drop-upload.rst_ for details.
|
||||||
|
|
||||||
|
.. _download-status.rst: frontends/download-status.rst
|
||||||
|
.. _CLI.rst: frontends/CLI.rst
|
||||||
|
.. _FTP-and-SFTP.rst: frontends/FTP-and-SFTP.rst
|
||||||
|
.. _drop-upload.rst: frontends/drop-upload.rst
|
||||||
|
|
||||||
|
|
||||||
Storage Server Configuration
|
Storage Server Configuration
|
||||||
@ -441,9 +450,8 @@ Storage Server Configuration
|
|||||||
that are being decommissioned: the ``storage/`` directory could be
|
that are being decommissioned: the ``storage/`` directory could be
|
||||||
mounted read-only, while shares are moved to other servers. Note that
|
mounted read-only, while shares are moved to other servers. Note that
|
||||||
this currently only affects immutable shares. Mutable shares (used for
|
this currently only affects immutable shares. Mutable shares (used for
|
||||||
directories) will be written and modified anyway. See ticket `#390
|
directories) will be written and modified anyway. See ticket `#390`_ for
|
||||||
<https://tahoe-lafs.org/trac/tahoe-lafs/ticket/390>`_ for the current
|
the current status of this bug. The default value is ``False``.
|
||||||
status of this bug. The default value is ``False``.
|
|
||||||
|
|
||||||
``reserved_space = (str, optional)``
|
``reserved_space = (str, optional)``
|
||||||
|
|
||||||
@ -479,7 +487,10 @@ Storage Server Configuration
|
|||||||
|
|
||||||
These settings control garbage collection, in which the server will
|
These settings control garbage collection, in which the server will
|
||||||
delete shares that no longer have an up-to-date lease on them. Please see
|
delete shares that no longer have an up-to-date lease on them. Please see
|
||||||
`<garbage-collection.rst>`_ for full details.
|
garbage-collection.rst_ for full details.
|
||||||
|
|
||||||
|
.. _#390: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/390
|
||||||
|
.. _garbage-collection.rst: garbage-collection.rst
|
||||||
|
|
||||||
|
|
||||||
Running A Helper
|
Running A Helper
|
||||||
@ -492,12 +503,12 @@ service.
|
|||||||
|
|
||||||
``enabled = (boolean, optional)``
|
``enabled = (boolean, optional)``
|
||||||
|
|
||||||
If ``True``, the node will run a helper (see `<helper.rst>`_ for
|
If ``True``, the node will run a helper (see helper.rst_ for details).
|
||||||
details). The helper's contact FURL will be placed in
|
The helper's contact FURL will be placed in ``private/helper.furl``, from
|
||||||
``private/helper.furl``, from which it can be copied to any clients that
|
which it can be copied to any clients that wish to use it. Clearly nodes
|
||||||
wish to use it. Clearly nodes should not both run a helper and attempt to
|
should not both run a helper and attempt to use one: do not create
|
||||||
use one: do not create ``helper.furl`` and also define
|
``helper.furl`` and also define ``[helper]enabled`` in the same node.
|
||||||
``[helper]enabled`` in the same node. The default is ``False``.
|
The default is ``False``.
|
||||||
|
|
||||||
|
|
||||||
Running An Introducer
|
Running An Introducer
|
||||||
@ -588,7 +599,7 @@ This section describes these other files.
|
|||||||
``private/helper.furl``
|
``private/helper.furl``
|
||||||
|
|
||||||
If the node is running a helper (for use by other clients), its contact
|
If the node is running a helper (for use by other clients), its contact
|
||||||
FURL will be placed here. See `<helper.rst>`_ for more details.
|
FURL will be placed here. See helper.rst_ for more details.
|
||||||
|
|
||||||
``private/root_dir.cap`` (optional)
|
``private/root_dir.cap`` (optional)
|
||||||
|
|
||||||
@ -650,7 +661,7 @@ Other files
|
|||||||
files. The web-API has a facility to block access to filecaps by their
|
files. The web-API has a facility to block access to filecaps by their
|
||||||
storage index, returning a 403 "Forbidden" error instead of the original
|
storage index, returning a 403 "Forbidden" error instead of the original
|
||||||
file. For more details, see the "Access Blacklist" section of
|
file. For more details, see the "Access Blacklist" section of
|
||||||
`<frontends/webapi.rst>`_.
|
webapi.rst_.
|
||||||
|
|
||||||
|
|
||||||
Example
|
Example
|
||||||
@ -693,4 +704,6 @@ Old Configuration Files
|
|||||||
Tahoe-LAFS releases before v1.3.0 had no ``tahoe.cfg`` file, and used
|
Tahoe-LAFS releases before v1.3.0 had no ``tahoe.cfg`` file, and used
|
||||||
distinct files for each item. This is no longer supported and if you have
|
distinct files for each item. This is no longer supported and if you have
|
||||||
configuration in the old format you must manually convert it to the new
|
configuration in the old format you must manually convert it to the new
|
||||||
format for Tahoe-LAFS to detect it. See `<historical/configuration.rst>`_.
|
format for Tahoe-LAFS to detect it. See `historical/configuration.rst`_.
|
||||||
|
|
||||||
|
.. _historical/configuration.rst: historical/configuration.rst
|
||||||
|
@ -23,4 +23,6 @@ automatically, but older filesystems may not have it enabled::
|
|||||||
|
|
||||||
If "dir_index" is present in the "features:" line, then you're all set. If
|
If "dir_index" is present in the "features:" line, then you're all set. If
|
||||||
not, you'll need to use tune2fs and e2fsck to enable and build the index. See
|
not, you'll need to use tune2fs and e2fsck to enable and build the index. See
|
||||||
`<http://wiki.dovecot.org/MailboxFormat/Maildir>`_ for some hints.
|
`http://wiki.dovecot.org/MailboxFormat/Maildir`_ for some hints.
|
||||||
|
|
||||||
|
.. _`http://wiki.dovecot.org/MailboxFormat/Maildir`: http://wiki.dovecot.org/MailboxFormat/Maildir
|
||||||
|
@ -133,10 +133,9 @@ of the same name in the upload directory, it will be unlinked and replaced
|
|||||||
with an immutable file. (`#1712`_)
|
with an immutable file. (`#1712`_)
|
||||||
|
|
||||||
If a file in the upload directory is changed (actually relinked to a new
|
If a file in the upload directory is changed (actually relinked to a new
|
||||||
file), then the old file is still present on the grid, and any other caps
|
file), then the old file is still present on the grid, and any other caps to
|
||||||
to it will remain valid. See `docs/garbage-collection.rst
|
it will remain valid. See `docs/garbage-collection.rst`_ for how to reclaim
|
||||||
<../garbage-collection.rst>`_ for how to reclaim the space used by files
|
the space used by files that are no longer needed.
|
||||||
that are no longer needed.
|
|
||||||
|
|
||||||
Unicode names are supported, but the local name of a file must be encoded
|
Unicode names are supported, but the local name of a file must be encoded
|
||||||
correctly in order for it to be uploaded. The expected encoding is that
|
correctly in order for it to be uploaded. The expected encoding is that
|
||||||
@ -154,3 +153,6 @@ printed by ``python -c "import sys; print sys.getfilesystemencoding()"``.
|
|||||||
.. _`#1710`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1710
|
.. _`#1710`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1710
|
||||||
.. _`#1711`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1711
|
.. _`#1711`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1711
|
||||||
.. _`#1712`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1712
|
.. _`#1712`: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1712
|
||||||
|
|
||||||
|
.. _docs/garbage-collection.rst: ../garbage-collection.rst
|
||||||
|
|
||||||
|
@ -54,8 +54,7 @@ section of $NODEDIR/tahoe.cfg will cause the node to run a webserver on port
|
|||||||
This string is actually a Twisted "strports" specification, meaning you can
|
This string is actually a Twisted "strports" specification, meaning you can
|
||||||
get more control over the interface to which the server binds by supplying
|
get more control over the interface to which the server binds by supplying
|
||||||
additional arguments. For more details, see the documentation on
|
additional arguments. For more details, see the documentation on
|
||||||
`twisted.application.strports
|
`twisted.application.strports`_.
|
||||||
<https://twistedmatrix.com/documents/current/api/twisted.application.strports.html>`_.
|
|
||||||
|
|
||||||
Writing "tcp:3456:interface=127.0.0.1" into the web.port line does the same
|
Writing "tcp:3456:interface=127.0.0.1" into the web.port line does the same
|
||||||
but binds to the loopback interface, ensuring that only the programs on the
|
but binds to the loopback interface, ensuring that only the programs on the
|
||||||
@ -66,18 +65,19 @@ This webport can be set when the node is created by passing a --webport
|
|||||||
option to the 'tahoe create-node' command. By default, the node listens on
|
option to the 'tahoe create-node' command. By default, the node listens on
|
||||||
port 3456, on the loopback (127.0.0.1) interface.
|
port 3456, on the loopback (127.0.0.1) interface.
|
||||||
|
|
||||||
|
.. _twisted.application.strports: https://twistedmatrix.com/documents/current/api/twisted.application.strports.html
|
||||||
|
|
||||||
|
|
||||||
Basic Concepts: GET, PUT, DELETE, POST
|
Basic Concepts: GET, PUT, DELETE, POST
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
As described in `docs/architecture.rst <../architecture.rst>`_, each file
|
As described in `docs/architecture.rst`_, each file and directory in a Tahoe
|
||||||
and directory in a Tahoe virtual filesystem is referenced by an identifier
|
virtual filesystem is referenced by an identifier that combines the
|
||||||
that combines the designation of the object with the authority to do something
|
designation of the object with the authority to do something with it (such as
|
||||||
with it (such as read or modify the contents). This identifier is called a
|
read or modify the contents). This identifier is called a "read-cap" or
|
||||||
"read-cap" or "write-cap", depending upon whether it enables read-only or
|
"write-cap", depending upon whether it enables read-only or read-write
|
||||||
read-write access. These "caps" are also referred to as URIs (which may be
|
access. These "caps" are also referred to as URIs (which may be confusing
|
||||||
confusing because they are not currently `RFC3986
|
because they are not currently RFC3986_-compliant URIs).
|
||||||
<https://tools.ietf.org/html/rfc3986>`_-compliant URIs).
|
|
||||||
|
|
||||||
The Tahoe web-based API is "REST-ful", meaning it implements the concepts of
|
The Tahoe web-based API is "REST-ful", meaning it implements the concepts of
|
||||||
"REpresentational State Transfer": the original scheme by which the World
|
"REpresentational State Transfer": the original scheme by which the World
|
||||||
@ -127,6 +127,9 @@ a plain text stack trace instead. If the Accept header contains ``*/*``, or
|
|||||||
``text/*``, or text/html (or if there is no Accept header), HTML tracebacks will
|
``text/*``, or text/html (or if there is no Accept header), HTML tracebacks will
|
||||||
be generated.
|
be generated.
|
||||||
|
|
||||||
|
.. _RFC3986: https://tools.ietf.org/html/rfc3986
|
||||||
|
.. _docs/architecture.rst: ../architecture.rst
|
||||||
|
|
||||||
|
|
||||||
URLs
|
URLs
|
||||||
====
|
====
|
||||||
@ -501,9 +504,9 @@ Creating a New Directory
|
|||||||
|
|
||||||
The metadata may have a "no-write" field. If this is set to true in the
|
The metadata may have a "no-write" field. If this is set to true in the
|
||||||
metadata of a link, it will not be possible to open that link for writing
|
metadata of a link, it will not be possible to open that link for writing
|
||||||
via the SFTP frontend; see `<FTP-and-SFTP.rst>`_ for details.
|
via the SFTP frontend; see FTP-and-SFTP.rst_ for details. Also, if the
|
||||||
Also, if the "no-write" field is set to true in the metadata of a link to
|
"no-write" field is set to true in the metadata of a link to a mutable
|
||||||
a mutable child, it will cause the link to be diminished to read-only.
|
child, it will cause the link to be diminished to read-only.
|
||||||
|
|
||||||
Note that the web-API-using client application must not provide the
|
Note that the web-API-using client application must not provide the
|
||||||
"Content-Type: multipart/form-data" header that usually accompanies HTML
|
"Content-Type: multipart/form-data" header that usually accompanies HTML
|
||||||
@ -660,6 +663,8 @@ Creating a New Directory
|
|||||||
This operation will return an error if the parent directory is immutable,
|
This operation will return an error if the parent directory is immutable,
|
||||||
or already has a child named NAME.
|
or already has a child named NAME.
|
||||||
|
|
||||||
|
.. _FTP-and-SFTP.rst: FTP-and-SFTP.rst
|
||||||
|
|
||||||
|
|
||||||
Getting Information About a File Or Directory (as JSON)
|
Getting Information About a File Or Directory (as JSON)
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
@ -2070,7 +2075,9 @@ Tahoe-1.1; back with Tahoe-1.0 the web client was responsible for serializing
|
|||||||
web requests themselves).
|
web requests themselves).
|
||||||
|
|
||||||
For more details, please see the "Consistency vs Availability" and "The Prime
|
For more details, please see the "Consistency vs Availability" and "The Prime
|
||||||
Coordination Directive" sections of `mutable.rst <../specifications/mutable.rst>`_.
|
Coordination Directive" sections of mutable.rst_.
|
||||||
|
|
||||||
|
.. _mutable.rst: ../specifications/mutable.rst
|
||||||
|
|
||||||
|
|
||||||
Access Blacklist
|
Access Blacklist
|
||||||
@ -2121,19 +2128,18 @@ the ``logs/twistd.log`` file.
|
|||||||
.. [1] URLs and HTTP and UTF-8, Oh My
|
.. [1] URLs and HTTP and UTF-8, Oh My
|
||||||
|
|
||||||
HTTP does not provide a mechanism to specify the character set used to
|
HTTP does not provide a mechanism to specify the character set used to
|
||||||
encode non-ASCII names in URLs
|
encode non-ASCII names in URLs (`RFC3986#2.1`_). We prefer the convention
|
||||||
(`RFC3986#2.1 <https://tools.ietf.org/html/rfc3986#section-2.1>`_).
|
that the ``filename=`` argument shall be a URL-escaped UTF-8 encoded Unicode
|
||||||
We prefer the convention that the ``filename=`` argument shall be a
|
string. For example, suppose we want to provoke the server into using a
|
||||||
URL-escaped UTF-8 encoded Unicode string.
|
filename of "f i a n c e-acute e" (i.e. f i a n c U+00E9 e). The UTF-8
|
||||||
For example, suppose we want to provoke the server into using a filename of
|
encoding of this is 0x66 0x69 0x61 0x6e 0x63 0xc3 0xa9 0x65 (or
|
||||||
"f i a n c e-acute e" (i.e. f i a n c U+00E9 e). The UTF-8 encoding of this
|
"fianc\\xC3\\xA9e", as python's ``repr()`` function would show). To encode
|
||||||
is 0x66 0x69 0x61 0x6e 0x63 0xc3 0xa9 0x65 (or "fianc\\xC3\\xA9e", as python's
|
this into a URL, the non-printable characters must be escaped with the
|
||||||
``repr()`` function would show). To encode this into a URL, the non-printable
|
urlencode ``%XX`` mechanism, giving us "fianc%C3%A9e". Thus, the first line
|
||||||
characters must be escaped with the urlencode ``%XX`` mechanism, giving
|
of the HTTP request will be "``GET
|
||||||
us "fianc%C3%A9e". Thus, the first line of the HTTP request will be
|
/uri/CAP...?save=true&filename=fianc%C3%A9e HTTP/1.1``". Not all browsers
|
||||||
"``GET /uri/CAP...?save=true&filename=fianc%C3%A9e HTTP/1.1``". Not all
|
provide this: IE7 by default uses the Latin-1 encoding, which is "fianc%E9e"
|
||||||
browsers provide this: IE7 by default uses the Latin-1 encoding, which is
|
(although it has a configuration option to send URLs as UTF-8).
|
||||||
"fianc%E9e" (although it has a configuration option to send URLs as UTF-8).
|
|
||||||
|
|
||||||
The response header will need to indicate a non-ASCII filename. The actual
|
The response header will need to indicate a non-ASCII filename. The actual
|
||||||
mechanism to do this is not clear. For ASCII filenames, the response header
|
mechanism to do this is not clear. For ASCII filenames, the response header
|
||||||
@ -2150,17 +2156,15 @@ the ``logs/twistd.log`` file.
|
|||||||
(note, the last four bytes of that line, not including the newline, are
|
(note, the last four bytes of that line, not including the newline, are
|
||||||
0xC3 0xA9 0x65 0x22)
|
0xC3 0xA9 0x65 0x22)
|
||||||
|
|
||||||
`RFC2231#4 <https://tools.ietf.org/html/rfc2231#section-4>`_
|
`RFC2231#4`_ (dated 1997): suggests that the following might work, and `some
|
||||||
(dated 1997): suggests that the following might work, and
|
developers have reported`_ that it is supported by Firefox (but not IE7)::
|
||||||
`some developers have reported <http://markmail.org/message/dsjyokgl7hv64ig3>`_
|
|
||||||
that it is supported by Firefox (but not IE7)::
|
|
||||||
|
|
||||||
#2: Content-Disposition: attachment; filename*=utf-8''fianc%C3%A9e
|
#2: Content-Disposition: attachment; filename*=utf-8''fianc%C3%A9e
|
||||||
|
|
||||||
My reading of `RFC2616#19.5.1 <https://tools.ietf.org/html/rfc2616#section-19.5.1>`_
|
My reading of `RFC2616#19.5.1`_ (which defines Content-Disposition) says
|
||||||
(which defines Content-Disposition) says that the filename= parameter is
|
that the filename= parameter is defined to be wrapped in quotes (presumably
|
||||||
defined to be wrapped in quotes (presumably to allow spaces without breaking
|
to allow spaces without breaking the parsing of subsequent parameters),
|
||||||
the parsing of subsequent parameters), which would give us::
|
which would give us::
|
||||||
|
|
||||||
#3: Content-Disposition: attachment; filename*=utf-8''"fianc%C3%A9e"
|
#3: Content-Disposition: attachment; filename*=utf-8''"fianc%C3%A9e"
|
||||||
|
|
||||||
@ -2175,3 +2179,9 @@ the ``logs/twistd.log`` file.
|
|||||||
into the response header, rather than enforcing the UTF-8 convention. This
|
into the response header, rather than enforcing the UTF-8 convention. This
|
||||||
means it does not try to decode the filename from the URL argument, nor does
|
means it does not try to decode the filename from the URL argument, nor does
|
||||||
it encode the filename into the response header.
|
it encode the filename into the response header.
|
||||||
|
|
||||||
|
.. _RFC3986#2.1: https://tools.ietf.org/html/rfc3986#section-2.1
|
||||||
|
.. _RFC2231#4: https://tools.ietf.org/html/rfc2231#section-4
|
||||||
|
.. _some developers have reported: http://markmail.org/message/dsjyokgl7hv64ig3
|
||||||
|
.. _RFC2616#19.5.1: https://tools.ietf.org/html/rfc2616#section-19.5.1
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ next renewal pass.
|
|||||||
|
|
||||||
There are several tradeoffs to be considered when choosing the renewal timer
|
There are several tradeoffs to be considered when choosing the renewal timer
|
||||||
and the lease duration, and there is no single optimal pair of values. See
|
and the lease duration, and there is no single optimal pair of values. See
|
||||||
the `<lease-tradeoffs.svg>`_ diagram to get an idea for the tradeoffs involved.
|
the lease-tradeoffs.svg_ diagram to get an idea for the tradeoffs involved.
|
||||||
If lease renewal occurs quickly and with 100% reliability, than any renewal
|
If lease renewal occurs quickly and with 100% reliability, than any renewal
|
||||||
time that is shorter than the lease duration will suffice, but a larger ratio
|
time that is shorter than the lease duration will suffice, but a larger ratio
|
||||||
of duration-over-renewal-time will be more robust in the face of occasional
|
of duration-over-renewal-time will be more robust in the face of occasional
|
||||||
@ -46,6 +46,9 @@ processed) to something other than 31 days.
|
|||||||
Renewing leases can be expected to take about one second per file/directory,
|
Renewing leases can be expected to take about one second per file/directory,
|
||||||
depending upon the number of servers and the network speeds involved.
|
depending upon the number of servers and the network speeds involved.
|
||||||
|
|
||||||
|
.. _lease-tradeoffs.svg: lease-tradeoffs.svg
|
||||||
|
|
||||||
|
|
||||||
Client-side Renewal
|
Client-side Renewal
|
||||||
===================
|
===================
|
||||||
|
|
||||||
@ -69,12 +72,14 @@ lease too: the ``--add-lease`` process is only needed to ensure that all
|
|||||||
older objects have up-to-date leases on them.
|
older objects have up-to-date leases on them.
|
||||||
|
|
||||||
A separate "rebalancing manager/service" is also planned -- see ticket
|
A separate "rebalancing manager/service" is also planned -- see ticket
|
||||||
`#543 <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/543>`_. The exact
|
`#543`_. The exact details of what this service will do are not settled, but
|
||||||
details of what this service will do are not settled, but it is likely to
|
it is likely to work by acquiring manifests from rootcaps on a periodic
|
||||||
work by acquiring manifests from rootcaps on a periodic basis, keeping track
|
basis, keeping track of checker results, managing lease-addition, and
|
||||||
of checker results, managing lease-addition, and prioritizing repair and
|
prioritizing repair and rebalancing of shares. Eventually it may use multiple
|
||||||
rebalancing of shares. Eventually it may use multiple worker nodes to perform
|
worker nodes to perform these jobs in parallel.
|
||||||
these jobs in parallel.
|
|
||||||
|
.. _#543: http://tahoe-lafs.org/trac/tahoe-lafs/ticket/543
|
||||||
|
|
||||||
|
|
||||||
Server Side Expiration
|
Server Side Expiration
|
||||||
======================
|
======================
|
||||||
|
113
docs/running.rst
113
docs/running.rst
@ -9,7 +9,7 @@ Intro
|
|||||||
|
|
||||||
This is how to run a Tahoe-LAFS client or a complete Tahoe-LAFS grid.
|
This is how to run a Tahoe-LAFS client or a complete Tahoe-LAFS grid.
|
||||||
First you have to install the Tahoe-LAFS software, as documented in
|
First you have to install the Tahoe-LAFS software, as documented in
|
||||||
`quickstart.rst <quickstart.rst>`_.
|
quickstart.rst_.
|
||||||
|
|
||||||
The ``tahoe`` program in the ``bin`` directory is used to create,
|
The ``tahoe`` program in the ``bin`` directory is used to create,
|
||||||
start, and stop nodes. Each node lives in a separate base directory, in
|
start, and stop nodes. Each node lives in a separate base directory, in
|
||||||
@ -20,30 +20,26 @@ A grid consists of a set of *storage nodes* and *client nodes* running
|
|||||||
the Tahoe-LAFS code. There is also an *introducer node* that is
|
the Tahoe-LAFS code. There is also an *introducer node* that is
|
||||||
responsible for getting the other nodes talking to each other.
|
responsible for getting the other nodes talking to each other.
|
||||||
|
|
||||||
If you're getting started we recommend you try connecting to
|
If you're getting started we recommend you try connecting to the `public test
|
||||||
the `public test grid
|
grid`_ as you only need to create a client node. When you want to create your
|
||||||
<https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TestGrid>`_ as you only
|
own grid you'll need to create the introducer and several initial storage
|
||||||
need to create a client node. When you want to create your own grid
|
nodes (see the note about small grids below).
|
||||||
you'll need to create the introducer and several initial storage nodes
|
|
||||||
(see the note about small grids below).
|
|
||||||
|
|
||||||
If the Tahoe-LAFS ``bin`` directory is not on your PATH, then in all
|
If the Tahoe-LAFS ``bin`` directory is not on your PATH, then in all
|
||||||
the command lines below, specify the full path to ``bin/tahoe``.
|
the command lines below, specify the full path to ``bin/tahoe``.
|
||||||
|
|
||||||
To construct a client node, run "``tahoe create-client``", which will
|
To construct a client node, run "``tahoe create-client``", which will create
|
||||||
create ``~/.tahoe`` to be the node's base directory. Acquire the
|
``~/.tahoe`` to be the node's base directory. Acquire the ``introducer.furl``
|
||||||
``introducer.furl`` (see below if you are running your own introducer,
|
(see below if you are running your own introducer, or use the one from the
|
||||||
or use the one from the `TestGrid page
|
`TestGrid page`_), and paste it after ``introducer.furl =`` in the
|
||||||
<https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TestGrid>`_), and paste it
|
``[client]`` section of ``~/.tahoe/tahoe.cfg``. Then use "``tahoe run
|
||||||
after ``introducer.furl =`` in the ``[client]`` section of
|
~/.tahoe``". After that, the node should be off and running. The first thing
|
||||||
``~/.tahoe/tahoe.cfg``. Then use "``tahoe run ~/.tahoe``". After that,
|
it will do is connect to the introducer and get itself connected to all other
|
||||||
the node should be off and running. The first thing it will do is
|
nodes on the grid.
|
||||||
connect to the introducer and get itself connected to all other nodes
|
|
||||||
on the grid.
|
|
||||||
|
|
||||||
By default, "``tahoe create-client``" creates a client-only node, that
|
By default, "``tahoe create-client``" creates a client-only node, that
|
||||||
does not offer its disk space to other nodes. To configure other behavior,
|
does not offer its disk space to other nodes. To configure other behavior,
|
||||||
use "``tahoe create-node``" or see `configuration.rst <configuration.rst>`_.
|
use "``tahoe create-node``" or see configuration.rst_.
|
||||||
|
|
||||||
To construct an introducer, create a new base directory for it (the
|
To construct an introducer, create a new base directory for it (the
|
||||||
name of the directory is up to you), ``cd`` into it, and run
|
name of the directory is up to you), ``cd`` into it, and run
|
||||||
@ -52,28 +48,34 @@ name of the directory is up to you), ``cd`` into it, and run
|
|||||||
``introducer.furl`` into the ``private/`` subdirectory of that base
|
``introducer.furl`` into the ``private/`` subdirectory of that base
|
||||||
directory. This file contains the URL the other nodes must use in order
|
directory. This file contains the URL the other nodes must use in order
|
||||||
to connect to this introducer. (Note that "``tahoe run .``" doesn't
|
to connect to this introducer. (Note that "``tahoe run .``" doesn't
|
||||||
work for introducers, this is a known issue: `#937
|
work for introducers, this is a known issue: `#937`_.)
|
||||||
<http://allmydata.org/trac/tahoe-lafs/ticket/937>`_.)
|
|
||||||
|
|
||||||
The "``tahoe run``" command above will run the node in the foreground.
|
The "``tahoe run``" command above will run the node in the foreground.
|
||||||
On Unix, you can run it in the background instead by using the
|
On Unix, you can run it in the background instead by using the
|
||||||
"``tahoe start``" command. To stop a node started in this way, use
|
"``tahoe start``" command. To stop a node started in this way, use
|
||||||
"``tahoe stop``". ``tahoe --help`` gives a summary of all commands.
|
"``tahoe stop``". ``tahoe --help`` gives a summary of all commands.
|
||||||
|
|
||||||
See `configuration.rst <configuration.rst>`_ for more details about how
|
See configuration.rst_ for more details about how to configure Tahoe-LAFS,
|
||||||
to configure Tahoe-LAFS, including how to get other clients to connect
|
including how to get other clients to connect to your node if it is behind a
|
||||||
to your node if it is behind a firewall or NAT device.
|
firewall or NAT device.
|
||||||
|
|
||||||
|
.. _quickstart.rst: quickstart.rst
|
||||||
|
.. _public test grid: https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TestGrid
|
||||||
|
.. _TestGrid page: https://tahoe-lafs.org/trac/tahoe-lafs/wiki/TestGrid
|
||||||
|
.. _configuration.rst: configuration.rst
|
||||||
|
.. _#937: https://tahoe-lafs.org/trac/tahoe-lafs/ticket/937
|
||||||
|
|
||||||
|
|
||||||
A note about small grids
|
A note about small grids
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
By default, Tahoe-LAFS ships with the configuration parameter
|
By default, Tahoe-LAFS ships with the configuration parameter
|
||||||
``shares.happy`` set to 7. If you are using Tahoe-LAFS on a
|
``shares.happy`` set to 7. If you are using Tahoe-LAFS on a grid with fewer
|
||||||
grid with fewer than 7 storage nodes, this won't work well for
|
than 7 storage nodes, this won't work well for you -- none of your uploads
|
||||||
you -- none of your uploads will succeed. To fix this, see
|
will succeed. To fix this, see configuration.rst_ to learn how to set
|
||||||
`configuration.rst <configuration.rst>`_ to learn how to set
|
|
||||||
``shares.happy`` to a more suitable value for your grid.
|
``shares.happy`` to a more suitable value for your grid.
|
||||||
|
|
||||||
|
|
||||||
Do Stuff With It
|
Do Stuff With It
|
||||||
================
|
================
|
||||||
|
|
||||||
@ -82,9 +84,8 @@ This is how to use your Tahoe-LAFS node.
|
|||||||
The WUI
|
The WUI
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Point your web browser to `http://127.0.0.1:3456
|
Point your web browser to `http://127.0.0.1:3456`_ -- which is the URL of the
|
||||||
<http://127.0.0.1:3456>`_ -- which is the URL of the gateway running on
|
gateway running on your own local computer -- to use your newly created node.
|
||||||
your own local computer -- to use your newly created node.
|
|
||||||
|
|
||||||
Create a new directory (with the button labelled "create a directory").
|
Create a new directory (with the button labelled "create a directory").
|
||||||
Your web browser will load the new directory. Now if you want to be
|
Your web browser will load the new directory. Now if you want to be
|
||||||
@ -95,48 +96,60 @@ then you can never again come back to this directory.
|
|||||||
You can do more or less everything you want to do with a decentralized
|
You can do more or less everything you want to do with a decentralized
|
||||||
filesystem through the WUI.
|
filesystem through the WUI.
|
||||||
|
|
||||||
|
.. _http://127.0.0.1:3456: http://127.0.0.1:3456
|
||||||
|
|
||||||
|
|
||||||
The CLI
|
The CLI
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Prefer the command-line? Run "``tahoe --help``" (the same command-line
|
Prefer the command-line? Run "``tahoe --help``" (the same command-line tool
|
||||||
tool that is used to start and stop nodes serves to navigate and use
|
that is used to start and stop nodes serves to navigate and use the
|
||||||
the decentralized filesystem). To get started, create a new directory
|
decentralized filesystem). To get started, create a new directory and mark it
|
||||||
and mark it as the 'tahoe:' alias by running
|
as the 'tahoe:' alias by running "``tahoe create-alias tahoe``". Once you've
|
||||||
"``tahoe create-alias tahoe``". Once you've done that, you can do
|
done that, you can do "``tahoe ls tahoe:``" and "``tahoe cp LOCALFILE
|
||||||
"``tahoe ls tahoe:``" and "``tahoe cp LOCALFILE tahoe:foo.txt``" to
|
tahoe:foo.txt``" to work with your filesystem. The Tahoe-LAFS CLI uses
|
||||||
work with your filesystem. The Tahoe-LAFS CLI uses similar syntax to
|
similar syntax to the well-known scp and rsync tools. See CLI.rst_ for more
|
||||||
the well-known scp and rsync tools. See `CLI.rst <frontends/CLI.rst>`_
|
details.
|
||||||
for more details.
|
|
||||||
|
|
||||||
As with the WUI (and with all current interfaces to Tahoe-LAFS), you
|
As with the WUI (and with all current interfaces to Tahoe-LAFS), you
|
||||||
are responsible for remembering directory capabilities yourself. If you
|
are responsible for remembering directory capabilities yourself. If you
|
||||||
create a new directory and lose the capability to it, then you cannot
|
create a new directory and lose the capability to it, then you cannot
|
||||||
access that directory ever again.
|
access that directory ever again.
|
||||||
|
|
||||||
|
.. _CLI.rst: frontends/CLI.rst
|
||||||
|
|
||||||
|
|
||||||
The SFTP and FTP frontends
|
The SFTP and FTP frontends
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
You can access your Tahoe-LAFS grid via any `SFTP
|
You can access your Tahoe-LAFS grid via any SFTP_ or FTP_ client.
|
||||||
<http://en.wikipedia.org/wiki/SSH_file_transfer_protocol>`_ or `FTP
|
See `FTP-and-SFTP.rst`_ for how to set
|
||||||
<http://en.wikipedia.org/wiki/File_Transfer_Protocol>`_ client.
|
|
||||||
See `FTP-and-SFTP.rst <frontends/FTP-and-SFTP.rst>`_ for how to set
|
|
||||||
this up. On most Unix platforms, you can also use SFTP to plug
|
this up. On most Unix platforms, you can also use SFTP to plug
|
||||||
Tahoe-LAFS into your computer's local filesystem via ``sshfs``.
|
Tahoe-LAFS into your computer's local filesystem via ``sshfs``.
|
||||||
|
|
||||||
The `SftpFrontend
|
The SftpFrontend_ page on the wiki has more information about using SFTP with
|
||||||
<https://tahoe-lafs.org/trac/tahoe-lafs/wiki/SftpFrontend>`_ page on the
|
Tahoe-LAFS.
|
||||||
wiki has more information about using SFTP with Tahoe-LAFS.
|
|
||||||
|
.. _SFTP: https://en.wikipedia.org/wiki/SSH_file_transfer_protocol
|
||||||
|
.. _FTP: http://en.wikipedia.org/wiki/File_Transfer_Protocol
|
||||||
|
.. _FTP-and-SFTP.rst: frontends/FTP-and-SFTP.rst
|
||||||
|
.. _SftpFrontend: https://tahoe-lafs.org/trac/tahoe-lafs/wiki/SftpFrontend
|
||||||
|
|
||||||
|
|
||||||
The WAPI
|
The WAPI
|
||||||
--------
|
--------
|
||||||
|
|
||||||
Want to program your Tahoe-LAFS node to do your bidding? Easy! See
|
Want to program your Tahoe-LAFS node to do your bidding? Easy! See
|
||||||
`webapi.rst <frontends/webapi.rst>`_.
|
webapi.rst_.
|
||||||
|
|
||||||
|
.. _webapi.rst: frontends/webapi.rst
|
||||||
|
|
||||||
|
|
||||||
Socialize
|
Socialize
|
||||||
=========
|
=========
|
||||||
|
|
||||||
You can chat with other users of and hackers of this software on the
|
You can chat with other users of and hackers of this software on the
|
||||||
#tahoe-lafs IRC channel at ``irc.freenode.net``, or on the `tahoe-dev
|
#tahoe-lafs IRC channel at ``irc.freenode.net``, or on the `tahoe-dev mailing
|
||||||
mailing list
|
list`_.
|
||||||
<https://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev>`_.
|
|
||||||
|
.. _tahoe-dev mailing list: https://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev
|
||||||
|
@ -102,7 +102,7 @@ just a special way of interpreting the contents of a specific mutable file.
|
|||||||
Earlier releases used a "vdrive server": this server was abolished in the
|
Earlier releases used a "vdrive server": this server was abolished in the
|
||||||
v0.7.0 release.
|
v0.7.0 release.
|
||||||
|
|
||||||
For details of how mutable files work, please see `<mutable.rst>`_ in this
|
For details of how mutable files work, please see mutable.rst_ in this
|
||||||
directory.
|
directory.
|
||||||
|
|
||||||
For releases since v0.7.0, we achieve most of our desired properties. The
|
For releases since v0.7.0, we achieve most of our desired properties. The
|
||||||
@ -124,13 +124,15 @@ multiple versions of each mutable file, and you might have some shares of
|
|||||||
version 1 and other shares of version 2). In extreme cases of simultaneous
|
version 1 and other shares of version 2). In extreme cases of simultaneous
|
||||||
update, mutable files might suffer from non-monotonicity.
|
update, mutable files might suffer from non-monotonicity.
|
||||||
|
|
||||||
|
.. _mutable.rst: mutable.rst
|
||||||
|
|
||||||
|
|
||||||
Dirnode secret values
|
Dirnode secret values
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
As mentioned before, dirnodes are simply a special way to interpret the
|
As mentioned before, dirnodes are simply a special way to interpret the
|
||||||
contents of a mutable file, so the secret keys and capability strings
|
contents of a mutable file, so the secret keys and capability strings
|
||||||
described in `<mutable.rst>`_ are all the same. Each dirnode contains an RSA
|
described in mutable.rst_ are all the same. Each dirnode contains an RSA
|
||||||
public/private keypair, and the holder of the "write capability" will be able
|
public/private keypair, and the holder of the "write capability" will be able
|
||||||
to retrieve the private key (as well as the AES encryption key used for the
|
to retrieve the private key (as well as the AES encryption key used for the
|
||||||
data itself). The holder of the "read capability" will be able to obtain the
|
data itself). The holder of the "read capability" will be able to obtain the
|
||||||
|
@ -129,6 +129,7 @@ delivered to the user.
|
|||||||
|
|
||||||
.. image:: file-encoding6.svg
|
.. image:: file-encoding6.svg
|
||||||
|
|
||||||
|
|
||||||
Hashes
|
Hashes
|
||||||
======
|
======
|
||||||
|
|
||||||
@ -145,8 +146,9 @@ Using SHA-256d (instead of plain SHA-256) guards against length-extension
|
|||||||
attacks. Using the tag protects our Merkle trees against attacks in which the
|
attacks. Using the tag protects our Merkle trees against attacks in which the
|
||||||
hash of a leaf is confused with a hash of two children (allowing an attacker
|
hash of a leaf is confused with a hash of two children (allowing an attacker
|
||||||
to generate corrupted data that nevertheless appears to be valid), and is
|
to generate corrupted data that nevertheless appears to be valid), and is
|
||||||
simply good "cryptograhic hygiene". The `"Chosen Protocol Attack" by Kelsey,
|
simply good "cryptograhic hygiene". The `“Chosen Protocol Attack” by Kelsey,
|
||||||
Schneier, and Wagner <http://www.schneier.com/paper-chosen-protocol.html>`_ is
|
Schneier, and Wagner`_ is relevant. Putting the tag in a netstring guards
|
||||||
relevant. Putting the tag in a netstring guards against attacks that seek to
|
against attacks that seek to confuse the end of the tag with the beginning of
|
||||||
confuse the end of the tag with the beginning of the subsequent value.
|
the subsequent value.
|
||||||
|
|
||||||
|
.. _“Chosen Protocol Attack” by Kelsey, Schneier, and Wagner: http://www.schneier.com/paper-chosen-protocol.html
|
||||||
|
@ -85,7 +85,7 @@ representation of the size of the data represented by this URI. All base32
|
|||||||
encodings are expressed in lower-case, with the trailing '=' signs removed.
|
encodings are expressed in lower-case, with the trailing '=' signs removed.
|
||||||
|
|
||||||
For example, the following is a CHK URI, generated from a previous version of
|
For example, the following is a CHK URI, generated from a previous version of
|
||||||
the contents of `<../architecture.rst>`_::
|
the contents of architecture.rst_::
|
||||||
|
|
||||||
URI:CHK:ihrbeov7lbvoduupd4qblysj7a:bg5agsdt62jb34hxvxmdsbza6do64f4fg5anxxod2buttbo6udzq:3:10:28733
|
URI:CHK:ihrbeov7lbvoduupd4qblysj7a:bg5agsdt62jb34hxvxmdsbza6do64f4fg5anxxod2buttbo6udzq:3:10:28733
|
||||||
|
|
||||||
@ -100,6 +100,9 @@ about the file's contents (except filesize), which improves privacy. The
|
|||||||
URI:CHK: prefix really indicates that an immutable file is in use, without
|
URI:CHK: prefix really indicates that an immutable file is in use, without
|
||||||
saying anything about how the key was derived.
|
saying anything about how the key was derived.
|
||||||
|
|
||||||
|
.. _architecture.rst: ../architecture.rst
|
||||||
|
|
||||||
|
|
||||||
LIT URIs
|
LIT URIs
|
||||||
--------
|
--------
|
||||||
|
|
||||||
@ -143,7 +146,7 @@ The format of the write-cap for mutable files is::
|
|||||||
Where (writekey) is the base32 encoding of the 16-byte AES encryption key
|
Where (writekey) is the base32 encoding of the 16-byte AES encryption key
|
||||||
that is used to encrypt the RSA private key, and (fingerprint) is the base32
|
that is used to encrypt the RSA private key, and (fingerprint) is the base32
|
||||||
encoded 32-byte SHA-256 hash of the RSA public key. For more details about
|
encoded 32-byte SHA-256 hash of the RSA public key. For more details about
|
||||||
the way these keys are used, please see `<mutable.rst>`_.
|
the way these keys are used, please see mutable.rst_.
|
||||||
|
|
||||||
The format for mutable read-caps is::
|
The format for mutable read-caps is::
|
||||||
|
|
||||||
@ -159,13 +162,16 @@ Historical note: the "SSK" prefix is a perhaps-inaccurate reference to
|
|||||||
"Sub-Space Keys" from the Freenet project, which uses a vaguely similar
|
"Sub-Space Keys" from the Freenet project, which uses a vaguely similar
|
||||||
structure to provide mutable file access.
|
structure to provide mutable file access.
|
||||||
|
|
||||||
|
.. _mutable.rst: mutable.rst
|
||||||
|
|
||||||
|
|
||||||
Directory URIs
|
Directory URIs
|
||||||
==============
|
==============
|
||||||
|
|
||||||
The grid layer provides a mapping from URI to data. To turn this into a graph
|
The grid layer provides a mapping from URI to data. To turn this into a graph
|
||||||
of directories and files, the "vdrive" layer (which sits on top of the grid
|
of directories and files, the "vdrive" layer (which sits on top of the grid
|
||||||
layer) needs to keep track of "directory nodes", or "dirnodes" for short.
|
layer) needs to keep track of "directory nodes", or "dirnodes" for short.
|
||||||
`<dirnodes.rst>`_ describes how these work.
|
dirnodes.rst_ describes how these work.
|
||||||
|
|
||||||
Dirnodes are contained inside mutable files, and are thus simply a particular
|
Dirnodes are contained inside mutable files, and are thus simply a particular
|
||||||
way to interpret the contents of these files. As a result, a directory
|
way to interpret the contents of these files. As a result, a directory
|
||||||
@ -181,6 +187,9 @@ directory) look much like mutable-file read-caps::
|
|||||||
Historical note: the "DIR2" prefix is used because the non-distributed
|
Historical note: the "DIR2" prefix is used because the non-distributed
|
||||||
dirnodes in earlier Tahoe releases had already claimed the "DIR" prefix.
|
dirnodes in earlier Tahoe releases had already claimed the "DIR" prefix.
|
||||||
|
|
||||||
|
.. _dirnodes.rst: dirnodes.rst
|
||||||
|
|
||||||
|
|
||||||
Internal Usage of URIs
|
Internal Usage of URIs
|
||||||
======================
|
======================
|
||||||
|
|
||||||
|
@ -307,7 +307,9 @@ keep its FURL consistent). To explicitly control which port it uses, write
|
|||||||
the desired portnumber into a file named "portnum" (i.e. $BASEDIR/portnum),
|
the desired portnumber into a file named "portnum" (i.e. $BASEDIR/portnum),
|
||||||
and the next time the gatherer is started, it will start listening on the
|
and the next time the gatherer is started, it will start listening on the
|
||||||
given port. The portnum file is actually a "strports specification string",
|
given port. The portnum file is actually a "strports specification string",
|
||||||
as described in `docs/configuration.rst <configuration.rst>`_.
|
as described in configuration.rst_.
|
||||||
|
|
||||||
|
.. _configuration.rst: configuration.rst
|
||||||
|
|
||||||
Once running, the stats gatherer will create a standard python "pickle" file
|
Once running, the stats gatherer will create a standard python "pickle" file
|
||||||
in $BASEDIR/stats.pickle . Once a minute, the gatherer will pull stats
|
in $BASEDIR/stats.pickle . Once a minute, the gatherer will pull stats
|
||||||
|
Loading…
Reference in New Issue
Block a user