* @license GPL-3.0 * @link http://www.ipgeoblock.com/ * @see http://www.ipgeoblock.com/codex/#filter-hooks * @example Use `IP_Geo_Block::add_filter()` instead of `add_filter()` */ class_exists( 'IP_Geo_Block', FALSE ) or die; /** * Analyze entries in "Validation logs" * * @param array $logs An array including each entry where: * Array ( * [0 DB row number] => 154 * [1 Target ] => comment * [2 Time ] => 1534580897 * [3 IP address ] => 102.177.147.*** * [4 Country code ] => ZA * [5 Result ] => blocked * [6 AS number ] => AS328239 * [7 Request ] => POST[80]:/wp-comments-post.php * [8 User agent ] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) ... * [9 HTTP headers ] => HTTP_ORIGIN=http://localhost,HTTP_X_FORWARDED_FOR=102.177.147.*** * [10 $_POST data ] => comment=Hello.,author,email,url,comment_post_ID,comment_parent * ) * * And put a mark at "Target" * ¹¹: Passed in Whitelist * ¹²: Passed in Blacklist * ¹³: Passed not in Lists * ²¹: Blocked in Whitelist * ²²: Blocked in Blacklist * ²³: Blocked not in Lists */ function ip_geo_block_logs( $logs ) { // Get settings of IP Geo Block $settings = IP_Geo_Block::get_option(); // White/Black list for back-end $white_backend = $settings['white_list']; $black_backend = $settings['black_list']; // White/Black list for front-end if ( $settings['public']['matching_rule'] < 0 ) { // Follow "Validation rule settings" $white_frontend = $white_backend; $black_frontend = $black_backend; } else { // Whitelist or Blacklist for "Public facing pages" $white_frontend = $settings['public']['white_list']; $black_frontend = $settings['public']['black_list']; } foreach ( $logs as $key => $log ) { // Passed or Blocked $mark = IP_Geo_Block::is_passed( $log[5] ) ? '¹' : '²'; // Whitelisted, Blacklisted or N/A if ( 'public' === $log[1] ) { $mark .= IP_Geo_Block::is_listed( $log[4], $white_frontend ) ? '¹' : ( IP_Geo_Block::is_listed( $log[4], $black_frontend ) ? '²' : '³' ); } else { $mark .= IP_Geo_Block::is_listed( $log[4], $white_backend ) ? '¹' : ( IP_Geo_Block::is_listed( $log[4], $black_backend ) ? '²' : '³' ); } // Put a mark at "Target" $logs[ $key ][1] .= $mark; } return $logs; } IP_Geo_Block::add_filter( 'ip-geo-block-logs', 'ip_geo_block_logs' ); /** * Register UI "Preset filters" at "Search in logs" * * @param array $filters An empty array by default. * @return array $filters The array of paired with 'title' and 'value'. */ function ip_geo_block_logs_preset( $filters ) { return array( array( 'title' => ' ' . __( 'Passed in Whitelist', 'ip-geo-block' ), 'value' => '¹¹' ), array( 'title' => ' ' . __( 'Passed in Blacklist', 'ip-geo-block' ), 'value' => '¹²' ), array( 'title' => ' ' . __( 'Passed not in List', 'ip-geo-block' ), 'value' => '¹³' ), array( 'title' => ' ' . __( 'Blocked in Whitelist', 'ip-geo-block' ), 'value' => '²¹' ), array( 'title' => ' ' . __( 'Blocked in Blacklist', 'ip-geo-block' ), 'value' => '²²' ), array( 'title' => ' ' . __( 'Blocked not in List', 'ip-geo-block' ), 'value' => '²³' ), ); } IP_Geo_Block::add_filter( 'ip-geo-block-logs-preset', 'ip_geo_block_logs_preset' );