Zeile 87 | Zeile 87 |
---|
$is_spammer = false; $confidence = 0;
|
$is_spammer = false; $confidence = 0;
|
if(filter_var($email, FILTER_VALIDATE_EMAIL) && filter_var($ip_address, FILTER_VALIDATE_IP)) // Calls to the API with invalid email/ip formats cause issues
| if(!filter_var($email, FILTER_VALIDATE_EMAIL))
|
{
|
{
|
$username_encoded = urlencode($username); $email_encoded = urlencode($email);
$check_url = sprintf(self::STOP_FORUM_SPAM_API_URL_FORMAT, $username_encoded, $email_encoded, $ip_address);
| throw new Exception("stopforumspam_invalid_email"); }
if(!filter_var($ip_address, FILTER_VALIDATE_IP)) { throw new Exception('stopforumspam_invalid_ip_address'); }
$is_internal_ip = !filter_var( $ip_address, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE );
if($is_internal_ip) { return false; }
$username_encoded = urlencode($username); $email_encoded = urlencode($email);
$check_url = sprintf(self::STOP_FORUM_SPAM_API_URL_FORMAT, $username_encoded, $email_encoded, $ip_address);
$result = fetch_remote_file($check_url);
if($result !== false) { $result_json = @json_decode($result);
if($result_json != null && !isset($result_json->error)) { if($this->check_usernames && $result_json->username->appears) { $confidence += $result_json->username->confidence; }
|
|
|
$result = fetch_remote_file($check_url);
| if($this->check_emails && $result_json->email->appears) { $confidence += $result_json->email->confidence; }
|
|
|
if($result !== false) { $result_json = @json_decode($result);
| if($this->check_ips && $result_json->ip->appears) { $confidence += $result_json->ip->confidence; }
|
|
|
if($result_json != null && !isset($result_json->error))
| if($confidence > $this->min_weighting_before_spam)
|
{
|
{
|
if($this->check_usernames && $result_json->username->appears) { $confidence += $result_json->username->confidence; }
if($this->check_emails && $result_json->email->appears) { $confidence += $result_json->email->confidence; }
if($this->check_ips && $result_json->ip->appears) { $confidence += $result_json->ip->confidence; }
if($confidence > $this->min_weighting_before_spam) { $is_spammer = true; }
| $is_spammer = true;
|
}
|
}
|
else { throw new Exception('stopforumspam_error_decoding'); } }
| }
|
else
|
else
|
{ throw new Exception('stopforumspam_error_retrieving'); }
| { throw new Exception('stopforumspam_error_decoding'); } } else { throw new Exception('stopforumspam_error_retrieving');
|
}
if($this->plugins)
| }
if($this->plugins)
|
Zeile 144 | Zeile 162 |
---|
);
$this->plugins->run_hooks('stopforumspam_check_spammer_pre_return', $params);
|
);
$this->plugins->run_hooks('stopforumspam_check_spammer_pre_return', $params);
|
}
| }
|
if($this->log_blocks && $is_spammer) { log_spam_block(
| if($this->log_blocks && $is_spammer) { log_spam_block(
|
Zeile 156 | Zeile 174 |
---|
}
return $is_spammer;
|
}
return $is_spammer;
|
| }
/** * @param array $sfsSettingsEnabled * * @return string */ public function getErrorText($sfsSettingsEnabled) { global $mybb, $lang;
foreach($sfsSettingsEnabled as $setting) { if($setting == 'stopforumspam_check_usernames' && $mybb->settings[$setting]) { $settingsenabled[] = $lang->sfs_error_username; continue; }
if($setting == 'stopforumspam_check_emails' && $mybb->settings[$setting]) { $settingsenabled[] = $lang->sfs_error_email; continue; }
if($setting = 'stopforumspam_check_ips' && $mybb->settings[$setting]) { $settingsenabled[] = $lang->sfs_error_ip; continue; } }
if(sizeof($settingsenabled) > 1) { $lastsetting = $settingsenabled[sizeof($settingsenabled)-1]; unset($settingsenabled[sizeof($settingsenabled)-1]);
$stopforumspamerror = implode($lang->comma, $settingsenabled) . " {$lang->sfs_error_or} " . $lastsetting; } else { $stopforumspamerror = $settingsenabled[0]; } return $stopforumspamerror;
|
} }
| } }
|