feat: rename masq to snat throughout, update generator to Shorewall 5 snat format
This commit is contained in:
@@ -40,7 +40,7 @@ export const configsApi = {
|
||||
}),
|
||||
}
|
||||
|
||||
// --- Nested resources (zones, interfaces, policies, rules, masq) ---
|
||||
// --- Nested resources (zones, interfaces, policies, rules, snat) ---
|
||||
const nestedApi = (resource: string) => ({
|
||||
list: (configId: number) => api.get(`/configs/${configId}/${resource}`),
|
||||
create: (configId: number, data: object) => api.post(`/configs/${configId}/${resource}`, data),
|
||||
@@ -54,4 +54,4 @@ export const zonesApi = nestedApi('zones')
|
||||
export const interfacesApi = nestedApi('interfaces')
|
||||
export const policiesApi = nestedApi('policies')
|
||||
export const rulesApi = nestedApi('rules')
|
||||
export const masqApi = nestedApi('masq')
|
||||
export const snatApi = nestedApi('snat')
|
||||
|
||||
@@ -18,7 +18,7 @@ interface GeneratedFiles {
|
||||
interfaces: string
|
||||
policy: string
|
||||
rules: string
|
||||
masq: string
|
||||
snat: string
|
||||
}
|
||||
|
||||
interface Props {
|
||||
@@ -28,7 +28,7 @@ interface Props {
|
||||
onClose: () => void
|
||||
}
|
||||
|
||||
const TABS = ['zones', 'interfaces', 'policy', 'rules', 'masq'] as const
|
||||
const TABS = ['zones', 'interfaces', 'policy', 'rules', 'snat'] as const
|
||||
|
||||
export default function GenerateModal({ open, configId, configName, onClose }: Props) {
|
||||
const [tab, setTab] = useState(0)
|
||||
|
||||
@@ -12,14 +12,14 @@ import Typography from '@mui/material/Typography'
|
||||
import Breadcrumbs from '@mui/material/Breadcrumbs'
|
||||
import AddIcon from '@mui/icons-material/Add'
|
||||
import BuildIcon from '@mui/icons-material/Build'
|
||||
import { zonesApi, interfacesApi, policiesApi, rulesApi, masqApi, configsApi } from '../api'
|
||||
import { zonesApi, interfacesApi, policiesApi, rulesApi, snatApi, configsApi } from '../api'
|
||||
|
||||
// ---- Types ----
|
||||
interface Zone { id: number; name: string; type: string; options: string }
|
||||
interface Iface { id: number; name: string; zone_id: number; options: string }
|
||||
interface Policy { id: number; src_zone_id: number; dst_zone_id: number; policy: string; log_level: string; comment: string; position: number }
|
||||
interface Rule { id: number; action: string; src_zone_id: number | null; dst_zone_id: number | null; src_ip: string; dst_ip: string; proto: string; dport: string; sport: string; comment: string; position: number }
|
||||
interface Masq { id: number; source_network: string; out_interface: string; to_address: string; comment: string }
|
||||
interface Snat { id: number; source_network: string; out_interface: string; to_address: string; comment: string }
|
||||
|
||||
type AnyEntity = { id: number } & Record<string, unknown>
|
||||
|
||||
@@ -33,7 +33,7 @@ export default function ConfigDetail() {
|
||||
const [interfaces, setInterfaces] = useState<Iface[]>([])
|
||||
const [policies, setPolicies] = useState<Policy[]>([])
|
||||
const [rules, setRules] = useState<Rule[]>([])
|
||||
const [masq, setMasq] = useState<Masq[]>([])
|
||||
const [snat, setSnat] = useState<Snat[]>([])
|
||||
const [formOpen, setFormOpen] = useState(false)
|
||||
const [editing, setEditing] = useState<AnyEntity | null>(null)
|
||||
const [generateOpen, setGenerateOpen] = useState(false)
|
||||
@@ -44,7 +44,7 @@ export default function ConfigDetail() {
|
||||
interfacesApi.list(configId).then((r) => setInterfaces(r.data))
|
||||
policiesApi.list(configId).then((r) => setPolicies(r.data))
|
||||
rulesApi.list(configId).then((r) => setRules(r.data))
|
||||
masqApi.list(configId).then((r) => setMasq(r.data))
|
||||
snatApi.list(configId).then((r) => setSnat(r.data))
|
||||
}, [configId])
|
||||
|
||||
const zoneOptions = zones.map((z) => ({ value: z.id, label: z.name }))
|
||||
@@ -151,10 +151,10 @@ export default function ConfigDetail() {
|
||||
] as FieldDef[],
|
||||
},
|
||||
{
|
||||
label: 'Masq/NAT',
|
||||
rows: masq as unknown as AnyEntity[],
|
||||
setRows: setMasq as unknown as Dispatch<SetStateAction<AnyEntity[]>>,
|
||||
api: masqApi,
|
||||
label: 'SNAT',
|
||||
rows: snat as unknown as AnyEntity[],
|
||||
setRows: setSnat as unknown as Dispatch<SetStateAction<AnyEntity[]>>,
|
||||
api: snatApi,
|
||||
columns: [
|
||||
{ key: 'out_interface' as const, label: 'Out Interface' },
|
||||
{ key: 'source_network' as const, label: 'Source Network' },
|
||||
|
||||
Reference in New Issue
Block a user