summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/download.mdwn2
-rw-r--r--doc/plugins/autoindex.mdwn7
-rw-r--r--doc/plugins/contrib/unixauth.mdwn154
-rw-r--r--doc/plugins/txt/discussion.mdwn (renamed from doc/plugins/plaintext/discussion.mdwn)0
-rw-r--r--doc/todo/progressbar_plugin.mdwn44
-rw-r--r--doc/users/schmonz.mdwn1
6 files changed, 207 insertions, 1 deletions
diff --git a/doc/download.mdwn b/doc/download.mdwn
index 71d333ad4..6566dc122 100644
--- a/doc/download.mdwn
+++ b/doc/download.mdwn
@@ -28,7 +28,7 @@ There is also an unofficial backport of ikiwiki for Ubuntu Hardy, provided by
[[Paweł_Tęcza|users/ptecza]],
at [http://gpa.net.icm.edu.pl/ubuntu/](http://gpa.net.icm.edu.pl/ubuntu/index-en.html).
-NetBSD pkgsrc has an [ikiwiki package](ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/www/ikiwiki/README.html).
+NetBSD and many other platforms: pkgsrc has an [ikiwiki package](ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/www/ikiwiki/README.html).
FreeBSD has ikiwiki in its
[ports collection](http://www.freshports.org/www/ikiwiki/).
diff --git a/doc/plugins/autoindex.mdwn b/doc/plugins/autoindex.mdwn
new file mode 100644
index 000000000..66e0163c2
--- /dev/null
+++ b/doc/plugins/autoindex.mdwn
@@ -0,0 +1,7 @@
+[[!template id=plugin name=autoindex core=0 author="[[Joey]]"]]
+[[!tag type/useful]]
+
+This plugin searches for [[SubPages|ikiwiki/subpage]] with a missing parent
+page, and generates a parent page for them. The generated page content is
+controlled by the autoindex [[template|wikitemplates]], which by default,
+uses a [[map]] to list the SubPages.
diff --git a/doc/plugins/contrib/unixauth.mdwn b/doc/plugins/contrib/unixauth.mdwn
new file mode 100644
index 000000000..12f885c33
--- /dev/null
+++ b/doc/plugins/contrib/unixauth.mdwn
@@ -0,0 +1,154 @@
+[[!template id=plugin name=unixauth core=0 author="[[schmonz]]"]]
+[[!tag type/auth]]
+
+This plugin authenticates users against the Unix user database. It presents a similar UI to [[plugins/passwordauth]], but simpler, as there's no need to be able to register or change one's password.
+
+[pwauth](http://www.unixpapa.com/pwauth/) must be installed and working. In particular, it must be configured to recognize the UID of the calling web server, or authentication will always fail. Set `pwauth_path` to the full path of your pwauth binary.
+
+As [with passwordauth](/security/#index14h2), be wary of sending usernames and passwords in cleartext. Unlike with passwordauth, sniffing these credentials can get an attacker much further than mere wiki access. SSL with this plugin is a __must__.
+
+[[!toggle id="code" text="unixauth.pm"]]
+
+[[!toggleable id="code" text="""
+
+ #!/usr/bin/perl
+ # Ikiwiki unixauth authentication.
+ package IkiWiki::Plugin::unixauth;
+
+ use warnings;
+ use strict;
+ use IkiWiki 2.00;
+
+ sub import { #{{{
+ hook(type => "formbuilder_setup", id => "unixauth",
+ call => \&formbuilder_setup);
+ hook(type => "formbuilder", id => "unixauth",
+ call => \&formbuilder);
+ hook(type => "sessioncgi", id => "unixauth", call => \&sessioncgi);
+ } # }}}
+
+ # Checks if a string matches a user's password, and returns true or false.
+ sub checkpassword ($$;$) { #{{{
+ my $user=shift;
+ my $password=shift;
+ my $field=shift || "password";
+
+ # It's very important that the user not be allowed to log in with
+ # an empty password!
+ if (! length $password) {
+ return 0;
+ }
+
+ my $ret=0;
+ if (! exists $config{pwauth_path}) {
+ $config{pwauth_path}="/usr/libexec/pwauth";
+ }
+ open PWAUTH, "|$config{pwauth_path}" or die("Could not run pwauth");
+ print PWAUTH "$user\n$password\n";
+ close PWAUTH;
+ $ret=!($?>>8);
+
+ if ($ret) {
+ my $userinfo=IkiWiki::userinfo_retrieve();
+ if (! length $user || ! defined $userinfo ||
+ ! exists $userinfo->{$user} || ! ref $userinfo->{$user}) {
+ IkiWiki::userinfo_setall($user, {
+ 'email' => '',
+ 'regdate' => time,
+ });
+ }
+ }
+
+ return $ret;
+ } #}}}
+
+ sub formbuilder_setup (@) { #{{{
+ my %params=@_;
+
+ my $form=$params{form};
+ my $session=$params{session};
+ my $cgi=$params{cgi};
+
+ if ($form->title eq "signin") {
+ $form->field(name => "name", required => 0);
+ $form->field(name => "password", type => "password", required => 0);
+
+ if ($form->submitted) {
+ my $submittype=$form->submitted;
+ # Set required fields based on how form was submitted.
+ my %required=(
+ "Login" => [qw(name password)],
+ );
+ foreach my $opt (@{$required{$submittype}}) {
+ $form->field(name => $opt, required => 1);
+ }
+
+ # Validate password against name for Login.
+ if ($submittype eq "Login") {
+ $form->field(
+ name => "password",
+ validate => sub {
+ checkpassword($form->field("name"), shift);
+ },
+ );
+ }
+
+ elsif ($submittype eq "Login") {
+ $form->field(
+ name => "name",
+ validate => sub {
+ my $name=shift;
+ length $name &&
+ IkiWiki::userinfo_get($name, "regdate");
+ },
+ );
+ }
+ }
+ else {
+ # First time settings.
+ $form->field(name => "name");
+ if ($session->param("name")) {
+ $form->field(name => "name", value => $session->param("name"));
+ }
+ }
+ }
+ elsif ($form->title eq "preferences") {
+ $form->field(name => "name", disabled => 1,
+ value => $session->param("name"), force => 1,
+ fieldset => "login");
+ $form->field(name => "password", disabled => 1, type => "password",
+ fieldset => "login"),
+ }
+ }
+
+ sub formbuilder (@) { #{{{
+ my %params=@_;
+
+ my $form=$params{form};
+ my $session=$params{session};
+ my $cgi=$params{cgi};
+ my $buttons=$params{buttons};
+
+ if ($form->title eq "signin") {
+ if ($form->submitted && $form->validate) {
+ if ($form->submitted eq 'Login') {
+ $session->param("name", $form->field("name"));
+ IkiWiki::cgi_postsignin($cgi, $session);
+ }
+ }
+ }
+ elsif ($form->title eq "preferences") {
+ if ($form->submitted eq "Save Preferences" && $form->validate) {
+ my $user_name=$form->field('name');
+ }
+ }
+ } #}}}
+
+ sub sessioncgi ($$) { #{{{
+ my $q=shift;
+ my $session=shift;
+ } #}}}
+
+ 1
+
+"""]]
diff --git a/doc/plugins/plaintext/discussion.mdwn b/doc/plugins/txt/discussion.mdwn
index 6b907e65c..6b907e65c 100644
--- a/doc/plugins/plaintext/discussion.mdwn
+++ b/doc/plugins/txt/discussion.mdwn
diff --git a/doc/todo/progressbar_plugin.mdwn b/doc/todo/progressbar_plugin.mdwn
new file mode 100644
index 000000000..d586ce79c
--- /dev/null
+++ b/doc/todo/progressbar_plugin.mdwn
@@ -0,0 +1,44 @@
+I would like to add next plugin to Ikiwiki. It's `progressbar` or simply `progress`.
+I'm not sure what plugin name better is, probably that shorter ;) I know that
+[DokuWiki](http://wiki.splitbrain.org/plugin:progressbar) has similar plugin,
+so I think it can be useful also for Ikiwiki users.
+
+Here is proposition of the plugin syntax:
+
+ \[[!progress done=50]]
+
+Of course, `done` argument is integer from 0 to 100.
+
+A here is its HTML result:
+
+ <div class="progress">
+ <div class="progress-done" style="width: 50%">50%</div>
+ </div>
+
+Note: I was trying with `<span>` tags too, but that tag is inline, so I can't
+set `width` property for it.
+
+Default CSS styles for the plugin can be like below:
+
+ div.progress {
+ border: 1px solid #ddd;
+ /* border: 2px solid #ddd; */
+ width: 200px;
+ background: #fff;
+ padding: 2px;
+ /* padding: 0px; */
+ border: 2px solid #aaa;
+ background: #eee;
+ }
+ div.progress-done {
+ height: 14px;
+ background: #ff6600;
+ font-size: 12px;
+ text-align: center;
+ vertical-align: middle;
+ }
+
+You can use alternative, commented CSS code for `div.progress` if you dislike
+padding around done strip.
+
+Any comments? --[[Paweł|ptecza]]
diff --git a/doc/users/schmonz.mdwn b/doc/users/schmonz.mdwn
new file mode 100644
index 000000000..7e297fbf0
--- /dev/null
+++ b/doc/users/schmonz.mdwn
@@ -0,0 +1 @@
+[Amitai Schlair](http://www.schmonz.com/) recently discovered ikiwiki.