mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
FEATURE: filter screened IP addresses
This commit is contained in:
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user