feat(core): the firewall settings page of routers after Java, measured against Java
The page konfig changes the firewall at run time (into the snapshot, back into the project through projectWithSimulationChanges). KonfigCases feeds Java's plug-in directly (25 cases, de and en); RouterWebRun plays two stories over the network. Ten Java bugs named, not adopted. The web server answers a method not written GET or POST with 501, as Java does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -646,3 +646,41 @@ Gemessen (01.10.2026):
|
||||
* Java zählt TCP-Sequenznummern und Segmente in Zeichen seiner Strings: Ein
|
||||
„ä“ auf der Routen-Seite ist eine Stelle, nicht zwei Bytes.
|
||||
|
||||
|
||||
## Firewall-Einstellungen der Router (F3.2c)
|
||||
|
||||
`KonfigCases` füttert Javas Seite `konfig` (`FirewallWebKonfig`) direkt mit
|
||||
den Schritten aus `packages/core/test/firewall-settings.cases.txt` (eine
|
||||
Anfrage ohne Daten oder die Daten eines Formulars) und schreibt je Schritt
|
||||
die Seite und die Firewall danach, auf Deutsch und auf Englisch
|
||||
(`firewall-settings.{de,en}.java.json`; das Gebietsschema wird vor dem
|
||||
ersten Lesen des Nachrichtenbündels gesetzt). Jeder Fall beginnt mit einem
|
||||
neuen Router, ohne Regeln, mit drei oder mit der einen Regel, die ein Fall
|
||||
anlegt (die Seite, die Java zeigen würde, hätte es sie angenommen).
|
||||
`RouterWebRun` spielt dazu auf `router-web` `konfigIcmp` und `konfigBlock`
|
||||
über das Netz.
|
||||
|
||||
Gemessen (01.10.2026):
|
||||
|
||||
* Javas Browserfenster (Swing, `FormSubmitEvent.getData`) schickt jedes Feld
|
||||
des Formulars in seiner Reihenfolge, UTF-8-kodiert, angehakte Kästchen und
|
||||
die gewählte Option, dazu nur den gedrückten Knopf.
|
||||
* Java prüft die Felder beim Lesen: die Quell-IP gegen die Maske, die noch
|
||||
nicht gelesen ist (also leer), die Maske gegen die IP, ebenso. Eine Regel
|
||||
mit Quell- oder Zieladresse nimmt die Seite deshalb nie an, in keiner
|
||||
Reihenfolge der Felder.
|
||||
* Ein Fehler bleibt im Plug-in stehen und erscheint auf jeder späteren Seite,
|
||||
auch ohne Daten. Mit zwei Knöpfen zugleich (Speichern und Hinzufügen)
|
||||
speichert Java und schreibt die Fehler als nackte Liste.
|
||||
* Java dekodiert die Daten, bevor es sie an `&` und `=` zerlegt: Ein
|
||||
getipptes `&` zerreißt das Formular. Eine kaputte Kodierung (`%zz`, `%` am
|
||||
Ende) wirft im Dekodierer, Regel 0 nach unten wirft
|
||||
(`ArrayIndexOutOfBoundsException`), ein `$` im wieder gefüllten Formular
|
||||
lässt `replaceAll` scheitern (die Seite ist `null`, also 500).
|
||||
* Die Maske prüft `isValidSubnetmask`: vier Zahlen (eine leere am Ende fällt
|
||||
bei Javas `split` weg), `parseInt` mit Vorzeichen, die Bits Einsen, dann
|
||||
Nullen, mindestens eine Eins (0.0.0.0 ist keine Maske).
|
||||
* Über das Netz: „ICMP filtern“ aus, und der nächste Ping kommt durch; eine
|
||||
Regel „TCP 80 verwerfen“ über die erlaubende geschoben, und das SYN des
|
||||
Browsers bleibt an der Firewall hängen. Javas Router-Server lauschte auch
|
||||
hier in einem Lauf nie (`run.sh` wiederholt).
|
||||
|
||||
Reference in New Issue
Block a user