Restructure white ip interfaces #2713

This commit is contained in:
Martin Lensment 2015-09-15 14:00:19 +03:00
parent cc32312328
commit c6073c7e87
9 changed files with 32 additions and 23 deletions

View file

@ -51,6 +51,6 @@ class Admin::WhiteIpsController < AdminController
end
def white_ip_params
params.require(:white_ip).permit(:ipv4, :ipv6, :interface, :registrar_id)
params.require(:white_ip).permit(:ipv4, :ipv6, :registrar_id, { interfaces: [] })
end
end

View file

@ -17,19 +17,17 @@ class WhiteIp < ActiveRecord::Base
REGISTRAR = 'registrar'
INTERFACES = [API, REGISTRAR]
scope :api, -> { where(interface: API) }
scope :registrar, -> { where(interface: REGISTRAR) }
scope :api, -> { where("interfaces @> ?::varchar[]", "{#{API}}") }
scope :registrar, -> { where("interfaces @> ?::varchar[]", "{#{REGISTRAR}}") }
def interfaces=(interfaces)
super(interfaces.reject(&:blank?))
end
class << self
def registrar_ip_white?(ip)
return true unless Setting.registrar_ip_whitelist_enabled
at = WhiteIp.arel_table
WhiteIp.where(
at[:interface].eq(REGISTRAR).and(
at[:ipv4].eq(ip)
)
).any?
WhiteIp.where(ipv4: ip).registrar.any?
end
end
end

View file

@ -92,10 +92,10 @@
%tr
%th{class: 'col-xs-4'}= t(:ipv4)
%th{class: 'col-xs-6'}= t(:ipv6)
%th{class: 'col-xs-2'}= t(:interface)
%th{class: 'col-xs-2'}= t(:interfaces)
%tbody
- @registrar.white_ips.order(:interface).each do |x|
- @registrar.white_ips.each do |x|
%tr
%td= link_to(x.ipv4, [:admin, @registrar, x])
%td= link_to(x.ipv6, [:admin, @registrar, x])
%td= x.interface.upcase
%td= x.interfaces.join(', ').upcase

View file

@ -19,11 +19,13 @@
= f.label :ipv6
.col-md-7
= f.text_field(:ipv6, class: 'form-control', ipv6: true, autocomplete: 'off')
.form-group
.col-md-4.control-label
= f.label :interface
.col-md-7
= f.select :interface, WhiteIp::INTERFACES.map {|x| [x.upcase, x]}, {}, class: 'form-control selectize'
- WhiteIp::INTERFACES.each do |x|
.form-group
.col-md-4.control-label
= f.label x
.col-md-7
= f.check_box :interfaces, { multiple: true }, x, nil
= hidden_field_tag "white_ip[interfaces][]", nil
%hr
.row
.col-md-8.text-right

View file

@ -20,5 +20,5 @@
%dt= t(:ipv6)
%dd= @white_ip.ipv6
%dt= t(:interface)
%dd= @white_ip.interface.upcase
%dt= t(:interfaces)
%dd= @white_ip.interfaces.join(', ').upcase