Table of Contents

DokuFS

DokuFS is a filesystem that allows, with the help of Fuse, to mount a DokuWiki over 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 or media files on the Wiki you have mounted. Deleting, moving and copying of whole namespaces should work, too (however the history of pages is not moved).

All pages have the extension .dw so you can easily handle syntax highlighting (syntax highlighting for vim is included in the unfortunately discontinued DokuVimKi project, though you don't need the rest of DokuVimKi when using DokuFS).

DokuFS supports two modes – one for pages and one for media files. In the mode for pages the creation of other files but those with the extension .dw isn't allowed (temporary files of VIM and Emacs are handled in memory). In the mode for media files every file is simply uploaded to the DokuWiki, so basically all file types are allowed that are supported by your DokuWiki installation.

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.

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:

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 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 FuseFS.

Installation

DokuFS runs on Linux, it might work on Mac OS X and from all I know it doesn't work on Windows.

First of all you need a working Ruby-installation and of course DokuWiki with enabled XML-RPC-backend (note that you need to enable it and set a user that can access the wiki over XML-RPC, allowing access for all users is not recommended).

You need FuseFS in order to use DokuFS. In Debian and Ubuntu (and derivates of them) it is provided in a package named libfusefs-ruby. In Gentoo there is a package named fusefs and in ArchLinux it is in the AUR. In all other cases there are instructions in README.txt which is distributed with FuseFS.

You can download the latest version of DokuFS from its git repository. You just need the file dokufs.rb and then you should 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 <at> content-space.de. Jabber is available, too, the address is the same as my email-address.