diff options
-rwxr-xr-x | pinyweb/cgi-bin/newuser.cgi | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/pinyweb/cgi-bin/newuser.cgi b/pinyweb/cgi-bin/newuser.cgi index e4b955a..b54b1ec 100755 --- a/pinyweb/cgi-bin/newuser.cgi +++ b/pinyweb/cgi-bin/newuser.cgi @@ -10,6 +10,7 @@ use CGI; use Crypt::CBC; use IPC::Open2; use MIME::Base32 qw( RFC ); +use Captcha::reCAPTCHA; use Piny::Auth; @@ -21,6 +22,27 @@ $q = CGI->new; print( "Content-type: text/plain\n\n" ); +if ( -f "/etc/recaptcha/private.key" ) { + if ( $q->param('recaptcha_response_field') && $q->param('recaptcha_challenge_field') ) { + open(RECAPTCHA, '/etc/recaptcha/private.key') || ( print "Can't read recaptcha key: [$!]\n" && exit 0 ); + my $recaptchakey = <RECAPTCHA>; + close (RECAPTCHA); + chomp($recaptchakey); + my $c = Captcha::reCAPTCHA->new; + my $result = $c->check_answer( $recaptchakey, $ENV{'REMOTE_ADDR'}, $q->param( 'recaptcha_challenge_field' ), $q->param( 'recaptcha_response_field' ) ); + if ( $result->{is_valid} ) { + print "Good recaptcha submission.\n" + } else { + print "Bad recaptcha submission: $result->{error}\n"; + exit 0; + }; + } else { + print( "Missing recaptcha parameters." ); + exit 0; + }; + +}; + if( $q->param("n") && $q->param("a") && $q->param("p") ) { my $pass = $q->param("p"); |