]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/todo/require_CAPTCHA_to_edit.mdwn
(no commit message)
[git.ikiwiki.info.git] / doc / todo / require_CAPTCHA_to_edit.mdwn
index 110b4167feef99b8d48655ffd42d33f76dacd0eb..921e6254afffb02308bebdb9cf319b62bae29e00 100644 (file)
@@ -38,6 +38,8 @@ I imagine a plugin that modifies the login screen to use <http://recaptcha.net/>
 >>>> it means that someone else is taking care of keeping it ahead of
 >>>> the bot authors.
 
 >>>> 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.
 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.
 
 >>>> 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
 --- 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});
        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";
                        # 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 => '/.*/');
                        }
                                $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},
 
                return_to => IkiWiki::cgiurl(do => "postsignin"),
                trust_root => $config{cgiurl},
 
+"""]]
 
 Instructions
 =====
 
 Instructions
 =====
@@ -134,8 +138,10 @@ Instructions
 You need to go to <http://recaptcha.net/api/getkey> and get a key set.
 The keys are added as options.
 
 You need to go to <http://recaptcha.net/api/getkey> 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.
 
 
 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;
 #!/usr/bin/perl
 # Ikiwiki password authentication.
 package IkiWiki::Plugin::recaptcha;
@@ -152,19 +159,19 @@ use warnings;
 use strict;
 use IkiWiki 2.00;
 
 use strict;
 use IkiWiki 2.00;
 
-sub import { #{{{
+sub import {
        hook(type => "formbuilder_setup", id => "recaptcha", call => \&formbuilder_setup);
        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});
        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};
        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
 
 # 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;
 }
 
 1;
+"""]]