More use of tags - drop add_header action -> allow + headers+tags
This commit is contained in:
@@ -7,7 +7,11 @@
|
||||
# and classification flags (datacenter, proxy, VPN).
|
||||
class NetworkRange < ApplicationRecord
|
||||
# Sources for network range creation
|
||||
SOURCES = %w[api_imported user_created manual auto_generated inherited geolite_asn geolite_country].freeze
|
||||
SOURCES = %w[api_imported user_created manual auto_generated inherited geolite_asn geolite_country
|
||||
bot_import_amazon_aws bot_import_google bot_import_microsoft_bing bot_import_anthropic
|
||||
bot_import_openai_searchbot bot_import_openai_chatgpt_user bot_import_openai_gptbot
|
||||
bot_import_cloudflare bot_import_facebook bot_import_applebot bot_import_duckduckgo
|
||||
production_import].freeze
|
||||
|
||||
# Associations
|
||||
has_many :rules, dependent: :destroy
|
||||
@@ -116,19 +120,19 @@ class NetworkRange < ApplicationRecord
|
||||
|
||||
# Parent/child relationships
|
||||
def parent_ranges
|
||||
NetworkRange.where("?::inet << network AND masklen(network) < ?", network.to_s, prefix_length)
|
||||
.order("masklen(network) DESC")
|
||||
# Find networks that contain this network (less specific / shorter prefix)
|
||||
# The << operator implicitly means the containing network has a shorter prefix
|
||||
# IMPORTANT: Use cidr (not network.to_s) to preserve the network mask
|
||||
NetworkRange.where("?::inet << network", cidr)
|
||||
.order("masklen(network) DESC") # Most specific parent first
|
||||
end
|
||||
|
||||
def child_ranges
|
||||
NetworkRange.where("network >> ?::inet AND masklen(network) > ?", network.to_s, prefix_length)
|
||||
.order("masklen(network) ASC")
|
||||
end
|
||||
|
||||
def sibling_ranges
|
||||
NetworkRange.where("masklen(network) = ?", prefix_length)
|
||||
.where("network && ?::inet", network.to_s)
|
||||
.where.not(id: id)
|
||||
# Find networks that are contained by this network (more specific / longer prefix)
|
||||
# The >> operator implicitly means the contained network has a longer prefix
|
||||
# IMPORTANT: Use cidr (not network.to_s) to preserve the network mask
|
||||
NetworkRange.where("?::inet >> network", cidr)
|
||||
.order("masklen(network) ASC") # Least specific child first
|
||||
end
|
||||
|
||||
# Find nearest parent with intelligence data
|
||||
|
||||
Reference in New Issue
Block a user