feat(fls): DHCP, static NAT and modem settings as Java loads them
readSystemSoftware adds the DHCP client switch and server settings of every IP stack, a home router's static NAT table (port forwarding) and a modem's mode, port and address. All 23 corpus files match Java. Static DHCP assignments follow setStaticAssignedAddresses: each entry is split at Java whitespace (the same 25 characters as Character.isWhitespace, measured over the BMP), and an entry without MAC and IP ends the list, as Java throws there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -15,11 +15,13 @@ import filius.hardware.knoten.InternetKnoten;
|
||||
import filius.hardware.knoten.Knoten;
|
||||
import filius.hardware.knoten.LokalerKnoten;
|
||||
import filius.rahmenprogramm.SzenarioVerwaltung;
|
||||
import filius.software.dhcp.DHCPServer;
|
||||
import filius.software.firewall.Firewall;
|
||||
import filius.software.firewall.FirewallRule;
|
||||
import filius.software.system.Betriebssystem;
|
||||
import filius.software.system.GatewayFirmware;
|
||||
import filius.software.system.InternetKnotenBetriebssystem;
|
||||
import filius.software.system.ModemFirmware;
|
||||
import filius.software.system.SwitchFirmware;
|
||||
import filius.software.system.SystemSoftware;
|
||||
import filius.software.system.VermittlungsrechnerBetriebssystem;
|
||||
@@ -235,6 +237,33 @@ public class FlsOracle {
|
||||
}
|
||||
}
|
||||
json.put("manualRoutes", routes);
|
||||
json.put("dhcpClient", system.isDHCPKonfiguration());
|
||||
DHCPServer server = system.getDHCPServer();
|
||||
if (server != null) {
|
||||
Map<String, Object> dhcp = new LinkedHashMap<>();
|
||||
dhcp.put("aktiv", server.isAktiv());
|
||||
dhcp.put("untergrenze", server.getUntergrenze());
|
||||
dhcp.put("obergrenze", server.getObergrenze());
|
||||
dhcp.put("gatewayip", server.getGatewayip());
|
||||
dhcp.put("dnsserverip", server.getDnsserverip());
|
||||
dhcp.put("ownSettings", server.isOwnSettings());
|
||||
dhcp.put("staticAssignedAddresses", server.getStaticAssignedAddresses());
|
||||
json.put("dhcpServer", dhcp);
|
||||
}
|
||||
}
|
||||
if (software instanceof GatewayFirmware firmware) {
|
||||
List<Object> rows = new ArrayList<>();
|
||||
if (firmware.getStaticNAT() != null) {
|
||||
for (String[] row : firmware.getStaticNAT()) rows.add(row == null ? null : Arrays.asList(row));
|
||||
}
|
||||
json.put("staticNAT", rows);
|
||||
}
|
||||
if (software instanceof ModemFirmware firmware) {
|
||||
Map<String, Object> modem = new LinkedHashMap<>();
|
||||
modem.put("mode", firmware.getMode());
|
||||
modem.put("port", firmware.getPort());
|
||||
modem.put("ipAdresse", firmware.getIpAdresse());
|
||||
json.put("modem", modem);
|
||||
}
|
||||
Firewall firewall = software instanceof VermittlungsrechnerBetriebssystem system ? system.holeFirewall()
|
||||
: software instanceof GatewayFirmware firmware ? firmware.holeFirewall() : null;
|
||||
|
||||
Reference in New Issue
Block a user