====== DokuFS ====== 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 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 [[https://github.com/chimeric/dokuwikixmlrpc|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: * 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 ===== 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 [[http://www.ruby-lang.org|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 [[http://rubyforge.org/projects/fusefs/|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 [[http://packages.gentoo.org/package/dev-ruby/fusefs|fusefs]] and in ArchLinux it is in the [[http://aur.archlinux.org/packages.php?ID=4051|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 [[https://github.com/michitux/dokufs|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 content-space.de. Jabber is available, too, the address is the same as my email-address.