aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-11-20 02:46:58 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-11-20 02:46:58 +0000
commit702b8721d360ca132ff5c8f43d332757694b98da (patch)
treed413a57c6922c70a79e7033347c5549a8b149d78
parent8a06d15e50f6c1a697e38522945f0af9c4dba95f (diff)
downloadikiwiki-702b8721d360ca132ff5c8f43d332757694b98da.tar
ikiwiki-702b8721d360ca132ff5c8f43d332757694b98da.tar.gz
* Add an openid plugin to support logging in using OpenID.
* Web commits by OpenID users will record the full OpenID url for the user, but in recentchanges, these urls will be converted to a simplified display form+link. * Modified svn, git, tla backends to recognise such web commits.
-rw-r--r--IkiWiki.pm1
-rw-r--r--IkiWiki/CGI.pm11
-rw-r--r--IkiWiki/Rcs/git.pm5
-rw-r--r--IkiWiki/Rcs/svn.pm6
-rw-r--r--IkiWiki/Rcs/tla.pm6
-rw-r--r--debian/NEWS12
-rw-r--r--debian/changelog7
7 files changed, 34 insertions, 14 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index efacb20ed..3803bb917 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -30,6 +30,7 @@ sub defaultconfig () { #{{{
wiki_file_prune_regexp => qr{((^|/).svn/|\.\.|^\.|\/\.|\.x?html?$|\.rss$|\.atom$|.arch-ids/|{arch}/)},
wiki_link_regexp => qr/\[\[(?:([^\]\|]+)\|)?([^\s\]]+)\]\]/,
wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/,
+ web_commit_regexp => qr/^web commit (by (.*?(?=: )|[^:]+)|from (\d+\.\d+\.\d+\.\d+)):?(.*)/,
verbose => 0,
syslog => 0,
wikiname => "wiki",
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index def0549c5..fe1c5153e 100644
--- a/IkiWiki/CGI.pm
+++ b/IkiWiki/CGI.pm
@@ -85,7 +85,16 @@ sub cgi_recentchanges ($) { #{{{
my $changelog=[rcs_recentchanges(100)];
foreach my $change (@$changelog) {
$change->{when} = concise(ago($change->{when}));
- $change->{user} = htmllink("", "", escapeHTML($change->{user}), 1);
+
+ if ($change->{user} =~ m!^https?://! &&
+ eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) {
+ # Munge user-urls, as used by eg, OpenID.
+ my $oid=Net::OpenID::VerifiedIdentity->new(identity => $change->{user});
+ $change->{user} = "<a href=\"".$change->{user}."\">".escapeHTML($oid->display)."</a>";
+ }
+ else {
+ $change->{user} = htmllink("", "", escapeHTML($change->{user}), 1);
+ }
my $is_excess = exists $change->{pages}[10]; # limit pages to first 10
delete @{$change->{pages}}[10 .. @{$change->{pages}}] if $is_excess;
diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm
index c8b5adc45..868bec40d 100644
--- a/IkiWiki/Rcs/git.pm
+++ b/IkiWiki/Rcs/git.pm
@@ -12,7 +12,6 @@ my $origin_branch = 'origin'; # Git ref for main repository
my $master_branch = 'master'; # working branch
my $sha1_pattern = qr/[0-9a-fA-F]{40}/; # pattern to validate Git sha1sums
my $dummy_commit_msg = 'dummy commit'; # message to skip in recent changes
-my $web_commit_msg = qr/^web commit (by (\w+)|from (\d+\.\d+\.\d+\.\d+)):?(.*)/;
sub _safe_git (&@) { #{{{
# Start a child process safely without resorting /bin/sh.
@@ -375,7 +374,7 @@ sub rcs_recentchanges ($) { #{{{
push @message, { line => $title };
if (defined $message[0] &&
- $message[0]->{line} =~ m/$web_commit_msg/) {
+ $message[0]->{line} =~ m/$config{web_commit_regexp}/) {
$user=defined $2 ? "$2" : "$3";
$message[0]->{line}=$4;
} else {
@@ -424,7 +423,7 @@ sub rcs_notify () { #{{{
my @changed_pages = map { $_->{'file'} } @{ $ci->{'details'} };
my ($user, $message);
- if (@{ $ci->{'comment'} }[0] =~ m/$web_commit_msg/) {
+ if (@{ $ci->{'comment'} }[0] =~ m/$config{web_commit_regexp}/) {
$user = defined $2 ? "$2" : "$3";
$message = $4;
} else {
diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm
index 2d3ad046c..71189c82e 100644
--- a/IkiWiki/Rcs/svn.pm
+++ b/IkiWiki/Rcs/svn.pm
@@ -7,8 +7,6 @@ use POSIX qw(setlocale LC_CTYPE);
package IkiWiki;
-my $svn_webcommit=qr/^web commit (by (\w+)|from (\d+\.\d+\.\d+\.\d+)):?(.*)/;
-
# svn needs LC_CTYPE set to a UTF-8 locale, so try to find one. Any will do.
sub find_lc_ctype() {
my $current = setlocale(LC_CTYPE());
@@ -162,7 +160,7 @@ sub rcs_recentchanges ($) { #{{{
my $committype="web";
if (defined $message[0] &&
- $message[0]->{line}=~/$svn_webcommit/) {
+ $message[0]->{line}=~/$config{web_commit_regexp}/) {
$user=defined $2 ? "$2" : "$3";
$message[0]->{line}=$4;
}
@@ -204,7 +202,7 @@ sub rcs_notify () { #{{{
my $user=`svnlook author $config{svnrepo} -r $rev`;
chomp $user;
my $message=`svnlook log $config{svnrepo} -r $rev`;
- if ($message=~/$svn_webcommit/) {
+ if ($message=~/$config{web_commit_regexp}/) {
$user=defined $2 ? "$2" : "$3";
$message=$4;
}
diff --git a/IkiWiki/Rcs/tla.pm b/IkiWiki/Rcs/tla.pm
index c71c9e6ee..00ee7e7a0 100644
--- a/IkiWiki/Rcs/tla.pm
+++ b/IkiWiki/Rcs/tla.pm
@@ -7,8 +7,6 @@ use POSIX qw(setlocale LC_CTYPE);
package IkiWiki;
-my $tla_webcommit=qr/^web commit (by (\w+)|from (\d+\.\d+\.\d+\.\d+)):?(.*)/;
-
sub quiet_system (@) {
# See Debian bug #385939.
open (SAVEOUT, ">&STDOUT");
@@ -117,7 +115,7 @@ sub rcs_recentchanges ($) {
my $when = time - str2time($sdate, 'UTC');
my $committype = "web";
- if (defined $summ && $summ =~ /$tla_webcommit/) {
+ if (defined $summ && $summ =~ /$config{web_commit_regexp}/) {
$user = defined $2 ? "$2" : "$3";
$summ = $4;
}
@@ -176,7 +174,7 @@ sub rcs_notify () { #{{{
my @changed_pages = grep { !/(^.*\/)?\.arch-ids\/.*\.id$/ }
split(/ /, "$newfiles $modfiles $remfiles .arch-ids/fake.id");
- if ($message =~ /$tla_webcommit/) {
+ if ($message =~ /$config{web_commit_regexp}/) {
$user=defined $2 ? "$2" : "$3";
$message=$4;
}
diff --git a/debian/NEWS b/debian/NEWS
index 781a32f59..dd19e26b4 100644
--- a/debian/NEWS
+++ b/debian/NEWS
@@ -1,3 +1,15 @@
+ikiwiki (1.34) unstable; urgency=low
+
+ The httpauth setting in config files has been removed. To enable
+ httpauth support on your wiki, you should now enable the httpauth plugin,
+ instead.
+
+ This release includes OpenID support that is enabled through the openid
+ plugin. I recommend turning this on to make it easier for users to sign
+ in to your wiki.
+
+ -- Joey Hess <joeyh@debian.org> Sun, 19 Nov 2006 20:53:05 -0500
+
ikiwiki (1.32) unstable; urgency=low
There is a change to the plugin interface in this version. Any plugins that
diff --git a/debian/changelog b/debian/changelog
index f261f92c9..26778719d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,11 @@
ikiwiki (1.34) UNRELEASED; urgency=low
- * Make auth methods pluggable.
- * Move httpauth support to a plugin.
* Add an openid plugin to support logging in using OpenID.
+ * Web commits by OpenID users will record the full OpenID url for the user,
+ but in recentchanges, these urls will be converted to a simplified display
+ form+link.
+ * Modified svn, git, tla backends to recognise such web commits.
+ * Move httpauth support to a plugin.
-- Joey Hess <joeyh@debian.org> Sun, 19 Nov 2006 16:40:26 -0500