File "spam-prevention.php"
Full Path: /home/vantageo/public_html/cache/cache/.wp-cli/wp-content/plugins/mojo-marketplace-wp-plugin/vendor/bluehost/endurance-wp-module-spam-prevention/spam-prevention.php
File size: 5.77 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* This file will introduce a basic spam filter
* mm_spam v1
*/
function mm_spam_stop_forum_spam_api( $args = array() ) {
$defaults = array(
'ip' => ( isset( $_SERVER['REMOTE_ADDR'] ) ) ? $_SERVER['REMOTE_ADDR'] : '',
'email' => '',
'username' => '',
);
$url = 'https://www.stopforumspam.com/api?';
$args = wp_parse_args( $args, $defaults );
$args['f'] = 'json';
$args['confidence'] = true;
$args = array_filter( $args );
$query = $url . http_build_query( $args );
$key = md5( $query );
if ( false === ( $transient = get_transient( 'mm_spam_' . $key ) ) ) {
$result = wp_remote_get( $query );
if ( ! is_wp_error( $result ) ) {
if ( strlen( $result['body'] ) < 10 || 200 != $result['response']['code'] ) {
return false;
}
if ( $data = json_decode( $result['body'] ) ) {
// it is json. continue
if ( $data->success != 1 ) {
return false;
}
if ( isset( $data->ip ) || isset( $data->email ) || isset( $data->username ) ) {
$blocked = false;
if ( isset( $data->ip->confidence ) && $data->ip->confidence > get_option( 'mm_confidence_ip', 75 ) ) { $blocked = 'ip'; }
if ( isset( $data->username->confidence ) && $data->username->confidence > get_option( 'mm_confidence_username', 95 ) ) { $blocked = 'username'; }
if ( isset( $data->email->confidence ) && $data->email->confidence > get_option( 'mm_confidence_email', 75 ) ) { $blocked = 'email'; }
if ( $blocked ) {
$event = array(
't' => 'event',
'ec' => 'scheduled',
'ea' => 'spam_blocked_' . $blocked,
'el' => 0,
);
if ( isset( $events['weekly'][ $event['ea'] ] ) ) {
$events['weekly'][ $event['ea'] ]['el']++;
} else {
$events['weekly'][ $event['ea'] ] = $event;
}
update_option( 'mm_cron', $events );
set_transient( 'mm_spam_' . $key, 'yes', DAY_IN_SECONDS );
return true;
} else {
set_transient( 'mm_spam_' . $key, 'no', DAY_IN_SECONDS );
}
}
}
}
} else {
return ( 'yes' == $transient ) ? true : false;
}
return false;
}
//check ip on login pageload
function mm_spam_check_ip_init() {
if ( mm_spam_stop_forum_spam_api() ) {
wp_die( '<center>Your IP is on a <a href="http://stopforumspam.com">Spam Blacklist</a>.</center>', 'MOJO Spam Prevention' );
}
}
add_action( 'login_init', 'mm_spam_check_ip_init' );
function mm_spam_check_comment( $approved, $comment ) {
if ( ! empty( $comment['user_ID'] ) && get_user_by( 'id', $comment['user_ID'] ) ) {
return $approved;
}
$check = array( 'ip' => $comment['comment_author_IP'] );
if ( isset( $comment['comment_author_email'] ) && is_email( $comment['comment_author_email'] ) ) {
$check['email'] = $comment['comment_author_email'];
}
if ( isset( $comment['comment_author'] ) ) {
$check['username'] = $comment['comment_author'];
}
return ( mm_spam_stop_forum_spam_api( $check ) ) ? 'spam' : $approved;
}
add_action( 'pre_comment_approved' , 'mm_spam_check_comment', 99, 2 );
function mm_spam_add_blacklist_words( $words ) {
if ( isset( $_SERVER['PHP_SELF'] ) && strpos( $_SERVER['PHP_SELF'], '/options' ) || isset( $_SERVER['SCRIPT_NAME'] ) && strpos( $_SERVER['SCRIPT_NAME'], '/options' ) ) {
return $words;
}
$words = explode( "\n", $words );
$blocked_words = array( 'byob','poze','bdsm','paxil','cialis','incest','ambien','adipex','shemale','meridia','cumshot','adderall','hair-loss','bllogspot','hydrocodone','discreetordering','aceteminophen','augmentation','enhancement','phentermine','doxycycline','citalopram','cephalaxin','vicoprofen','lorazepam','oxycontin','oxycodone','percocet','tramadol','cymbalta','lesbian','lexapro','valtrex','titties','meridia','levitra','vicodin','ephedra','lipitor','breast','cyclen','viagra','valium','hqtube','ultram','clomid','vioxx','zolus','pussy','porno','xanax','penis','porn','dick','cock','tits','fuck','shit','gdf','gds' );
$words = array_merge( $words, $blocked_words );
$words = array_unique( $words );
$words = implode( "\n", $words );
return $words;
}
add_filter( 'option_blacklist_keys', 'mm_spam_add_blacklist_words' );
function mm_spam_add_moderation_words( $words ) {
if ( isset( $_SERVER['PHP_SELF'] ) && strpos( $_SERVER['PHP_SELF'], '/options' ) || isset( $_SERVER['SCRIPT_NAME'] ) && strpos( $_SERVER['SCRIPT_NAME'], '/options' ) ) {
return $words;
}
$words = explode( "\n", $words );
$moderated_words = array( 'д','и','ж','Ч','Б','[url=','[/url]','naked','sex','bitch','soma','gay','nude' );
$words = array_merge( $words, $moderated_words );
$words = array_unique( $words );
$words = implode( "\n", $words );
return $words;
}
add_filter( 'option_moderation_keys', 'mm_spam_add_moderation_words' );
function mm_spam_process_hidden_field( $data ) {
if ( is_user_logged_in() ) {
return $data;
}
if ( class_exists( 'Jetpack' ) && Jetpack::is_module_active( 'comments' ) ) {
return $data;
}
$spam_key = md5( $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'] );
if ( ! isset( $_POST['js-spam-prevention'] ) || $_POST['js-spam-prevention'] !== $spam_key ) {
if ( current_filter() !== 'registration_errors' ) {
die( 'Blocked as suspected bot.' );
} else {
$data->add( 'bot_error', 'Suspected bot.' );
}
}
return $data;
}
add_filter( 'preprocess_comment', 'mm_spam_process_hidden_field' );
add_filter( 'registration_errors', 'mm_spam_process_hidden_field' );
function mm_spam_add_hidden_field() {
$spam_key = md5( $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'] );
?>
<script type="text/javascript">
jQuery( document ).ready( function( $ ) {
$( '.comment-form, #registerform' ).append( '<input type="hidden" name="js-spam-prevention" value="<?php echo $spam_key; ?>"/>' );
} );
</script>
<?php
}
add_action( 'comment_form_after', 'mm_spam_add_hidden_field', 20 );
add_action( 'register_form', 'mm_spam_add_hidden_field' );