Project

General

Profile

1
package eu.dnetlib.openaire.user.utils;
2

    
3
import org.apache.log4j.Logger;
4

    
5
import javax.json.Json;
6
import javax.json.JsonObject;
7
import javax.json.JsonReader;
8
import javax.net.ssl.HttpsURLConnection;
9
import java.io.BufferedReader;
10
import java.io.DataOutputStream;
11
import java.io.InputStreamReader;
12
import java.io.StringReader;
13
import java.net.URL;
14

    
15
public class VerifyRecaptcha {
16

    
17
    public static final String url = "https://www.google.com/recaptcha/api/siteverify";
18

    
19
    //private final static String USER_AGENT = "Mozilla/5.0";
20

    
21
    private static Logger logger = Logger.getLogger(VerifyRecaptcha.class);
22
    public static boolean verify(String gRecaptchaResponse, String secret) {
23

    
24
        logger.debug("Recaptch secret " + secret);
25
        logger.debug("response " + gRecaptchaResponse);
26
        
27
        if (gRecaptchaResponse == null || "".equals(gRecaptchaResponse)) {
28
            return false;
29
        }
30

    
31
        try{
32
            URL obj = new URL(url);
33
            HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
34

    
35
            // add reuqest header
36
            con.setRequestMethod("POST");
37
            //con.setRequestProperty("User-Agent", USER_AGENT);
38
            con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
39

    
40
            String postParams = "secret=" + secret + "&response="
41
                    + gRecaptchaResponse;
42

    
43
            // Send post request
44
            con.setDoOutput(true);
45
            DataOutputStream wr = new DataOutputStream(con.getOutputStream());
46
            wr.writeBytes(postParams);
47
            wr.flush();
48
            wr.close();
49

    
50
            int responseCode = con.getResponseCode();
51
            logger.debug("\nSending 'POST' request to URL : " + url);
52
            logger.debug("Post parameters : " + postParams);
53
            logger.info("recaptcha response Code : " + responseCode);
54

    
55
            BufferedReader in = new BufferedReader(new InputStreamReader(
56
                    con.getInputStream()));
57
            String inputLine;
58
            StringBuffer response = new StringBuffer();
59

    
60
            while ((inputLine = in.readLine()) != null) {
61
                response.append(inputLine);
62
            }
63
            in.close();
64

    
65
            // print result
66
            logger.debug(response.toString());
67

    
68
            //parse JSON response and return 'success' value
69
            JsonReader jsonReader = Json.createReader(new StringReader(response.toString()));
70
            JsonObject jsonObject = jsonReader.readObject();
71
            jsonReader.close();
72

    
73
            return jsonObject.getBoolean("success");
74

    
75
        } catch(Exception e){
76
            logger.error("Error validating recaptcha");
77
            return false;
78
        }
79
    }
80

    
81
}
(7-7/7)