summaryrefslogtreecommitdiff
path: root/pinyweb/cgi-bin
diff options
context:
space:
mode:
Diffstat (limited to 'pinyweb/cgi-bin')
-rwxr-xr-xpinyweb/cgi-bin/newuser.cgi22
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");