' . "\n"; echo $banned_message; exit(); } ### Function: Process Banning function process_ban($banarray, $against) { if(!empty($banarray) && !empty($against)) { foreach($banarray as $cban) { if(preg_match_wildcard($cban, $against)) { print_banned_message(); } } } return; } ### Function: Process Banned IP Range function process_ban_ip_range($banned_ips_range) { if(!empty($banned_ips_range)) { foreach($banned_ips_range as $banned_ip_range) { $range = explode('-', $banned_ip_range); $range_start = trim($range[0]); $range_end = trim($range[1]); if(check_ip_within_range(ban_get_ip(), $range_start, $range_end)) { print_banned_message(); break; } } } } ### Function: Banned add_action( 'init', 'banned' ); function banned() { $ip = ban_get_ip(); if ( $ip === 'unknown' ) { return; } $banned_ips = get_option( 'banned_ips' ); if ( is_array( $banned_ips ) ) $banned_ips = array_filter( $banned_ips ); $banned_ips_range = get_option( 'banned_ips_range' ); if ( is_array( $banned_ips_range ) ) $banned_ips_range = array_filter( $banned_ips_range ); $banned_hosts = get_option( 'banned_hosts' ); if ( is_array( $banned_hosts ) ) $banned_hosts = array_filter( $banned_hosts ); $banned_referers = get_option( 'banned_referers' ); if ( is_array( $banned_referers ) ) $banned_referers = array_filter( $banned_referers ); $banned_user_agents = get_option( 'banned_user_agents' ); if ( is_array( $banned_user_agents ) ) $banned_user_agents = array_filter( $banned_user_agents ); $banned_exclude_ips = get_option('banned_exclude_ips'); if ( is_array( $banned_exclude_ips ) ) $banned_exclude_ips = array_filter( $banned_exclude_ips ); $is_excluded = false; if ( ! empty( $banned_exclude_ips ) ) { foreach( $banned_exclude_ips as $banned_exclude_ip ) { if ( $ip === $banned_exclude_ip ) { $is_excluded = true; break; } } } if ( ! $is_excluded ) { if( ! empty( $banned_ips ) ) { process_ban( $banned_ips, $ip ); } if ( ! empty( $banned_ips_range ) ) { process_ban_ip_range( $banned_ips_range ); } if ( ! empty( $banned_hosts ) ) { process_ban( $banned_hosts, @gethostbyaddr( $ip ) ); } if ( ! empty( $banned_referers ) && ! empty( $_SERVER['HTTP_REFERER'] ) ) { process_ban( $banned_referers, $_SERVER['HTTP_REFERER'] ); } if ( ! empty( $banned_user_agents ) && ! empty( $_SERVER['HTTP_USER_AGENT'] ) ) { process_ban( $banned_user_agents, $_SERVER['HTTP_USER_AGENT'] ); } } } ### Function: Check Whether Or Not The IP Address Belongs To Admin function is_admin_ip($check) { return preg_match_wildcard($check, ban_get_ip()); } ### Function: Check Whether IP Within A Given IP Range function check_ip_within_range($ip, $range_start, $range_end) { $range_start = ip2long($range_start); $range_end = ip2long($range_end); $ip = ip2long($ip); if($ip !== false && $ip >= $range_start && $ip <= $range_end) { return true; } return false; } ### Function: Check Whether Or Not The Hostname Belongs To Admin function is_admin_hostname($check) { return preg_match_wildcard($check, @gethostbyaddr(ban_get_ip())); } ### Function: Check Whether Or Not The Referer Belongs To This Site function is_admin_referer($check) { $url_patterns = array(get_option('siteurl'), get_option('home'), get_option('siteurl').'/', get_option('home').'/', get_option('siteurl').'/ ', get_option('home').'/ ', $_SERVER['HTTP_REFERER']); foreach($url_patterns as $url) { if(preg_match_wildcard($check, $url)) { return true; } } return false; } ### Function: Check Whether Or Not The User Agent Is Used by Admin function is_admin_user_agent($check) { return preg_match_wildcard($check, $_SERVER['HTTP_USER_AGENT']); } ### Function: Wildcard Check function preg_match_wildcard($regex, $subject) { $regex = preg_quote($regex, '#'); $regex = str_replace('\*', '.*', $regex); if(preg_match("#^$regex$#", $subject)) { return true; } else { return false; } } ### Function: Activate Plugin register_activation_hook( __FILE__, 'ban_activation' ); function ban_activation( $network_wide ) { if ( is_multisite() && $network_wide ) { $ms_sites = wp_get_sites(); if( 0 < sizeof( $ms_sites ) ) { foreach ( $ms_sites as $ms_site ) { switch_to_blog( $ms_site['blog_id'] ); ban_activate(); } } restore_current_blog(); } else { ban_activate(); } } function ban_activate() { add_option('banned_ips', array()); add_option('banned_hosts',array()); add_option('banned_stats', array('users' => array(), 'count' => 0)); add_option('banned_message', ''."\n". '
'."\n". ''."\n". ''.__('You Are Banned.', 'wp-ban').'
'."\n". '