mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-05-03 17:43:00 +00:00
webapi.txt: separate out debug/test commands, indicate that localfile=/localdir= requires special activation
This commit is contained in:
parent
9281a0aedc
commit
b4a0effe30
@ -51,7 +51,7 @@ Now, what can we do with these URLs? By varying the HTTP method
|
|||||||
control how what we want to do with the data and how it should be presented.
|
control how what we want to do with the data and how it should be presented.
|
||||||
|
|
||||||
|
|
||||||
=== files and directories by name ===
|
=== Manipulating files and directories by name ===
|
||||||
|
|
||||||
In the following examples "$URL" is a shorthand for a URL like the ones
|
In the following examples "$URL" is a shorthand for a URL like the ones
|
||||||
described above, with "vdrive/" as the top level, followed by a
|
described above, with "vdrive/" as the top level, followed by a
|
||||||
@ -124,14 +124,6 @@ nothing exists.
|
|||||||
(Currently all files are immutable so everyone has read-only access to all
|
(Currently all files are immutable so everyone has read-only access to all
|
||||||
files.)
|
files.)
|
||||||
|
|
||||||
GET $URL?t=download&localfile=$LOCALPATH
|
|
||||||
|
|
||||||
This instructs the node to download the given file or directory and write
|
|
||||||
it into the local filesystem at $LOCALPATH. This request will only be
|
|
||||||
accepted from an HTTP client connection originating at 127.0.0.1 . This
|
|
||||||
request is most useful when the client node and the HTTP client are
|
|
||||||
operated by the same user. $LOCALPATH should be an absolute pathname.
|
|
||||||
|
|
||||||
PUT $URL?t=uri
|
PUT $URL?t=uri
|
||||||
|
|
||||||
This attaches a child (either a file or a directory) to the vdrive at the
|
This attaches a child (either a file or a directory) to the vdrive at the
|
||||||
@ -140,26 +132,6 @@ nothing exists.
|
|||||||
vdrive. Intermediate directories are created on-demand just like with the
|
vdrive. Intermediate directories are created on-demand just like with the
|
||||||
regular PUT command.
|
regular PUT command.
|
||||||
|
|
||||||
PUT $NEWURL?t=upload&localfile=$LOCALPATH
|
|
||||||
|
|
||||||
This uploads a file or directory from the node's local filesystem to the
|
|
||||||
vdrive. As with "GET $URL?t=download&localfile=$LOCALPATH", this request
|
|
||||||
will only be accepted from an HTTP connection originating from 127.0.0.1.
|
|
||||||
|
|
||||||
If $LOCALPATH points to a directory on the node's local filesystem, then
|
|
||||||
the node performs a recursive upload of the directory into the vdrive at
|
|
||||||
the given location. $NEWURL will be created if necessary. When the
|
|
||||||
operation is complete, the directory referenced by $NEWURL will contain all
|
|
||||||
of the files and directories that were present in $LOCALPATH, so this is
|
|
||||||
equivalent to the unix commands:
|
|
||||||
|
|
||||||
mkdir -p $NEWURL; cp -r $LOCALPATH/* $NEWURL/
|
|
||||||
|
|
||||||
Note that the "curl" utility can be used to provoke this sort of recursive
|
|
||||||
upload, since the -T option will make it use an HTTP 'PUT':
|
|
||||||
|
|
||||||
curl -T /dev/null 'http://localhost:8011/vdrive/global/newdir?t=upload&localdir=/home/user/directory-to-upload'
|
|
||||||
|
|
||||||
DELETE $URL
|
DELETE $URL
|
||||||
|
|
||||||
This deletes the given file or directory from the vdrive. If it is a
|
This deletes the given file or directory from the vdrive. If it is a
|
||||||
@ -169,7 +141,7 @@ nothing exists.
|
|||||||
may leave some intermediate directory nodes).
|
may leave some intermediate directory nodes).
|
||||||
|
|
||||||
|
|
||||||
=== files by name ===
|
=== Manipulating files by name ===
|
||||||
|
|
||||||
PUT $NEWURL
|
PUT $NEWURL
|
||||||
|
|
||||||
@ -184,11 +156,7 @@ nothing exists.
|
|||||||
To use this, run 'curl -T localfile http://localhost:8011/vdrive/global/newfile'
|
To use this, run 'curl -T localfile http://localhost:8011/vdrive/global/newfile'
|
||||||
|
|
||||||
|
|
||||||
=== directories by name ===
|
=== Manipulating directories by name ===
|
||||||
|
|
||||||
GET $URL?t=manifest
|
|
||||||
|
|
||||||
Return an HTML-formatted manifest of the given directory, for debugging.
|
|
||||||
|
|
||||||
PUT $NEWURL?t=mkdir
|
PUT $NEWURL?t=mkdir
|
||||||
|
|
||||||
@ -398,3 +366,63 @@ server.
|
|||||||
|
|
||||||
etc..
|
etc..
|
||||||
|
|
||||||
|
|
||||||
|
== Testing/Debugging Commands ==
|
||||||
|
|
||||||
|
GET $URL?t=download&localfile=$LOCALPATH
|
||||||
|
GET $URL?t=download&localdir=$LOCALPATH
|
||||||
|
|
||||||
|
The localfile= form instructs the node to download the given file and write
|
||||||
|
it into the local filesystem at $LOCALPATH. The localdir= form instructs
|
||||||
|
the node to recursively download everything from the given directory and
|
||||||
|
below into the local filesystem. To avoid surprises, the localfile= form
|
||||||
|
will signal an error if $URL actually refers to a directory, likewise if
|
||||||
|
localdir= is used with a $URL that refers to a file.
|
||||||
|
|
||||||
|
This request will only be accepted from an HTTP client connection
|
||||||
|
originating at 127.0.0.1 . This request is most useful when the client node
|
||||||
|
and the HTTP client are operated by the same user. $LOCALPATH should be an
|
||||||
|
absolute pathname.
|
||||||
|
|
||||||
|
This form is only implemented for testing purposes, because of a trivially
|
||||||
|
easy attack: any web server that the local browser visits could serve an
|
||||||
|
IMG tag that causes the local node to modify the local filesystem.
|
||||||
|
Therefore this form is only enabled if you create a file named
|
||||||
|
'webport_allow_localfile' in the node's base directory.
|
||||||
|
|
||||||
|
PUT $NEWURL?t=upload&localfile=$LOCALPATH
|
||||||
|
PUT $NEWURL?t=upload&localdir=$LOCALPATH
|
||||||
|
|
||||||
|
This uploads a file or directory from the node's local filesystem to the
|
||||||
|
vdrive. As with "GET $URL?t=download&localfile=$LOCALPATH", this request
|
||||||
|
will only be accepted from an HTTP connection originating from 127.0.0.1 .
|
||||||
|
|
||||||
|
The localfile= form expects that $LOCALPATH will point to a file on the
|
||||||
|
node's local filesystem, and cause sthe node to upload that one file into
|
||||||
|
the vdrive at the given location. Any parent directories will be created in
|
||||||
|
the vdrive as necessary.
|
||||||
|
|
||||||
|
The localdir= form expects that $LOCALPATH will point to a directory on the
|
||||||
|
node's local filesystem, and it causes the node to perform a recursive
|
||||||
|
upload of the directory into the vdrive at the given location, creating
|
||||||
|
parent directories as necessary. When the operation is complete, the
|
||||||
|
directory referenced by $NEWURL will contain all of the files and
|
||||||
|
directories that were present in $LOCALPATH, so this is equivalent to the
|
||||||
|
unix commands:
|
||||||
|
|
||||||
|
mkdir -p $NEWURL; cp -r $LOCALPATH/* $NEWURL/
|
||||||
|
|
||||||
|
Note that the "curl" utility can be used to provoke this sort of recursive
|
||||||
|
upload, since the -T option will make it use an HTTP 'PUT':
|
||||||
|
|
||||||
|
curl -T /dev/null 'http://localhost:8011/vdrive/global/newdir?t=upload&localdir=/home/user/directory-to-upload'
|
||||||
|
|
||||||
|
This form is only implemented for testing purposes, because any attacker's
|
||||||
|
web server that a local browser visits could serve an IMG tag that causes
|
||||||
|
the local node to modify the local filesystem. Therefore this form is only
|
||||||
|
enabled if you create a file named 'webport_allow_localfile' in the node's
|
||||||
|
base directory.
|
||||||
|
|
||||||
|
GET $URL?t=manifest
|
||||||
|
|
||||||
|
Return an HTML-formatted manifest of the given directory, for debugging.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user