]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
rename apache404 -> 404
authorJoey Hess <joey@gnu.kitenet.net>
Sun, 1 Feb 2009 00:26:36 +0000 (19:26 -0500)
committerJoey Hess <joey@gnu.kitenet.net>
Sun, 1 Feb 2009 00:26:36 +0000 (19:26 -0500)
This may already work with other web servers that have copied apache's
interface, and it should be easy to add support to it for web servers that
use some other interface. So, make the name more general.

IkiWiki/Plugin/404.pm [new file with mode: 0644]
IkiWiki/Plugin/apache404.pm [deleted file]
debian/changelog
debian/copyright
doc/plugins/404.mdwn [new file with mode: 0644]
doc/plugins/apache404.mdwn [deleted file]
doc/plugins/goto.mdwn
doc/tips/dot_cgi.mdwn
t/404.t [new file with mode: 0755]
t/apache404.t [deleted file]

diff --git a/IkiWiki/Plugin/404.pm b/IkiWiki/Plugin/404.pm
new file mode 100644 (file)
index 0000000..5550ea7
--- /dev/null
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+# Copyright © 2009 Simon McVittie <http://smcv.pseudorandom.co.uk/>
+# Licensed under the GNU GPL, version 2, or any later version published by the
+# Free Software Foundation
+package IkiWiki::Plugin::404;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+sub import {
+       hook(type => "cgi", id => '404',  call => \&cgi);
+       IkiWiki::loadplugin("goto");
+}
+
+sub getsetup () {
+       return
+               plugin => {
+                       # not really a matter of safety, but enabling/disabling
+                       # through a web interface is useless - it needs web
+                       # server admin action too
+                       safe => 0,
+                       rebuild => 0,
+               }
+}
+
+sub cgi_page_from_404 ($$$) {
+       my $path = shift;
+       my $baseurl = shift;
+       my $usedirs = shift;
+
+       # fail if missing from environment or whatever
+       return undef unless defined $path;
+       return undef unless defined $baseurl;
+
+       # with usedirs on, path is like /~fred/foo/bar/ or /~fred/foo/bar or
+       #    /~fred/foo/bar/index.html
+       # with usedirs off, path is like /~fred/foo/bar.html
+       # baseurl is like 'http://people.example.com/~fred'
+
+       # convert baseurl to ~fred
+       unless ($baseurl =~ s{^https?://[^/]+/?}{}) {
+               return undef;
+       }
+
+       # convert path to /~fred/foo/bar
+       if ($usedirs) {
+               $path =~ s/\/*(?:index\.$config{htmlext})?$//;
+       }
+       else {
+               $path =~ s/\.$config{htmlext}$//;
+       }
+
+       # remove /~fred/
+       unless ($path =~ s{^/*\Q$baseurl\E/*}{}) {
+               return undef;
+       }
+
+       # special case for the index
+       unless ($path) {
+               return 'index';
+       }
+
+       return $path;
+}
+
+sub cgi ($) {
+       my $cgi=shift;
+
+       if ($ENV{REDIRECT_STATUS} eq '404') {
+               my $page = cgi_page_from_404($ENV{REDIRECT_URL},
+                       $config{url}, $config{usedirs});
+               IkiWiki::Plugin::goto::cgi_goto($cgi, $page);
+       }
+}
+
+1;
diff --git a/IkiWiki/Plugin/apache404.pm b/IkiWiki/Plugin/apache404.pm
deleted file mode 100644 (file)
index e7ce704..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/perl
-# Copyright © 2009 Simon McVittie <http://smcv.pseudorandom.co.uk/>
-# Licensed under the GNU GPL, version 2, or any later version published by the
-# Free Software Foundation
-package IkiWiki::Plugin::apache404;
-
-use warnings;
-use strict;
-use IkiWiki 3.00;
-
-sub import {
-       hook(type => "cgi", id => 'apache404',  call => \&cgi);
-       IkiWiki::loadplugin("goto");
-}
-
-sub getsetup () {
-       return
-               plugin => {
-                       # not really a matter of safety, but enabling/disabling
-                       # through a web interface is useless - it needs web
-                       # server admin action too
-                       safe => 0,
-                       rebuild => 0,
-               }
-}
-
-sub cgi_page_from_404 ($$$) {
-       my $path = shift;
-       my $baseurl = shift;
-       my $usedirs = shift;
-
-       # fail if missing from environment or whatever
-       return undef unless defined $path;
-       return undef unless defined $baseurl;
-
-       # with usedirs on, path is like /~fred/foo/bar/ or /~fred/foo/bar or
-       #    /~fred/foo/bar/index.html
-       # with usedirs off, path is like /~fred/foo/bar.html
-       # baseurl is like 'http://people.example.com/~fred'
-
-       # convert baseurl to ~fred
-       unless ($baseurl =~ s{^https?://[^/]+/?}{}) {
-               return undef;
-       }
-
-       # convert path to /~fred/foo/bar
-       if ($usedirs) {
-               $path =~ s/\/*(?:index\.$config{htmlext})?$//;
-       }
-       else {
-               $path =~ s/\.$config{htmlext}$//;
-       }
-
-       # remove /~fred/
-       unless ($path =~ s{^/*\Q$baseurl\E/*}{}) {
-               return undef;
-       }
-
-       # special case for the index
-       unless ($path) {
-               return 'index';
-       }
-
-       return $path;
-}
-
-sub cgi ($) {
-       my $cgi=shift;
-
-       if ($ENV{REDIRECT_STATUS} eq '404') {
-               my $page = cgi_page_from_404($ENV{REDIRECT_URL},
-                       $config{url}, $config{usedirs});
-               IkiWiki::Plugin::goto::cgi_goto($cgi, $page);
-       }
-}
-
-1;
index f3927f1211a6b704b074827c9d0162408ddf9598..be32d3abf57256e7ce29c0c4fe4fde909fb62e1e 100644 (file)
@@ -1,6 +1,6 @@
 ikiwiki (3.04) UNRELEASED; urgency=low
 
 ikiwiki (3.04) UNRELEASED; urgency=low
 
-  * apache404: New plugin which lets you use the IkiWiki CGI script as
+  * 404: New plugin which lets you use the IkiWiki CGI script as
     an Apache 404 handler, to give the behaviour of various other wiki
     engines where visiting a nonexistent page provides you with a link
     to create it. (smcv)
     an Apache 404 handler, to give the behaviour of various other wiki
     engines where visiting a nonexistent page provides you with a link
     to create it. (smcv)
index bdfbaa5737dd9e7c6725fa4f7833ea5d427c387e..f589b4a8f5e68eed1265a20a7c0ad61be862808f 100644 (file)
@@ -118,7 +118,7 @@ Copyright:
  © 2008 Simon McVittie <http://smcv.pseudorandom.co.uk/>
 License: GPL-2+
 
  © 2008 Simon McVittie <http://smcv.pseudorandom.co.uk/>
 License: GPL-2+
 
-Files: apache404.pm
+Files: 404.pm
 Copyright: © 2009 Simon McVittie <http://smcv.pseudorandom.co.uk/>
 License: GPL-2+
 
 Copyright: © 2009 Simon McVittie <http://smcv.pseudorandom.co.uk/>
 License: GPL-2+
 
diff --git a/doc/plugins/404.mdwn b/doc/plugins/404.mdwn
new file mode 100644 (file)
index 0000000..8d36279
--- /dev/null
@@ -0,0 +1,11 @@
+[[!template id=plugin name=404 author="[[Simon_McVittie|smcv]]"]]
+[[!tag type/useful]]
+
+This plugin lets you use the IkiWiki CGI script as an Apache 404 handler,
+to give the behaviour of various other wiki engines where visiting a
+nonexistent page provides you with a link to create it.
+
+To achieve this, put something like this in the wiki's Apache configuration
+file:
+
+    ErrorDocument 404 /cgi-bin/ikiwiki.cgi
diff --git a/doc/plugins/apache404.mdwn b/doc/plugins/apache404.mdwn
deleted file mode 100644 (file)
index bab8fb5..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!template id=plugin name=apache404 author="[[Simon_McVittie|smcv]]"]]
-[[!tag type/useful]]
-
-This plugin lets you use the IkiWiki CGI script as an Apache 404 handler,
-to give the behaviour of various other wiki engines where visiting a
-nonexistent page provides you with a link to create it.
-
-To achieve this, put something like this in the wiki's Apache configuration
-file:
-
-    ErrorDocument 404 /cgi-bin/ikiwiki.cgi
index 21dda16b2bd7fe53c5ebcf11413d69614afe6572..9c401c5d2b8fe864726e4bee7cfa33bb365f74be 100644 (file)
@@ -2,7 +2,7 @@
 [[!tag type/useful]]
 
 This plugin adds a `do=goto` mode for the IkiWiki CGI script. It's mainly
 [[!tag type/useful]]
 
 This plugin adds a `do=goto` mode for the IkiWiki CGI script. It's mainly
-for internal use by the [[apache404]], [[comments]] and [[recentchanges]]
+for internal use by the [[404]], [[comments]] and [[recentchanges]]
 plugins, which enable it automatically.
 
 With this plugin enabled you can link to `ikiwiki.cgi?do=goto&page=some/where`
 plugins, which enable it automatically.
 
 With this plugin enabled you can link to `ikiwiki.cgi?do=goto&page=some/where`
index ffcbf95d42533e7a593c4c0848535a474c491dd9..04d7a972191f7293c38597424ebe3cc2f9cbc5f4 100644 (file)
@@ -26,11 +26,10 @@ configuration changes should work anywhere.
   Or, if you've put it in a `~/public_html`, edit
   `/etc/apache2/mods-available/userdir.conf`.
 
   Or, if you've put it in a `~/public_html`, edit
   `/etc/apache2/mods-available/userdir.conf`.
 
-You may also want to enable the [[plugins/apache404]]
-plugin. To make apache use it, the apache config file
-will need a further modification to make it use ikiwiki's CGI
-as the apache 404 handler. Something like this, with
-the path adjusted to where you've put the CGI:
+* You may also want to enable the [[plugins/404]] plugin.
+  To make apache use it, the apache config file will need a further
+  modification to make it use ikiwiki's CGI as the apache 404 handler.
+  Something like this, with the path adjusted to where you've put the CGI:
 
        ErrorDocument 404 /cgi-bin/ikiwiki.cgi
 
 
        ErrorDocument 404 /cgi-bin/ikiwiki.cgi
 
diff --git a/t/404.t b/t/404.t
new file mode 100755 (executable)
index 0000000..0bb3c60
--- /dev/null
+++ b/t/404.t
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Test::More tests => 17;
+
+BEGIN { use_ok("IkiWiki::Plugin::404"); }
+
+sub cgi_page_from_404 {
+       return IkiWiki::Plugin::404::cgi_page_from_404(shift, shift, shift);
+}
+
+$IkiWiki::config{htmlext} = 'html';
+
+is(cgi_page_from_404('/', 'http://example.com', 1), 'index');
+is(cgi_page_from_404('/index.html', 'http://example.com', 0), 'index');
+is(cgi_page_from_404('/', 'http://example.com/', 1), 'index');
+is(cgi_page_from_404('/index.html', 'http://example.com/', 0), 'index');
+
+is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user', 1),
+   'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user', 1),
+   'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user', 1),
+   'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user', 0),
+   'foo/bar');
+
+is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user/', 1),
+   'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user/', 1),
+   'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user/', 1),
+   'foo/bar');
+is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user/', 0),
+   'foo/bar');
+
+is(cgi_page_from_404('/~user/foo', 'https://example.com/~user', 1),
+   'foo');
+is(cgi_page_from_404('/~user/foo/index.html', 'https://example.com/~user', 1),
+   'foo');
+is(cgi_page_from_404('/~user/foo/', 'https://example.com/~user', 1),
+   'foo');
+is(cgi_page_from_404('/~user/foo.html', 'https://example.com/~user', 0),
+   'foo');
diff --git a/t/apache404.t b/t/apache404.t
deleted file mode 100755 (executable)
index 00fc352..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/perl
-use warnings;
-use strict;
-use Test::More tests => 17;
-
-BEGIN { use_ok("IkiWiki::Plugin::apache404"); }
-
-sub cgi_page_from_404 {
-       return IkiWiki::Plugin::apache404::cgi_page_from_404(shift, shift,
-                                                            shift);
-}
-
-$IkiWiki::config{htmlext} = 'html';
-
-is(cgi_page_from_404('/', 'http://example.com', 1), 'index');
-is(cgi_page_from_404('/index.html', 'http://example.com', 0), 'index');
-is(cgi_page_from_404('/', 'http://example.com/', 1), 'index');
-is(cgi_page_from_404('/index.html', 'http://example.com/', 0), 'index');
-
-is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user', 1),
-   'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user', 1),
-   'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user', 1),
-   'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user', 0),
-   'foo/bar');
-
-is(cgi_page_from_404('/~user/foo/bar', 'http://example.com/~user/', 1),
-   'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/index.html', 'http://example.com/~user/', 1),
-   'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar/', 'http://example.com/~user/', 1),
-   'foo/bar');
-is(cgi_page_from_404('/~user/foo/bar.html', 'http://example.com/~user/', 0),
-   'foo/bar');
-
-is(cgi_page_from_404('/~user/foo', 'https://example.com/~user', 1),
-   'foo');
-is(cgi_page_from_404('/~user/foo/index.html', 'https://example.com/~user', 1),
-   'foo');
-is(cgi_page_from_404('/~user/foo/', 'https://example.com/~user', 1),
-   'foo');
-is(cgi_page_from_404('/~user/foo.html', 'https://example.com/~user', 0),
-   'foo');