FEATURE: filter screened IP addresses

This commit is contained in:
Régis Hanol
2015-02-10 19:38:59 +01:00
parent 9b12e53d9c
commit c4e427cf73
8 changed files with 65 additions and 23 deletions

View File

@ -1,9 +1,24 @@
require_dependency 'ip_addr'
class Admin::ScreenedIpAddressesController < Admin::AdminController
before_filter :fetch_screened_ip_address, only: [:update, :destroy]
def index
screened_ip_addresses = ScreenedIpAddress.limit(200).order('match_count desc').to_a
filter = params[:filter]
filter = IPAddr.handle_wildcards(filter)
screened_ip_addresses = ScreenedIpAddress
screened_ip_addresses = screened_ip_addresses.where("cidr '#{filter}' >>= ip_address") if filter.present?
screened_ip_addresses = screened_ip_addresses.limit(200).order('match_count desc')
begin
screened_ip_addresses = screened_ip_addresses.to_a
rescue ActiveRecord::StatementInvalid
# postgresql throws a PG::InvalidTextRepresentation exception when filter isn't a valid cidr expression
screened_ip_addresses = []
end
render_serialized(screened_ip_addresses, ScreenedIpAddressSerializer)
end