Add WafPolicies
This commit is contained in:
@@ -11,6 +11,12 @@ class EventsController < ApplicationController
|
||||
@events = @events.by_waf_action(params[:waf_action]) if params[:waf_action].present?
|
||||
@events = @events.where(country_code: params[:country]) if params[:country].present?
|
||||
|
||||
# Network-based filters
|
||||
@events = @events.by_company(params[:company]) if params[:company].present?
|
||||
@events = @events.by_network_type(params[:network_type]) if params[:network_type].present?
|
||||
@events = @events.by_asn(params[:asn]) if params[:asn].present?
|
||||
@events = @events.by_network_cidr(params[:network_cidr]) if params[:network_cidr].present?
|
||||
|
||||
Rails.logger.debug "Events count after filtering: #{@events.count}"
|
||||
|
||||
# Debug info
|
||||
@@ -19,7 +25,24 @@ class EventsController < ApplicationController
|
||||
# Paginate
|
||||
@pagy, @events = pagy(@events, items: 50)
|
||||
|
||||
# Preload network ranges for all unique IPs to avoid N+1 queries
|
||||
unique_ips = @events.pluck(:ip_address).uniq.compact
|
||||
@network_ranges_by_ip = {}
|
||||
unique_ips.each do |ip|
|
||||
ip_string = ip.to_s # IPAddr objects can be converted to string
|
||||
range = NetworkRange.contains_ip(ip_string).first
|
||||
|
||||
# Auto-generate network range if no match found
|
||||
unless range
|
||||
range = NetworkRangeGenerator.find_or_create_for_ip(ip)
|
||||
Rails.logger.debug "Auto-generated network range #{range&.cidr} for IP #{ip_string}" if range
|
||||
end
|
||||
|
||||
@network_ranges_by_ip[ip_string] = range if range
|
||||
end
|
||||
|
||||
Rails.logger.debug "Events count after pagination: #{@events.count}"
|
||||
Rails.logger.debug "Pagy info: #{@pagy.count} total, #{@pagy.pages} pages"
|
||||
Rails.logger.debug "Preloaded network ranges for #{@network_ranges_by_ip.count} unique IPs"
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user