Zeile 40 | Zeile 40 |
---|
* * 1 = Default CAPTCHA * 2 = reCAPTCHA
|
* * 1 = Default CAPTCHA * 2 = reCAPTCHA
|
* 3 = Are You a Human
| |
* 4 = NoCATPCHA reCAPTCHA * * @var int
| * 4 = NoCATPCHA reCAPTCHA * * @var int
|
Zeile 52 | Zeile 51 |
---|
* * @var string */
|
* * @var string */
|
public $captch_template = '';
| public $captcha_template = '';
|
/** * CAPTCHA Server URL
| /** * CAPTCHA Server URL
|
Zeile 60 | Zeile 59 |
---|
* @var string */ public $server = '';
|
* @var string */ public $server = '';
|
/** * CAPTCHA Secure Server URL * * @var string */ public $secure_server = '';
| |
/** * CAPTCHA Verify Server
| /** * CAPTCHA Verify Server
|
Zeile 74 | Zeile 66 |
---|
* @var string */ public $verify_server = '';
|
* @var string */ public $verify_server = '';
|
/** * Are You a Human configuration * * @var string */ public $ayah_web_service_host = ''; public $ayah_publisher_key = ''; public $ayah_scoring_key = ''; public $ayah_debug_mode = ''; public $ayah_use_curl = '';
|
|
/** * HTML of the built CAPTCHA *
| /** * HTML of the built CAPTCHA *
|
Zeile 100 | Zeile 81 |
---|
*/ public $errors = array();
|
*/ public $errors = array();
|
| /** * @param bool $build * @param string $template */
|
function __construct($build = false, $template = "") { global $mybb, $plugins;
| function __construct($build = false, $template = "") { global $mybb, $plugins;
|
Zeile 113 | Zeile 98 |
---|
);
$plugins->run_hooks('captcha_build_start', $args);
|
);
$plugins->run_hooks('captcha_build_start', $args);
|
|
|
// Prepare the build template if($template) {
| // Prepare the build template if($template) {
|
Zeile 123 | Zeile 108 |
---|
{ $this->captcha_template .= "_recaptcha"; }
|
{ $this->captcha_template .= "_recaptcha"; }
|
else if($this->type == 3) { $this->captcha_template .= "_ayah";
| elseif($this->type == 4){ $this->captcha_template .= "_nocaptcha";
|
}
|
}
|
else if($this->type == 4){ $this->captcha_template .= "_nocaptcha";
| elseif($this->type == 5){ $this->captcha_template .= "_recaptcha_invisible";
|
} }
// Work on which CAPTCHA we've got installed
|
} }
// Work on which CAPTCHA we've got installed
|
if($this->type == 3 && $mybb->settings['ayahpublisherkey'] && $mybb->settings['ayahscoringkey'])
| if($this->type == 2 && $mybb->settings['captchapublickey'] && $mybb->settings['captchaprivatekey'])
|
{
|
{
|
// We want to use Are You a Human, set configuration options $this->ayah_web_service_host = "ws.areyouahuman.com"; $this->ayah_publisher_key = $mybb->settings['ayahpublisherkey']; $this->ayah_scoring_key = $mybb->settings['ayahscoringkey']; $this->ayah_debug_mode = false; $this->ayah_use_curl = true;
| // We want to use reCAPTCHA, set the server options $this->server = "//www.google.com/recaptcha/api"; $this->verify_server = "www.google.com";
|
if($build == true)
|
if($build == true)
|
{ $this->build_ayah(); } } else if($this->type == 2 && $mybb->settings['captchapublickey'] && $mybb->settings['captchaprivatekey']) { // We want to use reCAPTCHA, set the server options $this->server = "http://www.google.com/recaptcha/api"; $this->secure_server = "https://www.google.com/recaptcha/api"; $this->verify_server = "www.google.com";
if($build == true) { $this->build_recaptcha(); } } else if($this->type == 4 && $mybb->settings['captchapublickey'] && $mybb->settings['captchaprivatekey'])
| { $this->build_recaptcha(); } } elseif(in_array($this->type, array(4, 5)) && $mybb->settings['captchapublickey'] && $mybb->settings['captchaprivatekey'])
|
{
|
{
|
// We want to use reCAPTCHA, set the server options $this->server = "http://www.google.com/recaptcha/api.js"; $this->secure_server = "https://www.google.com/recaptcha/api.js";
| // We want to use noCAPTCHA or reCAPTCHA invisible, set the server options $this->server = "//www.google.com/recaptcha/api.js";
|
$this->verify_server = "https://www.google.com/recaptcha/api/siteverify";
if($build == true) { $this->build_recaptcha();
|
$this->verify_server = "https://www.google.com/recaptcha/api/siteverify";
if($build == true) { $this->build_recaptcha();
|
} } else if($this->type == 1)
| } } elseif($this->type == 1)
|
{ if(!function_exists("imagecreatefrompng")) { // We want to use the default CAPTCHA, but it's not installed
|
{ if(!function_exists("imagecreatefrompng")) { // We want to use the default CAPTCHA, but it's not installed
|
return false;
| return;
|
}
|
}
|
else if($build == true)
| elseif($build == true)
|
{ $this->build_captcha(); }
| { $this->build_captcha(); }
|
Zeile 187 | Zeile 155 |
---|
$plugins->run_hooks('captcha_build_end', $args); }
|
$plugins->run_hooks('captcha_build_end', $args); }
|
| /** * @param bool $return Not used */
|
function build_captcha($return = false) { global $db, $lang, $templates, $theme, $mybb;
| function build_captcha($return = false) { global $db, $lang, $templates, $theme, $mybb;
|
Zeile 213 | Zeile 184 |
---|
// This will build a reCAPTCHA $server = $this->server; $public_key = $mybb->settings['captchapublickey'];
|
// This will build a reCAPTCHA $server = $this->server; $public_key = $mybb->settings['captchapublickey'];
|
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { // Use secure server if HTTPS $server = $this->secure_server; }
| |
eval("\$this->html = \"".$templates->get($this->captcha_template, 1, 0)."\";"); //eval("\$this->html = \"".$templates->get("member_register_regimage_recaptcha")."\";"); }
|
eval("\$this->html = \"".$templates->get($this->captcha_template, 1, 0)."\";"); //eval("\$this->html = \"".$templates->get("member_register_regimage_recaptcha")."\";"); }
|
function build_ayah() { global $lang, $mybb, $templates;
define('AYAH_PUBLISHER_KEY', $this->ayah_publisher_key); define('AYAH_SCORING_KEY', $this->ayah_scoring_key); define('AYAH_USE_CURL', $this->ayah_use_curl); define('AYAH_DEBUG_MODE', $this->ayah_debug_mode); define('AYAH_WEB_SERVICE_HOST', $this->ayah_web_service_host);
require_once MYBB_ROOT."inc/3rdparty/ayah/ayah.php"; $ayah = new AYAH(); $output = $ayah->getPublisherHTML();
if(!empty($output)) { eval("\$this->html = \"".$templates->get($this->captcha_template, 1, 0)."\";"); //eval("\$this->html = \"".$templates->get("member_register_regimage_ayah")."\";"); } }
| /** * @return string */
|
function build_hidden_captcha() { global $db, $mybb, $templates;
$field = array();
|
function build_hidden_captcha() { global $db, $mybb, $templates;
$field = array();
|
|
|
if($this->type == 1) { // Names
| if($this->type == 1) { // Names
|
Zeile 261 | Zeile 208 |
---|
$field['hash'] = $db->escape_string($mybb->input['imagehash']); $field['string'] = $db->escape_string($mybb->input['imagestring']); }
|
$field['hash'] = $db->escape_string($mybb->input['imagehash']); $field['string'] = $db->escape_string($mybb->input['imagestring']); }
|
else if($this->type == 2)
| elseif($this->type == 2)
|
{ // Names $hash = "recaptcha_challenge_field";
| { // Names $hash = "recaptcha_challenge_field";
|
Zeile 271 | Zeile 218 |
---|
$field['hash'] = $mybb->input['recaptcha_challenge_field']; $field['string'] = $mybb->input['recaptcha_response_field']; }
|
$field['hash'] = $mybb->input['recaptcha_challenge_field']; $field['string'] = $mybb->input['recaptcha_response_field']; }
|
else if($this->type == 3)
| elseif($this->type == 3)
|
{ // Are You a Human can't be built as a hidden captcha
|
{ // Are You a Human can't be built as a hidden captcha
|
continue;
| return '';
|
}
eval("\$this->html = \"".$templates->get("post_captcha_hidden")."\";"); return $this->html; }
|
}
eval("\$this->html = \"".$templates->get("post_captcha_hidden")."\";"); return $this->html; }
|
| /** * @return bool */
|
function validate_captcha() { global $db, $lang, $mybb, $session, $plugins;
$plugins->run_hooks('captcha_validate_start', $this);
|
function validate_captcha() { global $db, $lang, $mybb, $session, $plugins;
$plugins->run_hooks('captcha_validate_start', $this);
|
|
|
if($this->type == 1) { // We have a normal CAPTCHA to handle
| if($this->type == 1) { // We have a normal CAPTCHA to handle
|
Zeile 310 | Zeile 260 |
---|
if(!$imgcheck) { $this->set_error($lang->invalid_captcha_verify);
|
if(!$imgcheck) { $this->set_error($lang->invalid_captcha_verify);
|
$db->delete_query("captcha", "imagehash = '{$imagehash}'"); } }
| $db->delete_query("captcha", "imagehash = '{$imagehash}'"); } }
|
elseif($this->type == 2) { $challenge = $mybb->input['recaptcha_challenge_field'];
| elseif($this->type == 2) { $challenge = $mybb->input['recaptcha_challenge_field'];
|
Zeile 355 | Zeile 305 |
---|
while(!feof($fs)) { $response .= fgets($fs, 1160);
|
while(!feof($fs)) { $response .= fgets($fs, 1160);
|
}
fclose($fs);
| }
fclose($fs);
|
$response = explode("\r\n\r\n", $response, 2); $answer = explode("\n", $response[1]);
if(trim($answer[0]) != 'true')
|
$response = explode("\r\n\r\n", $response, 2); $answer = explode("\n", $response[1]);
if(trim($answer[0]) != 'true')
|
{
| {
|
// We got it wrong! Oh no... $this->set_error($lang->invalid_captcha_verify);
|
// We got it wrong! Oh no... $this->set_error($lang->invalid_captcha_verify);
|
} } }
| } } }
|
}
|
}
|
elseif($this->type == 4)
| elseif(in_array($this->type, array(4, 5)))
|
{ $response = $mybb->input['g-recaptcha-response']; if(!$response || strlen($response) == 0)
|
{ $response = $mybb->input['g-recaptcha-response']; if(!$response || strlen($response) == 0)
|
{
| {
|
$this->set_error($lang->invalid_nocaptcha); } else {
|
$this->set_error($lang->invalid_nocaptcha); } else {
|
// We have a noCAPTCHA to handle
| // We have a noCAPTCHA or reCAPTCHA invisible to handle
|
// Contact Google and see if our reCAPTCHA was successful $response = fetch_remote_file($this->verify_server, array( 'secret' => $mybb->settings['captchaprivatekey'],
| // Contact Google and see if our reCAPTCHA was successful $response = fetch_remote_file($this->verify_server, array( 'secret' => $mybb->settings['captchaprivatekey'],
|
Zeile 390 | Zeile 340 |
---|
if($response == false) { $this->set_error($lang->invalid_nocaptcha_transmit);
|
if($response == false) { $this->set_error($lang->invalid_nocaptcha_transmit);
|
}
| }
|
else { $answer = json_decode($response, true);
| else { $answer = json_decode($response, true);
|
Zeile 401 | Zeile 351 |
---|
$this->set_error($lang->invalid_nocaptcha); } }
|
$this->set_error($lang->invalid_nocaptcha); } }
|
} } elseif($this->type == 3) { define('AYAH_PUBLISHER_KEY', $this->ayah_publisher_key); define('AYAH_SCORING_KEY', $this->ayah_scoring_key); define('AYAH_USE_CURL', $this->ayah_use_curl); define('AYAH_DEBUG_MODE', $this->ayah_debug_mode); define('AYAH_WEB_SERVICE_HOST', $this->ayah_web_service_host);
require_once MYBB_ROOT."inc/3rdparty/ayah/ayah.php"; $ayah = new AYAH();
$result = $ayah->scoreResult();
if($result == false) { $this->set_error($lang->invalid_ayah_result);
| |
} }
| } }
|
Zeile 454 | Zeile 386 |
---|
/** * Add an error to the error array.
|
/** * Add an error to the error array.
|
| * * @param string $error * @param string $data
|
*/ function set_error($error, $data='') {
| */ function set_error($error, $data='') {
|
Zeile 467 | Zeile 402 |
---|
* Returns the error(s) that occurred when handling data * in a format that MyBB can handle. *
|
* Returns the error(s) that occurred when handling data * in a format that MyBB can handle. *
|
* @return An array of errors in a MyBB format.
| * @return array An array of errors in a MyBB format.
|
*/ function get_errors() { global $lang;
|
*/ function get_errors() { global $lang;
|
| $errors = array();
|
foreach($this->errors as $error) { $lang_string = $error['error_code'];
| foreach($this->errors as $error) { $lang_string = $error['error_code'];
|
Zeile 514 | Zeile 450 |
---|
return $errors; }
|
return $errors; }
|
| /** * @param array $data * * @return string */
|
private function _qsencode($data) { $req = '';
| private function _qsencode($data) { $req = '';
|