feat(editor): F4.5c the DHCP server and the port forwarding in the device sheet

Measured first: SheetRun now types into FILIUS' DHCP dialog and keeps rows
in its port forwarding dialog. Java's DHCP server keeps its bounds as typed
(".0.0.1" too), never takes an empty gateway or DNS server, hands out the
device's gateway and DNS server unless its own (a home router always its
LAN address, where "manual settings" do nothing), drops a second static
assignment of a MAC address silently and lets "_" through its MAC pattern;
the port forwarding dialog keeps any row, its firmware forwards only the
valid ones. Here a value passes its rule or is not taken, with a word why.

- doc: DHCP server addresses and flags, static assignments (a MAC address
  once, ignoring case), port forwarding rows (TCP or UDP, musterPort, the
  LAN address); the sheet shows what the server hands out and which rows
  Java's firmware forwards (the core's parsePortForwardingRow, exported)
- editor: Java's dialogs as pages of the sheet with a back button, the
  three row tables on one RowsEditor (the forwarding table rebuilt on it);
  a sheet per device, so an open page closes when another device is chosen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 12:16:04 +00:00
co-authored by Claude Opus 5.5
parent eff9433673
commit c8edb87210
22 changed files with 1525 additions and 143 deletions
+23 -1
View File
@@ -27,6 +27,25 @@
"device.remoteLink": "Modem",
"device.router": "Router",
"device.unsupported": "Unknown device",
"dhcp.active": "Activate DHCP",
"dhcp.add": "Add",
"dhcp.basic": "Base Settings",
"dhcp.dnsServer": "DNS server",
"dhcp.gateway": "Gateway",
"dhcp.ipAddress": "IP Address",
"dhcp.lowerBound": "Lower bound of address",
"dhcp.macAddress": "MAC Address",
"dhcp.macTaken": "This MAC address has a static address already.",
"dhcp.ownSettings": "Manual configuration",
"dhcp.ownSettingsHint": "Usually the same settings as configured for the host system will be used for the DHCP server as well. However, different settings are possible if this checkbox is selected.",
"dhcp.remove": "Remove",
"dhcp.static": "Static Address Assignment",
"dhcp.subnetMask": "Netmask",
"dhcp.upperBound": "Upper bound of address",
"forwarding.lanIPAddress": "LAN Address",
"forwarding.lanPortValue": "LAN Port",
"forwarding.protocolValue": "Protocol",
"forwarding.publicPortValue": "Mapped Port",
"menu.delete": "Delete",
"menu.removeAllCables": "Remove all cables",
"menu.removeCable": "Remove cable",
@@ -37,6 +56,7 @@
"router.cancel": "Cancel",
"router.prompt": "Choose number of NIC of the router!",
"router.title": "Number of NIC",
"sheet.back": "Back",
"sheet.cable": "Cable (LAN)",
"sheet.cablePlugged": "The cable is still plugged in.",
"sheet.cards": "Network cards",
@@ -48,6 +68,7 @@
"sheet.defaultGateway": "Gateway",
"sheet.deleteEntry": "Delete entry",
"sheet.dhcpClient": "Use DHCP for configuration",
"sheet.dhcpServer": "DHCP server setup",
"sheet.dnsServer": "Domain Name Server",
"sheet.empty": "(empty)",
"sheet.forwardingTable": "Forwarding table",
@@ -61,11 +82,12 @@
"sheet.name": "Name",
"sheet.network": "Wireless Network (SSID)",
"sheet.newEntry": "New entry",
"sheet.newEntryHint": "The row is taken once all four fields are valid.",
"sheet.newEntryHint": "The row is taken once all fields are valid.",
"sheet.nic": "NIC {number}",
"sheet.notConnected": "No Connection",
"sheet.notTaken": "Not taken – still {value}.",
"sheet.port": "Port",
"sheet.portForwarding": "Port Mapping",
"sheet.retention": "Retention Time SAT Entries (Seconds)",
"sheet.rip": "Automatic Routing",
"sheet.showAllEntries": "Show all entries",