X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/5b54999331298974d3a38aef75353c1847ce62a9..3a04e96389def78bcb873a4487b85f4d75653199:/doc/todo/require_CAPTCHA_to_edit.mdwn diff --git a/doc/todo/require_CAPTCHA_to_edit.mdwn b/doc/todo/require_CAPTCHA_to_edit.mdwn index 110b4167f..921e6254a 100644 --- a/doc/todo/require_CAPTCHA_to_edit.mdwn +++ b/doc/todo/require_CAPTCHA_to_edit.mdwn @@ -38,6 +38,8 @@ I imagine a plugin that modifies the login screen to use >>>> it means that someone else is taking care of keeping it ahead of >>>> the bot authors. +>> As [[spam_fighting]] shows, OpenID spam is now real. Yahoo, at least, would need to be blocked, according to the above, which seems like a bold move. --[[anarcat]] + Okie - I have a first pass of this. There are still some issues. Currently the code verifies the CAPTCHA. If you get it right then you're fine. @@ -89,17 +91,18 @@ ignored. >>>> prusue my idea of not doing the captcha validation in the validate >>>> hook. +[[!format diff """ --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm -@@ -18,6 +18,7 @@ sub getopt () { #{{{ +@@ -18,6 +18,7 @@ sub getopt () { error($@) if $@; Getopt::Long::Configure('pass_through'); GetOptions("openidsignup=s" => \$config{openidsignup}); + GetOptions("openidneedscaptcha=s" => \$config{openidneedscaptcha}); - } #}}} + } - sub formbuilder_setup (@) { #{{{ -@@ -61,6 +62,7 @@ sub formbuilder_setup (@) { #{{{ + sub formbuilder_setup (@) { +@@ -61,6 +62,7 @@ sub formbuilder_setup (@) { # Skip all other required fields in this case. foreach my $field ($form->field) { next if $field eq "openid_url"; @@ -107,7 +110,7 @@ ignored. $form->field(name => $field, required => 0, validate => '/.*/'); } -@@ -96,6 +98,18 @@ sub validate ($$$;$) { #{{{ +@@ -96,6 +98,18 @@ sub validate ($$$;$) { } } @@ -127,6 +130,7 @@ ignored. return_to => IkiWiki::cgiurl(do => "postsignin"), trust_root => $config{cgiurl}, +"""]] Instructions ===== @@ -134,8 +138,10 @@ Instructions You need to go to and get a key set. The keys are added as options. - reCaptchaPubKey => "LONGPUBLICKEYSTRING", - reCaptchaPrivKey => "LONGPRIVATEKEYSTRING", +[[!format perl """ +reCaptchaPubKey => "LONGPUBLICKEYSTRING", +reCaptchaPrivKey => "LONGPRIVATEKEYSTRING", +"""]] You can also use "signInSSL" if you're using ssl for your login screen. @@ -144,6 +150,7 @@ The following code is just inline. It will probably not display correctly, and ---------- +[[!format perl """ #!/usr/bin/perl # Ikiwiki password authentication. package IkiWiki::Plugin::recaptcha; @@ -152,19 +159,19 @@ use warnings; use strict; use IkiWiki 2.00; -sub import { #{{{ +sub import { hook(type => "formbuilder_setup", id => "recaptcha", call => \&formbuilder_setup); -} # }}} +} -sub getopt () { #{{{ +sub getopt () { eval q{use Getopt::Long}; error($@) if $@; Getopt::Long::Configure('pass_through'); GetOptions("reCaptchaPubKey=s" => \$config{reCaptchaPubKey}); GetOptions("reCaptchaPrivKey=s" => \$config{reCaptchaPrivKey}); -} #}}} +} -sub formbuilder_setup (@) { #{{{ +sub formbuilder_setup (@) { my %params=@_; my $form=$params{form}; @@ -274,7 +281,7 @@ EOTAGS }); } } -} # }}} +} # The following function is borrowed from # Captcha::reCAPTCHA by Andy Armstrong and are under the PERL Artistic License @@ -325,3 +332,4 @@ sub check_answer { } 1; +"""]]