adds documentation for most dav commands

Sun, 09 Jul 2017 20:15:14 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 09 Jul 2017 20:15:14 +0200
changeset 265
ee9e63c437c4
parent 264
94c0a938b66c
child 266
8c44c5919691

adds documentation for most dav commands

copy, move and configuration commands still missing

docs/src/Makefile file | annotate | diff | comparison | revisions
docs/src/commands.md file | annotate | diff | comparison | revisions
docs/src/configuration.md file | annotate | diff | comparison | revisions
docs/src/copy.md file | annotate | diff | comparison | revisions
docs/src/date.md file | annotate | diff | comparison | revisions
docs/src/davdoc.css file | annotate | diff | comparison | revisions
docs/src/encryption.md file | annotate | diff | comparison | revisions
docs/src/footer.html file | annotate | diff | comparison | revisions
docs/src/get-property.md file | annotate | diff | comparison | revisions
docs/src/get.md file | annotate | diff | comparison | revisions
docs/src/getting-started.md file | annotate | diff | comparison | revisions
docs/src/header.html file | annotate | diff | comparison | revisions
docs/src/info.md file | annotate | diff | comparison | revisions
docs/src/list.md file | annotate | diff | comparison | revisions
docs/src/lock.md file | annotate | diff | comparison | revisions
docs/src/mkdir.md file | annotate | diff | comparison | revisions
docs/src/move.md file | annotate | diff | comparison | revisions
docs/src/put.md file | annotate | diff | comparison | revisions
docs/src/remove.md file | annotate | diff | comparison | revisions
docs/src/set-property.md file | annotate | diff | comparison | revisions
docs/src/unlock.md file | annotate | diff | comparison | revisions
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/Makefile	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,66 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright 2017 Olaf Wintermann. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+#   1. Redistributions of source code must retain the above copyright
+#      notice, this list of conditions and the following disclaimer.
+#
+#   2. Redistributions in binary form must reproduce the above copyright
+#      notice, this list of conditions and the following disclaimer in the
+#      documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+PANDOC=pandoc
+PFLAGS = -c davdoc.css -B header.html -A footer.html
+
+SRC = getting-started.md
+SRC += commands.md
+SRC += list.md
+SRC += get.md
+SRC += put.md
+SRC += mkdir.md
+SRC += remove.md
+SRC += copy.md
+SRC += move.md
+SRC += get-property.md
+SRC += set-property.md
+SRC += lock.md
+SRC += unlock.md
+SRC += info.md
+SRC += date.md
+SRC += configuration.md
+SRC += encryption.md
+
+HTML = $(SRC:%.md=build/%.html)
+
+FILES = build/davdoc.css
+
+all: build $(HTML) $(FILES)
+
+build:
+	mkdir -p build
+
+build/%.html: %.md
+	$(PANDOC) $(PFLAGS) $< -o $@
+
+build/davdoc.css:
+	cp davdoc.css build
+
+clean:
+	rm -Rf build
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/commands.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,44 @@
+Commands
+========
+
+Overview
+--------
+
+List resources:
+
+	dav list <url>
+
+Download resource:
+
+	dav get <url>
+
+Download all resources from a collection:
+
+	dav get -R <url>
+
+Upload a file:
+
+	dav put <url> <file>
+
+Upload all files from a directory:
+
+	dav put -R <url> <dir>
+
+Duplicate a resource or a collection on a server:
+
+	dav copy <src-url> <dst-url>
+
+There is also a move operation similar to copy:
+
+	dav move <src-url> <dst-url>
+
+These are the most common commands. There are also more commands for webdav locking and manipulating webdav properties.
+
+Common options
+--------------
+
+**`-N`** disable any authentication prompt. If authentication is required, dav will abort.
+
+**`-i`** disable TLS certificate verification
+
+**`-v`** enable verbose output. Internally `CURLOPT_VERBOSE` is set to 1 and verbose output is printed on stderr.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/date.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,23 @@
+dav date
+========
+
+**`date [url]`**
+
+The purpose of this command is to get the current date from a server and print it on stdout (http date format). This in useful in combination with the `-U` option for the `list` and `get` command.
+
+The *url* can be any http url. If no *url* is specified, the local time is used.
+
+### Example: incremental dav get
+
+It is possible to download only resources, which are modified since a specified date. The *date* command allows you to easily store the date of the last *get*.
+
+	$ dav get -R myserv/col/
+	...
+	$ dav date myserv > last_get
+	
+After some resources are changed on the server, you can download only the modified files.
+
+	$ dav get -R -U `cat last_get` myserv/col/
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/davdoc.css	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,79 @@
+.header, h1, h2, h3, .sidebar {
+    font-family: sans-serif;
+}
+
+div.header {
+    padding-top: 0.3em;
+    padding-bottom: 0.5em;
+    margin-bottom: 2em;
+    border: none;
+    border-bottom: 1px solid;
+    border-bottom-color: #2E2E2E;
+}
+
+div.header span {
+    font-size: 2em;
+    font-weight: bold;
+    margin-left: 1em;
+}
+
+div.header img {
+    float: right;
+}
+
+div.sidebar {
+    float: left;
+    width: 15em;
+}
+
+div.nav {
+    color: black;
+    background-color: #E9EBEC;
+    margin-bottom: 1em;
+    padding-bottom: 0.1em;
+}
+
+div.nav h3 {
+    color: white;
+    background-color: #5B6F7A;
+    font-size: 1.2em;
+    padding-top: 0.2em;
+    padding-bottom: 0.2em;
+    padding-left: 0.5em;
+    margin-top: 0;
+}
+
+div.nav ul {
+    margin-top: 0;
+    padding-top: 0;
+    font-size: 0.95em;
+}
+
+div.content {
+    margin-left: 16em;
+    padding: 0;
+    font-family: serif;
+    font-size: 1em;
+    min-width: 16em;
+}
+
+div.content h1 {
+    color: white;
+    background-color: #5B6F7A;
+    font-size: 1.2em;
+    padding-top: 0.2em;
+    padding-bottom: 0.2em;
+    padding-left: 0.5em;
+    padding-right: 0;
+    margin-top: 0;
+}
+
+div.content h2 {
+    font-size: 1.2em;
+}
+
+div.content h3 {
+    font-size: 1.05em;
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/footer.html	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,3 @@
+</div>
+<!-- end content -->
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/get-property.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,27 @@
+dav get-property
+================
+
+**`get-property [-pc] [-n <uri>] <url> <property>`**
+
+Gets a specified resource property. Every WebDAV property has a name and an XMl namespace. A namespace can be specified with the `-n` option or with a prefixed name. A prefix and property name are separated by an **:**
+
+Example: `D:creationdate`
+
+`D` is the prefix, `creationdate` is the name.
+
+There are only two available prefixes:
+
+1. `D` for the `DAV:` namespace
+2. `idav` for `http://davutils.org/`
+
+To use an other namespace, use the `-n` option.
+
+If the property name has no prefix, and no namespace is specified, the default namespace `DAV:` is used.
+
+**`-p`** disable file name and path decryption if enabled
+
+**`-c`** enable file name and path decryption
+
+**`-n <uri>`** specify property namespace
+
+**Note:** Properties are never encrypted.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/get.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,23 @@
+dav get
+=======
+
+**`get [-pcR] [-o <file>] [-u <date>] <url>`**
+
+Downloads a resource. It can also download collections and its child resources.
+When downloading a single resource, the default local file name is the resource
+name. When downloading collections, it does NOT create a local directory with
+the collection's name and places it children in there, but it downloads the
+children directly to the current working directory.
+
+**`-p`** disable file name and content decryption. You get exactly what is stored
+  on the server.
+  
+**`-c`** enable file name and content decryption
+
+**`-R`** download a collection
+
+**`-o <file>`** specify the local output file. A **-** indicates stdout
+
+**`-u <date>`** downloads only files which are modified since the specified date. Uses the http date format
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/getting-started.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,44 @@
+Getting started
+===============
+
+### Test
+
+After successful installation you can test dav with your WebDAV server.
+
+	dav list http://example.com/webdav/
+
+This lists all child resources of the specified collection. If you are unfamiliar to WebDAV terminology this means basically listing all files in a directory, similar to the ls unix tool. Infact you can also write dav ls instead of dav list and there is also a -l option like ls has one. 
+
+### Create a repository
+
+All dav commands are expecting a url argument, but it may be a bit cumbersome to type a full url every time. But you can configure a repository in the dav configuration file ($HOME/.dav/config.xml) with the servers url, optional authentication information and other options. After that you can access a webdav server just with the repository name and an optional path.
+
+So when you have created a repository with the name myserv and the url http://example.com/webdav/, you can just type
+
+	dav list myserv
+
+You can add a path to the repository name to access an other url
+
+	dav list myserv/mycollection/
+
+This lists the content of http://example.com/webdav/mycollection/
+
+The easiest way to create a repository is with the add-repository command. This is a simple configuration assistant.
+
+	$ dav add-repository
+	Each repository must have an unique name.
+	name: myserv
+
+	Specify the repository base url.
+	url: http://example.com/webdav/
+
+	User for HTTP authentication.
+	user (optional): myuser
+	password (optional): 
+
+
+	Added repository: myserv (http://example.com/webdav/)
+
+You can also configure the config.xml yourself, check out this example page and the config.xml spec.
+
+More informations about urls and path in dav here.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/header.html	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,38 @@
+<div class="header">
+	<span>davutils documentation</span>
+</div>
+<div class="sidebar">
+	<div class="nav">
+		<h3>dav</h3>
+			<ul>
+				<li><a href="getting-started.html">Getting started</a></li>
+				<li><a href="commands.html">Commands</a></li>
+					<ul>
+						<li><a href="list.html">list</a></li>
+						<li><a href="get.html">get</a></li>
+						<li><a href="put.html">put</a></li>
+						<li><a href="mkdir.html">mkdir</a></li>
+						<li><a href="remove.html">remove</a></li>
+						<li><a href="copy.html">copy</a></li>
+						<li><a href="move.html">move</a></li>
+						<li><a href="get-property.html">get-property</a></li>
+						<li><a href="set-property.html">set-property</a></li>
+						<li><a href="lock.html">lock</a></li>
+						<li><a href="unlock.html">unlock</a></li>
+						<li><a href="info.html">info</a></li>
+						<li><a href="date.html">date</a></li>
+					</ul>
+				<li><a href="configuration.html">Configuration</a></li>
+				<li><a href="encryption.html">Encryption</a></li>
+			</ul>
+	</div>
+	<div class="nav">
+		<h3>dav-sync</h3>
+			<ul>
+				<li><a href=".">.</a></li>
+			</ul>
+	</div>
+</div>
+
+<!-- begin content -->
+<div class="content">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/info.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,49 @@
+dav info
+========
+
+**`info [-pc] <url>`**
+
+Prints some information and lists all properties for the resource specified by url.
+
+### Example 1: info of a collection
+
+In this example *myserv* is a configured repository with the base url *https://example.com/webdav/*. Because *col* is not encrypted, the *url* is just the *path* appended to base url.
+
+	$ dav info myserv/col/
+	name: col
+	path: /col
+	url:  https://example.com/webdav/col
+	type: collection
+	size: 28
+
+	namespace: DAV:
+	  creationdate: 2017-06-14T09:32:43Z
+	  getetag: "1000-551e83bebc19c"
+	  getlastmodified: Wed, 14 Jun 2017 09:32:43 GMT
+	  supportedlock:
+
+### Example 2: encrypted resource
+
+With encrypted resources, the *path* and *url* are different. The real resource name is random, but the name used by *dav* is stored in the *crypto-name* property. 
+
+	$ dav info -c myserv/crres
+	name: crres
+	path: /crres
+	url:  https://example.com/webdav/wsIwbLxuJQTGtgiMAD1KGeaY
+	type: resource
+	size: 48 bytes
+
+	namespace: DAV:
+	  creationdate: 2017-07-09T16:18:09Z
+	  getcontentlength: 48
+	  getetag: "30-553e4cfecd170"
+	  getlastmodified: Sun, 09 Jul 2017 16:18:09 GMT
+	  supportedlock: 
+
+	namespace: http://apache.org/dav/props/
+	  executable: F
+
+	namespace: http://davutils.org/
+	  crypto-hash: fm4zstp/FevTs1aoUXc3+mqTmAf2Go+zQ34rSp8/ixDlGLQJXR74Je+WMl1zxZKbS/+5VwDhyZ9pT3gInsq2SA==
+	  crypto-key: mykey
+	  crypto-name: ZU+lZtFi3dprBz44714plYwfRnhyI/apYq46Sk/B6QU=
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/list.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,49 @@
+dav list
+========
+
+**`dav list [-altepcR] [-u <date>] <url>`**
+
+Lists child resources of the specified collection. Without any options it
+shows only the direct children and hides files beginning with a dot.
+
+Options
+-------
+
+**`-a`** don't hide files whose names begins with a dot `.`
+
+**`-l`** shows additional information for resources
+
+Example:
+
+	--     4.2 KiB  Oct 11  2015  somefile
+
+The first column contains to fields for flags.
+
+1. Field: `d-` indicates a collection
+2. Field: `-c` indicates an encrypted resource
+
+Also encrypted collections are possible, but only the collection name is encrypted, the content may be unencrypted.
+
+The second column in the `list -l` output is the resource size. The number has always a suffix (bytes, KiB, MiB, GiB, TiB). To get the exact content-length in bytes you can use the [dav info][1] command.
+
+[1]: ./info.html
+
+The third column is the date of the last modification. The `strftime` format is `%b %d %H:%M` if the year is the same. Otherwise the format is `%b %d  %Y`.
+
+The last column is the resource name. If the `-R` option is specified, the resource path is shown.
+
+**`-t`** this options only work in combination with `-l` and it adds the resource content type to the output (after the flags)
+
+**`-e`** similar to `-l`, but with 6 flag fields. Currently only the first 4 fields are used. The last two are reserved for future use.
+
+3. Field: **l** indicates a locked resource
+4. Field: **x** indicates a executable resource (executable property with http://apache.org/dav/props/ namespace)
+
+**`-p`** disables file name and path decryption if enabled
+
+**`-c`** enables file name and path decryption
+
+**`-R`** recursively shows all resources in the collection and all child collections
+
+**`-u <date>`** shows only resources with a lastmodified date after the specified
+  date. Uses the http date format
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/lock.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,21 @@
+dav lock
+========
+
+**`lock [-pc] <url>`**
+
+Creates a lock on the resource specified by the url. The lock is an exclusive write lock with infinity depth.
+
+If the resource is successfully locked, a lock token for this resource is printed on stdout. This lock token should be saved somewhere to unlock the resource eventually.
+
+**`-p`** disable file name and path decryption if enabled
+
+**`-c`** enable file name and path decryption
+
+### Example 1: lock resource and use the lock token
+
+	$ dav lock myserv/resource
+	opaquelocktoken:0454905e-f2ff-45c4-a3d7-5c4e4db5ce37
+	$ dav put -L opaquelocktoken:0454905e-f2ff-45c4-a3d7-5c4e4db5ce37 myserv/resource newfile
+	$ dav unlock -L opaquelocktoken:0454905e-f2ff-45c4-a3d7-5c4e4db5ce37 myserv/resource
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/mkdir.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,15 @@
+dav mkdir
+=========
+
+**`mkdir [-pc] [-k <key>] [-L <lock>] <url>`**
+
+Creates a collection. All intermediate collections are created.
+
+**`-p`** disable file name encryption and decryption
+
+**`-c`** enables file file name and content encryption
+
+**`-k <key>`** use the specified key for encryption. The key must be configured in
+  the config.xml file
+
+**`-L <lock>`** use a lock token
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/put.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,27 @@
+dav put
+=======
+
+**`put [-pcR] [-k <key>] [-L <lock>] <url> <file>`**
+
+Uploads a file or a directory. When uploading a file and the url points to
+an existing collection, a resource inside this collection with the file's name is created. When the url points to a non-existing resource, the resource is
+created.
+
+When uploading a directory, you need to specify the -R option. It uploads
+all files in the directory to the specified url, but it does not create a
+collection for the directory itself.
+
+**`-p`** disable file name encryption and decryption
+
+**`-c`** enable file name and content encryption
+
+**`-R`** upload directory
+
+**`-k <key>`** use the specified key for encryption. The key must be configured in
+  the config.xml file
+
+**`-L <lock>`** use a lock token. See [dav lock][1]
+
+[1]: ./lock.html
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/remove.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,13 @@
+dav remove
+==========
+
+**`remove [-pc] [-L <lock>] <url>`**
+
+Removes a resource. When removing a collection, all unterneath resources are
+removed.
+
+**`-p`** disable file name and path decryption if enabled
+
+**`-c`** enable file name and path decryption
+
+**`-L`** <lock> use a lock token
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/set-property.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,24 @@
+dav set-property
+================
+
+**`set-property [-pc] [-L <lock>] [-n <uri>] <url> <property> [value]`**
+
+Sets a resource property to a specified value.
+
+property is a property name with or without prefix (see [get-property][1] for details).
+
+[1]: ./get-property.html
+
+If no value is specified, the content for the property is read from stdin.
+
+**`-p`** disable file name and path decryption if enabled
+
+**`-c`** enable file name and path decryption
+
+**`-L <lock>`** use a lock token. See [dav lock][1]
+
+**`-n <uri>`** specify property namespace
+
+**Note:** Properties are never encrypted.
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/src/unlock.md	Sun Jul 09 20:15:14 2017 +0200
@@ -0,0 +1,25 @@
+dav unlock
+==========
+
+**`unlock [-pc] [-L <lock>] <url>`**
+
+Unlocks the specified url with a lock token. If no lock token is specified with the `-L` option, it read from stdin.
+
+**`-p`** disable file name and path decryption if enabled
+
+**`-c`** enable file name and path decryption
+
+**`-L <lock>`** use a lock token
+
+### Example 1: unlock with lock token from stdin
+
+	$ dav lock myserv/resource > locktoken
+	$ dav unlock myserv/resource < locktoken
+
+### Example 2: unlock with lock token from command line argument
+
+	$ dav lock myserv/resource
+	opaquelocktoken:0454905e-f2ff-45c4-a3d7-5c4e4db5ce37
+	$ dav unlock -L opaquelocktoken:0454905e-f2ff-45c4-a3d7-5c4e4db5ce37 myserv/resource
+
+

mercurial