Fix some blocked/allow laggards after migrating. Add DuckDB for outstanding analyitcs performance. Start adding an import for all bot networks
This commit is contained in:
@@ -46,12 +46,9 @@ class RulesController < ApplicationController
|
||||
process_quick_create_parameters
|
||||
|
||||
# Handle network range creation if CIDR is provided
|
||||
if params[:cidr].present? && @rule.network_rule?
|
||||
network_range = NetworkRange.find_or_create_by(cidr: params[:cidr]) do |range|
|
||||
range.user = Current.user
|
||||
range.source = 'manual'
|
||||
range.creation_reason = "Created for rule ##{@rule.id}"
|
||||
end
|
||||
cidr_param = params[:new_cidr].presence || params[:cidr].presence
|
||||
if cidr_param.present? && @rule.network_rule?
|
||||
network_range = NetworkRange.find_or_create_by_cidr(cidr_param, user: Current.user, source: 'manual')
|
||||
@rule.network_range = network_range
|
||||
end
|
||||
|
||||
@@ -132,7 +129,9 @@ class RulesController < ApplicationController
|
||||
:expires_at,
|
||||
:enabled,
|
||||
:source,
|
||||
:network_range_id
|
||||
:network_range_id,
|
||||
:header_name,
|
||||
:header_value
|
||||
]
|
||||
|
||||
# Only include conditions for non-network rules
|
||||
@@ -250,15 +249,24 @@ def process_quick_create_parameters
|
||||
})
|
||||
end
|
||||
|
||||
# Parse metadata if it's a string that looks like JSON
|
||||
if @rule.metadata.is_a?(String) && @rule.metadata.starts_with?('{')
|
||||
# Parse metadata textarea first if it's JSON
|
||||
if @rule.metadata.is_a?(String) && @rule.metadata.present? && @rule.metadata.starts_with?('{')
|
||||
begin
|
||||
@rule.metadata = JSON.parse(@rule.metadata)
|
||||
rescue JSON::ParserError
|
||||
# Keep as string if not valid JSON
|
||||
# Keep as string if not valid JSON - will be caught by validation
|
||||
end
|
||||
end
|
||||
|
||||
# Ensure metadata is a hash
|
||||
@rule.metadata = {} unless @rule.metadata.is_a?(Hash)
|
||||
|
||||
# Handle add_header fields - use provided params or existing metadata values
|
||||
if @rule.add_header_action? && (params[:header_name].present? || params[:header_value].present?)
|
||||
@rule.metadata['header_name'] = params[:header_name].presence || @rule.metadata['header_name'] || 'X-Bot-Agent'
|
||||
@rule.metadata['header_value'] = params[:header_value].presence || @rule.metadata['header_value'] || 'Unknown'
|
||||
end
|
||||
|
||||
# Handle expires_at parsing for text input
|
||||
if params.dig(:rule, :expires_at).present?
|
||||
expires_at_str = params[:rule][:expires_at].strip
|
||||
|
||||
Reference in New Issue
Block a user