mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 10:18:54 +00:00
Add filters list to the resource view of a Gateway (#1987)
Closes https://github.com/firezone/product/issues/654
This commit is contained in:
@@ -8,7 +8,8 @@ defmodule API.Gateway.Views.Resource do
|
||||
address: resource.address,
|
||||
name: resource.name,
|
||||
ipv4: resource.ipv4,
|
||||
ipv6: resource.ipv6
|
||||
ipv6: resource.ipv6,
|
||||
filters: Enum.flat_map(resource.filters, &render_filter/1)
|
||||
}
|
||||
end
|
||||
|
||||
@@ -17,7 +18,37 @@ defmodule API.Gateway.Views.Resource do
|
||||
id: resource.id,
|
||||
type: :cidr,
|
||||
address: resource.address,
|
||||
name: resource.name
|
||||
name: resource.name,
|
||||
filters: Enum.flat_map(resource.filters, &render_filter/1)
|
||||
}
|
||||
end
|
||||
|
||||
def render_filter(%Resources.Resource.Filter{} = filter) do
|
||||
Enum.map(filter.ports, fn port ->
|
||||
case String.split(port, "-") do
|
||||
[port_start, port_end] ->
|
||||
port_start = port_to_number(port_start)
|
||||
port_end = port_to_number(port_end)
|
||||
|
||||
%{
|
||||
protocol: filter.protocol,
|
||||
port_range_start: port_start,
|
||||
port_range_end: port_end
|
||||
}
|
||||
|
||||
[port] ->
|
||||
port = port_to_number(port)
|
||||
|
||||
%{
|
||||
protocol: filter.protocol,
|
||||
port_range_start: port,
|
||||
port_range_end: port
|
||||
}
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
defp port_to_number(port) do
|
||||
port |> String.trim() |> String.to_integer()
|
||||
end
|
||||
end
|
||||
|
||||
@@ -89,7 +89,12 @@ defmodule API.Gateway.ChannelTest do
|
||||
name: resource.name,
|
||||
type: :dns,
|
||||
ipv4: resource.ipv4,
|
||||
ipv6: resource.ipv6
|
||||
ipv6: resource.ipv6,
|
||||
filters: [
|
||||
%{protocol: :tcp, port_range_end: 80, port_range_start: 80},
|
||||
%{protocol: :tcp, port_range_end: 433, port_range_start: 433},
|
||||
%{protocol: :udp, port_range_start: 100, port_range_end: 200}
|
||||
]
|
||||
}
|
||||
|
||||
assert payload.device_id == device.id
|
||||
@@ -173,7 +178,12 @@ defmodule API.Gateway.ChannelTest do
|
||||
name: resource.name,
|
||||
type: :dns,
|
||||
ipv4: resource.ipv4,
|
||||
ipv6: resource.ipv6
|
||||
ipv6: resource.ipv6,
|
||||
filters: [
|
||||
%{protocol: :tcp, port_range_end: 80, port_range_start: 80},
|
||||
%{protocol: :tcp, port_range_end: 433, port_range_start: 433},
|
||||
%{protocol: :udp, port_range_start: 100, port_range_end: 200}
|
||||
]
|
||||
}
|
||||
|
||||
assert payload.device == %{
|
||||
|
||||
Reference in New Issue
Block a user