@@ -52,12 +52,41 @@ module Agents |
||
| 52 | 52 |
secret = params.delete('secret')
|
| 53 | 53 |
return ["Not Authorized", 401] unless secret == options['secret'] |
| 54 | 54 |
|
| 55 |
+ # check the verbs |
|
| 56 |
+ # verbs = (interpolated['verbs'] || 'post').split(/,/).map { |x| x.strip.downcase }.select { |x| x.present? }
|
|
| 57 |
+ # return ["Please use #{verbs.join('/').upcase} requests only", 401] unless verbs.include?(method)
|
|
| 58 |
+ |
|
| 59 |
+ # check the reCAPTCHA response if required |
|
| 60 |
+ if recaptcha_secret = interpolated['recaptcha_secret'].presence |
|
| 61 |
+ recaptcha_response = params.delete('g-recaptcha-response') or
|
|
| 62 |
+ return ["Not Authorized", 401] |
|
| 63 |
+ |
|
| 64 |
+ parameters = {
|
|
| 65 |
+ secret: recaptcha_secret, |
|
| 66 |
+ response: recaptcha_response, |
|
| 67 |
+ } |
|
| 68 |
+ |
|
| 69 |
+ if boolify(interpolated['recaptcha_send_remote_addr']) |
|
| 70 |
+ parameters[:remoteip] = request.env['REMOTE_ADDR'] |
|
| 71 |
+ end |
|
| 72 |
+ |
|
| 73 |
+ begin |
|
| 74 |
+ response = faraday.post('https://www.google.com/recaptcha/api/siteverify',
|
|
| 75 |
+ parameters) |
|
| 76 |
+ rescue => e |
|
| 77 |
+ error "Verification failed: #{e.message}"
|
|
| 78 |
+ return ["Not Authorized", 401] |
|
| 79 |
+ end |
|
| 80 |
+ |
|
| 81 |
+ JSON.parse(response.body)['success'] or |
|
| 82 |
+ return ["Not Authorized", 401] |
|
| 83 |
+ end |
|
| 55 | 84 |
|
| 56 | 85 |
[payload_for(params)].flatten.each do |payload| |
| 57 | 86 |
create_event(payload: payload) |
| 58 | 87 |
end |
| 59 | 88 |
|
| 60 |
- [response_message, 201] |
|
| 89 |
+ [response_message, 200] |
|
| 61 | 90 |
end |
| 62 | 91 |
|
| 63 | 92 |
def working? |