primo commit
This commit is contained in:
		
							
								
								
									
										275
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/ReCaptcha.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										275
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/ReCaptcha.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,275 @@ | ||||
| <?php | ||||
| /** | ||||
|  * This is a PHP library that handles calling reCAPTCHA. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| namespace ReCaptcha; | ||||
|  | ||||
| /** | ||||
|  * reCAPTCHA client. | ||||
|  */ | ||||
| class ReCaptcha | ||||
| { | ||||
|     /** | ||||
|      * Version of this client library. | ||||
|      * @const string | ||||
|      */ | ||||
|     public const VERSION = 'php_1.3.0'; | ||||
|  | ||||
|     /** | ||||
|      * URL for reCAPTCHA siteverify API | ||||
|      * @const string | ||||
|      */ | ||||
|     public const SITE_VERIFY_URL = 'https://www.google.com/recaptcha/api/siteverify'; | ||||
|  | ||||
|     /** | ||||
|      * Invalid JSON received | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_INVALID_JSON = 'invalid-json'; | ||||
|  | ||||
|     /** | ||||
|      * Could not connect to service | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_CONNECTION_FAILED = 'connection-failed'; | ||||
|  | ||||
|     /** | ||||
|      * Did not receive a 200 from the service | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_BAD_RESPONSE = 'bad-response'; | ||||
|  | ||||
|     /** | ||||
|      * Not a success, but no error codes received! | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_UNKNOWN_ERROR = 'unknown-error'; | ||||
|  | ||||
|     /** | ||||
|      * ReCAPTCHA response not provided | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_MISSING_INPUT_RESPONSE = 'missing-input-response'; | ||||
|  | ||||
|     /** | ||||
|      * Expected hostname did not match | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_HOSTNAME_MISMATCH = 'hostname-mismatch'; | ||||
|  | ||||
|     /** | ||||
|      * Expected APK package name did not match | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_APK_PACKAGE_NAME_MISMATCH = 'apk_package_name-mismatch'; | ||||
|  | ||||
|     /** | ||||
|      * Expected action did not match | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_ACTION_MISMATCH = 'action-mismatch'; | ||||
|  | ||||
|     /** | ||||
|      * Score threshold not met | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_SCORE_THRESHOLD_NOT_MET = 'score-threshold-not-met'; | ||||
|  | ||||
|     /** | ||||
|      * Challenge timeout | ||||
|      * @const string | ||||
|      */ | ||||
|     public const E_CHALLENGE_TIMEOUT = 'challenge-timeout'; | ||||
|  | ||||
|     /** | ||||
|      * Shared secret for the site. | ||||
|      * @var string | ||||
|      */ | ||||
|     private $secret; | ||||
|  | ||||
|     /** | ||||
|      * Method used to communicate with service. Defaults to POST request. | ||||
|      * @var RequestMethod | ||||
|      */ | ||||
|     private $requestMethod; | ||||
|  | ||||
|     private $hostname; | ||||
|     private $apkPackageName; | ||||
|     private $action; | ||||
|     private $threshold; | ||||
|     private $timeoutSeconds; | ||||
|  | ||||
|     /** | ||||
|      * Create a configured instance to use the reCAPTCHA service. | ||||
|      * | ||||
|      * @param string $secret The shared key between your site and reCAPTCHA. | ||||
|      * @param RequestMethod $requestMethod method used to send the request. Defaults to POST. | ||||
|      * @throws \RuntimeException if $secret is invalid | ||||
|      */ | ||||
|     public function __construct($secret, RequestMethod $requestMethod = null) | ||||
|     { | ||||
|         if (empty($secret)) { | ||||
|             throw new \RuntimeException('No secret provided'); | ||||
|         } | ||||
|  | ||||
|         if (!is_string($secret)) { | ||||
|             throw new \RuntimeException('The provided secret must be a string'); | ||||
|         } | ||||
|  | ||||
|         $this->secret = $secret; | ||||
|         $this->requestMethod = (is_null($requestMethod)) ? new RequestMethod\Post() : $requestMethod; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Calls the reCAPTCHA siteverify API to verify whether the user passes | ||||
|      * CAPTCHA test and additionally runs any specified additional checks | ||||
|      * | ||||
|      * @param string $response The user response token provided by reCAPTCHA, verifying the user on your site. | ||||
|      * @param string $remoteIp The end user's IP address. | ||||
|      * @return Response Response from the service. | ||||
|      */ | ||||
|     public function verify($response, $remoteIp = null) | ||||
|     { | ||||
|         // Discard empty solution submissions | ||||
|         if (empty($response)) { | ||||
|             $recaptchaResponse = new Response(false, array(self::E_MISSING_INPUT_RESPONSE)); | ||||
|             return $recaptchaResponse; | ||||
|         } | ||||
|  | ||||
|         $params = new RequestParameters($this->secret, $response, $remoteIp, self::VERSION); | ||||
|         $rawResponse = $this->requestMethod->submit($params); | ||||
|         $initialResponse = Response::fromJson($rawResponse); | ||||
|         $validationErrors = array(); | ||||
|  | ||||
|         if (isset($this->hostname) && strcasecmp($this->hostname, $initialResponse->getHostname()) !== 0) { | ||||
|             $validationErrors[] = self::E_HOSTNAME_MISMATCH; | ||||
|         } | ||||
|  | ||||
|         if (isset($this->apkPackageName) && strcasecmp($this->apkPackageName, $initialResponse->getApkPackageName()) !== 0) { | ||||
|             $validationErrors[] = self::E_APK_PACKAGE_NAME_MISMATCH; | ||||
|         } | ||||
|  | ||||
|         if (isset($this->action) && strcasecmp($this->action, $initialResponse->getAction()) !== 0) { | ||||
|             $validationErrors[] = self::E_ACTION_MISMATCH; | ||||
|         } | ||||
|  | ||||
|         if (isset($this->threshold) && $this->threshold > $initialResponse->getScore()) { | ||||
|             $validationErrors[] = self::E_SCORE_THRESHOLD_NOT_MET; | ||||
|         } | ||||
|  | ||||
|         if (isset($this->timeoutSeconds)) { | ||||
|             $challengeTs = strtotime($initialResponse->getChallengeTs()); | ||||
|  | ||||
|             if ($challengeTs > 0 && time() - $challengeTs > $this->timeoutSeconds) { | ||||
|                 $validationErrors[] = self::E_CHALLENGE_TIMEOUT; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (empty($validationErrors)) { | ||||
|             return $initialResponse; | ||||
|         } | ||||
|  | ||||
|         return new Response( | ||||
|             false, | ||||
|             array_merge($initialResponse->getErrorCodes(), $validationErrors), | ||||
|             $initialResponse->getHostname(), | ||||
|             $initialResponse->getChallengeTs(), | ||||
|             $initialResponse->getApkPackageName(), | ||||
|             $initialResponse->getScore(), | ||||
|             $initialResponse->getAction() | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Provide a hostname to match against in verify() | ||||
|      * This should be without a protocol or trailing slash, e.g. www.google.com | ||||
|      * | ||||
|      * @param string $hostname Expected hostname | ||||
|      * @return ReCaptcha Current instance for fluent interface | ||||
|      */ | ||||
|     public function setExpectedHostname($hostname) | ||||
|     { | ||||
|         $this->hostname = $hostname; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Provide an APK package name to match against in verify() | ||||
|      * | ||||
|      * @param string $apkPackageName Expected APK package name | ||||
|      * @return ReCaptcha Current instance for fluent interface | ||||
|      */ | ||||
|     public function setExpectedApkPackageName($apkPackageName) | ||||
|     { | ||||
|         $this->apkPackageName = $apkPackageName; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Provide an action to match against in verify() | ||||
|      * This should be set per page. | ||||
|      * | ||||
|      * @param string $action Expected action | ||||
|      * @return ReCaptcha Current instance for fluent interface | ||||
|      */ | ||||
|     public function setExpectedAction($action) | ||||
|     { | ||||
|         $this->action = $action; | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Provide a threshold to meet or exceed in verify() | ||||
|      * Threshold should be a float between 0 and 1 which will be tested as response >= threshold. | ||||
|      * | ||||
|      * @param float $threshold Expected threshold | ||||
|      * @return ReCaptcha Current instance for fluent interface | ||||
|      */ | ||||
|     public function setScoreThreshold($threshold) | ||||
|     { | ||||
|         $this->threshold = floatval($threshold); | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Provide a timeout in seconds to test against the challenge timestamp in verify() | ||||
|      * | ||||
|      * @param int $timeoutSeconds Expected hostname | ||||
|      * @return ReCaptcha Current instance for fluent interface | ||||
|      */ | ||||
|     public function setChallengeTimeout($timeoutSeconds) | ||||
|     { | ||||
|         $this->timeoutSeconds = $timeoutSeconds; | ||||
|         return $this; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										49
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| <?php | ||||
| /** | ||||
|  * This is a PHP library that handles calling reCAPTCHA. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| namespace ReCaptcha; | ||||
|  | ||||
| /** | ||||
|  * Method used to send the request to the service. | ||||
|  */ | ||||
| interface RequestMethod | ||||
| { | ||||
|     /** | ||||
|      * Submit the request with the specified parameters. | ||||
|      * | ||||
|      * @param RequestParameters $params Request parameters | ||||
|      * @return string Body of the reCAPTCHA response | ||||
|      */ | ||||
|     public function submit(RequestParameters $params); | ||||
| } | ||||
							
								
								
									
										81
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Curl.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Curl.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,81 @@ | ||||
| <?php | ||||
| /** | ||||
|  * This is a PHP library that handles calling reCAPTCHA. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| namespace ReCaptcha\RequestMethod; | ||||
|  | ||||
| /** | ||||
|  * Convenience wrapper around the cURL functions to allow mocking. | ||||
|  */ | ||||
| class Curl | ||||
| { | ||||
|     /** | ||||
|      * @see http://php.net/curl_init | ||||
|      * @param string $url | ||||
|      * @return resource cURL handle | ||||
|      */ | ||||
|     public function init($url = null) | ||||
|     { | ||||
|         return curl_init($url); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @see http://php.net/curl_setopt_array | ||||
|      * @param resource $ch | ||||
|      * @param array $options | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function setoptArray($ch, array $options) | ||||
|     { | ||||
|         return curl_setopt_array($ch, $options); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @see http://php.net/curl_exec | ||||
|      * @param resource $ch | ||||
|      * @return mixed | ||||
|      */ | ||||
|     public function exec($ch) | ||||
|     { | ||||
|         return curl_exec($ch); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @see http://php.net/curl_close | ||||
|      * @param resource $ch | ||||
|      */ | ||||
|     public function close($ch) | ||||
|     { | ||||
|         curl_close($ch); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										104
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/CurlPost.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/CurlPost.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,104 @@ | ||||
| <?php | ||||
| /** | ||||
|  * This is a PHP library that handles calling reCAPTCHA. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| namespace ReCaptcha\RequestMethod; | ||||
|  | ||||
| use ReCaptcha\ReCaptcha; | ||||
| use ReCaptcha\RequestMethod; | ||||
| use ReCaptcha\RequestParameters; | ||||
|  | ||||
| /** | ||||
|  * Sends cURL request to the reCAPTCHA service. | ||||
|  * Note: this requires the cURL extension to be enabled in PHP | ||||
|  * @see http://php.net/manual/en/book.curl.php | ||||
|  */ | ||||
| class CurlPost implements RequestMethod | ||||
| { | ||||
|     /** | ||||
|      * Curl connection to the reCAPTCHA service | ||||
|      * @var Curl | ||||
|      */ | ||||
|     private $curl; | ||||
|  | ||||
|     /** | ||||
|      * URL for reCAPTCHA siteverify API | ||||
|      * @var string | ||||
|      */ | ||||
|     private $siteVerifyUrl; | ||||
|  | ||||
|     /** | ||||
|      * Only needed if you want to override the defaults | ||||
|      * | ||||
|      * @param Curl $curl Curl resource | ||||
|      * @param string $siteVerifyUrl URL for reCAPTCHA siteverify API | ||||
|      */ | ||||
|     public function __construct(Curl $curl = null, $siteVerifyUrl = null) | ||||
|     { | ||||
|         $this->curl = (is_null($curl)) ? new Curl() : $curl; | ||||
|         $this->siteVerifyUrl = (is_null($siteVerifyUrl)) ? ReCaptcha::SITE_VERIFY_URL : $siteVerifyUrl; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Submit the cURL request with the specified parameters. | ||||
|      * | ||||
|      * @param RequestParameters $params Request parameters | ||||
|      * @return string Body of the reCAPTCHA response | ||||
|      */ | ||||
|     public function submit(RequestParameters $params) | ||||
|     { | ||||
|         $handle = $this->curl->init($this->siteVerifyUrl); | ||||
|  | ||||
|         $options = array( | ||||
|             CURLOPT_POST => true, | ||||
|             CURLOPT_POSTFIELDS => $params->toQueryString(), | ||||
|             CURLOPT_HTTPHEADER => array( | ||||
|                 'Content-Type: application/x-www-form-urlencoded' | ||||
|             ), | ||||
|             CURLINFO_HEADER_OUT => false, | ||||
|             CURLOPT_HEADER => false, | ||||
|             CURLOPT_RETURNTRANSFER => true, | ||||
|             CURLOPT_SSL_VERIFYPEER => true | ||||
|         ); | ||||
|         $this->curl->setoptArray($handle, $options); | ||||
|  | ||||
|         $response = $this->curl->exec($handle); | ||||
|         $this->curl->close($handle); | ||||
|  | ||||
|         if ($response !== false) { | ||||
|             return $response; | ||||
|         } | ||||
|  | ||||
|         return '{"success": false, "error-codes": ["'.ReCaptcha::E_CONNECTION_FAILED.'"]}'; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										88
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,88 @@ | ||||
| <?php | ||||
| /** | ||||
|  * This is a PHP library that handles calling reCAPTCHA. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| namespace ReCaptcha\RequestMethod; | ||||
|  | ||||
| use ReCaptcha\ReCaptcha; | ||||
| use ReCaptcha\RequestMethod; | ||||
| use ReCaptcha\RequestParameters; | ||||
|  | ||||
| /** | ||||
|  * Sends POST requests to the reCAPTCHA service. | ||||
|  */ | ||||
| class Post implements RequestMethod | ||||
| { | ||||
|     /** | ||||
|      * URL for reCAPTCHA siteverify API | ||||
|      * @var string | ||||
|      */ | ||||
|     private $siteVerifyUrl; | ||||
|  | ||||
|     /** | ||||
|      * Only needed if you want to override the defaults | ||||
|      * | ||||
|      * @param string $siteVerifyUrl URL for reCAPTCHA siteverify API | ||||
|      */ | ||||
|     public function __construct($siteVerifyUrl = null) | ||||
|     { | ||||
|         $this->siteVerifyUrl = (is_null($siteVerifyUrl)) ? ReCaptcha::SITE_VERIFY_URL : $siteVerifyUrl; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Submit the POST request with the specified parameters. | ||||
|      * | ||||
|      * @param RequestParameters $params Request parameters | ||||
|      * @return string Body of the reCAPTCHA response | ||||
|      */ | ||||
|     public function submit(RequestParameters $params) | ||||
|     { | ||||
|         $options = array( | ||||
|             'http' => array( | ||||
|                 'header' => "Content-type: application/x-www-form-urlencoded\r\n", | ||||
|                 'method' => 'POST', | ||||
|                 'content' => $params->toQueryString(), | ||||
|                 // Force the peer to validate (not needed in 5.6.0+, but still works) | ||||
|                 'verify_peer' => true, | ||||
|             ), | ||||
|         ); | ||||
|         $context = stream_context_create($options); | ||||
|         $response = file_get_contents($this->siteVerifyUrl, false, $context); | ||||
|  | ||||
|         if ($response !== false) { | ||||
|             return $response; | ||||
|         } | ||||
|  | ||||
|         return '{"success": false, "error-codes": ["'.ReCaptcha::E_CONNECTION_FAILED.'"]}'; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										112
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Socket.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Socket.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,112 @@ | ||||
| <?php | ||||
| /** | ||||
|  * This is a PHP library that handles calling reCAPTCHA. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| namespace ReCaptcha\RequestMethod; | ||||
|  | ||||
| /** | ||||
|  * Convenience wrapper around native socket and file functions to allow for | ||||
|  * mocking. | ||||
|  */ | ||||
| class Socket | ||||
| { | ||||
|     private $handle = null; | ||||
|  | ||||
|     /** | ||||
|      * fsockopen | ||||
|      * | ||||
|      * @see http://php.net/fsockopen | ||||
|      * @param string $hostname | ||||
|      * @param int $port | ||||
|      * @param int $errno | ||||
|      * @param string $errstr | ||||
|      * @param float $timeout | ||||
|      * @return resource | ||||
|      */ | ||||
|     public function fsockopen($hostname, $port = -1, &$errno = 0, &$errstr = '', $timeout = null) | ||||
|     { | ||||
|         $this->handle = fsockopen($hostname, $port, $errno, $errstr, (is_null($timeout) ? ini_get("default_socket_timeout") : $timeout)); | ||||
|  | ||||
|         if ($this->handle != false && $errno === 0 && $errstr === '') { | ||||
|             return $this->handle; | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * fwrite | ||||
|      * | ||||
|      * @see http://php.net/fwrite | ||||
|      * @param string $string | ||||
|      * @param int $length | ||||
|      * @return int | bool | ||||
|      */ | ||||
|     public function fwrite($string, $length = null) | ||||
|     { | ||||
|         return fwrite($this->handle, $string, (is_null($length) ? strlen($string) : $length)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * fgets | ||||
|      * | ||||
|      * @see http://php.net/fgets | ||||
|      * @param int $length | ||||
|      * @return string | ||||
|      */ | ||||
|     public function fgets($length = null) | ||||
|     { | ||||
|         return fgets($this->handle, $length); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * feof | ||||
|      * | ||||
|      * @see http://php.net/feof | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function feof() | ||||
|     { | ||||
|         return feof($this->handle); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * fclose | ||||
|      * | ||||
|      * @see http://php.net/fclose | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function fclose() | ||||
|     { | ||||
|         return fclose($this->handle); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										110
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/SocketPost.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/SocketPost.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,110 @@ | ||||
| <?php | ||||
| /** | ||||
|  * This is a PHP library that handles calling reCAPTCHA. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| namespace ReCaptcha\RequestMethod; | ||||
|  | ||||
| use ReCaptcha\ReCaptcha; | ||||
| use ReCaptcha\RequestMethod; | ||||
| use ReCaptcha\RequestParameters; | ||||
|  | ||||
| /** | ||||
|  * Sends a POST request to the reCAPTCHA service, but makes use of fsockopen() | ||||
|  * instead of get_file_contents(). This is to account for people who may be on | ||||
|  * servers where allow_url_open is disabled. | ||||
|  */ | ||||
| class SocketPost implements RequestMethod | ||||
| { | ||||
|     /** | ||||
|      * Socket to the reCAPTCHA service | ||||
|      * @var Socket | ||||
|      */ | ||||
|     private $socket; | ||||
|  | ||||
|     private $siteVerifyUrl; | ||||
|  | ||||
|     /** | ||||
|      * Only needed if you want to override the defaults | ||||
|      * | ||||
|      * @param \ReCaptcha\RequestMethod\Socket $socket optional socket, injectable for testing | ||||
|      * @param string $siteVerifyUrl URL for reCAPTCHA siteverify API | ||||
|      */ | ||||
|     public function __construct(Socket $socket = null, $siteVerifyUrl = null) | ||||
|     { | ||||
|         $this->socket = (is_null($socket)) ? new Socket() : $socket; | ||||
|         $this->siteVerifyUrl = (is_null($siteVerifyUrl)) ? ReCaptcha::SITE_VERIFY_URL : $siteVerifyUrl; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Submit the POST request with the specified parameters. | ||||
|      * | ||||
|      * @param RequestParameters $params Request parameters | ||||
|      * @return string Body of the reCAPTCHA response | ||||
|      */ | ||||
|     public function submit(RequestParameters $params) | ||||
|     { | ||||
|         $errno = 0; | ||||
|         $errstr = ''; | ||||
|         $urlParsed = parse_url($this->siteVerifyUrl); | ||||
|  | ||||
|         if (false === $this->socket->fsockopen('ssl://' . $urlParsed['host'], 443, $errno, $errstr, 30)) { | ||||
|             return '{"success": false, "error-codes": ["'.ReCaptcha::E_CONNECTION_FAILED.'"]}'; | ||||
|         } | ||||
|  | ||||
|         $content = $params->toQueryString(); | ||||
|  | ||||
|         $request = "POST " . $urlParsed['path'] . " HTTP/1.0\r\n"; | ||||
|         $request .= "Host: " . $urlParsed['host'] . "\r\n"; | ||||
|         $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; | ||||
|         $request .= "Content-length: " . strlen($content) . "\r\n"; | ||||
|         $request .= "Connection: close\r\n\r\n"; | ||||
|         $request .= $content . "\r\n\r\n"; | ||||
|  | ||||
|         $this->socket->fwrite($request); | ||||
|         $response = ''; | ||||
|  | ||||
|         while (!$this->socket->feof()) { | ||||
|             $response .= $this->socket->fgets(4096); | ||||
|         } | ||||
|  | ||||
|         $this->socket->fclose(); | ||||
|  | ||||
|         if (0 !== strpos($response, 'HTTP/1.0 200 OK')) { | ||||
|             return '{"success": false, "error-codes": ["'.ReCaptcha::E_BAD_RESPONSE.'"]}'; | ||||
|         } | ||||
|  | ||||
|         $parts = preg_split("#\n\s*\n#Uis", $response); | ||||
|  | ||||
|         return $parts[1]; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										111
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestParameters.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/RequestParameters.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,111 @@ | ||||
| <?php | ||||
| /** | ||||
|  * This is a PHP library that handles calling reCAPTCHA. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| namespace ReCaptcha; | ||||
|  | ||||
| /** | ||||
|  * Stores and formats the parameters for the request to the reCAPTCHA service. | ||||
|  */ | ||||
| class RequestParameters | ||||
| { | ||||
|     /** | ||||
|      * The shared key between your site and reCAPTCHA. | ||||
|      * @var string | ||||
|      */ | ||||
|     private $secret; | ||||
|  | ||||
|     /** | ||||
|      * The user response token provided by reCAPTCHA, verifying the user on your site. | ||||
|      * @var string | ||||
|      */ | ||||
|     private $response; | ||||
|  | ||||
|     /** | ||||
|      * Remote user's IP address. | ||||
|      * @var string | ||||
|      */ | ||||
|     private $remoteIp; | ||||
|  | ||||
|     /** | ||||
|      * Client version. | ||||
|      * @var string | ||||
|      */ | ||||
|     private $version; | ||||
|  | ||||
|     /** | ||||
|      * Initialise parameters. | ||||
|      * | ||||
|      * @param string $secret Site secret. | ||||
|      * @param string $response Value from g-captcha-response form field. | ||||
|      * @param string $remoteIp User's IP address. | ||||
|      * @param string $version Version of this client library. | ||||
|      */ | ||||
|     public function __construct($secret, $response, $remoteIp = null, $version = null) | ||||
|     { | ||||
|         $this->secret = $secret; | ||||
|         $this->response = $response; | ||||
|         $this->remoteIp = $remoteIp; | ||||
|         $this->version = $version; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Array representation. | ||||
|      * | ||||
|      * @return array Array formatted parameters. | ||||
|      */ | ||||
|     public function toArray() | ||||
|     { | ||||
|         $params = array('secret' => $this->secret, 'response' => $this->response); | ||||
|  | ||||
|         if (!is_null($this->remoteIp)) { | ||||
|             $params['remoteip'] = $this->remoteIp; | ||||
|         } | ||||
|  | ||||
|         if (!is_null($this->version)) { | ||||
|             $params['version'] = $this->version; | ||||
|         } | ||||
|  | ||||
|         return $params; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Query string representation for HTTP request. | ||||
|      * | ||||
|      * @return string Query string formatted parameters. | ||||
|      */ | ||||
|     public function toQueryString() | ||||
|     { | ||||
|         return http_build_query($this->toArray(), '', '&'); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										218
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/Response.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										218
									
								
								libraries/vendor/google/recaptcha/src/ReCaptcha/Response.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,218 @@ | ||||
| <?php | ||||
| /** | ||||
|  * This is a PHP library that handles calling reCAPTCHA. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| namespace ReCaptcha; | ||||
|  | ||||
| /** | ||||
|  * The response returned from the service. | ||||
|  */ | ||||
| class Response | ||||
| { | ||||
|     /** | ||||
|      * Success or failure. | ||||
|      * @var boolean | ||||
|      */ | ||||
|     private $success = false; | ||||
|  | ||||
|     /** | ||||
|      * Error code strings. | ||||
|      * @var array | ||||
|      */ | ||||
|     private $errorCodes = array(); | ||||
|  | ||||
|     /** | ||||
|      * The hostname of the site where the reCAPTCHA was solved. | ||||
|      * @var string | ||||
|      */ | ||||
|     private $hostname; | ||||
|  | ||||
|     /** | ||||
|      * Timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ) | ||||
|      * @var string | ||||
|      */ | ||||
|     private $challengeTs; | ||||
|  | ||||
|     /** | ||||
|      * APK package name | ||||
|      * @var string | ||||
|      */ | ||||
|     private $apkPackageName; | ||||
|  | ||||
|     /** | ||||
|      * Score assigned to the request | ||||
|      * @var float | ||||
|      */ | ||||
|     private $score; | ||||
|  | ||||
|     /** | ||||
|      * Action as specified by the page | ||||
|      * @var string | ||||
|      */ | ||||
|     private $action; | ||||
|  | ||||
|     /** | ||||
|      * Build the response from the expected JSON returned by the service. | ||||
|      * | ||||
|      * @param string $json | ||||
|      * @return \ReCaptcha\Response | ||||
|      */ | ||||
|     public static function fromJson($json) | ||||
|     { | ||||
|         $responseData = json_decode($json, true); | ||||
|  | ||||
|         if (!$responseData) { | ||||
|             return new Response(false, array(ReCaptcha::E_INVALID_JSON)); | ||||
|         } | ||||
|  | ||||
|         $hostname = isset($responseData['hostname']) ? $responseData['hostname'] : ''; | ||||
|         $challengeTs = isset($responseData['challenge_ts']) ? $responseData['challenge_ts'] : ''; | ||||
|         $apkPackageName = isset($responseData['apk_package_name']) ? $responseData['apk_package_name'] : ''; | ||||
|         $score = isset($responseData['score']) ? floatval($responseData['score']) : null; | ||||
|         $action = isset($responseData['action']) ? $responseData['action'] : ''; | ||||
|  | ||||
|         if (isset($responseData['success']) && $responseData['success'] == true) { | ||||
|             return new Response(true, array(), $hostname, $challengeTs, $apkPackageName, $score, $action); | ||||
|         } | ||||
|  | ||||
|         if (isset($responseData['error-codes']) && is_array($responseData['error-codes'])) { | ||||
|             return new Response(false, $responseData['error-codes'], $hostname, $challengeTs, $apkPackageName, $score, $action); | ||||
|         } | ||||
|  | ||||
|         return new Response(false, array(ReCaptcha::E_UNKNOWN_ERROR), $hostname, $challengeTs, $apkPackageName, $score, $action); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
|      * @param boolean $success | ||||
|      * @param string $hostname | ||||
|      * @param string $challengeTs | ||||
|      * @param string $apkPackageName | ||||
|      * @param float $score | ||||
|      * @param string $action | ||||
|      * @param array $errorCodes | ||||
|      */ | ||||
|     public function __construct($success, array $errorCodes = array(), $hostname = '', $challengeTs = '', $apkPackageName = '', $score = null, $action = '') | ||||
|     { | ||||
|         $this->success = $success; | ||||
|         $this->hostname = $hostname; | ||||
|         $this->challengeTs = $challengeTs; | ||||
|         $this->apkPackageName = $apkPackageName; | ||||
|         $this->score = $score; | ||||
|         $this->action = $action; | ||||
|         $this->errorCodes = $errorCodes; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Is success? | ||||
|      * | ||||
|      * @return boolean | ||||
|      */ | ||||
|     public function isSuccess() | ||||
|     { | ||||
|         return $this->success; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get error codes. | ||||
|      * | ||||
|      * @return array | ||||
|      */ | ||||
|     public function getErrorCodes() | ||||
|     { | ||||
|         return $this->errorCodes; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get hostname. | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getHostname() | ||||
|     { | ||||
|         return $this->hostname; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get challenge timestamp | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getChallengeTs() | ||||
|     { | ||||
|         return $this->challengeTs; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get APK package name | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getApkPackageName() | ||||
|     { | ||||
|         return $this->apkPackageName; | ||||
|     } | ||||
|     /** | ||||
|      * Get score | ||||
|      * | ||||
|      * @return float | ||||
|      */ | ||||
|     public function getScore() | ||||
|     { | ||||
|         return $this->score; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get action | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getAction() | ||||
|     { | ||||
|         return $this->action; | ||||
|     } | ||||
|  | ||||
|     public function toArray() | ||||
|     { | ||||
|         return array( | ||||
|             'success' => $this->isSuccess(), | ||||
|             'hostname' => $this->getHostname(), | ||||
|             'challenge_ts' => $this->getChallengeTs(), | ||||
|             'apk_package_name' => $this->getApkPackageName(), | ||||
|             'score' => $this->getScore(), | ||||
|             'action' => $this->getAction(), | ||||
|             'error-codes' => $this->getErrorCodes(), | ||||
|         ); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										69
									
								
								libraries/vendor/google/recaptcha/src/autoload.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								libraries/vendor/google/recaptcha/src/autoload.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | ||||
| <?php | ||||
|  | ||||
| /* An autoloader for ReCaptcha\Foo classes. This should be required() | ||||
|  * by the user before attempting to instantiate any of the ReCaptcha | ||||
|  * classes. | ||||
|  * | ||||
|  * BSD 3-Clause License | ||||
|  * @copyright (c) 2019, Google Inc. | ||||
|  * @link https://www.google.com/recaptcha | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without | ||||
|  * modification, are permitted provided that the following conditions are met: | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this | ||||
|  *    list of conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its | ||||
|  *    contributors may be used to endorse or promote products derived from | ||||
|  *    this software without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||
|  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||
|  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
|  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
|  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||
|  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
|  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| spl_autoload_register(function ($class) { | ||||
|     if (substr($class, 0, 10) !== 'ReCaptcha\\') { | ||||
|         /* If the class does not lie under the "ReCaptcha" namespace, | ||||
|          * then we can exit immediately. | ||||
|          */ | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     /* All of the classes have names like "ReCaptcha\Foo", so we need | ||||
|      * to replace the backslashes with frontslashes if we want the | ||||
|      * name to map directly to a location in the filesystem. | ||||
|      */ | ||||
|     $class = str_replace('\\', '/', $class); | ||||
|  | ||||
|     /* First, check under the current directory. It is important that | ||||
|      * we look here first, so that we don't waste time searching for | ||||
|      * test classes in the common case. | ||||
|      */ | ||||
|     $path = dirname(__FILE__).'/'.$class.'.php'; | ||||
|     if (is_readable($path)) { | ||||
|         require_once $path; | ||||
|  | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     /* If we didn't find what we're looking for already, maybe it's | ||||
|      * a test class? | ||||
|      */ | ||||
|     $path = dirname(__FILE__).'/../tests/'.$class.'.php'; | ||||
|     if (is_readable($path)) { | ||||
|         require_once $path; | ||||
|     } | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user