my %params=@_;
my $session=$params{session};
- if (exists $config{blogspam_pagespec}) {
- return undef
- if ! pagespec_match($params{page}, $config{blogspam_pagespec},
- location => $params{page});
+ my $spec='!admin()';
+ if (exists $config{blogspam_pagespec} &&
+ length $config{blogspam_pagespec}) {
+ $spec.=" and (".$config{blogspam_pagespec}.")";
}
+ my $user=$session->param("name");
+ return undef unless pagespec_match($params{page}, $spec,
+ (defined $user ? (user => $user) : ()),
+ (defined $session->remote_addr() ? (ip => $session->remote_addr()) : ()),
+ location => $params{page});
+
my $url=$defaulturl;
$url = $config{blogspam_server} if exists $config{blogspam_server};
ikiwiki (3.20110124) UNRELEASED; urgency=low
* comments: Fix commenting, broken by security fix.
+ * blogspam: Don't check modifications from admins for spam, and also
+ allow the blogspam_pagespec to do other matches against who the user is.
-- Joey Hess <joeyh@debian.org> Mon, 24 Jan 2011 16:56:05 -0400
The `blogspam_pagespec` setting is a [[ikiwiki/PageSpec]] that can be
used to configure which pages are checked for spam. The default is to check
all edits. If you only want to check [[comments]] (not wiki page edits),
-set it to "postcomment(*)".
+set it to "postcomment(*)". Posts by admins are never checked for spam.
By default, the blogspam.net server is used to do the spam checking. To
change this, the `blogspam_server` option can be set to the url for a