fix(firewall): NAT-Regeln nach Priorität sortieren + Port-Range-Validierung (v1.1.137)
- dataSource: data→sortedNAT — Up/Down-Pfeile zeigten auf falschen Nachbarn - Form.Item dependencies: dportEnd/targetPortEnd validiert ≥ Start-Port - Modal destroyOnHidden: Formular-State nach Schließen zurückgesetzt Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -216,7 +216,7 @@ export default function NATRulesTab() {
|
||||
<DataTable
|
||||
rowKey="id"
|
||||
loading={isLoading}
|
||||
dataSource={data ?? []}
|
||||
dataSource={sortedNAT}
|
||||
columns={columns}
|
||||
emptyContent={
|
||||
<EmptyState
|
||||
@@ -237,6 +237,7 @@ export default function NATRulesTab() {
|
||||
onCancel={() => { setEditing(null); setCreating(false) }}
|
||||
onOk={() => { void form.submit() }}
|
||||
confirmLoading={create.isPending || update.isPending}
|
||||
destroyOnHidden
|
||||
width={560}
|
||||
>
|
||||
<Form
|
||||
@@ -289,7 +290,19 @@ export default function NATRulesTab() {
|
||||
<Form.Item label={t('fw.nat.dportStart')} name="match_dport_start" rules={[{ required: true }]}>
|
||||
<InputNumber min={1} max={65535} />
|
||||
</Form.Item>
|
||||
<Form.Item label={t('fw.nat.dportEnd')} name="match_dport_end">
|
||||
<Form.Item
|
||||
label={t('fw.nat.dportEnd')}
|
||||
name="match_dport_end"
|
||||
dependencies={['match_dport_start']}
|
||||
rules={[({ getFieldValue }) => ({
|
||||
validator(_, val) {
|
||||
if (!val) return Promise.resolve()
|
||||
return val >= getFieldValue('match_dport_start')
|
||||
? Promise.resolve()
|
||||
: Promise.reject(new Error(t('fw.nat.portRangeError')))
|
||||
},
|
||||
})]}
|
||||
>
|
||||
<InputNumber min={1} max={65535} />
|
||||
</Form.Item>
|
||||
</Space>
|
||||
@@ -305,7 +318,19 @@ export default function NATRulesTab() {
|
||||
<Form.Item label={t('fw.nat.targetPortStart')} name="target_port_start">
|
||||
<InputNumber min={1} max={65535} />
|
||||
</Form.Item>
|
||||
<Form.Item label={t('fw.nat.targetPortEnd')} name="target_port_end">
|
||||
<Form.Item
|
||||
label={t('fw.nat.targetPortEnd')}
|
||||
name="target_port_end"
|
||||
dependencies={['target_port_start']}
|
||||
rules={[({ getFieldValue }) => ({
|
||||
validator(_, val) {
|
||||
if (!val) return Promise.resolve()
|
||||
return val >= getFieldValue('target_port_start')
|
||||
? Promise.resolve()
|
||||
: Promise.reject(new Error(t('fw.nat.portRangeError')))
|
||||
},
|
||||
})]}
|
||||
>
|
||||
<InputNumber min={1} max={65535} />
|
||||
</Form.Item>
|
||||
</Space>
|
||||
|
||||
Reference in New Issue
Block a user