mirror of
https://git.code.sf.net/p/seeddms/code
synced 2024-11-26 15:32:13 +00:00
134 lines
5.1 KiB
Plaintext
134 lines
5.1 KiB
Plaintext
WebDAV
|
||
========
|
||
|
||
SeedDMS has support for WebDAV which allows to easily add, delete,
|
||
move, copy and modify documents. All operating systems have support
|
||
for WebDAV as well, but the implemtations and their behaviour varys
|
||
and consequently you may run into various problems. If this happens
|
||
just file a bug report at https://sourceforge.net/projects/seeddms
|
||
|
||
The folder structure in SeedDMS is similar to a regular file system
|
||
but it is not identical. SeedDMS distinguishes between a document
|
||
and its content, while a file system knows just files.
|
||
In SeedDMS a document is uniquely identified
|
||
by its document id and not neccessarily by its name. A filesystem
|
||
requires a unique paths for each file. Two identical files in the
|
||
same folder are not possible. SeedDMS can handle identically named
|
||
documents in one folder. In order to prevent any problems arising from
|
||
this, you should always disallow identical document names in the
|
||
settings. By definition a file in WebDAV is mapped on the latest
|
||
version of a document in SeedDMS. There is no way to access previous
|
||
versions of a document via WebDAV. Whenever you modify a file and
|
||
upload it with the web gui,
|
||
a new version will be created. Unfortunately, this has some very
|
||
nasty side effects when you edit a document version via WebDAV and
|
||
often save it, because any save
|
||
operation will create a new version. This is why the WebDAV
|
||
server has a configuration option which allows to either replace
|
||
the content of document or creating a new
|
||
version if a document is saved.
|
||
|
||
Configuring davfs2
|
||
-------------------
|
||
|
||
On Linux it is quite simple to mount the SeedDMS WebDAV server with
|
||
davfs2. Just place a line like the following in your /etc/fstab
|
||
|
||
http://seeddms.your-domain.com/webdav/index.php /media/webdav davfs noauto,user,rw,uid=1000,gid=1000
|
||
|
||
and mount it as root with
|
||
|
||
mount /media/webdav davfs
|
||
|
||
You may as well want to configure davfs2 in /etc/davfs2/davfs2.conf by setting
|
||
|
||
[/media/webdav]
|
||
use_locks 0
|
||
gui_optimize 1
|
||
|
||
and possibly add your login data to /etc/davfs2/secrets
|
||
|
||
/media/webdav admin secret
|
||
|
||
Making applications work with WebDAV
|
||
-------------------------------------
|
||
|
||
Various programms have differnt strategies to save files to disc and
|
||
prevent data lost under all circumstances. Those strategies often don't
|
||
work very well an a WebDAV-Server. The following will list some of those
|
||
strategies.
|
||
|
||
### VIM
|
||
|
||
vim does a lot more than just reading and writing the file you want
|
||
to edit. It creates swap and backup files for data recovery if vim crashes
|
||
or is being killed unexpectively. On a low bandwidth connection this can
|
||
slow down the editing. For that reason you should either not create the
|
||
swap file at all or create it outside the WebDAV server. A second problem
|
||
arises from how vim modifіes the file you are editing. Before a file
|
||
is saved a backup is created by renaming the file to the same name with a
|
||
'~' at the end and writing the file content into a new
|
||
file with the name of the original file. Afterwards vim deletes the backup
|
||
file. On a regular file system you
|
||
won't see a difference between the file before and after saving, though
|
||
it is actually a new one. In SeedDMS you won't notice a difference either
|
||
by just looking at the document name. It's still the same, but the
|
||
document id has changed. So saving a document will delete the
|
||
old document and create a new one instead of creating a new version of
|
||
the old document. If you don't want this behaviour, then tell vim
|
||
to not create the backup file. You can do that by either passing additional
|
||
parameters to vim
|
||
|
||
vi "+set nobackup" "+set nowritebackup" -n test.txt
|
||
|
||
or by setting them in your .vimrc
|
||
|
||
set nobackup
|
||
set nowritebackup
|
||
set noswapfile
|
||
|
||
If you want to restrict the settings to the directory where the dms
|
||
is mounted by webdav, e.g. /media/webdav, you can set an auto command
|
||
in .vimrc
|
||
|
||
autocmd BufNewFile,BufRead /media/webdav/* set nobackup nowritebackup noswapfile
|
||
|
||
Creating the backup file in a directory outside of WebDAV doesn't help in
|
||
this case, because it still does the file renaming which is turned off by
|
||
'nowritebackup'.
|
||
|
||
### cdaver
|
||
|
||
cadaver is a webdav client similar to classical command line based ftp clients.
|
||
It can be used to browse through the folders, downloads and uploads files, and
|
||
also for removing and moving folders and documents (called resources in webdav terminilogy).
|
||
It's also capable of setting and getting properties of folders and documents.
|
||
If webdav access isn't working, this client is probably the best for testing.
|
||
|
||
Just run
|
||
|
||
cadaver https://<your-domain>/<your-basedir>/webdav/index.php
|
||
|
||
It will ask for the user name and password. Once you are logged in just
|
||
type `help` for a list of commands.
|
||
|
||
SeedDMS stores a lot more properties not covered by the webdav standard.
|
||
Those have its own namespace called 'SeedDMS:'. Just type
|
||
|
||
propget <resource>
|
||
|
||
with `resource` being either the name of a folder or document. You will
|
||
get a list of all properties stored for this resource. Setting a property
|
||
requires to set the namespace first
|
||
|
||
set namespace SeedDMS:
|
||
|
||
Afterwards, you may set a property, e.g. the comment, with
|
||
|
||
propset <resource> comment 'Just a comment'
|
||
|
||
or even delete a property
|
||
|
||
propdel <resource> comment
|
||
|