From 1bdfa4d8b54763eee1c266e3516bb50dd864cedc Mon Sep 17 00:00:00 2001 From: joey Date: Fri, 7 Jul 2006 21:00:48 +0000 Subject: * Support a w3mmode, which lets w3m run ikiwiki using its local CGI support, to edit pages etc without a web server. --- doc/features.mdwn | 2 +- doc/sandbox.mdwn | 2 -- doc/serverless.mdwn | 3 -- doc/todo/terminalclient.mdwn | 18 ++-------- doc/usage.mdwn | 5 +++ doc/w3mmode.mdwn | 11 ++++++ doc/w3mmode/ikiwiki.setup | 81 ++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 100 insertions(+), 22 deletions(-) delete mode 100644 doc/serverless.mdwn create mode 100644 doc/w3mmode.mdwn create mode 100644 doc/w3mmode/ikiwiki.setup (limited to 'doc') diff --git a/doc/features.mdwn b/doc/features.mdwn index 1406f5a1b..1b09a3274 100644 --- a/doc/features.mdwn +++ b/doc/features.mdwn @@ -136,7 +136,7 @@ Some of ikiwiki's features: After rather a lot of fiddling, we think that ikiwiki correctly and fully supports utf8 everywhere. -* [[serverless]] mode +* [[w3mmode]] Can be set up so that w3m can be used to browse a wiki and edit pages without using a web server. diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn index 538d03403..a536303d2 100644 --- a/doc/sandbox.mdwn +++ b/doc/sandbox.mdwn @@ -48,8 +48,6 @@ Bulleted list *one *one -hi, mom! - ---- [[haiku hint="sandbox play"]] diff --git a/doc/serverless.mdwn b/doc/serverless.mdwn deleted file mode 100644 index 2cbf6e2f7..000000000 --- a/doc/serverless.mdwn +++ /dev/null @@ -1,3 +0,0 @@ -It's possible to use all of ikiwiki's web features (page editing, etc) in -the `w3m` web browser without using a web server. `w3m` supports local CGI -scripts, and ikiwiki can be set up to run that way. diff --git a/doc/todo/terminalclient.mdwn b/doc/todo/terminalclient.mdwn index 8c802888b..b420a3d17 100644 --- a/doc/todo/terminalclient.mdwn +++ b/doc/todo/terminalclient.mdwn @@ -2,23 +2,9 @@ Hack together a local ikiwiki w/o a web server using w3m's cgi-less mode and $EDITOR. Browse around a wiki, select pages to edit and get dropped right into the editor and have the page committed to svn automatically. +[[todo/done]] + Less grandiosely, a simple command line util to add a new page would be useful, especially if it made it easy to add blog entries to the wiki. I have a special purpose version of this in my [blog script](http://kitenet.net/~joey/code/bin.html). - ----- - -w3m's cgi mode requires that cgis be in /usr/lib/w3m/cgi-bin/, and the url -for it can be $LIB/script. This presents a problem, since a regular user -can't add an ikiwiki wrapper to there (nor should they). But, -/usr/lib/w3m/cgi-bin/ikiwiki could be a meta-wrapper, that is passed the -path to the real wrapper in PATH_INFO, validates it, and runs the real -wrapper. So: - - - -Validation is important, because we don't want just any html document -including an evil w3m cgi that gets unintentionally run. The validation I'm -thinking of is that the ikiwiki meta-wrapper only runs wrappers in -$HOME/.ikiwiki/wrappers/, which the user presumably controls. diff --git a/doc/usage.mdwn b/doc/usage.mdwn index 7bc9e5314..8404d15da 100644 --- a/doc/usage.mdwn +++ b/doc/usage.mdwn @@ -200,6 +200,11 @@ These options configure the wiki. Be vebose about what is being done. +* --w3mmode, --no-w3mmode + + Enable [[w3mmode]], which allows w3m to use ikiwiki as a local CGI script, + without a web server. + * --getctime Pull last changed time for each new page out of the revision control diff --git a/doc/w3mmode.mdwn b/doc/w3mmode.mdwn new file mode 100644 index 000000000..3afee5c9b --- /dev/null +++ b/doc/w3mmode.mdwn @@ -0,0 +1,11 @@ +It's possible to use all of ikiwiki's web features (page editing, etc) in +the `w3m` web browser without using a web server. `w3m` supports local CGI +scripts, and ikiwiki can be set up to run that way. This requires some +special configuration: + + * `w3mmode` must be enabled + * A CGI wrapper must be created, in ~/.ikiwiki/wrappers/ + * `cgiurl` should be set to just the base of the filename of the CGI + wrapper. + +This [[ikiwiki.setup]] is an example of setting up a wiki using w3mmode. diff --git a/doc/w3mmode/ikiwiki.setup b/doc/w3mmode/ikiwiki.setup new file mode 100644 index 000000000..ed65e0f91 --- /dev/null +++ b/doc/w3mmode/ikiwiki.setup @@ -0,0 +1,81 @@ +#!/usr/bin/perl +# Configuration file for ikiwiki (w3m mode). +# Passing this to ikiwiki --setup will make ikiwiki generate wrappers and +# build the wiki. +# +# Remember to re-run ikiwiki --setup any time you edit this file. + +use IkiWiki::Setup::Standard { + wikiname => "ikiwiki", + #adminuser => ["yourname", ], + #adminemail => 'me@myhost', + + # Be sure to customise these.. + srcdir => "doc", + destdir => "html", + + # Enable w3m mode. + w3mmode => 1, + + cgiurl => 'ikiwiki.cgi', + #templatedir => "/usr/share/ikiwiki/templates", + + rcs => "", + + # Subversion stuff. + #rcs => "svn", + #historyurl => "http://svn.myhost/trunk/[[file]]", + #diffurl => "http://svn.someurl/trunk/[[file]]?root=wiki&r1=[[r1]]&r2=[[r2]]", + #svnrepo => "/svn/wiki", + #svnpath => "trunk", + + # Git stuff. + #rcs => "git", + #historyurl => "http://git.host/gitweb.cgi?p=wiki.git;a=history;f=[[file]]", + #diffurl => "http://git.host/gitweb.cgi?p=wiki.git;a=blobdiff;h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_parent]];f=[[file]]", + + wrappers => [ + { + # The cgi wrapper. + cgi => 1, + wrapper => "$ENV{HOME}/.ikiwiki/wrappers/ikiwiki.cgi", + wrappermode => "0755", + }, + #{ + # # The svn post-commit wrapper. + # # Note that this will overwrite any existing + # # post-commit hook script, which may not be + # # what you want. + # wrapper => "/svn/wikirepo/hooks/post-commit", + # wrappermode => "04755", + # # Enable mail notifications of commits. + # notify => 1, + #}, + #{ + # # The git post-update wrapper. + # # Note that this will overwrite any existing + # # post-update hook script, which may not be + # # what you want. + # wrapper => "/git/wikirepo/.git/hooks/post-update", + # wrappermode => "04755", + # # Enable mail notifications of commits. + # notify => 1, + #}, + ], + + # Can anonymous web users edit pages? + anonok => 1, + # Generate rss feeds for pages? + rss => 1, + # Urls to ping with XML-RPC when rss feeds are updated + #pingurl => [qw{http://rpc.technorati.com/rpc/ping}], + # Include discussion links on all pages? + discussion => 1, + # Time format (for strftime) + #timeformat => '%c', + + # To add plugins, list them here. + #add_plugins => [qw{pagecount brokenlinks search smiley wikitext}], + # If you want to disable any of the default plugins, list them here. + #disable_plugins => [qw{inline htmlscrubber}], +} -- cgit v1.2.3