]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
commit.
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Thu, 6 Sep 2007 00:32:11 +0000 (00:32 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Thu, 6 Sep 2007 00:32:11 +0000 (00:32 +0000)
* Add the ikiwiki-update-wikilist command.

Makefile.PL
debian/changelog
doc/ikiwiki-update-wikilist.mdwn [new file with mode: 0644]
doc/usage.mdwn
ikiwiki-update-wikilist [new file with mode: 0755]

index 741f530a26416b694ec7265c4ea6ef305e74a692..130484a7c1035185168da1b963dbdbebb3db5981 100755 (executable)
@@ -39,12 +39,13 @@ extra_build: ikiwiki.out
                --plugin=haiku --plugin=polygen --plugin=fortune
        ./mdwn2man ikiwiki 1 doc/usage.mdwn > ikiwiki.man
        ./mdwn2man ikiwiki-mass-rebuild 8 doc/ikiwiki-mass-rebuild.mdwn > ikiwiki-mass-rebuild.man
+       ./mdwn2man ikiwiki-update-wikilist 1 doc/ikiwiki-update-wikilist.mdwn > ikiwiki-update-wikilist.man
        $(MAKE) -C po
        if [ "$$PROFILE" = 1 ]; then dprofpp; fi
 
 extra_clean:
        rm -rf html doc/.ikiwiki
-       rm -f ikiwiki.man ikiwiki-mass-rebuild.man ikiwiki.out
+       rm -f ikiwiki.man ikiwiki-mass-rebuild.man ikiwiki-update-wikilist.man ikiwiki.out
        $(MAKE) -C po clean
 
 extra_install:
@@ -69,6 +70,7 @@ extra_install:
 
        install -d $(DESTDIR)$(PREFIX)/share/man/man1
        install -m 644 ikiwiki.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki.1
+       install -m 644 ikiwiki-update-wikilist.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki-update-wikilist.1
        
        install -d $(DESTDIR)$(PREFIX)/share/man/man8
        install -m 644 ikiwiki-mass-rebuild.man $(DESTDIR)$(PREFIX)/share/man/man8/ikiwiki-mass-rebuild.8
index 1f916d8655c2dcceac3c6ac1f04258833ac6bdf2..46cce44deea8164afa868c05eacc6d6e008cc5a4 100644 (file)
@@ -38,9 +38,10 @@ ikiwiki (2.7) UNRELEASED; urgency=low
   * table: Text::CSV doesn't return decoded unicode (XS module); decode its
     return values.
   * Change git test suite to reflect change in log for initial repo creation
-    commit. 
+    commit.
+  * Add the ikiwiki-update-wikilist command.
 
- -- Joey Hess <joeyh@debian.org>  Wed, 05 Sep 2007 19:43:37 -0400
+ -- Joey Hess <joeyh@debian.org>  Wed, 05 Sep 2007 20:07:24 -0400
 
 ikiwiki (2.6.1) unstable; urgency=low
 
diff --git a/doc/ikiwiki-update-wikilist.mdwn b/doc/ikiwiki-update-wikilist.mdwn
new file mode 100644 (file)
index 0000000..4e87f92
--- /dev/null
@@ -0,0 +1,28 @@
+# NAME
+
+ikiwiki-update-wikilist - add or remove user from /etc/ikiwiki/wikilist
+
+# SYNOPSIS
+
+ikiwiki-update-wikilist
+
+# DESCRIPTION
+
+`ikiwiki-update-wikilist` is designed to be made suid root, but not installed
+suid by default. If made suid, it allows users to add or remove their names
+from the `/etc/ikiwiki/wikilist` file. If a user's name is not in the file,
+it will be added; if the name is already present, it will be removed.
+
+If your name is in `/etc/ikiwiki/wikilist`, the [[ikiwiki-mass-rebuild]](8)
+command will look for a ~/.ikiwiki/wikilist file, and rebuild the wikis listed
+in that file.
+
+# OPTIONS
+
+None.
+
+# AUTHOR
+
+Joey Hess <joey@ikiwiki.info>
+
+Warning: this page is automatically made into ikiwiki-update-wikilist's man page, edit with care
index 3075cb1075f0b2c6e18a702d048e7ba72b6dd2c2..4fb91b89b4a826440b08ede51cc953449a543fce 100644 (file)
@@ -295,6 +295,7 @@ configuration options of their own.
 # SEE ALSO
 
 * [[ikiwiki-mass-rebuild]](8)
+* [[ikiwiki-update-wikilist]](1)
 
 # AUTHOR
 
diff --git a/ikiwiki-update-wikilist b/ikiwiki-update-wikilist
new file mode 100755 (executable)
index 0000000..0f3f0bc
--- /dev/null
@@ -0,0 +1,48 @@
+#!/usr/bin/perl -t
+# Add a user to the system wide wikilist.
+# This script can safely be made suid.
+use warnings;
+use strict;
+use English;
+
+my $username=getpwuid($REAL_USER_ID);
+if (! defined $username || ! length $username) {
+       die "unable to determine user name for UID $REAL_USER_ID\n";
+}
+
+my $wikilist="/etc/ikiwiki/wikilist";
+if (! -e $wikilist) {
+       die "$wikilist does not exist\n";
+}
+
+my $removed=0;
+my @lines;
+open (my $list, "<$wikilist") || die "read $wikilist: $!";
+while (<$list>) {
+       chomp;
+       if (/^\s*([^\s]+)\s*$/) {
+               my $user=$1;
+               if ($user eq $username) {
+                       $removed=1;             
+               }
+               else {
+                       push @lines, $_;
+               }
+       }
+       else {
+               push @lines, $_;
+       }
+}
+close $list || die "error reading $list: $!";
+open ($list, ">$wikilist") || die "write $wikilist: $!";
+foreach (@lines) {
+       print $list "$_\n";
+}
+if ($removed) {
+       print "removed user $username from $wikilist\n";
+}
+else {
+       print $list "$username\n";
+       print "added user $username to $wikilist\n";
+}
+close $list || die "error writing $list: $!";