====== DokuFS ======
//Dieser Artikel ist in Englisch geschrieben, da dieses Projekt ein internationales Publikum und ausschließlich Benutzer mit fortgeschrittenen Linuxkenntnissen anspricht.//
DokuFS is a filesystem that allows, with the help of [[wp>Filesystem_in_Userspace|Fuse]], to mount a [[doku>wiki:DokuWiki|DokuWiki]] over [[wp>XML-RPC]] into you local filesystem on Linux.
You are then able to browse the filesystem and to create, edit or delete files, that means to create, edit or delete pages on the Wiki you have mounted. Deleting, moving and copying of whole namespaces should work, too.
All pages have the extension .dw so you can easily handle syntax highlighting (syntax highlighting for vim is included in [[http://www.chimeric.de/projects/dokuwiki/dokuvimki|DokuVimKi]], though you don't need the rest of DokuVimKi when using DokuFS). The creation of other files but those with the extension .dw isn't allowed (temporary files of some editors are handled by DokuFS). In a later version when the XML-RPC-API of DokuWiki supports media management, the up- and download of media-files might be supported, too.
Every 5 minutes, the recent changes of the Wiki are pulled and the directory-structure is updated. Once a page is downloaded it will be in a cache (with a memory limit) so that only the first read/size-request will be slow.
category=software
language=en_GB
tag=dokuwiki,fuse,filesystem,ruby
align=right
description=DokuFS is a filesystem that allows with the help of Fuse to mount a DokuWiki over XML-RPC into your local filesystem on Linux or Mac OS. Wiki pages and media files can then be edited/uploaded as if they were in the local filesystem.
===== Some notes on the current version =====
The current version has to be considered as alpha version as nobody besides me has ever used DokuFS. Known issues are:
* There is no recognition if a file was saved correctly or not. When you are admin this might not be an issue, but when you are not sure if you have permission to write/create the page, you should better see if the page was really saved (just reading it's content again should be sufficient).
* When the file/pagename wasn't accepted/changed by DokuWiki there might be undefined stages, including the appearance under the original and the corrected filename in the directory-structure.
===== License =====
Copyright (C) 2009 Michael Hamann
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
[[http://www.gnu.org/licenses/gpl.html|GNU General Public License]] for more details.
The idea of this program and some of the recursive functions here
are adapted versions of MetaFS which was written by Greg Millam and
distributed with [[http://rubyforge.org/projects/fusefs/|FuseFS]].
===== Installation =====
First of all you need a working [[http://www.ruby-lang.org|Ruby]]-installation and of course DokuWiki with enabled XML-RPC-backend.
The most tricky part is the installation of [[http://rubyforge.org/projects/fusefs/|FuseFS]]. The only Linux distributions I know that have packages or to be more correct: build-files for FuseFS, are [[http://packages.gentoo.org/package/dev-ruby/fusefs|Gentoo]] and [[http://aur.archlinux.org/packages.php?ID=4051|Arch Linux (AUR)]]. In all other cases there are instructions in README.txt which is distributed with FuseFS.
Then you can download {{:projekte:dokufs:dokufs.rb|dokufs.rb}} and make it executable with chmod +x dokufs.rb. You might want to put DokuFS in one of your directories in $PATH, this might be ~/bin/.
===== Usage =====
Usage: dokufs.rb [options] directory
-u, --user USER The username
-p, --password PASSWORD The password
-s, --server SERVER The server to use (default: localhost)
--path PATH The path to XMLRPC (default: /lib/exe/xmlrpc.php)
--[no-]ssl Use (no) ssl (default: use ssl)
-m, --media Display media files instead of wiki pages
--update-interval INTERVAL The update interval in seconds
-n, --no-cache Don't use the cache - this will cause a significantly higher load on the server. (default: use cache)
-h, --help Show this message
Some notes on that: Server is the domain name of the server the DokuWiki you want to mount is on. Don't include a protocol (e.g. http) here. You only need to specify the path when you DokuWiki-installation is not in the root directory of your domain. Using SSL is highly recommended, only use disable ssl when you don't have any other option.
Creating new directories allows you to create new pages in new namespaces, but this creation itself has no effect on the Wiki.
When the first line of a file begins with %, everything after this % (and an optional whitespace) up to the end of the line is considered as commit message. When saving an empty file or a file that contains only a line beginning with %, the page is deleted. So you can delete a page playground:test with the message "foo bar" by calling echo "% foo bar" > playground/test.dw
Unmounting the filesystem is bit tricky. You have to call fusermount -u path/to/dokuwiki/ and at least on my system DokuFS doesn't terminate itself, you have to kill it, e.g. by pressing [ctrl]+[c].
If there are any further questions or requests, you may contact me using comments here or you can send me an email at michael content-space.de. Jabber is available, too, the address is the same as my email-address.
{{tag>dokuwiki fuse filesystem ruby}}
~~LINKBACK~~
~~DISCUSSION~~