linuxrouter/docker/routlin-dash/app/pages/intervlan/content.json

185 lines
5.3 KiB
JSON
Raw Permalink Normal View History

2026-05-27 20:56:30 -04:00
{
"client_requirement": "client_is_viewer+",
"items": [
{
"type": "header_page_title",
"items": [
{
"type": "h1",
"text": "Inter-VLAN Exceptions"
},
{
"type": "p",
"text": "Firewall rules that permit specific traffic to cross VLAN boundaries."
}
]
},
{
"type": "table",
"datasource": "config:inter_vlan_exceptions",
"empty_message": "No inter-VLAN exceptions configured. All cross-VLAN traffic is blocked by default.",
"columns": [
{
"label": "Description",
"field": "description"
},
{
"label": "Protocol",
"field": "protocol",
2026-05-31 22:01:59 -04:00
"class": "col-mono col-narrow"
2026-05-27 20:56:30 -04:00
},
{
"label": "Source",
"field": "src_ip_or_subnet",
"class": "col-mono"
},
{
"label": "Destination",
"field": "dst_ip_or_subnet",
"class": "col-mono"
},
{
2026-06-01 00:54:59 -04:00
"label": "Port Start",
"field": "dest_port_start",
2026-05-31 22:01:59 -04:00
"class": "col-mono col-narrow"
},
{
2026-06-01 00:54:59 -04:00
"label": "Port End",
"field": "dest_port_end",
2026-05-31 22:01:59 -04:00
"class": "col-mono col-narrow"
2026-05-27 20:56:30 -04:00
},
{
2026-06-05 22:16:52 -04:00
"label": "Rule State",
2026-05-27 20:56:30 -04:00
"field": "enabled",
"render": "badge_enabled_disabled"
}
],
"row_actions": [
{
"client_requirement": "client_is_administrator+",
2026-06-02 14:09:05 -04:00
"method": "js_edit",
"target": "add-form",
2026-05-27 20:56:30 -04:00
"text": "Edit",
2026-06-02 14:09:05 -04:00
"class": "btn-ghost btn-sm"
2026-05-27 20:56:30 -04:00
},
{
"client_requirement": "client_is_administrator+",
2026-05-27 22:04:04 -04:00
"action": "/action/intervlan/table_delete",
2026-05-27 20:56:30 -04:00
"method": "post",
"text": "Delete",
"class": "btn-danger btn-sm"
}
]
},
{
"type": "card",
"id": "add-form",
"label": "Add Exception",
"client_requirement": "client_is_administrator+",
"items": [
{
"type": "form",
2026-05-27 22:04:04 -04:00
"action": "/action/intervlan/addexception_add",
2026-05-27 20:56:30 -04:00
"method": "post",
"items": [
2026-06-02 14:09:05 -04:00
{
"type": "hidden",
"name": "row_index",
"value": ""
},
2026-05-27 20:56:30 -04:00
{
"type": "field",
"label": "Description",
"name": "description",
"input_type": "text",
"placeholder": "e.g. Allow Chromecast"
},
{
2026-05-31 22:01:59 -04:00
"type": "field_row",
2026-06-01 00:25:16 -04:00
"cols": 2,
2026-05-31 22:01:59 -04:00
"items": [
2026-06-01 00:25:16 -04:00
{
"type": "field",
"label": "Source",
"name": "src_ip_or_subnet",
"input_type": "text",
2026-06-06 00:51:30 -04:00
"validate": "VALIDATION_IPV4_CIDRFLEX",
2026-06-01 00:25:16 -04:00
"placeholder": "e.g. 192.168.20.100 or 192.168.20.0/24",
"hint": "You may allow either a single device IP or an entire subnet to contact dest."
},
2026-05-31 23:17:30 -04:00
{
2026-06-01 00:22:54 -04:00
"type": "field",
"label": "Destination",
"name": "dst_ip_or_subnet",
"input_type": "text",
2026-06-06 00:51:30 -04:00
"validate": "VALIDATION_IPV4_CIDRFLEX",
2026-06-01 00:22:54 -04:00
"placeholder": "e.g. 192.168.10.200 or 192.168.10.0/24",
"hint": "You may allow either a single device IP or an entire subnet to be reached by source."
2026-06-01 00:25:16 -04:00
}
]
},
{
"type": "field_row",
"cols": 3,
"items": [
{
"type": "field",
"label": "Protocol",
"name": "protocol",
"input_type": "select",
"options": "%PROTOCOL_OPTIONS%"
2026-06-01 00:22:54 -04:00
},
{
"type": "field",
"label": "Dest Port Range Start",
2026-06-01 00:54:59 -04:00
"name": "dest_port_start",
2026-06-01 00:22:54 -04:00
"input_type": "number",
"min": 1,
2026-06-01 00:30:49 -04:00
"max": 65535
2026-05-31 23:17:30 -04:00
},
2026-05-31 22:01:59 -04:00
{
"type": "field",
2026-06-01 00:22:54 -04:00
"label": "Dest Port Range End",
2026-06-01 00:54:59 -04:00
"name": "dest_port_end",
2026-06-01 00:22:54 -04:00
"input_type": "number",
"min": 1,
"max": 65535
2026-05-31 22:01:59 -04:00
}
]
2026-05-27 20:56:30 -04:00
},
2026-06-01 00:30:49 -04:00
{
"type": "raw_html",
2026-06-01 00:40:06 -04:00
"html": "<p class=\"form-hint\" style=\"margin-top:-1rem\">This exception only applies to traffic matching the selected protocol and destination port range.</p>"
2026-06-01 00:30:49 -04:00
},
2026-06-05 22:54:12 -04:00
{
"type": "raw_html",
"html": "<br>"
},
2026-06-02 14:09:05 -04:00
{
"type": "field",
"label": "Enabled",
"name": "enabled",
"input_type": "checkbox"
},
2026-05-27 20:56:30 -04:00
{
"type": "button_row",
"items": [
{
"type": "button_primary",
2026-05-27 22:04:04 -04:00
"action": "/action/intervlan/addexception_add",
2026-05-27 20:56:30 -04:00
"method": "post",
"text": "Add Exception"
},
{
"type": "button_cancel",
"text": "Cancel"
}
]
}
]
}
]
}
]
2026-05-31 22:01:59 -04:00
}