OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall Root: /e/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-src Date: 31-Jan-2005 21:27:16 Branch: HEAD Handle: 2005013120271600 Added files: openpkg-src/kwiki kwiki-spamwhitelist.pm Modified files: openpkg-src/kwiki kwiki-plugins.txt kwiki.spec Log: add a local version of the never released (on CPAN) Kwiki::SpamWhitelist module Summary: Revision Changes Path 1.10 +1 -0 openpkg-src/kwiki/kwiki-plugins.txt 1.1 +68 -0 openpkg-src/kwiki/kwiki-spamwhitelist.pm 1.28 +13 -0 openpkg-src/kwiki/kwiki.spec ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/kwiki/kwiki-plugins.txt ============================================================================ $ cvs diff -u -r1.9 -r1.10 kwiki-plugins.txt --- openpkg-src/kwiki/kwiki-plugins.txt 31 Jan 2005 19:20:07 -0000 1.9 +++ openpkg-src/kwiki/kwiki-plugins.txt 31 Jan 2005 20:27:16 -0000 1.10 @@ -61,6 +61,7 @@ #Kwiki::VimMode # Optional Authorization Extensions +#Kwiki::SpamWhitelist #Kwiki::PagePrivacy #Kwiki::User::Remote #Kwiki::Edit::RequireUserName @@ . patch -p0 <<'@@ .' Index: openpkg-src/kwiki/kwiki-spamwhitelist.pm ============================================================================ $ cvs diff -u -r0 -r1.1 kwiki-spamwhitelist.pm --- /dev/null 2005-01-31 21:27:16 +0100 +++ kwiki-spamwhitelist.pm 2005-01-31 21:27:16 +0100 @@ -0,0 +1,68 @@ +## +## Homepage: http://www.kwiki.org/?KwikiSpamWhitelist +## Source: http://www.kwiki.org/?CodeKwikiSpamWhitelist +## + +package Kwiki::SpamWhitelist; +use Kwiki::Plugin -Base; +use Kwiki::Formatter; +our $VERSION = '0.0'; + +const class_id => 'spam_whitelist'; + +sub register { + my $registry = shift; + $registry->add(preload => $self->class_id); +} + +package Kwiki::SpamWhitelist::Mixin; +use mixin 'Spoon::IndexList'; +use IO::All; + +sub spam_link { + my ($url, $title) = @_; + return unless $url =~ s/^https?:\/\/([^\/]+)/spam:\/\/$1/i; + my $domain = $1; + my $whitelist = + $self->hub->spam_whitelist->plugin_directory . '/whitelist'; + my $index = $self->index_list($whitelist); + my $ok = eval { $index->{$domain} }; + return 'spam' if $@; + return if $ok; + my $spam_link = qq{<span style="font-weight: bold; background-color: red"><$url></span>}; + $spam_link = qq{<span>$title</span>$spam_link} + unless $title =~ /^http/i; + return $spam_link; +} + +package Kwiki::Formatter::TitledHyperLink; +use mixin 'Kwiki::SpamWhitelist::Mixin'; +no warnings; + +sub html { + my $text = $self->escape_html($self->matched); + my ($title1, $target, $title2) = ($text =~ $self->pattern_start); + $title1 = '' unless defined $title1; + $title2 = '' unless defined $title2; + $target =~ s{^\w+:(?!//)}{}; + my $title = $title1 . ' ' . $title2; + $title =~ s/^\s*(.*?)\s*$/$1/; + $title = $target + unless $title =~ /\S/; + return $self->spam_link($target, $title) || + qq(<a href="$target">$title</a>); +} + +package Kwiki::Formatter::HyperLink; +use mixin 'Kwiki::SpamWhitelist::Mixin'; + +sub html { + my $text = $self->escape_html($self->matched); + return $text if $text =~ s/^!//; + return qq(<img src="$text" />) + if $text =~ /(?:jpe?g|gif|png)$/i; + my $target = $text; + return $self->spam_link($target, $text) || + qq(<a href="$target">$text</a>); +} + @@ . patch -p0 <<'@@ .' Index: openpkg-src/kwiki/kwiki.spec ============================================================================ $ cvs diff -u -r1.27 -r1.28 kwiki.spec --- openpkg-src/kwiki/kwiki.spec 31 Jan 2005 19:20:07 -0000 1.27 +++ openpkg-src/kwiki/kwiki.spec 31 Jan 2005 20:27:16 -0000 1.28 @@ -158,6 +158,7 @@ Source102: kwiki-rules.wiki Source103: kwiki-sandbox.wiki Source104: kwiki-openpkg.pm +Source105: kwiki-spamwhitelist.pm Patch0: kwiki.patch # build information @@ -600,6 +601,18 @@ cp %{SOURCE kwiki-openpkg.pm} Kwiki-Theme-OpenPKG/OpenPKG.pm %{l_prefix}/bin/perl-openpkg -d Kwiki-Theme-OpenPKG configure build install + # manually install Anti-Spam extensions + mkdir Kwiki-SpamWhitelist + ( echo "use ExtUtils::MakeMaker;" + echo "WriteMakefile(" + echo " NAME => 'Kwiki::SpamWhitelist'," + echo " VERSION_FROM => 'SpamWhitelist.pm'," + echo " NO_META => 1," + echo ");" + ) >Kwiki-SpamWhitelist/Makefile.PL + cp %{SOURCE kwiki-spamwhitelist.pm} Kwiki-SpamWhitelist/SpamWhitelist.pm + %{l_prefix}/bin/perl-openpkg -d Kwiki-SpamWhitelist configure build install + # finalize Perl module installation %{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate cleanup @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org