Lots of updates
This commit is contained in:
@@ -17,8 +17,13 @@ class ProcessWafPoliciesJob < ApplicationJob
|
||||
Rails.logger.debug "Processing WAF policies for network range #{network_range.cidr}"
|
||||
|
||||
# Use WafPolicyMatcher to find and generate rules
|
||||
matcher = WafPolicyMatcher.new(network_range: network_range)
|
||||
result = matcher.match_and_generate_rules
|
||||
begin
|
||||
matcher = WafPolicyMatcher.new(network_range: network_range)
|
||||
result = matcher.match_and_generate_rules
|
||||
rescue => e
|
||||
Rails.logger.error "WafPolicyMatcher failed for network range #{network_range.cidr}: #{e.message}"
|
||||
result = { matching_policies: [], generated_rules: [] }
|
||||
end
|
||||
|
||||
# Log results
|
||||
if result[:matching_policies].any?
|
||||
@@ -42,27 +47,36 @@ class ProcessWafPoliciesJob < ApplicationJob
|
||||
Rails.logger.info " Challenge type: #{rule.challenge_type}"
|
||||
end
|
||||
end
|
||||
|
||||
# Trigger agent sync for new rules if there are any
|
||||
if result[:generated_rules].any?
|
||||
RulesSyncJob.perform_later
|
||||
end
|
||||
else
|
||||
Rails.logger.debug "No matching policies found for network range #{network_range.cidr}"
|
||||
end
|
||||
|
||||
# Mark network range as evaluated
|
||||
network_range.update_column(:policies_evaluated_at, Time.current)
|
||||
|
||||
# Update event record if provided
|
||||
if event_id.present?
|
||||
event = Event.find_by(id: event_id)
|
||||
if event.present?
|
||||
# Add policy match information to event metadata
|
||||
event.update!(payload: event.payload.merge({
|
||||
# Handle potential nil payload or type issues
|
||||
current_payload = event.payload || {}
|
||||
|
||||
# Ensure payload is a hash before merging
|
||||
unless current_payload.is_a?(Hash)
|
||||
Rails.logger.warn "Event #{event_id} has invalid payload type: #{current_payload.class}, resetting to hash"
|
||||
current_payload = {}
|
||||
end
|
||||
|
||||
event.update!(payload: current_payload.merge({
|
||||
policy_matches: {
|
||||
matching_policies_count: result[:matching_policies].length,
|
||||
generated_rules_count: result[:generated_rules].length,
|
||||
processed_at: Time.current.iso8601
|
||||
}
|
||||
}))
|
||||
else
|
||||
Rails.logger.warn "Event #{event_id} not found for ProcessWafPoliciesJob, skipping update"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user