diff --git a/CHANGES.md b/CHANGES.md index 451d713..c78e561 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -42,13 +42,15 @@ Swift-Pfade relativ zu `filius-ipad/ios/FiliusPad/TopologyEditor/` (Stand | `src/systemSoftware.ts` | Java `SwitchFirmware`, `Betriebssystem`, `VermittlungsrechnerBetriebssystem`, `GatewayFirmware`, `Weiterleitungstabelle`, `Firewall`, `FirewallRule`, `DHCPServer`, `ModemFirmware`, `Dateisystem`, `Datei` | neu nach Java: SSID, Lernzeit, RIP, manuelle Routen, Router-Firewall (an allen Stellen, an denen die Datei sie erreicht), DHCP (ein kaputter statischer Eintrag fällt allein weg, Java verliert alle folgenden), statische NAT, Modem, Dateisystem und installierte Programme von Rechner und Notebook; `Character.isWhitespace` am JDK gemessen; gegen Java geprüft | | `src/javaIp.ts` | Java `IP.inetAton`/`ipCheck` | neu nach Java; an 46 Fällen mit Java gemessen | | `src/dnsHosts.ts` | Java `DNSServer.leseRecordListe`, `ResourceRecord`, `Dateisystem.holeDatei`; Swift `State/TopologyDNSResolver.swift` (`TopologyDNSHostsFileCodec`) als Vergleich | neu nach Java: Felder nur an einzelnen Leerzeichen, keine Kommentare, ungültige TTL → 3600, Doppelte bleiben; ins Modell kommt nur, was Java beantwortet (Typ A/MX/NS, Name nicht leer); Javas Fehler nicht übernommen: Label mit Ziffer vorn erlaubt, kein Backslash, letztes Label nicht rein numerisch (RFC 1123/3696), Typ in jeder Schreibung (RFC 4343), negative TTL ungültig (RFC 2181); an 76 Fällen mit Java und Swift gemessen | -| `src/topology.ts` | Java `SzenarioVerwaltung.netzwerkLaden`, Konstruktoren und Setter der Geräte; Swift `Persistence/TopologyProjectStore.swift` (Parser) als Vergleich | neu nach Java statt Übertragung: Geräteart aus der Klasse statt aus der Beschriftung, Geräte ohne Koordinaten bei 0,0 statt verworfen, Werte durch Javas Setter | +| `src/topology.ts` | Java `SzenarioVerwaltung.netzwerkLaden`, Konstruktoren und Setter der Geräte; Swift `Persistence/TopologyProjectStore.swift` (Parser) als Vergleich | neu nach Java statt Übertragung: Geräteart aus der Klasse statt aus der Beschriftung, Geräte ohne Koordinaten bei 0,0 statt verworfen, Werte durch Javas Setter, die Zeichen-Enden eines Kabels | | `test/javabeans.test.ts` | — | neu: je XMLDecoder-Regel ein Test; alle 23 Korpus-Dateien, Klasse und Position jedes Geräts wie Java | | `test/topology.test.ts` | — | neu: alle 23 Korpus-Dateien Feld für Feld wie Java (Geräte, Schnittstellen, Kabel, Doku-Elemente), dazu die Regeln, die der Korpus nicht berührt | | `test/javaIp.test.ts`, `test/ip-check.*` | — | neu: `IP.ipCheck`-Fälle, Ergebnis aus Java | | `src/javaEmail.ts` | Java `EmailServer` (Konten-Bean, `kontenLaden`/`stringZuListeBenutzerkonten`), `EmailAnwendung` (Ordner, Adressbuch, `laden`), `EmailKonto`, `Email`, `AddressEntry`, `EmailUtils` | neu nach Java: E-Mail-Beans über ihre Setter, `/mailserver/konten.txt` und `/konten.txt` im Format von Javas Lesern, ohne ihre Fehler (leere Felder zählen, eine kurze Zeile fällt allein weg, Nachrichten mit leerem Text oder Betreff bleiben, `;` im Betreff bleibt, CRLF, beim Client die letzte vollständige Zeile); Empfänger älterer Dateien als Zeichenketten; gegen Java auf dem Korpus und an 43 Fällen geprüft (13 benannte Java-Fehler) | | `src/javaBeansWriter.ts` | — | neu: Schreiber für das `XMLDecoder`-Format, Gegenstück zu `javabeans.ts`; ausdrücklich typisierte Eingabe, geteilte Objekte über `id`/`idref`, was XML nicht fassen kann (und CR) als ``; von Java selbst geprüft (`BeansDump`) | | `test/javaBeansWriter.test.ts`, `test/beans/` | — | neu: 9 Dateien des Schreibers, von Javas `XMLDecoder` gelesen und beschrieben; Erwartungen von Hand | +| `src/topologyWriter.ts` | Java `SzenarioVerwaltung.netzwerkSpeichern`, Konstruktoren von `NetzwerkInterface`, `Port`, `GUIKabelItem` | neu nach Java: `konfiguration.xml` aus Javas Sicht — Geräte, Schnittstellen (vom Konstruktor angelegte über Getter, weitere per `add`), Ports über Getter-Verweise, Kabel samt Zeichen-Enden (`kabelpanel`), Doku-Elemente; Kopf „Filius version: 2.14.0 (mdg-filius)“ | +| `test/topologyWriter.test.ts`, `test/written.java.json` | — | neu: alle 23 Korpus-Dateien gelesen und neu geschrieben, von Java geladen — Topologie wie beim Original (Java gegen Java); dazu eine künstliche Topologie mit dem, was der Korpus nicht hat | | `src/importEmail.ts` | `Persistence/TopologyProjectStore.swift` (`registerJavaEmailConfigurations`, `assignedJavaEmailMessages`) | übertragen, Eingabe ist Javas Sicht: Server-Konten aus `/mailserver/konten.txt`, ohne Datei aus der Bean-Liste (Java verlöre sie); Client-Konto aus `/konten.txt`, ohne Datei aus der älteren `kontoListe` (Filius 2.14 liest sie nicht mehr); Konten und Nachrichten bleiben, wo Swift verwirft, was seine Prüfung nicht besteht; Vor- und Nachname getrennt; Empfangszeit nur aus der Datei (Swift nummeriert); gegen Swifts Modell geprüft | | `test/importEmail.test.ts`, `test/email-*.swift.json` | `State/TopologyEmail.swift` (`decodeJavaServer`, `decodeJavaClient`) als Vergleich | neu: dieselben 43 Kontodateien mit Swifts Leser; wie Swift bis auf benannte Fälle, in denen Swift prüft und die ganze Datei verwirft, wo Java liest | | `src/javaFileSystem.ts`, `src/javaString.ts` | Java `Dateisystem.holeDatei`, `String.trim`/`split`/`equalsIgnoreCase` | neu nach Java; die Groß-/Kleinschreibung gegenüber ASCII am JDK über die ganze BMP gemessen | diff --git a/corpus/corpus.java.json b/corpus/corpus.java.json index 80b1361..0a4d3f4 100644 --- a/corpus/corpus.java.json +++ b/corpus/corpus.java.json @@ -440,7 +440,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 2 + ] }, { "ends": [ @@ -453,7 +457,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 3 + ] }, { "ends": [ @@ -466,7 +474,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 4 + ] }, { "ends": [ @@ -479,7 +491,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 6, + 1 + ] }, { "ends": [ @@ -492,7 +508,11 @@ 0 ] ], - "wireless": true + "wireless": true, + "panel": [ + 5, + 6 + ] }, { "ends": [ @@ -505,7 +525,11 @@ 2 ] ], - "wireless": true + "wireless": true, + "panel": [ + 0, + 6 + ] } ], "documentation": [ @@ -1220,7 +1244,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 1 + ] }, { "ends": [ @@ -1233,7 +1261,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 0 + ] }, { "ends": [ @@ -1246,7 +1278,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 0 + ] }, { "ends": [ @@ -1259,7 +1295,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 5 + ] }, { "ends": [ @@ -1272,7 +1312,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 4 + ] }, { "ends": [ @@ -1285,7 +1329,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 6 + ] }, { "ends": [ @@ -1298,7 +1346,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 7 + ] } ], "documentation": [] @@ -1721,7 +1773,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 0 + ] }, { "ends": [ @@ -1734,7 +1790,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 0 + ] }, { "ends": [ @@ -1747,7 +1807,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 2 + ] }, { "ends": [ @@ -1760,7 +1824,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 5 + ] }, { "ends": [ @@ -1773,7 +1841,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 1 + ] } ], "documentation": [] @@ -3661,7 +3733,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 1 + ] }, { "ends": [ @@ -3674,7 +3750,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 2 + ] }, { "ends": [ @@ -3687,7 +3767,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 5 + ] }, { "ends": [ @@ -3700,7 +3784,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 5 + ] }, { "ends": [ @@ -3713,7 +3801,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 6 + ] }, { "ends": [ @@ -3726,7 +3818,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 6 + ] }, { "ends": [ @@ -3739,7 +3835,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 6, + 7 + ] }, { "ends": [ @@ -3752,7 +3852,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 7, + 8 + ] }, { "ends": [ @@ -3765,7 +3869,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 8, + 12 + ] }, { "ends": [ @@ -3778,7 +3886,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 9, + 6 + ] }, { "ends": [ @@ -3791,7 +3903,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 10, + 7 + ] }, { "ends": [ @@ -3804,7 +3920,11 @@ 4 ] ], - "wireless": false + "wireless": false, + "panel": [ + 13, + 1 + ] }, { "ends": [ @@ -3817,7 +3937,11 @@ 1 ] ], - "wireless": true + "wireless": true, + "panel": [ + 16, + 20 + ] }, { "ends": [ @@ -3830,7 +3954,11 @@ 2 ] ], - "wireless": true + "wireless": true, + "panel": [ + 17, + 20 + ] }, { "ends": [ @@ -3843,7 +3971,11 @@ 3 ] ], - "wireless": true + "wireless": true, + "panel": [ + 18, + 20 + ] }, { "ends": [ @@ -3856,7 +3988,11 @@ 4 ] ], - "wireless": true + "wireless": true, + "panel": [ + 19, + 20 + ] }, { "ends": [ @@ -3869,7 +4005,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 20, + 1 + ] }, { "ends": [ @@ -3882,7 +4022,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 21, + 3 + ] }, { "ends": [ @@ -3895,7 +4039,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 21, + 1 + ] }, { "ends": [ @@ -3908,7 +4056,11 @@ 4 ] ], - "wireless": false + "wireless": false, + "panel": [ + 22, + 6 + ] }, { "ends": [ @@ -3921,7 +4073,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 11 + ] }, { "ends": [ @@ -3934,7 +4090,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 4 + ] }, { "ends": [ @@ -3947,7 +4107,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 24, + 23 + ] }, { "ends": [ @@ -3960,7 +4124,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 14, + 24 + ] }, { "ends": [ @@ -3973,7 +4141,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 24, + 22 + ] }, { "ends": [ @@ -3986,7 +4158,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 15, + 14 + ] } ], "documentation": [ @@ -6259,7 +6435,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 1 + ] }, { "ends": [ @@ -6272,7 +6452,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 2 + ] }, { "ends": [ @@ -6285,7 +6469,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 5 + ] }, { "ends": [ @@ -6298,7 +6486,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 5 + ] }, { "ends": [ @@ -6311,7 +6503,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 6 + ] }, { "ends": [ @@ -6324,7 +6520,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 6 + ] }, { "ends": [ @@ -6337,7 +6537,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 6, + 7 + ] }, { "ends": [ @@ -6350,7 +6554,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 7, + 8 + ] }, { "ends": [ @@ -6363,7 +6571,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 8, + 12 + ] }, { "ends": [ @@ -6376,7 +6588,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 9, + 6 + ] }, { "ends": [ @@ -6389,7 +6605,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 10, + 7 + ] }, { "ends": [ @@ -6402,7 +6622,11 @@ 4 ] ], - "wireless": false + "wireless": false, + "panel": [ + 13, + 1 + ] }, { "ends": [ @@ -6415,7 +6639,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 15, + 14 + ] }, { "ends": [ @@ -6428,7 +6656,11 @@ 1 ] ], - "wireless": true + "wireless": true, + "panel": [ + 16, + 20 + ] }, { "ends": [ @@ -6441,7 +6673,11 @@ 2 ] ], - "wireless": true + "wireless": true, + "panel": [ + 17, + 20 + ] }, { "ends": [ @@ -6454,7 +6690,11 @@ 3 ] ], - "wireless": true + "wireless": true, + "panel": [ + 18, + 20 + ] }, { "ends": [ @@ -6467,7 +6707,11 @@ 4 ] ], - "wireless": true + "wireless": true, + "panel": [ + 19, + 20 + ] }, { "ends": [ @@ -6480,7 +6724,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 20, + 1 + ] }, { "ends": [ @@ -6493,7 +6741,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 21, + 3 + ] }, { "ends": [ @@ -6506,7 +6758,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 21, + 1 + ] }, { "ends": [ @@ -6519,7 +6775,11 @@ 4 ] ], - "wireless": false + "wireless": false, + "panel": [ + 22, + 6 + ] }, { "ends": [ @@ -6532,7 +6792,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 11 + ] }, { "ends": [ @@ -6545,7 +6809,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 4 + ] }, { "ends": [ @@ -6558,7 +6826,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 23, + 24 + ] }, { "ends": [ @@ -6571,7 +6843,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 22, + 24 + ] }, { "ends": [ @@ -6584,7 +6860,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 24, + 14 + ] } ], "documentation": [ @@ -7263,7 +7543,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 2 + ] }, { "ends": [ @@ -7276,7 +7560,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 3 + ] }, { "ends": [ @@ -7289,7 +7577,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 4 + ] }, { "ends": [ @@ -7302,7 +7594,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 6, + 1 + ] }, { "ends": [ @@ -7315,7 +7611,11 @@ 0 ] ], - "wireless": true + "wireless": true, + "panel": [ + 5, + 6 + ] }, { "ends": [ @@ -7328,7 +7628,11 @@ 2 ] ], - "wireless": true + "wireless": true, + "panel": [ + 0, + 6 + ] } ], "documentation": [ @@ -7772,7 +8076,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 2 + ] }, { "ends": [ @@ -7785,7 +8093,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 0 + ] }, { "ends": [ @@ -7798,7 +8110,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 2 + ] } ], "documentation": [] @@ -8138,7 +8454,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 3 + ] }, { "ends": [ @@ -8151,7 +8471,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 0 + ] }, { "ends": [ @@ -8164,7 +8488,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 2 + ] }, { "ends": [ @@ -8177,7 +8505,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 5 + ] }, { "ends": [ @@ -8190,7 +8522,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 6, + 5 + ] } ], "documentation": [] @@ -8660,7 +8996,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 1 + ] }, { "ends": [ @@ -8673,7 +9013,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 0 + ] }, { "ends": [ @@ -8686,7 +9030,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 0 + ] }, { "ends": [ @@ -8699,7 +9047,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 5 + ] }, { "ends": [ @@ -8712,7 +9064,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 4 + ] }, { "ends": [ @@ -8725,7 +9081,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 6 + ] }, { "ends": [ @@ -8738,7 +9098,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 7 + ] } ], "documentation": [] @@ -9345,7 +9709,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 11 + ] }, { "ends": [ @@ -9358,7 +9726,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 11 + ] }, { "ends": [ @@ -9371,7 +9743,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 11 + ] }, { "ends": [ @@ -9384,7 +9760,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 11 + ] }, { "ends": [ @@ -9397,7 +9777,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 11, + 5 + ] }, { "ends": [ @@ -9410,7 +9794,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 4 + ] }, { "ends": [ @@ -9423,7 +9811,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 10 + ] }, { "ends": [ @@ -9436,7 +9828,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 6, + 10 + ] }, { "ends": [ @@ -9449,7 +9845,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 7, + 10 + ] }, { "ends": [ @@ -9462,7 +9862,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 8, + 10 + ] }, { "ends": [ @@ -9475,7 +9879,11 @@ 4 ] ], - "wireless": false + "wireless": false, + "panel": [ + 9, + 10 + ] } ], "documentation": [] @@ -10190,7 +10598,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 5 + ] }, { "ends": [ @@ -10203,7 +10615,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 5 + ] }, { "ends": [ @@ -10216,7 +10632,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 5 + ] }, { "ends": [ @@ -10229,7 +10649,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 5 + ] }, { "ends": [ @@ -10242,7 +10666,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 0 + ] }, { "ends": [ @@ -10255,7 +10683,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 6 + ] }, { "ends": [ @@ -10268,7 +10700,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 7 + ] }, { "ends": [ @@ -10281,7 +10717,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 8 + ] } ], "documentation": [] @@ -11086,7 +11526,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 7, + 0 + ] }, { "ends": [ @@ -11099,7 +11543,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 8, + 0 + ] }, { "ends": [ @@ -11112,7 +11560,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 2 + ] }, { "ends": [ @@ -11125,7 +11577,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 1 + ] }, { "ends": [ @@ -11138,7 +11594,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 6 + ] }, { "ends": [ @@ -11151,7 +11611,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 3 + ] }, { "ends": [ @@ -11164,7 +11628,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 5 + ] }, { "ends": [ @@ -11177,7 +11645,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 9 + ] }, { "ends": [ @@ -11190,7 +11662,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 11, + 5 + ] }, { "ends": [ @@ -11203,7 +11679,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 5 + ] }, { "ends": [ @@ -11216,7 +11696,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 12 + ] }, { "ends": [ @@ -11229,7 +11713,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 10, + 12 + ] }, { "ends": [ @@ -11242,7 +11730,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 13, + 12 + ] } ], "documentation": [] @@ -12139,7 +12631,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 3 + ] }, { "ends": [ @@ -12152,7 +12648,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 3 + ] }, { "ends": [ @@ -12165,7 +12665,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 3 + ] }, { "ends": [ @@ -12178,7 +12682,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 4 + ] }, { "ends": [ @@ -12191,7 +12699,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 5 + ] }, { "ends": [ @@ -12204,7 +12716,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 6 + ] } ], "documentation": [ @@ -12466,7 +12982,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 2 + ] }, { "ends": [ @@ -12479,7 +12999,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 0 + ] } ], "documentation": [] @@ -12706,7 +13230,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 0 + ] }, { "ends": [ @@ -12719,7 +13247,11 @@ 0 ] ], - "wireless": true + "wireless": true, + "panel": [ + 2, + 3 + ] }, { "ends": [ @@ -12732,7 +13264,11 @@ 2 ] ], - "wireless": true + "wireless": true, + "panel": [ + 1, + 3 + ] } ], "documentation": [] @@ -12994,7 +13530,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 0 + ] }, { "ends": [ @@ -13007,7 +13547,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 3 + ] }, { "ends": [ @@ -13020,7 +13564,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 2 + ] } ], "documentation": [] @@ -14006,7 +14554,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 6, + 0 + ] }, { "ends": [ @@ -14019,7 +14571,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 7, + 0 + ] }, { "ends": [ @@ -14032,7 +14588,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 1 + ] }, { "ends": [ @@ -14045,7 +14605,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 5 + ] }, { "ends": [ @@ -14058,7 +14622,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 3 + ] }, { "ends": [ @@ -14071,7 +14639,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 9, + 10 + ] }, { "ends": [ @@ -14084,7 +14656,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 11, + 10 + ] }, { "ends": [ @@ -14097,7 +14673,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 13 + ] }, { "ends": [ @@ -14110,7 +14690,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 13, + 2 + ] }, { "ends": [ @@ -14123,7 +14707,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 10, + 12 + ] }, { "ends": [ @@ -14136,7 +14724,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 12, + 4 + ] }, { "ends": [ @@ -14149,7 +14741,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 14 + ] }, { "ends": [ @@ -14162,7 +14758,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 14, + 4 + ] }, { "ends": [ @@ -14175,7 +14775,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 14, + 8 + ] } ], "documentation": [ @@ -14740,7 +15344,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 3 + ] }, { "ends": [ @@ -14753,7 +15361,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 3 + ] }, { "ends": [ @@ -14766,7 +15378,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 5 + ] }, { "ends": [ @@ -14779,7 +15395,11 @@ 0 ] ], - "wireless": true + "wireless": true, + "panel": [ + 1, + 0 + ] }, { "ends": [ @@ -14792,7 +15412,11 @@ 1 ] ], - "wireless": true + "wireless": true, + "panel": [ + 2, + 0 + ] } ], "documentation": [ @@ -15615,7 +16239,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 3 + ] }, { "ends": [ @@ -15628,7 +16256,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 3 + ] }, { "ends": [ @@ -15641,7 +16273,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 5 + ] }, { "ends": [ @@ -15654,7 +16290,11 @@ 0 ] ], - "wireless": true + "wireless": true, + "panel": [ + 1, + 0 + ] }, { "ends": [ @@ -15667,7 +16307,11 @@ 1 ] ], - "wireless": true + "wireless": true, + "panel": [ + 2, + 0 + ] }, { "ends": [ @@ -15680,7 +16324,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 6, + 4 + ] }, { "ends": [ @@ -15693,7 +16341,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 9, + 8 + ] }, { "ends": [ @@ -15706,7 +16358,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 9, + 7 + ] }, { "ends": [ @@ -15719,7 +16375,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 9, + 6 + ] } ], "documentation": [ @@ -16133,7 +16793,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 2 + ] }, { "ends": [ @@ -16146,7 +16810,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 0 + ] } ], "documentation": [] @@ -16569,7 +17237,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 0 + ] }, { "ends": [ @@ -16582,7 +17254,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 4, + 0 + ] }, { "ends": [ @@ -16595,7 +17271,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 2 + ] }, { "ends": [ @@ -16608,7 +17288,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 5 + ] }, { "ends": [ @@ -16621,7 +17305,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 1 + ] } ], "documentation": [] @@ -17228,7 +17916,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 0, + 11 + ] }, { "ends": [ @@ -17241,7 +17933,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 1, + 11 + ] }, { "ends": [ @@ -17254,7 +17950,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 2, + 11 + ] }, { "ends": [ @@ -17267,7 +17967,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 3, + 11 + ] }, { "ends": [ @@ -17280,7 +17984,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 11, + 5 + ] }, { "ends": [ @@ -17293,7 +18001,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 4 + ] }, { "ends": [ @@ -17306,7 +18018,11 @@ 0 ] ], - "wireless": false + "wireless": false, + "panel": [ + 5, + 10 + ] }, { "ends": [ @@ -17319,7 +18035,11 @@ 1 ] ], - "wireless": false + "wireless": false, + "panel": [ + 6, + 10 + ] }, { "ends": [ @@ -17332,7 +18052,11 @@ 2 ] ], - "wireless": false + "wireless": false, + "panel": [ + 7, + 10 + ] }, { "ends": [ @@ -17345,7 +18069,11 @@ 3 ] ], - "wireless": false + "wireless": false, + "panel": [ + 8, + 10 + ] }, { "ends": [ @@ -17358,7 +18086,11 @@ 4 ] ], - "wireless": false + "wireless": false, + "panel": [ + 9, + 10 + ] } ], "documentation": [] diff --git a/packages/fls/.gitignore b/packages/fls/.gitignore new file mode 100644 index 0000000..f48d2e6 --- /dev/null +++ b/packages/fls/.gitignore @@ -0,0 +1 @@ +test/written/ diff --git a/packages/fls/src/index.ts b/packages/fls/src/index.ts index 2d5d2f7..11299bc 100644 --- a/packages/fls/src/index.ts +++ b/packages/fls/src/index.ts @@ -9,4 +9,5 @@ export * from './javaString.js'; export * from './javabeans.js'; export * from './systemSoftware.js'; export * from './topology.js'; +export * from './topologyWriter.js'; export * from './zip.js'; diff --git a/packages/fls/src/javaBeansWriter.ts b/packages/fls/src/javaBeansWriter.ts index 3d0bc25..319a16d 100644 --- a/packages/fls/src/javaBeansWriter.ts +++ b/packages/fls/src/javaBeansWriter.ts @@ -21,7 +21,22 @@ export type BeanValue = | BeanPrimitive | BeanObject | BeanArray - | { readonly kind: 'class'; readonly name: string }; + | { readonly kind: 'class'; readonly name: string } + | BeanReference; + +/** + * An object only Java makes — a getter's result, such as the port a network + * interface's constructor creates — named where the getter is called + * (``) and referenced after. + */ +export interface BeanReference { + readonly kind: 'reference'; + readonly name: string; +} + +export function reference(name: string): BeanReference { + return { kind: 'reference', name }; +} export interface BeanObject { readonly kind: 'object'; @@ -42,14 +57,14 @@ export interface BeanArray { export type BeanStatement = /** target.setP(value) */ | { readonly set: string; readonly value: BeanValue } - /** target.getP(), then the statements on its result */ - | { readonly get: string; readonly statements: readonly BeanStatement[] } + /** target.getP(), then the statements on its result; `as` names the result */ + | { readonly get: string; readonly statements: readonly BeanStatement[]; readonly as?: BeanReference } /** target.m(args) */ | { readonly call: string; readonly args: readonly BeanValue[] } /** target.set(index, value) on a list */ | { readonly setIndex: number; readonly value: BeanValue } - /** target.get(index), then the statements on its result */ - | { readonly getIndex: number; readonly statements: readonly BeanStatement[] }; + /** target.get(index), then the statements on its result; `as` names the result */ + | { readonly getIndex: number; readonly statements: readonly BeanStatement[]; readonly as?: BeanReference }; export const int = (value: number): BeanPrimitive => ({ kind: 'int', value }); export const long = (value: number | bigint): BeanPrimitive => ({ kind: 'long', value }); @@ -70,7 +85,7 @@ export function encodeJavaBeans(values: readonly BeanValue[]): string { } class Writer { - private readonly ids = new Map(); + private readonly ids = new Map(); private readonly counters = new Map(); /** Objects written more than once need an id; found before writing. */ constructor(private readonly shared: ReadonlySet) {} @@ -109,6 +124,12 @@ class Writer { case 'object': this.object(value, depth, lines); break; + case 'reference': { + const id = this.ids.get(value); + if (id === undefined) throw new Error(`reference '${value.name}' used before the getter that names it`); + lines.push(`${indent}`); + break; + } } } } @@ -171,10 +192,7 @@ class Writer { if ('set' in statement) { nested(` this.value(statement.value, depth + 1, lines)); } else if ('get' in statement) { - if (statement.statements.length === 0) return; - nested(` { - for (const inner of statement.statements) this.statement(inner, depth + 1, lines); - }); + this.getter(`property="${escapeAttribute(statement.get)}"`, statement.statements, statement.as, depth, lines); } else if ('call' in statement) { if (statement.args.length === 0) { lines.push(`${indent}`); @@ -186,13 +204,38 @@ class Writer { } else if ('setIndex' in statement) { nested(` this.value(statement.value, depth + 1, lines)); } else { - if (statement.statements.length === 0) return; - nested(` { - for (const inner of statement.statements) this.statement(inner, depth + 1, lines); - }); + this.getter(`index="${statement.getIndex}"`, statement.statements, statement.as, depth, lines); } } + /** A getter's call: left out when nothing happens to its result and nothing names it. */ + private getter( + attribute: string, + statements: readonly BeanStatement[], + name: BeanReference | undefined, + depth: number, + lines: string[], + ): void { + const indent = ' '.repeat(depth); + if (statements.length === 0 && name === undefined) return; + let idAttribute = ''; + if (name !== undefined) { + if (this.ids.has(name)) throw new Error(`reference '${name.name}' named twice`); + const count = this.counters.get(name.name) ?? 0; + this.counters.set(name.name, count + 1); + const id = `${name.name}${count}`; + this.ids.set(name, id); + idAttribute = ` id="${id}"`; + } + if (statements.length === 0) { + lines.push(`${indent}`); + return; + } + lines.push(`${indent}`); + for (const inner of statements) this.statement(inner, depth + 1, lines); + lines.push(`${indent}`); + } + private idFor(value: BeanObject | BeanArray, name: string): string | undefined { if (!this.shared.has(value)) return undefined; const count = this.counters.get(name) ?? 0; diff --git a/packages/fls/src/topology.ts b/packages/fls/src/topology.ts index 5697e5c..6f791c6 100644 --- a/packages/fls/src/topology.ts +++ b/packages/fls/src/topology.ts @@ -60,6 +60,11 @@ export interface FlsPortReference { export interface FlsLink { ends: [FlsPortReference, FlsPortReference]; wireless: boolean; + /** + * The nodes the editor draws the cable between (JCablePanel ziel1, ziel2), + * by index; null where the file names none. + */ + panel: [number | null, number | null]; } export type FlsColor = [red: number, green: number, blue: number, alpha: number]; @@ -146,7 +151,10 @@ export function readTopology(values: readonly JavaValue[]): FlsTopology { const nodes: FlsNode[] = []; for (const [index, item] of nodeItems.entries()) { const node = context.node(item, index, nodes.length); - if (node !== undefined) nodes.push(node); + if (node !== undefined) { + if (isJavaObject(item)) context.nodeItems.set(item, nodes.length); + nodes.push(node); + } } const links: FlsLink[] = []; for (const [index, item] of cableItems.entries()) { @@ -168,6 +176,8 @@ function listOf(value: JavaValue | undefined, className: string): JavaValue[] { class Reader { /** Every port object a node owns, to resolve cable ends by identity as Java does. */ private readonly portOwners = new Map(); + /** Every node item read, to resolve a cable panel's ends. */ + readonly nodeItems = new Map(); constructor(private readonly warnings: string[]) {} @@ -310,9 +320,15 @@ class Reader { this.warnings.push(`cable ${itemIndex + 1}: an end is not a port of a device, left out`); return undefined; } + const panel = (item as JavaObject).properties.get('kabelpanel'); + const panelEnd = (property: string) => { + const target = isJavaObject(panel) ? panel.properties.get(property) : undefined; + return isJavaObject(target) ? (this.nodeItems.get(target) ?? null) : null; + }; return { ends: [first, second], wireless: this.booleanProperty(cable, 'wireless', `cable ${itemIndex + 1}`), + panel: [panelEnd('ziel1'), panelEnd('ziel2')], }; } diff --git a/packages/fls/src/topologyWriter.ts b/packages/fls/src/topologyWriter.ts new file mode 100644 index 0000000..f13827e --- /dev/null +++ b/packages/fls/src/topologyWriter.ts @@ -0,0 +1,222 @@ +// Writes `projekt/konfiguration.xml` from Java's view of a project — the +// counterpart of topology.ts. The four values Java's netzwerkLaden reads: the +// version line, the list of GUIKnotenItem, of GUIKabelItem and of +// GUIDocuItem. What a node's constructor makes (its interfaces, a switch's +// ports) is reached through getters and changed there, as XMLEncoder does; +// what the constructor does not make is added. Cable ends name the port +// objects of the nodes, so the same cable joins the same ports when Java +// loads the file. +// +// Checked by Java: every corpus file, read and written again, loads in Java +// FILIUS to the same topology (topologyWriter.test.ts, tools/java-oracle). + +import { + encodeJavaBeans, + int, + object, + reference, + type BeanObject, + type BeanReference, + type BeanStatement, + type BeanValue, +} from './javaBeansWriter.js'; +import type { FlsDocumentationItem, FlsInterface, FlsLink, FlsNode, FlsNodeClass } from './topology.js'; + +/** The version line of the files this writer makes: the format of FILIUS 2.14. */ +export const WRITTEN_VERSION_LINE = 'Filius version: 2.14.0 (mdg-filius)'; + +export type NodeToWrite = Pick< + FlsNode, + 'javaClass' | 'name' | 'x' | 'y' | 'useIpAsName' | 'useMacAsName' | 'interfaces' | 'portCount' +>; + +export interface TopologyToWrite { + readonly nodes: readonly NodeToWrite[]; + readonly links: readonly FlsLink[]; + readonly documentation: readonly FlsDocumentationItem[]; +} + +/** What each device class's constructor makes, and whether it is a host. */ +const CONSTRUCTED: Record = { + Rechner: { count: 1, local: false, host: true }, + Notebook: { count: 1, local: false, host: true }, + Vermittlungsrechner: { count: 1, local: false, host: false }, + Gateway: { count: 2, local: false, host: false }, + Switch: { count: 24, local: true, host: false }, + Modem: { count: 1, local: true, host: false }, +}; + +export function writeTopologyXml(topology: TopologyToWrite): string { + return encodeJavaBeans(topologyBeans(topology)); +} + +export function topologyBeans(topology: TopologyToWrite): BeanValue[] { + const ports: BeanValue[][] = []; + const items = topology.nodes.map((node, index) => { + const nodePorts: BeanValue[] = []; + ports[index] = nodePorts; + return nodeItem(node, nodePorts); + }); + const cables = topology.links.map((link) => cableItem(link, items, ports)); + return [ + WRITTEN_VERSION_LINE, + listOf(items), + listOf(cables), + listOf(topology.documentation.map(documentationItem)), + ]; +} + +function listOf(values: readonly BeanValue[]): BeanObject { + return object( + 'java.util.LinkedList', + values.map((value) => ({ call: 'add', args: [value] })), + ); +} + +/** + * A GUIKnotenItem: its label (the position) and its device; `ports` + * receives the device's port objects. The label's size is Java's to work + * out when it loads the file; the written 0 × 0 does not move it (measured + * on the corpus). + */ +function nodeItem(node: NodeToWrite, ports: BeanValue[]): BeanObject { + const label = object('filius.gui.netzwerksicht.JSidebarButton', [ + { set: 'bounds', value: object('java.awt.Rectangle', [], [int(node.x), int(node.y), int(0), int(0)]) }, + ]); + return object('filius.gui.netzwerksicht.GUIKnotenItem', [ + { set: 'imageLabel', value: label }, + { set: 'knoten', value: device(node, ports) }, + ]); +} + +function device(node: NodeToWrite, ports: BeanValue[]): BeanObject { + const constructed = CONSTRUCTED[node.javaClass]; + const statements: BeanStatement[] = [{ set: 'name', value: node.name }]; + if (constructed.host) { + statements.push({ set: 'useIPAsName', value: node.useIpAsName }, { set: 'useMACAsName', value: node.useMacAsName }); + } + if (constructed.local) { + statements.push( + constructedList('anschluesse', node.portCount, constructed.count, ports, () => ({ statements: [] }), () => { + const port = object('filius.hardware.Port'); + return { value: port, port }; + }), + ); + } else { + statements.push( + constructedList( + 'netzwerkInterfaces', + node.interfaces.length, + constructed.count, + ports, + (index) => { + const port = reference('Port'); + return { statements: [...interfaceStatements(node.interfaces[index]!), { get: 'port', statements: [], as: port }], port }; + }, + (index) => { + const port = reference('Port'); + const nic = object('filius.hardware.NetzwerkInterface', [ + ...interfaceStatements(node.interfaces[index]!), + { get: 'port', statements: [], as: port }, + ]); + return { value: nic, port }; + }, + ), + ); + } + return object(`filius.hardware.knoten.${node.javaClass}`, statements); +} + +/** + * A list the constructor filled with `constructed` elements: those are + * changed through `get(index)`, more are added. With fewer, the list is set + * anew. `ports` receives each element's port, in order. + */ +function constructedList( + property: string, + count: number, + constructed: number, + ports: BeanValue[], + existing: (index: number) => { statements: BeanStatement[]; port?: BeanReference }, + added: (index: number) => { value: BeanValue; port: BeanValue }, +): BeanStatement { + if (count < constructed) { + const values = Array.from({ length: count }, (_, index) => { + const { value, port } = added(index); + ports.push(port); + return value; + }); + return { set: property, value: listOf(values) }; + } + const statements: BeanStatement[] = []; + for (let index = 0; index < count; index++) { + if (index < constructed) { + // The element's own port, or — a switch's — the element itself. + const { statements: inner, port } = existing(index); + if (port === undefined) { + const element = reference('Port'); + ports.push(element); + statements.push({ getIndex: index, statements: inner, as: element }); + } else { + ports.push(port); + statements.push({ getIndex: index, statements: inner }); + } + } else { + const { value, port } = added(index); + ports.push(port); + statements.push({ call: 'add', args: [value] }); + } + } + return { get: property, statements }; +} + +/** + * A network interface's setters. An address Java's setter rejected (null) + * is not written: setIp(null) throws, and the constructor's address stays. + * A MAC the file lacked stays unwritten, so Java rolls one as it did. + */ +function interfaceStatements(nic: FlsInterface): BeanStatement[] { + const statements: BeanStatement[] = []; + if (nic.ip !== null) statements.push({ set: 'ip', value: nic.ip }); + if (nic.mask !== null) statements.push({ set: 'subnetzMaske', value: nic.mask }); + if (nic.mac !== undefined) statements.push({ set: 'mac', value: nic.mac }); + statements.push({ set: 'gateway', value: nic.gateway }, { set: 'dns', value: nic.dns }); + return statements; +} + +function cableItem(link: FlsLink, items: readonly BeanObject[], ports: readonly BeanValue[][]): BeanObject { + const [first, second] = link.ends; + const end = (reference: { node: number; port: number }) => ports[reference.node]![reference.port]!; + const cable = object('filius.hardware.Kabel', [ + { set: 'anschluesse', value: { kind: 'array', componentClass: 'filius.hardware.Port', items: [end(first), end(second)] } }, + ...(link.wireless ? [{ set: 'wireless', value: true }] : []), + ]); + return object('filius.gui.netzwerksicht.GUIKabelItem', [ + { set: 'dasKabel', value: cable }, + { + get: 'kabelpanel', + statements: [ + { set: 'ziel1', value: items[first.node]! }, + { set: 'ziel2', value: items[second.node]! }, + ], + }, + ]); +} + +function documentationItem(item: FlsDocumentationItem): BeanObject { + const statements: BeanStatement[] = []; + if (item.color !== null) statements.push({ set: 'color', value: object('java.awt.Color', [], item.color.map(int)) }); + if (item.font !== null) { + statements.push({ set: 'font', value: object('java.awt.Font', [], [item.font.name, int(item.font.style), int(item.font.size)]) }); + } + statements.push( + { set: 'height', value: int(item.height) }, + { set: 'text', value: item.text }, + { set: 'type', value: int(item.type) }, + { set: 'width', value: int(item.width) }, + { set: 'x', value: int(item.x) }, + { set: 'y', value: int(item.y) }, + ); + return object('filius.gui.netzwerksicht.GUIDocuItem', statements); +} + diff --git a/packages/fls/test/beans/beans.java.json b/packages/fls/test/beans/beans.java.json index cb763bc..f55ef79 100644 --- a/packages/fls/test/beans/beans.java.json +++ b/packages/fls/test/beans/beans.java.json @@ -296,6 +296,47 @@ ], "errors": [] }, + "references.xml": { + "values": [ + { + "id": 0, + "class": "java.util.LinkedList", + "items": [ + { + "id": 1, + "class": "filius.hardware.NetzwerkInterface", + "properties": { + "dns": { + "string": "" + }, + "gateway": { + "string": "" + }, + "ip": { + "string": "10.0.0.1" + }, + "mac": { + "string": "8E:A8:7E:96:38:62" + }, + "port": { + "id": 2, + "class": "filius.hardware.Port", + "properties": {} + }, + "subnetzMaske": { + "string": "255.255.255.0" + }, + "wireless": false + } + }, + { + "ref": 2 + } + ] + } + ], + "errors": [] + }, "shared.xml": { "values": [ { diff --git a/packages/fls/test/beans/references.xml b/packages/fls/test/beans/references.xml new file mode 100644 index 0000000..e7a0d52 --- /dev/null +++ b/packages/fls/test/beans/references.xml @@ -0,0 +1,16 @@ + + + + + + + 10.0.0.1 + + + + + + + + + diff --git a/packages/fls/test/importProject.test.ts b/packages/fls/test/importProject.test.ts index 6565f19..b6c9e36 100644 --- a/packages/fls/test/importProject.test.ts +++ b/packages/fls/test/importProject.test.ts @@ -1044,9 +1044,9 @@ describe('importProject rules', () => { topology({ nodes: [flsNode('Switch', { portCount: 24 }), flsNode('Rechner', { interfaces: [nic('10.0.0.1')] })], links: [ - { ends: [{ node: 0, port: 0 }, { node: 0, port: 1 }], wireless: false }, - { ends: [{ node: 1, port: 0 }, { node: 0, port: 2 }], wireless: false }, - { ends: [{ node: 0, port: 3 }, { node: 1, port: 0 }], wireless: false }, + { ends: [{ node: 0, port: 0 }, { node: 0, port: 1 }], wireless: false, panel: [null, null] }, + { ends: [{ node: 1, port: 0 }, { node: 0, port: 2 }], wireless: false, panel: [null, null] }, + { ends: [{ node: 0, port: 3 }, { node: 1, port: 0 }], wireless: false, panel: [null, null] }, ], }), counter(), diff --git a/packages/fls/test/javaBeansWriter.test.ts b/packages/fls/test/javaBeansWriter.test.ts index 56590a8..7e6f2c4 100644 --- a/packages/fls/test/javaBeansWriter.test.ts +++ b/packages/fls/test/javaBeansWriter.test.ts @@ -16,6 +16,7 @@ import { int, long, object, + reference, type BeanObject, type BeanValue, } from '../src/javaBeansWriter.js'; @@ -42,7 +43,23 @@ const file = object('filius.software.system.Datei', [ { set: 'dateiInhalt', value: 'a.de. A 3600 1.2.3.4\n' }, ]); +const port = reference('Port'); + const CASES: Record = { + references: { + values: [ + object('java.util.LinkedList', [ + { call: 'add', args: [object('filius.hardware.NetzwerkInterface', [{ set: 'ip', value: '10.0.0.1' }, { get: 'port', statements: [], as: port }])] }, + { call: 'add', args: [port] }, + ]), + ], + expected: [ + items('java.util.LinkedList', [ + bean('filius.hardware.NetzwerkInterface', { ip: text('10.0.0.1'), port: { id: 2, class: 'filius.hardware.Port' } }), + { ref: 2 }, + ]), + ], + }, strings: { values: [list('java.util.LinkedList', STRINGS)], expected: [items('java.util.LinkedList', STRINGS.map(text))], diff --git a/packages/fls/test/topology.test.ts b/packages/fls/test/topology.test.ts index af5e1d2..4f397f0 100644 --- a/packages/fls/test/topology.test.ts +++ b/packages/fls/test/topology.test.ts @@ -190,6 +190,7 @@ function asJavaView(topology: FlsTopology, javaBounds: (number[] | null)[]) { cables: topology.links.map((link) => ({ ends: link.ends.map((end) => [end.node, end.port]), wireless: link.wireless, + panel: link.panel, })), documentation: topology.documentation.map((item) => ({ type: item.type, @@ -305,7 +306,7 @@ describe('readTopology rules', () => { `); expect(nodes.map((node) => node.javaClass)).toEqual(['Switch']); - expect(links).toEqual([{ ends: [{ node: 0, port: 0 }, { node: 0, port: 1 }], wireless: false }]); + expect(links).toEqual([{ ends: [{ node: 0, port: 0 }, { node: 0, port: 1 }], wireless: false, panel: [null, null] }]); expect(warnings).toEqual([ 'node 1: unknown device class filius.hardware.knoten.Drucker, left out', 'cable 2: an end is not a port of a device, left out', diff --git a/packages/fls/test/topologyWriter.test.ts b/packages/fls/test/topologyWriter.test.ts new file mode 100644 index 0000000..a632596 --- /dev/null +++ b/packages/fls/test/topologyWriter.test.ts @@ -0,0 +1,154 @@ +// Every corpus file, read and written again: Java FILIUS loads the written +// file (tools/java-oracle, written.java.json) to the same topology as the +// original (corpus.java.json) — devices, names, positions, interfaces, +// cables and documentation. Java against Java: no mapping of this package +// stands between the two. +// +// UPDATE_WRITTEN=1 writes the files to test/written/ (not checked in); the +// Java oracle then loads them and records each file's SHA-256, which must +// match what the writer makes now. + +import { createHash } from 'node:crypto'; +import { mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs'; +import { dirname, join, relative } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { describe, expect, it } from 'vitest'; +import { decodeJavaBeans, readFlsArchive, readTopology, writeFlsArchive } from '../src/index.js'; +import { writeTopologyXml, type TopologyToWrite } from '../src/topologyWriter.js'; + +const here = dirname(fileURLToPath(import.meta.url)); +const corpusRoot = join(here, '../../../corpus'); +const writtenRoot = join(here, 'written'); + +function flsFiles(directory: string): string[] { + return readdirSync(directory).flatMap((name) => { + const path = join(directory, name); + if (statSync(path).isDirectory()) return flsFiles(path); + return name.endsWith('.fls') ? [path] : []; + }); +} + +type JavaNode = { class: string; name: string | null; bounds: number[]; useIpAsName: boolean; useMacAsName: boolean; ports: unknown }; +type JavaFile = { success: boolean; nodes: JavaNode[]; cables: unknown[]; documentation: unknown[]; sha256?: string }; + +const original = JSON.parse(readFileSync(join(corpusRoot, 'corpus.java.json'), 'utf8')) as Record; +const written = JSON.parse(readFileSync(join(here, 'written.java.json'), 'utf8')) as Record; + +/** The topology of Java's view: the label's position, not its size, which Java works out itself. */ +function topologyOf(view: JavaFile) { + return { + success: view.success, + nodes: view.nodes.map((node) => ({ + class: node.class, + name: node.name, + position: node.bounds.slice(0, 2), + useIpAsName: node.useIpAsName, + useMacAsName: node.useMacAsName, + ports: node.ports, + })), + cables: view.cables, + documentation: view.documentation, + }; +} + +describe('the topology written again, as Java loads it', () => { + for (const file of flsFiles(corpusRoot)) { + const name = relative(corpusRoot, file); + it(name, () => { + const topology = readTopology(decodeJavaBeans(readFlsArchive(new Uint8Array(readFileSync(file))).configurationXml)); + const archive = writeFlsArchive(new TextEncoder().encode(writeTopologyXml(topology))); + if (process.env.UPDATE_WRITTEN === '1') { + mkdirSync(dirname(join(writtenRoot, name)), { recursive: true }); + writeFileSync(join(writtenRoot, name), archive); + } + const java = written[name]; + expect(java?.sha256, 'written.java.json is not about this output: UPDATE_WRITTEN=1, then npm run oracle:java').toBe( + createHash('sha256').update(archive).digest('hex'), + ); + expect(topologyOf(java!)).toEqual(topologyOf(original[name]!)); + }); + } +}); + +/** What the corpus does not have: a name set to null, useMACAsName, fewer ports than the constructor makes, more interfaces. */ +const SYNTHETIC: TopologyToWrite = { + nodes: [ + { + javaClass: 'Rechner', + name: null, + x: 10, + y: 20, + useIpAsName: false, + useMacAsName: true, + interfaces: [{ ip: '10.0.0.1', mask: '255.0.0.0', mac: 'AA:BB:CC:DD:EE:01', gateway: null, dns: '10.0.0.53' }], + portCount: 1, + }, + { javaClass: 'Switch', name: 'S', x: 100, y: 20, useIpAsName: false, useMacAsName: false, interfaces: [], portCount: 3 }, + { + javaClass: 'Vermittlungsrechner', + name: 'R', + x: 200, + y: 20, + useIpAsName: false, + useMacAsName: false, + interfaces: ['1', '2', '3'].map((octet) => ({ + ip: `10.0.${octet}.1`, + mask: '255.255.255.0', + mac: `AA:BB:CC:DD:EE:1${octet}`, + gateway: '', + dns: '', + })), + portCount: 3, + }, + { javaClass: 'Modem', name: 'M', x: 300, y: 20, useIpAsName: false, useMacAsName: false, interfaces: [], portCount: 1 }, + ], + links: [ + { ends: [{ node: 0, port: 0 }, { node: 1, port: 2 }], wireless: false, panel: [0, 1] }, + { ends: [{ node: 2, port: 2 }, { node: 1, port: 0 }], wireless: true, panel: [2, 1] }, + ], + documentation: [{ type: 1, text: null, x: 5, y: 6, width: 70, height: 80, color: null, font: null }], +}; + +describe('a topology beyond the corpus, as Java loads it', () => { + it('keeps what the corpus never sets', () => { + const name = 'synthetic/synthetic.fls'; + const archive = writeFlsArchive(new TextEncoder().encode(writeTopologyXml(SYNTHETIC))); + if (process.env.UPDATE_WRITTEN === '1') { + mkdirSync(join(writtenRoot, 'synthetic'), { recursive: true }); + writeFileSync(join(writtenRoot, name), archive); + } + const java = written[name]; + expect(java?.sha256, 'written.java.json is not about this output: UPDATE_WRITTEN=1, then npm run oracle:java').toBe( + createHash('sha256').update(archive).digest('hex'), + ); + const plainInterface = (octet: string) => ({ ip: `10.0.${octet}.1`, mask: '255.255.255.0', mac: `AA:BB:CC:DD:EE:1${octet}`, gateway: '', dns: '' }); + expect(topologyOf(java!)).toEqual({ + success: true, + nodes: [ + { + class: 'Rechner', + name: null, + position: [10, 20], + useIpAsName: false, + useMacAsName: true, + ports: [{ ip: '10.0.0.1', mask: '255.0.0.0', mac: 'AA:BB:CC:DD:EE:01', gateway: null, dns: '10.0.0.53' }], + }, + { class: 'Switch', name: 'S', position: [100, 20], useIpAsName: undefined, useMacAsName: undefined, ports: [{}, {}, {}] }, + { + class: 'Vermittlungsrechner', + name: 'R', + position: [200, 20], + useIpAsName: undefined, + useMacAsName: undefined, + ports: ['1', '2', '3'].map(plainInterface), + }, + { class: 'Modem', name: 'M', position: [300, 20], useIpAsName: undefined, useMacAsName: undefined, ports: [{}] }, + ], + cables: [ + { ends: [[0, 0], [1, 2]], wireless: false, panel: [0, 1] }, + { ends: [[2, 2], [1, 0]], wireless: true, panel: [2, 1] }, + ], + documentation: [{ type: 1, text: null, bounds: [5, 6, 70, 80], color: null, font: null }], + }); + }); +}); diff --git a/packages/fls/test/written.java.json b/packages/fls/test/written.java.json new file mode 100644 index 0000000..1f43e9c --- /dev/null +++ b/packages/fls/test/written.java.json @@ -0,0 +1,14760 @@ +{ + "ipad-fixtures/Public_and_Private_Networks_2_EN.fls": { + "success": true, + "nodes": [ + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 79, + 124, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.12", + "mask": "255.255.255.0", + "mac": "FB:07:94:E4:05:06", + "gateway": "192.168.0.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Gateway", + "name": "Gateway", + "label": "Heimrouter", + "bounds": [ + 367, + 91, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.10", + "mask": "255.0.0.0", + "mac": "18:C4:B3:33:AB:BD", + "gateway": "42.0.0.1", + "dns": "" + }, + { + "ip": "192.168.0.1", + "mask": "255.255.255.0", + "mac": "28:62:32:5B:5C:90", + "gateway": "42.0.0.1", + "dns": "" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 521, + 364, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.1", + "mask": "255.255.255.0", + "mac": "A7:1D:A9:4C:C4:A7", + "gateway": "", + "dns": "" + }, + { + "ip": "160.10.20.1", + "mask": "255.255.255.0", + "mac": "D1:3E:5F:E6:BA:F9", + "gateway": "", + "dns": "" + }, + { + "ip": "8.8.8.1", + "mask": "255.255.255.0", + "mac": "03:3C:DF:0A:44:1E", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "mywebserver.de (160.10.20.10)", + "label": "Rechner", + "bounds": [ + 656, + 419, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "160.10.20.10", + "mask": "255.255.255.0", + "mac": "71:6A:B4:64:00:4E", + "gateway": "160.10.20.1", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner", + "label": "Rechner", + "bounds": [ + 383, + 422, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "8.8.8.8", + "mask": "255.255.255.0", + "mac": "48:76:39:9B:AC:29", + "gateway": "8.8.8.1", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 168, + 29, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.11", + "mask": "255.255.255.0", + "mac": "45:06:FC:3E:2B:59", + "gateway": "192.168.0.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Wifi Switch", + "label": "Switch / WLAN", + "bounds": [ + 255, + 167, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 1, + 0 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 2 + ] + }, + { + "ends": [ + [ + 2, + 1 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 2, + 3 + ] + }, + { + "ends": [ + [ + 2, + 2 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 2, + 4 + ] + }, + { + "ends": [ + [ + 6, + 1 + ], + [ + 1, + 1 + ] + ], + "wireless": false, + "panel": [ + 6, + 1 + ] + }, + { + "ends": [ + [ + 5, + 0 + ], + [ + 6, + 0 + ] + ], + "wireless": true, + "panel": [ + 5, + 6 + ] + }, + { + "ends": [ + [ + 0, + 0 + ], + [ + 6, + 2 + ] + ], + "wireless": true, + "panel": [ + 0, + 6 + ] + } + ], + "documentation": [ + { + "type": 2, + "text": "8.8.8.1\n", + "bounds": [ + 508, + 390, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "42.0.0.1", + "bounds": [ + 587, + 345, + 100, + 24 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "42.0.0.10", + "bounds": [ + 453, + 124, + 100, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "192.168.0.1", + "bounds": [ + 308, + 123, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "160.10.20.1", + "bounds": [ + 631, + 391, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "DNS \nNameserver\n", + "bounds": [ + 373, + 519, + 88, + 41 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "This model is copyright © 2026 Josh Buhl and is freely distributable under the creative commons CC BY-NC-SA 4.0CC BY-NC-SA 4.0 License", + "bounds": [ + 37, + 615, + 275, + 59 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 56, + 9, + 459, + 243 + ], + "color": [ + 209, + 232, + 255, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Private Local Area Network (LAN)", + "bounds": [ + 281, + 20, + 175, + 54 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 1 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 277, + 260, + 602, + 314 + ], + "color": [ + 255, + 201, + 201, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Public Network (WAN)", + "bounds": [ + 297, + 283, + 215, + 35 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 1 + ] + }, + { + "type": 2, + "text": "[Gateway and Switch are often integrated into one device especially at home.]", + "bounds": [ + 352, + 179, + 153, + 54 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + } + ], + "sha256": "b0325ccfaa0d6fbb7012be1332a66985bb408b53fabff1354e2667c3b1efebb2" + }, + "ipad-fixtures/dns_server.fls": { + "success": true, + "nodes": [ + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 250, + 181, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "DNS-Server (lokal)", + "label": "Rechner", + "bounds": [ + 213, + 16, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.12", + "mask": "255.255.255.0", + "mac": null, + "gateway": "141.99.5.1", + "dns": "141.99.5.12" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Webserver", + "label": "Rechner", + "bounds": [ + 63, + 83, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.10", + "mask": "255.255.255.0", + "mac": null, + "gateway": "141.99.5.1", + "dns": "141.99.5.12" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 289, + 313, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.11", + "mask": "255.255.255.0", + "mac": null, + "gateway": "141.99.5.1", + "dns": "141.99.5.12" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "DNS-Server (.)", + "label": "Rechner", + "bounds": [ + 735, + 25, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.13", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 483, + 185, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "DNS-Server (de.)", + "label": "Rechner", + "bounds": [ + 726, + 145, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.14", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "DNS-Server (filius.de.)", + "label": "Rechner", + "bounds": [ + 709, + 276, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.15", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 0, + 1 + ], + [ + 1, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 1 + ] + }, + { + "ends": [ + [ + 2, + 0 + ], + [ + 0, + 3 + ] + ], + "wireless": false, + "panel": [ + 2, + 0 + ] + }, + { + "ends": [ + [ + 3, + 0 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 0 + ] + }, + { + "ends": [ + [ + 0, + 2 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 5 + ] + }, + { + "ends": [ + [ + 5, + 1 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 4 + ] + }, + { + "ends": [ + [ + 5, + 2 + ], + [ + 6, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 6 + ] + }, + { + "ends": [ + [ + 5, + 3 + ], + [ + 7, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 7 + ] + } + ], + "documentation": [], + "sha256": "fa9080e5707de6f7b511f82e63496bfb1928b5d85bf3bf50b44d88aa509eeea7" + }, + "ipad-fixtures/zwei_rechnernetze_komplett.fls": { + "success": true, + "nodes": [ + { + "class": "Switch", + "name": "Switch 1", + "label": "Switch / WLAN", + "bounds": [ + 164, + 178, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Switch", + "name": "Switch 2", + "label": "Switch / WLAN", + "bounds": [ + 612, + 104, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "DNS-Server 2.10", + "label": "Rechner", + "bounds": [ + 694, + 19, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.2.10", + "mask": "255.255.255.0", + "mac": "55:69:1F:18:4C:96", + "gateway": "141.99.2.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1.10", + "label": "Notebook", + "bounds": [ + 53, + 100, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.1.10", + "mask": "255.255.255.0", + "mac": "95:11:22:49:65:CB", + "gateway": "141.99.1.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1.11", + "label": "Notebook", + "bounds": [ + 70, + 235, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.1.11", + "mask": "255.255.255.0", + "mac": "AE:F4:7A:63:81:B9", + "gateway": "", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 373, + 106, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.1.1", + "mask": "255.255.255.0", + "mac": "A4:F4:2A:89:9F:E8", + "gateway": "", + "dns": "" + }, + { + "ip": "141.99.2.1", + "mask": "255.255.255.0", + "mac": "6D:B4:5B:F1:70:FC", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 3, + 0 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 0 + ] + }, + { + "ends": [ + [ + 4, + 0 + ], + [ + 0, + 1 + ] + ], + "wireless": false, + "panel": [ + 4, + 0 + ] + }, + { + "ends": [ + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 2 + ] + }, + { + "ends": [ + [ + 0, + 2 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 5 + ] + }, + { + "ends": [ + [ + 5, + 1 + ], + [ + 1, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 1 + ] + } + ], + "documentation": [], + "sha256": "fbbcf5fd996a17f9d443865f83232870de866ace6823aa1614ba6173bb5e39db" + }, + "java-examples/Internet_Complete_with_e-Mail_Webserver_Intranet_Portforwarding_Firewall_DHCP_EN.fls": { + "success": true, + "nodes": [ + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 5, + 169, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.10.20.11", + "mask": "255.0.0.0", + "mac": "A8:BD:04:A6:63:AD", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch", + "label": "Switch / WLAN", + "bounds": [ + 233, + 173, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 2, + 274, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.10.20.12", + "mask": "255.0.0.0", + "mac": "3D:67:2A:01:2D:91", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Provider 1", + "label": "Vermittlungsrechner", + "bounds": [ + 419, + 434, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.1", + "mask": "255.255.255.0", + "mac": "2E:E7:53:65:17:0F", + "gateway": "", + "dns": "" + }, + { + "ip": "6.0.0.2", + "mask": "255.255.255.0", + "mac": "1E:27:AE:8E:77:14", + "gateway": "", + "dns": "" + }, + { + "ip": "2.0.0.1", + "mask": "255.255.255.0", + "mac": "4B:A0:59:16:7C:2C", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 548, + 490, + 21, + 20 + ], + "ports": [ + { + "ip": "6.0.0.1", + "mask": "255.255.255.0", + "mac": "C5:AD:0D:4F:97:06", + "gateway": "", + "dns": "" + }, + { + "ip": "11.0.0.1", + "mask": "255.255.255.0", + "mac": "E0:3F:89:38:E3:2C", + "gateway": "", + "dns": "" + }, + { + "ip": "130.100.200.1", + "mask": "255.255.255.0", + "mac": "3C:84:27:63:5A:E3", + "gateway": "", + "dns": "" + }, + { + "ip": "12.0.0.1", + "mask": "255.255.255.0", + "mac": "F5:FB:71:A8:11:59", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 294, + 518, + 21, + 20 + ], + "ports": [ + { + "ip": "2.0.0.2", + "mask": "255.255.255.0", + "mac": "3A:DC:16:7C:AA:78", + "gateway": "", + "dns": "" + }, + { + "ip": "11.0.0.2", + "mask": "255.255.255.0", + "mac": "91:D6:EC:3F:56:B0", + "gateway": "", + "dns": "" + }, + { + "ip": "3.0.0.1", + "mask": "255.255.255.0", + "mac": "16:F2:4D:40:AA:56", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 427, + 583, + 21, + 20 + ], + "ports": [ + { + "ip": "12.0.0.2", + "mask": "255.255.255.0", + "mac": "A2:55:52:6B:6F:27", + "gateway": "", + "dns": "" + }, + { + "ip": "3.0.0.2", + "mask": "255.255.255.0", + "mac": "27:17:86:69:32:C9", + "gateway": "", + "dns": "" + }, + { + "ip": "4.0.0.1", + "mask": "255.255.255.0", + "mac": "B3:22:50:EC:11:FB", + "gateway": "", + "dns": "" + }, + { + "ip": "8.0.0.1", + "mask": "255.0.0.0", + "mac": "63:D5:E4:BB:37:E6", + "gateway": "", + "dns": "" + }, + { + "ip": "15.0.0.1", + "mask": "255.255.255.0", + "mac": "15:DA:6A:2F:5F:3A", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 632, + 643, + 21, + 20 + ], + "ports": [ + { + "ip": "4.0.0.2", + "mask": "255.255.255.0", + "mac": "80:6D:2A:57:59:B2", + "gateway": "", + "dns": "" + }, + { + "ip": "5.0.0.1", + "mask": "255.255.255.0", + "mac": "69:EB:EB:6E:F6:82", + "gateway": "", + "dns": "" + }, + { + "ip": "120.130.140.1", + "mask": "255.255.255.0", + "mac": "C9:5D:41:10:67:82", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 781, + 574, + 21, + 20 + ], + "ports": [ + { + "ip": "5.0.0.2", + "mask": "255.255.255.0", + "mac": "A0:D8:AE:E8:2A:E1", + "gateway": "", + "dns": "" + }, + { + "ip": "140.100.200.1", + "mask": "255.255.255.0", + "mac": "A2:3C:B4:FB:9D:D1", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "DNS (8.8.8.8)", + "label": "Rechner", + "bounds": [ + 208, + 606, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "8.8.8.8", + "mask": "255.0.0.0", + "mac": "17:66:19:C9:9E:29", + "gateway": "8.0.0.1", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "webserver.com (120.130.140.80)", + "label": "Rechner", + "bounds": [ + 675, + 793, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "120.130.140.80", + "mask": "255.255.255.0", + "mac": "4B:ED:F2:C7:AF:8C", + "gateway": "120.130.140.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "mail.gmx.com (130.100.200.25)", + "label": "Rechner", + "bounds": [ + 693, + 417, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "130.100.200.25", + "mask": "255.255.255.0", + "mac": "47:AF:A1:5F:0E:C7", + "gateway": "130.100.200.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "mail.webmail.com (140.100.200.25)", + "label": "Rechner", + "bounds": [ + 823, + 684, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "140.100.200.25", + "mask": "255.255.255.0", + "mac": "62:A4:B8:31:8D:33", + "gateway": "140.100.200.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "myschool.org (10.0.0.1)", + "label": "Rechner", + "bounds": [ + 139, + 268, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "10.0.0.1", + "mask": "255.0.0.0", + "mac": "C5:39:AE:55:77:F5", + "gateway": "10.0.0.2", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Gateway", + "name": "Heimrouter", + "label": "Heimrouter", + "bounds": [ + 184, + 781, + 21, + 20 + ], + "ports": [ + { + "ip": "43.0.0.11", + "mask": "255.255.255.0", + "mac": "E4:0B:71:77:E8:25", + "gateway": "43.0.0.1", + "dns": "8.8.8.8" + }, + { + "ip": "192.168.1.1", + "mask": "255.255.255.0", + "mac": "F6:F2:70:B5:92:97", + "gateway": "43.0.0.1", + "dns": "8.8.8.8" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 73, + 840, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.1.11", + "mask": "255.255.255.0", + "mac": "68:3B:FB:D6:E1:D8", + "gateway": "192.168.1.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "iPad 1", + "label": "Notebook", + "bounds": [ + 139, + 4, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.50.50.13", + "mask": "255.0.0.0", + "mac": "EF:1A:35:6C:C2:DC", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "iPad 2", + "label": "Notebook", + "bounds": [ + 267, + 0, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.50.50.11", + "mask": "255.0.0.0", + "mac": "19:06:AC:C7:9D:0E", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "iPad 3", + "label": "Notebook", + "bounds": [ + 372, + 5, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.50.50.14", + "mask": "255.0.0.0", + "mac": "D3:51:75:D6:71:EA", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "iPad 4", + "label": "Notebook", + "bounds": [ + 462, + 38, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.50.50.12", + "mask": "255.0.0.0", + "mac": "E2:AC:66:8B:39:9F", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Access Point", + "label": "Switch / WLAN", + "bounds": [ + 11, + 76, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Gateway", + "name": "Firewall", + "label": "Heimrouter", + "bounds": [ + 359, + 319, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.10", + "mask": "255.0.0.0", + "mac": "95:C1:83:23:BB:4C", + "gateway": "42.0.0.1", + "dns": "" + }, + { + "ip": "10.0.0.2", + "mask": "255.0.0.0", + "mac": "D6:AF:B6:8B:75:85", + "gateway": "42.0.0.1", + "dns": "" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Provider 2", + "label": "Vermittlungsrechner", + "bounds": [ + 433, + 699, + 21, + 20 + ], + "ports": [ + { + "ip": "43.0.0.1", + "mask": "255.255.255.0", + "mac": "11:EE:8E:9F:31:18", + "gateway": "", + "dns": "" + }, + { + "ip": "15.0.0.2", + "mask": "255.255.255.0", + "mac": "B7:E7:AB:01:FE:F6", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "Provider 2 DHCP- Server", + "label": "Rechner", + "bounds": [ + 446, + 791, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "43.0.0.2", + "mask": "255.255.255.0", + "mac": "8B:54:A9:28:2D:18", + "gateway": "43.0.0.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Provider 2 Switch", + "label": "Switch / WLAN", + "bounds": [ + 333, + 760, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 1 + ] + }, + { + "ends": [ + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 2 + ] + }, + { + "ends": [ + [ + 3, + 2 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 5 + ] + }, + { + "ends": [ + [ + 4, + 1 + ], + [ + 5, + 1 + ] + ], + "wireless": false, + "panel": [ + 4, + 5 + ] + }, + { + "ends": [ + [ + 4, + 3 + ], + [ + 6, + 0 + ] + ], + "wireless": false, + "panel": [ + 4, + 6 + ] + }, + { + "ends": [ + [ + 5, + 2 + ], + [ + 6, + 1 + ] + ], + "wireless": false, + "panel": [ + 5, + 6 + ] + }, + { + "ends": [ + [ + 6, + 2 + ], + [ + 7, + 0 + ] + ], + "wireless": false, + "panel": [ + 6, + 7 + ] + }, + { + "ends": [ + [ + 7, + 1 + ], + [ + 8, + 0 + ] + ], + "wireless": false, + "panel": [ + 7, + 8 + ] + }, + { + "ends": [ + [ + 8, + 1 + ], + [ + 12, + 0 + ] + ], + "wireless": false, + "panel": [ + 8, + 12 + ] + }, + { + "ends": [ + [ + 9, + 0 + ], + [ + 6, + 3 + ] + ], + "wireless": false, + "panel": [ + 9, + 6 + ] + }, + { + "ends": [ + [ + 10, + 0 + ], + [ + 7, + 2 + ] + ], + "wireless": false, + "panel": [ + 10, + 7 + ] + }, + { + "ends": [ + [ + 13, + 0 + ], + [ + 1, + 4 + ] + ], + "wireless": false, + "panel": [ + 13, + 1 + ] + }, + { + "ends": [ + [ + 16, + 0 + ], + [ + 20, + 1 + ] + ], + "wireless": true, + "panel": [ + 16, + 20 + ] + }, + { + "ends": [ + [ + 17, + 0 + ], + [ + 20, + 2 + ] + ], + "wireless": true, + "panel": [ + 17, + 20 + ] + }, + { + "ends": [ + [ + 18, + 0 + ], + [ + 20, + 3 + ] + ], + "wireless": true, + "panel": [ + 18, + 20 + ] + }, + { + "ends": [ + [ + 19, + 0 + ], + [ + 20, + 4 + ] + ], + "wireless": true, + "panel": [ + 19, + 20 + ] + }, + { + "ends": [ + [ + 20, + 0 + ], + [ + 1, + 3 + ] + ], + "wireless": false, + "panel": [ + 20, + 1 + ] + }, + { + "ends": [ + [ + 21, + 0 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 21, + 3 + ] + }, + { + "ends": [ + [ + 21, + 1 + ], + [ + 1, + 2 + ] + ], + "wireless": false, + "panel": [ + 21, + 1 + ] + }, + { + "ends": [ + [ + 22, + 1 + ], + [ + 6, + 4 + ] + ], + "wireless": false, + "panel": [ + 22, + 6 + ] + }, + { + "ends": [ + [ + 4, + 2 + ], + [ + 11, + 0 + ] + ], + "wireless": false, + "panel": [ + 4, + 11 + ] + }, + { + "ends": [ + [ + 3, + 1 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 4 + ] + }, + { + "ends": [ + [ + 24, + 0 + ], + [ + 23, + 0 + ] + ], + "wireless": false, + "panel": [ + 24, + 23 + ] + }, + { + "ends": [ + [ + 14, + 0 + ], + [ + 24, + 2 + ] + ], + "wireless": false, + "panel": [ + 14, + 24 + ] + }, + { + "ends": [ + [ + 24, + 1 + ], + [ + 22, + 0 + ] + ], + "wireless": false, + "panel": [ + 24, + 22 + ] + }, + { + "ends": [ + [ + 15, + 0 + ], + [ + 14, + 1 + ] + ], + "wireless": false, + "panel": [ + 15, + 14 + ] + } + ], + "documentation": [ + { + "type": 2, + "text": "INTERNET", + "bounds": [ + 570, + 583, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + }, + { + "type": 2, + "text": "Large Intranet with subnets, firewall & portforwarding to Webserver behind Firewall.\n\nLAN-Devices have full internet connectivity. Each has a configured email client.\n\nWiFi-Devices only have HTTP access to the internal Server but can name resolve and ping external internet servers.\n\n", + "bounds": [ + 402, + 164, + 249, + 153 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 62, + 755, + 255, + 193 + ], + "color": [ + 255, + 255, + 227, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Home\n", + "bounds": [ + 209, + 907, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 4, + -4, + 567, + 164 + ], + "color": [ + 255, + 201, + 201, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Wifi-Devices\nSubnet", + "bounds": [ + 242, + 115, + 88, + 36 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 3, + 163, + 121, + 254 + ], + "color": [ + 191, + 255, + 219, + 255 + ], + "font": null + }, + { + "type": 1, + "text": null, + "bounds": [ + -1, + -7, + 661, + 427 + ], + "color": [ + 209, + 232, + 255, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "LAN-Devices\nSubnet", + "bounds": [ + 25, + 378, + 88, + 34 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + }, + { + "type": 2, + "text": "This model is copyright © 2026 Josh Buhl and is freely distributable under the creative commons CC BY-NC-SA 4.0CC BY-NC-SA 4.0 License", + "bounds": [ + 21, + 429, + 272, + 59 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 331, + 684, + 292, + 263 + ], + "color": [ + 252, + 201, + 163, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Provider Network", + "bounds": [ + 420, + 920, + 110, + 25 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + }, + { + "type": 2, + "text": "42.0.0.0\t", + "bounds": [ + 458, + 383, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "10.0.0.0", + "bounds": [ + 298, + 268, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + } + ], + "sha256": "dad4c6f22bda84f99405a7098e63c5c7d1cc6af20dcfbb1abee30da240c715b6" + }, + "java-examples/Internet_Komplett_mit_eMail_Webserver_Intranet_Portforwarding_Firewall_DHCP_DE.fls": { + "success": true, + "nodes": [ + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 5, + 165, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.10.20.11", + "mask": "255.0.0.0", + "mac": "A8:BD:04:A6:63:AD", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch 1", + "label": "Switch / WLAN", + "bounds": [ + 233, + 173, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 0, + 269, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.10.20.12", + "mask": "255.0.0.0", + "mac": "3D:67:2A:01:2D:91", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Provider 1", + "label": "Vermittlungsrechner", + "bounds": [ + 419, + 434, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.1", + "mask": "255.255.255.0", + "mac": "2E:E7:53:65:17:0F", + "gateway": "", + "dns": "" + }, + { + "ip": "6.0.0.2", + "mask": "255.255.255.0", + "mac": "1E:27:AE:8E:77:14", + "gateway": "", + "dns": "" + }, + { + "ip": "2.0.0.1", + "mask": "255.255.255.0", + "mac": "4B:A0:59:16:7C:2C", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 548, + 490, + 21, + 20 + ], + "ports": [ + { + "ip": "6.0.0.1", + "mask": "255.255.255.0", + "mac": "C5:AD:0D:4F:97:06", + "gateway": "", + "dns": "" + }, + { + "ip": "11.0.0.1", + "mask": "255.255.255.0", + "mac": "E0:3F:89:38:E3:2C", + "gateway": "", + "dns": "" + }, + { + "ip": "130.100.200.1", + "mask": "255.255.255.0", + "mac": "3C:84:27:63:5A:E3", + "gateway": "", + "dns": "" + }, + { + "ip": "12.0.0.1", + "mask": "255.255.255.0", + "mac": "F5:FB:71:A8:11:59", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 294, + 518, + 21, + 20 + ], + "ports": [ + { + "ip": "2.0.0.2", + "mask": "255.255.255.0", + "mac": "3A:DC:16:7C:AA:78", + "gateway": "", + "dns": "" + }, + { + "ip": "11.0.0.2", + "mask": "255.255.255.0", + "mac": "91:D6:EC:3F:56:B0", + "gateway": "", + "dns": "" + }, + { + "ip": "3.0.0.1", + "mask": "255.255.255.0", + "mac": "16:F2:4D:40:AA:56", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 427, + 583, + 21, + 20 + ], + "ports": [ + { + "ip": "12.0.0.2", + "mask": "255.255.255.0", + "mac": "A2:55:52:6B:6F:27", + "gateway": "", + "dns": "" + }, + { + "ip": "3.0.0.2", + "mask": "255.255.255.0", + "mac": "27:17:86:69:32:C9", + "gateway": "", + "dns": "" + }, + { + "ip": "4.0.0.1", + "mask": "255.255.255.0", + "mac": "B3:22:50:EC:11:FB", + "gateway": "", + "dns": "" + }, + { + "ip": "8.0.0.1", + "mask": "255.0.0.0", + "mac": "63:D5:E4:BB:37:E6", + "gateway": "", + "dns": "" + }, + { + "ip": "15.0.0.1", + "mask": "255.255.255.0", + "mac": "15:DA:6A:2F:5F:3A", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 606, + 629, + 21, + 20 + ], + "ports": [ + { + "ip": "4.0.0.2", + "mask": "255.255.255.0", + "mac": "80:6D:2A:57:59:B2", + "gateway": "", + "dns": "" + }, + { + "ip": "5.0.0.1", + "mask": "255.255.255.0", + "mac": "69:EB:EB:6E:F6:82", + "gateway": "", + "dns": "" + }, + { + "ip": "120.130.140.1", + "mask": "255.255.255.0", + "mac": "C9:5D:41:10:67:82", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "", + "label": "Vermittlungsrechner", + "bounds": [ + 746, + 561, + 21, + 20 + ], + "ports": [ + { + "ip": "5.0.0.2", + "mask": "255.255.255.0", + "mac": "A0:D8:AE:E8:2A:E1", + "gateway": "", + "dns": "" + }, + { + "ip": "140.100.200.1", + "mask": "255.255.255.0", + "mac": "A2:3C:B4:FB:9D:D1", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "DNS (8.8.8.8)", + "label": "Rechner", + "bounds": [ + 208, + 606, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "8.8.8.8", + "mask": "255.0.0.0", + "mac": "17:66:19:C9:9E:29", + "gateway": "8.0.0.1", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "webserver.de (120.130.140.80)", + "label": "Rechner", + "bounds": [ + 666, + 777, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "120.130.140.80", + "mask": "255.255.255.0", + "mac": "4B:ED:F2:C7:AF:8C", + "gateway": "120.130.140.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "mail.gmx.de (130.100.200.25)", + "label": "Rechner", + "bounds": [ + 699, + 417, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "130.100.200.25", + "mask": "255.255.255.0", + "mac": "47:AF:A1:5F:0E:C7", + "gateway": "130.100.200.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "mail.webmail.de (140.100.200.25)", + "label": "Rechner", + "bounds": [ + 799, + 649, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "140.100.200.25", + "mask": "255.255.255.0", + "mac": "62:A4:B8:31:8D:33", + "gateway": "140.100.200.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "meine-schule.de (10.0.0.1)", + "label": "Rechner", + "bounds": [ + 130, + 268, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "10.0.0.1", + "mask": "255.0.0.0", + "mac": "C5:39:AE:55:77:F5", + "gateway": "10.0.0.2", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Gateway", + "name": "Heimrouter", + "label": "Heimrouter", + "bounds": [ + 229, + 784, + 21, + 20 + ], + "ports": [ + { + "ip": "43.0.0.11", + "mask": "255.255.255.0", + "mac": "E4:0B:71:77:E8:25", + "gateway": "43.0.0.1", + "dns": "8.8.8.8" + }, + { + "ip": "192.168.1.1", + "mask": "255.255.255.0", + "mac": "F6:F2:70:B5:92:97", + "gateway": "43.0.0.1", + "dns": "8.8.8.8" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 124, + 826, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.1.11", + "mask": "255.255.255.0", + "mac": "68:3B:FB:D6:E1:D8", + "gateway": "192.168.1.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "iPad 1", + "label": "Notebook", + "bounds": [ + 139, + 4, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.50.50.11", + "mask": "255.0.0.0", + "mac": "EF:1A:35:6C:C2:DC", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "iPad 2", + "label": "Notebook", + "bounds": [ + 267, + 0, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.50.50.14", + "mask": "255.0.0.0", + "mac": "19:06:AC:C7:9D:0E", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "iPad 3", + "label": "Notebook", + "bounds": [ + 372, + 5, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.50.50.13", + "mask": "255.0.0.0", + "mac": "D3:51:75:D6:71:EA", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "iPad 4", + "label": "Notebook", + "bounds": [ + 462, + 38, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.50.50.12", + "mask": "255.0.0.0", + "mac": "E2:AC:66:8B:39:9F", + "gateway": "10.0.0.1", + "dns": "10.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Access Point", + "label": "Switch / WLAN", + "bounds": [ + 11, + 76, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Gateway", + "name": "Firewall", + "label": "Heimrouter", + "bounds": [ + 359, + 319, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.10", + "mask": "255.0.0.0", + "mac": "95:C1:83:23:BB:4C", + "gateway": "42.0.0.1", + "dns": "" + }, + { + "ip": "10.0.0.2", + "mask": "255.0.0.0", + "mac": "D6:AF:B6:8B:75:85", + "gateway": "42.0.0.1", + "dns": "" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Provider 2", + "label": "Vermittlungsrechner", + "bounds": [ + 461, + 710, + 21, + 20 + ], + "ports": [ + { + "ip": "43.0.0.1", + "mask": "255.255.255.0", + "mac": "11:EE:8E:9F:31:18", + "gateway": "", + "dns": "" + }, + { + "ip": "15.0.0.2", + "mask": "255.255.255.0", + "mac": "B7:E7:AB:01:FE:F6", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "Provider 2 DCHP Server", + "label": "Rechner", + "bounds": [ + 473, + 782, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "43.0.0.2", + "mask": "255.255.255.0", + "mac": "55:E4:24:B2:2F:7B", + "gateway": "43.0.0.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Provider 2 Switch", + "label": "Switch / WLAN", + "bounds": [ + 367, + 775, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 0, + 0 + ], + [ + 1, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 1 + ] + }, + { + "ends": [ + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 2 + ] + }, + { + "ends": [ + [ + 3, + 2 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 5 + ] + }, + { + "ends": [ + [ + 4, + 1 + ], + [ + 5, + 1 + ] + ], + "wireless": false, + "panel": [ + 4, + 5 + ] + }, + { + "ends": [ + [ + 4, + 3 + ], + [ + 6, + 0 + ] + ], + "wireless": false, + "panel": [ + 4, + 6 + ] + }, + { + "ends": [ + [ + 5, + 2 + ], + [ + 6, + 1 + ] + ], + "wireless": false, + "panel": [ + 5, + 6 + ] + }, + { + "ends": [ + [ + 6, + 2 + ], + [ + 7, + 0 + ] + ], + "wireless": false, + "panel": [ + 6, + 7 + ] + }, + { + "ends": [ + [ + 7, + 1 + ], + [ + 8, + 0 + ] + ], + "wireless": false, + "panel": [ + 7, + 8 + ] + }, + { + "ends": [ + [ + 8, + 1 + ], + [ + 12, + 0 + ] + ], + "wireless": false, + "panel": [ + 8, + 12 + ] + }, + { + "ends": [ + [ + 9, + 0 + ], + [ + 6, + 3 + ] + ], + "wireless": false, + "panel": [ + 9, + 6 + ] + }, + { + "ends": [ + [ + 10, + 0 + ], + [ + 7, + 2 + ] + ], + "wireless": false, + "panel": [ + 10, + 7 + ] + }, + { + "ends": [ + [ + 13, + 0 + ], + [ + 1, + 4 + ] + ], + "wireless": false, + "panel": [ + 13, + 1 + ] + }, + { + "ends": [ + [ + 15, + 0 + ], + [ + 14, + 1 + ] + ], + "wireless": false, + "panel": [ + 15, + 14 + ] + }, + { + "ends": [ + [ + 16, + 0 + ], + [ + 20, + 1 + ] + ], + "wireless": true, + "panel": [ + 16, + 20 + ] + }, + { + "ends": [ + [ + 17, + 0 + ], + [ + 20, + 2 + ] + ], + "wireless": true, + "panel": [ + 17, + 20 + ] + }, + { + "ends": [ + [ + 18, + 0 + ], + [ + 20, + 3 + ] + ], + "wireless": true, + "panel": [ + 18, + 20 + ] + }, + { + "ends": [ + [ + 19, + 0 + ], + [ + 20, + 4 + ] + ], + "wireless": true, + "panel": [ + 19, + 20 + ] + }, + { + "ends": [ + [ + 20, + 0 + ], + [ + 1, + 3 + ] + ], + "wireless": false, + "panel": [ + 20, + 1 + ] + }, + { + "ends": [ + [ + 21, + 0 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 21, + 3 + ] + }, + { + "ends": [ + [ + 21, + 1 + ], + [ + 1, + 2 + ] + ], + "wireless": false, + "panel": [ + 21, + 1 + ] + }, + { + "ends": [ + [ + 22, + 1 + ], + [ + 6, + 4 + ] + ], + "wireless": false, + "panel": [ + 22, + 6 + ] + }, + { + "ends": [ + [ + 4, + 2 + ], + [ + 11, + 0 + ] + ], + "wireless": false, + "panel": [ + 4, + 11 + ] + }, + { + "ends": [ + [ + 3, + 1 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 4 + ] + }, + { + "ends": [ + [ + 23, + 0 + ], + [ + 24, + 0 + ] + ], + "wireless": false, + "panel": [ + 23, + 24 + ] + }, + { + "ends": [ + [ + 22, + 0 + ], + [ + 24, + 1 + ] + ], + "wireless": false, + "panel": [ + 22, + 24 + ] + }, + { + "ends": [ + [ + 24, + 2 + ], + [ + 14, + 0 + ] + ], + "wireless": false, + "panel": [ + 24, + 14 + ] + } + ], + "documentation": [ + { + "type": 2, + "text": "INTERNET", + "bounds": [ + 570, + 583, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + }, + { + "type": 2, + "text": "Intranetz mit Subnetzen, Firewall und Portforwarding an Webserver hinter Firewall.\n\nLAN-Geräte haben vollen Internet-Zugriff. Jedes hat einen konfigurierten eMail-Client.\n\nWLAN-Geräte haben HTTP-Zugriff nur auf den internen Server, können aber externe Server auflösen und anpingen. \n\n\n", + "bounds": [ + 399, + 170, + 249, + 153 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 107, + 757, + 245, + 181 + ], + "color": [ + 255, + 255, + 227, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Zu Hause\n", + "bounds": [ + 255, + 897, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 4, + -4, + 567, + 164 + ], + "color": [ + 255, + 201, + 201, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "WLAN-Geräte\nSubnetz", + "bounds": [ + 227, + 117, + 88, + 37 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 3, + 161, + 121, + 253 + ], + "color": [ + 191, + 255, + 219, + 255 + ], + "font": null + }, + { + "type": 1, + "text": null, + "bounds": [ + -1, + -7, + 661, + 425 + ], + "color": [ + 209, + 232, + 255, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "LAN-Geräte\nSubnetz", + "bounds": [ + 20, + 376, + 88, + 39 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + }, + { + "type": 2, + "text": "This model is copyright © 2026 Josh Buhl and is freely distributable under the creative commons CC BY-NC-SA 4.0CC BY-NC-SA 4.0 License", + "bounds": [ + 21, + 429, + 272, + 59 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 372, + 697, + 246, + 243 + ], + "color": [ + 252, + 201, + 163, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Provider Netzwerk", + "bounds": [ + 440, + 907, + 108, + 23 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 1 + ] + } + ], + "sha256": "710029e574fe346b4eb66ca9cde548ca372cd6ab64dd9d5d80de953bf28aa25f" + }, + "java-examples/Public_and_Private_Networks_2_EN.fls": { + "success": true, + "nodes": [ + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 79, + 124, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.12", + "mask": "255.255.255.0", + "mac": "FB:07:94:E4:05:06", + "gateway": "192.168.0.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Gateway", + "name": "Gateway", + "label": "Heimrouter", + "bounds": [ + 367, + 91, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.10", + "mask": "255.0.0.0", + "mac": "18:C4:B3:33:AB:BD", + "gateway": "42.0.0.1", + "dns": "" + }, + { + "ip": "192.168.0.1", + "mask": "255.255.255.0", + "mac": "28:62:32:5B:5C:90", + "gateway": "42.0.0.1", + "dns": "" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 521, + 364, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.1", + "mask": "255.255.255.0", + "mac": "A7:1D:A9:4C:C4:A7", + "gateway": "", + "dns": "" + }, + { + "ip": "160.10.20.1", + "mask": "255.255.255.0", + "mac": "D1:3E:5F:E6:BA:F9", + "gateway": "", + "dns": "" + }, + { + "ip": "8.8.8.1", + "mask": "255.255.255.0", + "mac": "03:3C:DF:0A:44:1E", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "mywebserver.de (160.10.20.10)", + "label": "Rechner", + "bounds": [ + 656, + 419, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "160.10.20.10", + "mask": "255.255.255.0", + "mac": "71:6A:B4:64:00:4E", + "gateway": "160.10.20.1", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner", + "label": "Rechner", + "bounds": [ + 383, + 422, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "8.8.8.8", + "mask": "255.255.255.0", + "mac": "48:76:39:9B:AC:29", + "gateway": "8.8.8.1", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 168, + 29, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.11", + "mask": "255.255.255.0", + "mac": "45:06:FC:3E:2B:59", + "gateway": "192.168.0.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Wifi Switch", + "label": "Switch / WLAN", + "bounds": [ + 255, + 167, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 1, + 0 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 2 + ] + }, + { + "ends": [ + [ + 2, + 1 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 2, + 3 + ] + }, + { + "ends": [ + [ + 2, + 2 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 2, + 4 + ] + }, + { + "ends": [ + [ + 6, + 1 + ], + [ + 1, + 1 + ] + ], + "wireless": false, + "panel": [ + 6, + 1 + ] + }, + { + "ends": [ + [ + 5, + 0 + ], + [ + 6, + 0 + ] + ], + "wireless": true, + "panel": [ + 5, + 6 + ] + }, + { + "ends": [ + [ + 0, + 0 + ], + [ + 6, + 2 + ] + ], + "wireless": true, + "panel": [ + 0, + 6 + ] + } + ], + "documentation": [ + { + "type": 2, + "text": "8.8.8.1\n", + "bounds": [ + 508, + 390, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "42.0.0.1", + "bounds": [ + 587, + 345, + 100, + 24 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "42.0.0.10", + "bounds": [ + 453, + 124, + 100, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "192.168.0.1", + "bounds": [ + 308, + 123, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "160.10.20.1", + "bounds": [ + 631, + 391, + 88, + 20 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "DNS \nNameserver\n", + "bounds": [ + 373, + 519, + 88, + 41 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "This model is copyright © 2026 Josh Buhl and is freely distributable under the creative commons CC BY-NC-SA 4.0CC BY-NC-SA 4.0 License", + "bounds": [ + 37, + 615, + 275, + 59 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 56, + 9, + 459, + 243 + ], + "color": [ + 209, + 232, + 255, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Private Local Area Network (LAN)", + "bounds": [ + 281, + 20, + 175, + 54 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 1 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 277, + 260, + 602, + 314 + ], + "color": [ + 255, + 201, + 201, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Public Network (WAN)", + "bounds": [ + 297, + 283, + 215, + 35 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 1 + ] + }, + { + "type": 2, + "text": "[Gateway and Switch are often integrated into one device especially at home.]", + "bounds": [ + 352, + 179, + 153, + 54 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + } + ], + "sha256": "b0325ccfaa0d6fbb7012be1332a66985bb408b53fabff1354e2667c3b1efebb2" + }, + "java-examples/anwendung_komplett.fls": { + "success": true, + "nodes": [ + { + "class": "Rechner", + "name": "Server 10", + "label": "Rechner", + "bounds": [ + 355, + 77, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": "4B:82:31:A8:4D:54", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1", + "label": "Notebook", + "bounds": [ + 44, + 31, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.1", + "mask": "255.255.255.0", + "mac": "43:F8:45:DC:FC:53", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 212, + 115, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook 2", + "label": "Notebook", + "bounds": [ + 45, + 180, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.2", + "mask": "255.255.255.0", + "mac": "66:38:EB:F5:F4:3B", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 1, + 0 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 2 + ] + }, + { + "ends": [ + [ + 2, + 1 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 2, + 0 + ] + }, + { + "ends": [ + [ + 3, + 0 + ], + [ + 2, + 2 + ] + ], + "wireless": false, + "panel": [ + 3, + 2 + ] + } + ], + "documentation": [], + "sha256": "6ddd17df1bb154d87d63d247b490d17015bea82ab16ff8f334df97d5702c276c" + }, + "java-examples/dhcp_test_scenario.fls": { + "success": true, + "nodes": [ + { + "class": "Rechner", + "name": "Rechner", + "label": "Rechner", + "bounds": [ + 507, + 96, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": "91:E4:54:FA:C9:7D", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 112, + 49, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.101", + "mask": "255.255.255.0", + "mac": "B6:F7:8C:F6:CC:0F", + "gateway": "0.0.0.0", + "dns": "0.0.0.0" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 97, + 164, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.100", + "mask": "255.255.255.0", + "mac": "54:71:65:D0:3A:4B", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 307, + 128, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 94, + 320, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.100", + "mask": "255.255.255.0", + "mac": "30:B7:97:00:00:FD", + "gateway": "192.168.0.10", + "dns": "0.0.0.0" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Gateway", + "name": "Heimrouter", + "label": "Heimrouter", + "bounds": [ + 363, + 312, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.10", + "mask": "255.0.0.0", + "mac": "9F:CF:0A:89:4E:32", + "gateway": "", + "dns": "" + }, + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": "AB:53:E6:9C:D9:87", + "gateway": "", + "dns": "" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner", + "label": "Rechner", + "bounds": [ + 580, + 293, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": "24:C4:CA:44:77:A4", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 1, + 0 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 3 + ] + }, + { + "ends": [ + [ + 3, + 1 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 0 + ] + }, + { + "ends": [ + [ + 3, + 2 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 2 + ] + }, + { + "ends": [ + [ + 4, + 0 + ], + [ + 5, + 1 + ] + ], + "wireless": false, + "panel": [ + 4, + 5 + ] + }, + { + "ends": [ + [ + 6, + 0 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 6, + 5 + ] + } + ], + "documentation": [], + "sha256": "2dcf79c82767ed9dfba3d4be054d7c604247a02757941fbd053fb725d01f0c3b" + }, + "java-examples/dns_server.fls": { + "success": true, + "nodes": [ + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 250, + 181, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "DNS-Server (lokal)", + "label": "Rechner", + "bounds": [ + 213, + 16, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.12", + "mask": "255.255.255.0", + "mac": null, + "gateway": "141.99.5.1", + "dns": "141.99.5.12" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Webserver", + "label": "Rechner", + "bounds": [ + 63, + 83, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.10", + "mask": "255.255.255.0", + "mac": null, + "gateway": "141.99.5.1", + "dns": "141.99.5.12" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 289, + 313, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.11", + "mask": "255.255.255.0", + "mac": null, + "gateway": "141.99.5.1", + "dns": "141.99.5.12" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "DNS-Server (.)", + "label": "Rechner", + "bounds": [ + 735, + 25, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.13", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 483, + 185, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "DNS-Server (de.)", + "label": "Rechner", + "bounds": [ + 726, + 145, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.14", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "DNS-Server (filius.de.)", + "label": "Rechner", + "bounds": [ + 709, + 276, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.15", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 0, + 1 + ], + [ + 1, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 1 + ] + }, + { + "ends": [ + [ + 2, + 0 + ], + [ + 0, + 3 + ] + ], + "wireless": false, + "panel": [ + 2, + 0 + ] + }, + { + "ends": [ + [ + 3, + 0 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 0 + ] + }, + { + "ends": [ + [ + 0, + 2 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 5 + ] + }, + { + "ends": [ + [ + 5, + 1 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 4 + ] + }, + { + "ends": [ + [ + 5, + 2 + ], + [ + 6, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 6 + ] + }, + { + "ends": [ + [ + 5, + 3 + ], + [ + 7, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 7 + ] + } + ], + "documentation": [], + "sha256": "fa9080e5707de6f7b511f82e63496bfb1928b5d85bf3bf50b44d88aa509eeea7" + }, + "java-examples/einfaches_rechnernetz_komplett.fls": { + "success": true, + "nodes": [ + { + "class": "Rechner", + "name": "Rechner 1", + "label": "Rechner", + "bounds": [ + 32, + 97, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.11", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner 2", + "label": "Rechner", + "bounds": [ + 30, + 226, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.12", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner 3", + "label": "Rechner", + "bounds": [ + 31, + 364, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.13", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner 4", + "label": "Rechner", + "bounds": [ + 36, + 503, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.14", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Server", + "label": "Rechner", + "bounds": [ + 564, + 39, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.100", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch 3", + "label": "Switch / WLAN", + "bounds": [ + 449, + 180, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook 1", + "label": "Notebook", + "bounds": [ + 348, + 512, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "169.254.59.98", + "mask": "0.0.0.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 2", + "label": "Notebook", + "bounds": [ + 498, + 513, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "169.254.149.102", + "mask": "0.0.0.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 3", + "label": "Notebook", + "bounds": [ + 634, + 510, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "169.254.43.216", + "mask": "0.0.0.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 4", + "label": "Notebook", + "bounds": [ + 768, + 509, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "169.254.19.11", + "mask": "0.0.0.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch 2", + "label": "Switch / WLAN", + "bounds": [ + 601, + 368, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Switch", + "name": "Switch 1", + "label": "Switch / WLAN", + "bounds": [ + 224, + 300, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 0, + 0 + ], + [ + 11, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 11 + ] + }, + { + "ends": [ + [ + 1, + 0 + ], + [ + 11, + 1 + ] + ], + "wireless": false, + "panel": [ + 1, + 11 + ] + }, + { + "ends": [ + [ + 2, + 0 + ], + [ + 11, + 2 + ] + ], + "wireless": false, + "panel": [ + 2, + 11 + ] + }, + { + "ends": [ + [ + 3, + 0 + ], + [ + 11, + 3 + ] + ], + "wireless": false, + "panel": [ + 3, + 11 + ] + }, + { + "ends": [ + [ + 11, + 4 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 11, + 5 + ] + }, + { + "ends": [ + [ + 5, + 1 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 4 + ] + }, + { + "ends": [ + [ + 5, + 2 + ], + [ + 10, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 10 + ] + }, + { + "ends": [ + [ + 6, + 0 + ], + [ + 10, + 1 + ] + ], + "wireless": false, + "panel": [ + 6, + 10 + ] + }, + { + "ends": [ + [ + 7, + 0 + ], + [ + 10, + 2 + ] + ], + "wireless": false, + "panel": [ + 7, + 10 + ] + }, + { + "ends": [ + [ + 8, + 0 + ], + [ + 10, + 3 + ] + ], + "wireless": false, + "panel": [ + 8, + 10 + ] + }, + { + "ends": [ + [ + 9, + 0 + ], + [ + 10, + 4 + ] + ], + "wireless": false, + "panel": [ + 9, + 10 + ] + } + ], + "documentation": [], + "sha256": "3e5ab47c056b9581d8422ddff06719c84111ff6894701bf74b166c4c010dfc29" + }, + "java-examples/email_komplett.fls": { + "success": true, + "nodes": [ + { + "class": "Rechner", + "name": "Web-Server", + "label": "Rechner", + "bounds": [ + 460, + 147, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.231", + "mask": "255.255.255.128", + "mac": "1A:77:96:CF:32:33", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Rechner 3", + "label": "Notebook", + "bounds": [ + 81, + 266, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.183", + "mask": "255.255.255.128", + "mac": "5F:A4:08:F1:FC:88", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Rechner 4", + "label": "Notebook", + "bounds": [ + 83, + 375, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.184", + "mask": "255.255.255.128", + "mac": "9D:8C:F6:C9:98:AE", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Rechner 1", + "label": "Notebook", + "bounds": [ + 82, + 59, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.181", + "mask": "255.255.255.128", + "mac": "A8:13:4D:62:BF:61", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Rechner 2", + "label": "Notebook", + "bounds": [ + 82, + 161, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.182", + "mask": "255.255.255.128", + "mac": "FD:92:36:FB:99:6D", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 284, + 238, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "DNS-Server", + "label": "Rechner", + "bounds": [ + 469, + 30, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.230", + "mask": "255.255.255.128", + "mac": "9D:26:F9:23:B2:F9", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Mail-Server (filius.de)", + "label": "Rechner", + "bounds": [ + 432, + 285, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.232", + "mask": "255.255.255.128", + "mac": "37:DF:DC:1A:CF:E0", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Mail-Server (senior.de)", + "label": "Rechner", + "bounds": [ + 430, + 414, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.233", + "mask": "255.255.255.128", + "mac": "7A:10:61:61:15:A3", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 3, + 0 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 5 + ] + }, + { + "ends": [ + [ + 4, + 0 + ], + [ + 5, + 1 + ] + ], + "wireless": false, + "panel": [ + 4, + 5 + ] + }, + { + "ends": [ + [ + 1, + 0 + ], + [ + 5, + 2 + ] + ], + "wireless": false, + "panel": [ + 1, + 5 + ] + }, + { + "ends": [ + [ + 2, + 0 + ], + [ + 5, + 3 + ] + ], + "wireless": false, + "panel": [ + 2, + 5 + ] + }, + { + "ends": [ + [ + 5, + 4 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 0 + ] + }, + { + "ends": [ + [ + 5, + 5 + ], + [ + 6, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 6 + ] + }, + { + "ends": [ + [ + 5, + 6 + ], + [ + 7, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 7 + ] + }, + { + "ends": [ + [ + 5, + 7 + ], + [ + 8, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 8 + ] + } + ], + "documentation": [], + "sha256": "db96655e9ce9a17bdae05f1a2c7fef4001a70a096f6c70ced46eaed34dbe65e8" + }, + "java-examples/internetwork_komplett.fls": { + "success": true, + "nodes": [ + { + "class": "Switch", + "name": "Switch 1", + "label": "Switch / WLAN", + "bounds": [ + 164, + 178, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Switch", + "name": "Switch 2", + "label": "Switch / WLAN", + "bounds": [ + 612, + 104, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 395, + 47, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.1.1", + "mask": "255.255.255.0", + "mac": "C1:60:0A:E1:76:C5", + "gateway": "141.99.2.2", + "dns": "" + }, + { + "ip": "141.99.2.1", + "mask": "255.255.255.0", + "mac": "5A:54:FE:11:5D:6C", + "gateway": "141.99.2.2", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 602, + 263, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.2.2", + "mask": "255.255.255.0", + "mac": "6E:1E:CD:78:BE:78", + "gateway": "141.99.4.2", + "dns": "" + }, + { + "ip": "141.99.4.1", + "mask": "255.255.255.0", + "mac": "28:09:56:2D:27:6F", + "gateway": "141.99.4.2", + "dns": "" + }, + { + "ip": "141.99.3.1", + "mask": "255.255.255.0", + "mac": "F6:A4:32:18:E5:05", + "gateway": "141.99.4.2", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 497, + 493, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.4.2", + "mask": "255.255.255.0", + "mac": "63:D3:1F:5D:56:02", + "gateway": "141.99.4.1", + "dns": "" + }, + { + "ip": "141.99.5.1", + "mask": "255.255.255.0", + "mac": "28:1D:80:BE:38:62", + "gateway": "141.99.4.1", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Switch", + "name": "Switch 4", + "label": "Switch / WLAN", + "bounds": [ + 641, + 392, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "DNS-Server 2.10", + "label": "Rechner", + "bounds": [ + 694, + 19, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.2.10", + "mask": "255.255.255.0", + "mac": "55:69:1F:18:4C:96", + "gateway": "141.99.2.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1.10", + "label": "Notebook", + "bounds": [ + 53, + 100, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.1.10", + "mask": "255.255.255.0", + "mac": "95:11:22:49:65:CB", + "gateway": "141.99.1.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1.11", + "label": "Notebook", + "bounds": [ + 70, + 235, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.1.11", + "mask": "255.255.255.0", + "mac": "AE:F4:7A:63:81:B9", + "gateway": "", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner 3.10", + "label": "Rechner", + "bounds": [ + 759, + 196, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.3.10", + "mask": "255.255.255.0", + "mac": "E3:F7:EF:12:BC:94", + "gateway": "141.99.3.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Webserver 5.10", + "label": "Rechner", + "bounds": [ + 169, + 366, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.10", + "mask": "255.255.255.0", + "mac": "6D:C7:88:09:72:A8", + "gateway": "141.99.5.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 4.10", + "label": "Notebook", + "bounds": [ + 735, + 387, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.4.10", + "mask": "255.255.255.0", + "mac": "3F:34:B7:E1:52:67", + "gateway": "141.99.4.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch 5", + "label": "Switch / WLAN", + "bounds": [ + 302, + 408, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook 5.11", + "label": "Notebook", + "bounds": [ + 198, + 489, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.5.11", + "mask": "255.255.255.0", + "mac": "58:5D:D7:F0:C5:89", + "gateway": "141.99.5.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 7, + 0 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 7, + 0 + ] + }, + { + "ends": [ + [ + 8, + 0 + ], + [ + 0, + 1 + ] + ], + "wireless": false, + "panel": [ + 8, + 0 + ] + }, + { + "ends": [ + [ + 0, + 2 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 2 + ] + }, + { + "ends": [ + [ + 2, + 1 + ], + [ + 1, + 0 + ] + ], + "wireless": false, + "panel": [ + 2, + 1 + ] + }, + { + "ends": [ + [ + 1, + 1 + ], + [ + 6, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 6 + ] + }, + { + "ends": [ + [ + 1, + 2 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 3 + ] + }, + { + "ends": [ + [ + 3, + 1 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 5 + ] + }, + { + "ends": [ + [ + 3, + 2 + ], + [ + 9, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 9 + ] + }, + { + "ends": [ + [ + 11, + 0 + ], + [ + 5, + 2 + ] + ], + "wireless": false, + "panel": [ + 11, + 5 + ] + }, + { + "ends": [ + [ + 4, + 0 + ], + [ + 5, + 1 + ] + ], + "wireless": false, + "panel": [ + 4, + 5 + ] + }, + { + "ends": [ + [ + 4, + 1 + ], + [ + 12, + 0 + ] + ], + "wireless": false, + "panel": [ + 4, + 12 + ] + }, + { + "ends": [ + [ + 10, + 0 + ], + [ + 12, + 1 + ] + ], + "wireless": false, + "panel": [ + 10, + 12 + ] + }, + { + "ends": [ + [ + 13, + 0 + ], + [ + 12, + 2 + ] + ], + "wireless": false, + "panel": [ + 13, + 12 + ] + } + ], + "documentation": [], + "sha256": "1925c7dbe9f9e399fe94d8ae234e870e219a42d861c431aca9559a6f12dba06e" + }, + "java-examples/man-in-the-middle.fls": { + "success": true, + "nodes": [ + { + "class": "Notebook", + "name": "Alice", + "label": "Notebook", + "bounds": [ + 53, + 264, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.183", + "mask": "255.255.255.128", + "mac": "EA:B6:32:93:26:33", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Eve (Man-in-the-middle 141.99.50.184)", + "label": "Notebook", + "bounds": [ + 547, + 169, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.184", + "mask": "255.255.255.128", + "mac": "FA:17:C7:84:81:6E", + "gateway": "", + "dns": "127.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Bob", + "label": "Notebook", + "bounds": [ + 116, + 120, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.181", + "mask": "255.255.255.128", + "mac": "13:84:F1:E6:16:2A", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Internet", + "label": "Switch / WLAN", + "bounds": [ + 269, + 237, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "Manipulierter DNS-Server", + "label": "Rechner", + "bounds": [ + 408, + 49, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.230", + "mask": "255.255.255.128", + "mac": "F2:BF:5A:E0:17:CB", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Mail-Server (filius.de 141.99.50.232)", + "label": "Rechner", + "bounds": [ + 519, + 382, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.232", + "mask": "255.255.255.128", + "mac": "16:F4:6C:5F:0C:9C", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Mail-Server (senior.de 141.99.50.233)", + "label": "Rechner", + "bounds": [ + 278, + 405, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.50.233", + "mask": "255.255.255.128", + "mac": "D4:7A:40:9D:1B:91", + "gateway": "", + "dns": "141.99.50.230" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 2, + 0 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 2, + 3 + ] + }, + { + "ends": [ + [ + 0, + 0 + ], + [ + 3, + 2 + ] + ], + "wireless": false, + "panel": [ + 0, + 3 + ] + }, + { + "ends": [ + [ + 1, + 0 + ], + [ + 3, + 3 + ] + ], + "wireless": false, + "panel": [ + 1, + 3 + ] + }, + { + "ends": [ + [ + 3, + 5 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 4 + ] + }, + { + "ends": [ + [ + 3, + 6 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 5 + ] + }, + { + "ends": [ + [ + 3, + 7 + ], + [ + 6, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 6 + ] + } + ], + "documentation": [ + { + "type": 2, + "text": "The manipulated DNS-Server points to Eve, the \"man in the middle\", for both mail-servers. \n\nEve has her own Mail-Server and her own DNS-Server that points to the correct mail-servers. She receives Alice's and Bob's e-Mails and forwards them on to the correct servers. \n\nAlice and Bob have no way of knowing that Eve is interecepting all of their email. \n\nWatch the logs on all the email servers simultaneously while sending emails from Alice to Bob and back!", + "bounds": [ + 815, + 20, + 349, + 203 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "Der manipulierte DNS-Server gibt für beide Mail-Server Eves IP-Adresse an.\n\nEve hat ihren eigenen DNS-Server, der die richtigen Server-Adressen hat, und einen eigenen Mail-Server, der Alices und Bobs Mails an die jeweils richtigen Server weiterleitet.\n\nAlice und Bob merken nicht, dass Eve alles auf ihrem Mail-Server mitlesen kann.\n\nVerfolge den Verlauf in den Logs aller email-Server gleichzeitig, während Alice eine Mail an Bob sendet!", + "bounds": [ + 816, + 258, + 352, + 239 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 794, + 8, + 397, + 492 + ], + "color": [ + 191, + 255, + 219, + 255 + ], + "font": null + } + ], + "sha256": "600656780750c1ba46528fb3c1188a179bc2eb478a3cdb89bd6e44f39313a9e5" + }, + "java-examples/modem_beispiel.fls": { + "success": true, + "nodes": [ + { + "class": "Rechner", + "name": "Rechner 0.11", + "label": "Rechner", + "bounds": [ + 586, + 46, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.11", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 0.10", + "label": "Notebook", + "bounds": [ + 42, + 182, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Modem", + "name": "Modem (Zugreifend)", + "label": "Modem", + "bounds": [ + 237, + 212, + 21, + 20 + ], + "ports": [ + {} + ], + "system": { + "modem": { + "mode": 2, + "port": 12345, + "ipAdresse": "localhost" + } + } + }, + { + "class": "Modem", + "name": "Modem (Zugangspunkt)", + "label": "Modem", + "bounds": [ + 396, + 79, + 21, + 20 + ], + "ports": [ + {} + ], + "system": { + "modem": { + "mode": 2, + "port": 12345, + "ipAdresse": "localhost" + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 1, + 0 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 2 + ] + }, + { + "ends": [ + [ + 3, + 0 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 0 + ] + } + ], + "documentation": [], + "sha256": "708dfdc16eeb2f7889a8b2cd25022ff54170ded635c5a0be10f86fe631900307" + }, + "java-examples/multicast_server.fls": { + "success": true, + "nodes": [ + { + "class": "Rechner", + "name": "Rechner", + "label": "Rechner", + "bounds": [ + 731, + 164, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.1", + "mask": "255.255.255.0", + "mac": "25:9B:C0:C4:32:17", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 213, + 175, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": "54:84:0B:8A:58:0C", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 192, + 317, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.20", + "mask": "255.255.255.0", + "mac": "03:42:BB:88:50:95", + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 475, + 318, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 3, + 1 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 0 + ] + }, + { + "ends": [ + [ + 2, + 0 + ], + [ + 3, + 0 + ] + ], + "wireless": true, + "panel": [ + 2, + 3 + ] + }, + { + "ends": [ + [ + 1, + 0 + ], + [ + 3, + 2 + ] + ], + "wireless": true, + "panel": [ + 1, + 3 + ] + } + ], + "documentation": [], + "sha256": "527f7e5562c63337152005a4d7b58938fb3545b455b8bd7ff8dde1bff2e6f741" + }, + "java-examples/nat.fls": { + "success": true, + "nodes": [ + { + "class": "Gateway", + "name": "Heimrouter", + "label": "Heimrouter", + "bounds": [ + 382, + 181, + 21, + 20 + ], + "ports": [ + { + "ip": "10.0.0.1", + "mask": "255.0.0.0", + "mac": "49:71:D3:3F:F0:3E", + "gateway": "", + "dns": "" + }, + { + "ip": "192.168.0.1", + "mask": "255.255.255.0", + "mac": "F8:24:0B:58:BD:87", + "gateway": "", + "dns": "" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner", + "label": "Rechner", + "bounds": [ + 169, + 135, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.100", + "mask": "255.255.255.0", + "mac": "1E:A0:9E:34:FA:24", + "gateway": "192.168.0.1", + "dns": "192.168.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 850, + 148, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "10.0.0.100", + "mask": "255.255.255.0", + "mac": "23:2E:63:7C:81:B7", + "gateway": "192.168.0.1", + "dns": "192.168.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Internet", + "label": "Switch / WLAN", + "bounds": [ + 633, + 190, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 1, + 0 + ], + [ + 0, + 1 + ] + ], + "wireless": false, + "panel": [ + 1, + 0 + ] + }, + { + "ends": [ + [ + 0, + 0 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 3 + ] + }, + { + "ends": [ + [ + 3, + 1 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 2 + ] + } + ], + "documentation": [], + "sha256": "0b1cac470c2d99365f4971c5e4016e360a091f1fbaea30efefbe49e4f9331230" + }, + "java-examples/nat_with_mapped_port.fls": { + "success": true, + "nodes": [ + { + "class": "Switch", + "name": "Switch", + "label": "Switch / WLAN", + "bounds": [ + 300, + 131, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Switch", + "name": "Switch", + "label": "Switch / WLAN", + "bounds": [ + 676, + 161, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 551, + 90, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.1.1", + "mask": "255.255.255.0", + "mac": "C1:60:0A:E1:76:C5", + "gateway": "141.99.2.2", + "dns": "" + }, + { + "ip": "141.99.2.1", + "mask": "255.255.255.0", + "mac": "5A:54:FE:11:5D:6C", + "gateway": "141.99.2.2", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 559, + 263, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.2.2", + "mask": "255.255.255.0", + "mac": "6E:1E:CD:78:BE:78", + "gateway": "141.99.4.2", + "dns": "" + }, + { + "ip": "141.99.4.1", + "mask": "255.255.255.0", + "mac": "28:09:56:2D:27:6F", + "gateway": "141.99.4.2", + "dns": "" + }, + { + "ip": "141.99.3.1", + "mask": "255.255.255.0", + "mac": "F6:A4:32:18:E5:05", + "gateway": "141.99.4.2", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 562, + 426, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.4.2", + "mask": "255.255.255.0", + "mac": "63:D3:1F:5D:56:02", + "gateway": "141.99.4.1", + "dns": "" + }, + { + "ip": "141.99.5.1", + "mask": "255.255.255.0", + "mac": "28:1D:80:BE:38:62", + "gateway": "141.99.4.1", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "DNS-Server", + "label": "Rechner", + "bounds": [ + 837, + 119, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.2.10", + "mask": "255.255.255.0", + "mac": "55:69:1F:18:4C:96", + "gateway": "141.99.2.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1.10", + "label": "Notebook", + "bounds": [ + 152, + 54, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.100", + "mask": "255.255.255.0", + "mac": "95:11:22:49:65:CB", + "gateway": "192.168.0.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "192.168.0.101", + "label": "Notebook", + "bounds": [ + 157, + 202, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.101", + "mask": "255.255.255.0", + "mac": "AE:F4:7A:63:81:B9", + "gateway": "192.168.0.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Webserver www.jupiter.de", + "label": "Rechner", + "bounds": [ + 804, + 307, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.4.10", + "mask": "255.255.255.0", + "mac": "E3:F7:EF:12:BC:94", + "gateway": "141.99.4.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Webserver - 192.168.0.10", + "label": "Rechner", + "bounds": [ + 99, + 363, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": "6D:C7:88:09:72:A8", + "gateway": "192.168.0.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch", + "label": "Switch / WLAN", + "bounds": [ + 313, + 444, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook 5.11", + "label": "Notebook", + "bounds": [ + 260, + 538, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.100", + "mask": "255.255.255.0", + "mac": "58:5D:D7:F0:C5:89", + "gateway": "192.168.0.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Gateway", + "name": "Heimrouter Vincent", + "label": "Heimrouter", + "bounds": [ + 384, + 438, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.5.10", + "mask": "255.255.255.0", + "mac": "2F:1F:C3:B1:68:1A", + "gateway": "141.99.5.1", + "dns": "" + }, + { + "ip": "192.168.0.1", + "mask": "255.255.255.0", + "mac": "FD:7A:10:01:33:82", + "gateway": "141.99.5.1", + "dns": "" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Gateway", + "name": "Heimrouter Paul", + "label": "Heimrouter", + "bounds": [ + 375, + 122, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.1.10", + "mask": "255.255.255.0", + "mac": "25:13:13:0E:49:9D", + "gateway": "141.99.1.1", + "dns": "" + }, + { + "ip": "192.168.0.1", + "mask": "255.255.255.0", + "mac": "B9:64:F2:59:30:D6", + "gateway": "141.99.1.1", + "dns": "" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Switch", + "name": "Switch", + "label": "Switch / WLAN", + "bounds": [ + 694, + 342, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 6, + 0 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 6, + 0 + ] + }, + { + "ends": [ + [ + 7, + 0 + ], + [ + 0, + 1 + ] + ], + "wireless": false, + "panel": [ + 7, + 0 + ] + }, + { + "ends": [ + [ + 2, + 1 + ], + [ + 1, + 0 + ] + ], + "wireless": false, + "panel": [ + 2, + 1 + ] + }, + { + "ends": [ + [ + 1, + 1 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 5 + ] + }, + { + "ends": [ + [ + 1, + 2 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 3 + ] + }, + { + "ends": [ + [ + 9, + 0 + ], + [ + 10, + 1 + ] + ], + "wireless": false, + "panel": [ + 9, + 10 + ] + }, + { + "ends": [ + [ + 11, + 0 + ], + [ + 10, + 2 + ] + ], + "wireless": false, + "panel": [ + 11, + 10 + ] + }, + { + "ends": [ + [ + 0, + 2 + ], + [ + 13, + 1 + ] + ], + "wireless": false, + "panel": [ + 0, + 13 + ] + }, + { + "ends": [ + [ + 13, + 0 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 13, + 2 + ] + }, + { + "ends": [ + [ + 10, + 0 + ], + [ + 12, + 1 + ] + ], + "wireless": false, + "panel": [ + 10, + 12 + ] + }, + { + "ends": [ + [ + 12, + 0 + ], + [ + 4, + 1 + ] + ], + "wireless": false, + "panel": [ + 12, + 4 + ] + }, + { + "ends": [ + [ + 3, + 1 + ], + [ + 14, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 14 + ] + }, + { + "ends": [ + [ + 14, + 1 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 14, + 4 + ] + }, + { + "ends": [ + [ + 14, + 2 + ], + [ + 8, + 0 + ] + ], + "wireless": false, + "panel": [ + 14, + 8 + ] + } + ], + "documentation": [ + { + "type": 1, + "text": null, + "bounds": [ + 94, + 34, + 428, + 292 + ], + "color": [ + 204, + 204, + 204, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Pauls Home Network", + "bounds": [ + 316, + 42, + 142, + 26 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 0 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 95, + 349, + 428, + 296 + ], + "color": [ + 204, + 204, + 204, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Vincents Home Network", + "bounds": [ + 322, + 358, + 169, + 27 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 0 + ] + }, + { + "type": 2, + "text": "The home router is configured to forward traffic on port 80 to the webserver.", + "bounds": [ + 388, + 523, + 129, + 73 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "Traffic to the Webserver is forwarded by the home router. But the Echo Server on this host is only reachable from the local network.", + "bounds": [ + 113, + 483, + 167, + 108 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 792, + 52, + 224, + 489 + ], + "color": [ + 204, + 204, + 204, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "All services on this host are publicly available.", + "bounds": [ + 828, + 430, + 148, + 50 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "Hosts with public IP addresses", + "bounds": [ + 802, + 57, + 187, + 50 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + } + ], + "sha256": "97a490b6cd57dd3837a7c3aee0ab616f809010885d7a4648b3614b969f993c79" + }, + "java-examples/private_and_public_network.fls": { + "success": true, + "nodes": [ + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 373, + 185, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook 1.10", + "label": "Notebook", + "bounds": [ + 62, + 100, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": "95:11:22:49:65:CB", + "gateway": "192.168.0.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1.11", + "label": "Notebook", + "bounds": [ + 73, + 235, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.11", + "mask": "255.255.255.0", + "mac": "AE:F4:7A:63:81:B9", + "gateway": "192.168.0.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Gateway", + "name": "Heimrouter", + "label": "Heimrouter", + "bounds": [ + 488, + 179, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.2.100", + "mask": "255.255.255.0", + "mac": "D6:32:D9:8F:3C:C3", + "gateway": "", + "dns": "0.0.0.0" + }, + { + "ip": "192.168.0.1", + "mask": "255.255.255.0", + "mac": "55:DA:E5:38:11:16", + "gateway": "", + "dns": "0.0.0.0" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Switch", + "name": "Switch", + "label": "Switch / WLAN", + "bounds": [ + 726, + 196, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "Rechner", + "label": "Rechner", + "bounds": [ + 978, + 234, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.2.10", + "mask": "255.255.255.0", + "mac": "7B:2B:66:48:19:16", + "gateway": "141.99.2.1", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 0, + 2 + ], + [ + 3, + 1 + ] + ], + "wireless": false, + "panel": [ + 0, + 3 + ] + }, + { + "ends": [ + [ + 4, + 0 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 4, + 3 + ] + }, + { + "ends": [ + [ + 4, + 1 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 4, + 5 + ] + }, + { + "ends": [ + [ + 1, + 0 + ], + [ + 0, + 0 + ] + ], + "wireless": true, + "panel": [ + 1, + 0 + ] + }, + { + "ends": [ + [ + 2, + 0 + ], + [ + 0, + 1 + ] + ], + "wireless": true, + "panel": [ + 2, + 0 + ] + } + ], + "documentation": [ + { + "type": 1, + "text": null, + "bounds": [ + 37, + 24, + 586, + 390 + ], + "color": [ + 204, + 222, + 173, + 255 + ], + "font": null + }, + { + "type": 1, + "text": null, + "bounds": [ + 663, + 25, + 619, + 390 + ], + "color": [ + 204, + 204, + 204, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Heimnetz mit einem Switch bzw. WLAN Access Point und Heimrouter, die häufig in einem Gerät kombiniert sind.", + "bounds": [ + 257, + 33, + 343, + 49 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "Vereinfachtes Netz des Dienstanbieters mit nur einem Switch und angeschlossenem DNS- und Webserver.", + "bounds": [ + 702, + 35, + 244, + 74 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "Der Heimrouter verfügt über einen LAN- und einen WAN-Anschluss und unterstützt Network Address Translation (NAT). Dammit sind lokale IP-Adressen im öffentlichen Netz nicht sichtbar.", + "bounds": [ + 361, + 297, + 252, + 108 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "Heimnetz", + "bounds": [ + 47, + 31, + 100, + 50 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 1 + ] + }, + { + "type": 2, + "text": "Öffentliches Netz", + "bounds": [ + 1061, + 31, + 204, + 50 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 1 + ] + } + ], + "sha256": "cfb83cb1e978bef9264b3578dded0380ff0c173a06b2acb2f604a59dd46e961b" + }, + "java-examples/private_und_public_networks_mit_provider_DE.fls": { + "success": true, + "nodes": [ + { + "class": "Switch", + "name": "WLAN Access Point", + "label": "Switch / WLAN", + "bounds": [ + 358, + 185, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook 1.10", + "label": "Notebook", + "bounds": [ + 148, + 100, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.11", + "mask": "255.255.255.0", + "mac": "95:11:22:49:65:CB", + "gateway": "192.168.0.1", + "dns": "42.0.0.2" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1.11", + "label": "Notebook", + "bounds": [ + 78, + 227, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.12", + "mask": "255.255.255.0", + "mac": "AE:F4:7A:63:81:B9", + "gateway": "192.168.0.1", + "dns": "42.0.0.2" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Gateway", + "name": "Heimrouter", + "label": "Heimrouter", + "bounds": [ + 502, + 146, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.11", + "mask": "255.255.255.0", + "mac": "D6:32:D9:8F:3C:C3", + "gateway": "42.0.0.1", + "dns": "0.0.0.0" + }, + { + "ip": "192.168.0.1", + "mask": "255.255.255.0", + "mac": "55:DA:E5:38:11:16", + "gateway": "42.0.0.1", + "dns": "0.0.0.0" + } + ], + "system": { + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 243, + "sha256": "82d08041730728a01f9c7714db912699ff79a7a1b2211c48e283d6b8aec3f272", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "staticNAT": [], + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Switch", + "name": "Switch", + "label": "Switch / WLAN", + "bounds": [ + 651, + 83, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "Provider Server www.filius.de (42.0.0.2)", + "label": "Rechner", + "bounds": [ + 633, + 178, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "42.0.0.2", + "mask": "255.255.255.0", + "mac": "7B:2B:66:48:19:16", + "gateway": "42.0.0.1", + "dns": "8.8.8.8" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 740, + 84, + 21, + 20 + ], + "ports": [ + { + "ip": "42.0.0.1", + "mask": "255.255.255.0", + "mac": "49:E7:F2:39:E5:58", + "gateway": "1.0.0.1", + "dns": "" + }, + { + "ip": "1.0.0.2", + "mask": "255.255.255.0", + "mac": "C1:20:94:DC:20:AC", + "gateway": "1.0.0.1", + "dns": "" + }, + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": "02:0F:87:E5:B6:52", + "gateway": "1.0.0.1", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Rechner", + "name": "webserver.de (120.130.140.10)", + "label": "Rechner", + "bounds": [ + 1026, + 255, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "120.130.140.10", + "mask": "255.255.255.0", + "mac": "41:8E:FC:A1:C1:CD", + "gateway": "120.130.140.1", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "DNS (8.8.8.8)", + "label": "Rechner", + "bounds": [ + 1098, + 72, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "8.8.8.8", + "mask": "255.255.255.0", + "mac": "6E:31:51:DD:9E:45", + "gateway": "8.8.8.1", + "dns": "127.0.0.1" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 934, + 181, + 21, + 20 + ], + "ports": [ + { + "ip": "8.8.8.1", + "mask": "255.255.255.0", + "mac": "B5:EB:CB:68:70:48", + "gateway": "", + "dns": "" + }, + { + "ip": "120.130.140.1", + "mask": "255.255.255.0", + "mac": "D6:6E:0A:7C:2A:E9", + "gateway": "", + "dns": "" + }, + { + "ip": "1.0.0.1", + "mask": "255.255.255.0", + "mac": "7B:48:CA:D9:EC:DD", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 0, + 2 + ], + [ + 3, + 1 + ] + ], + "wireless": false, + "panel": [ + 0, + 3 + ] + }, + { + "ends": [ + [ + 4, + 0 + ], + [ + 3, + 0 + ] + ], + "wireless": false, + "panel": [ + 4, + 3 + ] + }, + { + "ends": [ + [ + 4, + 1 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 4, + 5 + ] + }, + { + "ends": [ + [ + 1, + 0 + ], + [ + 0, + 0 + ] + ], + "wireless": true, + "panel": [ + 1, + 0 + ] + }, + { + "ends": [ + [ + 2, + 0 + ], + [ + 0, + 1 + ] + ], + "wireless": true, + "panel": [ + 2, + 0 + ] + }, + { + "ends": [ + [ + 6, + 0 + ], + [ + 4, + 2 + ] + ], + "wireless": false, + "panel": [ + 6, + 4 + ] + }, + { + "ends": [ + [ + 9, + 0 + ], + [ + 8, + 0 + ] + ], + "wireless": false, + "panel": [ + 9, + 8 + ] + }, + { + "ends": [ + [ + 9, + 1 + ], + [ + 7, + 0 + ] + ], + "wireless": false, + "panel": [ + 9, + 7 + ] + }, + { + "ends": [ + [ + 9, + 2 + ], + [ + 6, + 1 + ] + ], + "wireless": false, + "panel": [ + 9, + 6 + ] + } + ], + "documentation": [ + { + "type": 1, + "text": null, + "bounds": [ + 37, + 24, + 586, + 390 + ], + "color": [ + 204, + 222, + 173, + 255 + ], + "font": null + }, + { + "type": 1, + "text": null, + "bounds": [ + 884, + 25, + 400, + 390 + ], + "color": [ + 252, + 201, + 163, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Heimnetz mit einem WLAN-Access-Point und Heimrouter, die häufig in einem Gerät kombiniert sind.", + "bounds": [ + 257, + 33, + 343, + 49 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "Vereinfachtes Netz des Dienstanbieters mit lokalem DNS- und Webserver für Kunden.", + "bounds": [ + 644, + 316, + 224, + 48 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "Der Heimrouter verfügt über einen LAN- und einen WAN-Anschluss und unterstützt Network Address Translation (NAT). Damit sind lokale IP-Adressen im öffentlichen Netz nicht sichtbar.", + "bounds": [ + 361, + 297, + 252, + 108 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 12, + 0 + ] + }, + { + "type": 2, + "text": "Heimnetz", + "bounds": [ + 47, + 31, + 100, + 50 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 1 + ] + }, + { + "type": 2, + "text": "Öffentliches Netz", + "bounds": [ + 1061, + 31, + 204, + 50 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 1 + ] + }, + { + "type": 1, + "text": null, + "bounds": [ + 635, + 25, + 239, + 391 + ], + "color": [ + 222, + 212, + 255, + 255 + ], + "font": null + }, + { + "type": 1, + "text": null, + "bounds": [ + -89, + 467, + 100, + 50 + ], + "color": [ + 204, + 204, + 204, + 255 + ], + "font": null + }, + { + "type": 2, + "text": "Provider Netz", + "bounds": [ + 688, + 36, + 131, + 31 + ], + "color": [ + 0, + 0, + 0, + 255 + ], + "font": [ + "Dialog", + 18, + 1 + ] + } + ], + "sha256": "a11b38423b8c828e1164af8e04c07e4854177e890ae31ee55a5d29bb4c540aeb" + }, + "java-examples/webserver.fls": { + "success": true, + "nodes": [ + { + "class": "Rechner", + "name": "Webserver", + "label": "Rechner", + "bounds": [ + 501, + 93, + 21, + 20 + ], + "useIpAsName": true, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.100", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook", + "label": "Notebook", + "bounds": [ + 102, + 151, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.10", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch / WLAN", + "label": "Switch / WLAN", + "bounds": [ + 329, + 146, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 1, + 0 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 2 + ] + }, + { + "ends": [ + [ + 2, + 1 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 2, + 0 + ] + } + ], + "documentation": [], + "sha256": "9e85d436731d44c7dab1dbca44cbb7eefcd4049c6dc4c97e6b811133da6cc280" + }, + "java-examples/zwei_rechnernetze_komplett.fls": { + "success": true, + "nodes": [ + { + "class": "Switch", + "name": "Switch 1", + "label": "Switch / WLAN", + "bounds": [ + 164, + 178, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Switch", + "name": "Switch 2", + "label": "Switch / WLAN", + "bounds": [ + 612, + 104, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Rechner", + "name": "DNS-Server 2.10", + "label": "Rechner", + "bounds": [ + 694, + 19, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.2.10", + "mask": "255.255.255.0", + "mac": "55:69:1F:18:4C:96", + "gateway": "141.99.2.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1.10", + "label": "Notebook", + "bounds": [ + 53, + 100, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.1.10", + "mask": "255.255.255.0", + "mac": "95:11:22:49:65:CB", + "gateway": "141.99.1.1", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 1.11", + "label": "Notebook", + "bounds": [ + 70, + 235, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "141.99.1.11", + "mask": "255.255.255.0", + "mac": "AE:F4:7A:63:81:B9", + "gateway": "", + "dns": "141.99.2.10" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Vermittlungsrechner", + "name": "Vermittlungsrechner", + "label": "Vermittlungsrechner", + "bounds": [ + 373, + 106, + 21, + 20 + ], + "ports": [ + { + "ip": "141.99.1.1", + "mask": "255.255.255.0", + "mac": "A4:F4:2A:89:9F:E8", + "gateway": "", + "dns": "" + }, + { + "ip": "141.99.2.1", + "mask": "255.255.255.0", + "mac": "6D:B4:5B:F1:70:FC", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 3, + 0 + ], + [ + 0, + 0 + ] + ], + "wireless": false, + "panel": [ + 3, + 0 + ] + }, + { + "ends": [ + [ + 4, + 0 + ], + [ + 0, + 1 + ] + ], + "wireless": false, + "panel": [ + 4, + 0 + ] + }, + { + "ends": [ + [ + 1, + 1 + ], + [ + 2, + 0 + ] + ], + "wireless": false, + "panel": [ + 1, + 2 + ] + }, + { + "ends": [ + [ + 0, + 2 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 5 + ] + }, + { + "ends": [ + [ + 5, + 1 + ], + [ + 1, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 1 + ] + } + ], + "documentation": [], + "sha256": "fbbcf5fd996a17f9d443865f83232870de866ace6823aa1614ba6173bb5e39db" + }, + "java-tests/einfaches_rechnernetz_komplett.fls": { + "success": true, + "nodes": [ + { + "class": "Rechner", + "name": "Rechner 1", + "label": "Rechner", + "bounds": [ + 32, + 97, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.11", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner 2", + "label": "Rechner", + "bounds": [ + 30, + 226, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.12", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner 3", + "label": "Rechner", + "bounds": [ + 31, + 364, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.13", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Rechner 4", + "label": "Rechner", + "bounds": [ + 36, + 503, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.14", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Rechner", + "name": "Server", + "label": "Rechner", + "bounds": [ + 564, + 39, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "192.168.0.100", + "mask": "255.255.255.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch 3", + "label": "Switch / WLAN", + "bounds": [ + 449, + 180, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Notebook", + "name": "Notebook 1", + "label": "Notebook", + "bounds": [ + 348, + 512, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "169.254.59.98", + "mask": "0.0.0.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 2", + "label": "Notebook", + "bounds": [ + 498, + 513, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "169.254.149.102", + "mask": "0.0.0.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 3", + "label": "Notebook", + "bounds": [ + 634, + 510, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "169.254.43.216", + "mask": "0.0.0.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Notebook", + "name": "Notebook 4", + "label": "Notebook", + "bounds": [ + 768, + 509, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": false, + "ports": [ + { + "ip": "169.254.19.11", + "mask": "0.0.0.0", + "mac": null, + "gateway": "", + "dns": "192.168.0.100" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "Switch 2", + "label": "Switch / WLAN", + "bounds": [ + 601, + 368, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Switch", + "name": "Switch 1", + "label": "Switch / WLAN", + "bounds": [ + 224, + 300, + 21, + 20 + ], + "ports": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + } + ], + "cables": [ + { + "ends": [ + [ + 0, + 0 + ], + [ + 11, + 0 + ] + ], + "wireless": false, + "panel": [ + 0, + 11 + ] + }, + { + "ends": [ + [ + 1, + 0 + ], + [ + 11, + 1 + ] + ], + "wireless": false, + "panel": [ + 1, + 11 + ] + }, + { + "ends": [ + [ + 2, + 0 + ], + [ + 11, + 2 + ] + ], + "wireless": false, + "panel": [ + 2, + 11 + ] + }, + { + "ends": [ + [ + 3, + 0 + ], + [ + 11, + 3 + ] + ], + "wireless": false, + "panel": [ + 3, + 11 + ] + }, + { + "ends": [ + [ + 11, + 4 + ], + [ + 5, + 0 + ] + ], + "wireless": false, + "panel": [ + 11, + 5 + ] + }, + { + "ends": [ + [ + 5, + 1 + ], + [ + 4, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 4 + ] + }, + { + "ends": [ + [ + 5, + 2 + ], + [ + 10, + 0 + ] + ], + "wireless": false, + "panel": [ + 5, + 10 + ] + }, + { + "ends": [ + [ + 6, + 0 + ], + [ + 10, + 1 + ] + ], + "wireless": false, + "panel": [ + 6, + 10 + ] + }, + { + "ends": [ + [ + 7, + 0 + ], + [ + 10, + 2 + ] + ], + "wireless": false, + "panel": [ + 7, + 10 + ] + }, + { + "ends": [ + [ + 8, + 0 + ], + [ + 10, + 3 + ] + ], + "wireless": false, + "panel": [ + 8, + 10 + ] + }, + { + "ends": [ + [ + 9, + 0 + ], + [ + 10, + 4 + ] + ], + "wireless": false, + "panel": [ + 9, + 10 + ] + } + ], + "documentation": [], + "sha256": "3e5ab47c056b9581d8422ddff06719c84111ff6894701bf74b166c4c010dfc29" + }, + "java-tests/empty.fls": { + "success": true, + "nodes": [], + "cables": [], + "documentation": [], + "sha256": "49855a61d8576af64e50c211807e658d69daa924a411ced654a3452070b1722c" + }, + "synthetic/synthetic.fls": { + "success": true, + "nodes": [ + { + "class": "Rechner", + "name": null, + "label": "Rechner", + "bounds": [ + 10, + 20, + 21, + 20 + ], + "useIpAsName": false, + "useMacAsName": true, + "ports": [ + { + "ip": "10.0.0.1", + "mask": "255.0.0.0", + "mac": "AA:BB:CC:DD:EE:01", + "gateway": null, + "dns": "10.0.0.53" + } + ], + "system": { + "ssid": null, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [] + }, + "applications": [], + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + } + } + }, + { + "class": "Switch", + "name": "S", + "label": "Switch / WLAN", + "bounds": [ + 100, + 20, + 21, + 20 + ], + "ports": [ + {}, + {}, + {} + ], + "system": { + "ssid": null, + "retentionTime": 300000 + } + }, + { + "class": "Vermittlungsrechner", + "name": "R", + "label": "Vermittlungsrechner", + "bounds": [ + 200, + 20, + 21, + 20 + ], + "ports": [ + { + "ip": "10.0.1.1", + "mask": "255.255.255.0", + "mac": "AA:BB:CC:DD:EE:11", + "gateway": "", + "dns": "" + }, + { + "ip": "10.0.2.1", + "mask": "255.255.255.0", + "mac": "AA:BB:CC:DD:EE:12", + "gateway": "", + "dns": "" + }, + { + "ip": "10.0.3.1", + "mask": "255.255.255.0", + "mac": "AA:BB:CC:DD:EE:13", + "gateway": "", + "dns": "" + } + ], + "system": { + "ripEnabled": false, + "manualRoutes": [], + "fileSystem": { + "directory": "root", + "children": [ + { + "directory": "webserver", + "children": [ + { + "file": "index.html", + "type": "html", + "length": 394, + "sha256": "df21e97824b59cc7c88e1cfdedad94f20ca595af4577751b641ef42b9d918bca", + "children": [] + }, + { + "file": "splashscreen-mini.png", + "type": "png", + "length": 8397, + "sha256": "c876b828d7258ddfce4aa01ecaa69d4685d238bccf6a94842972165bd1a0107c", + "children": [] + } + ] + } + ] + }, + "dhcpClient": false, + "dhcpServer": { + "aktiv": false, + "untergrenze": "0.0.0.0", + "obergrenze": "0.0.0.0", + "gatewayip": "0.0.0.0", + "dnsserverip": "0.0.0.0", + "ownSettings": false, + "staticAssignedAddresses": [] + }, + "firewall": { + "activated": false, + "defaultPolicy": 0, + "dropICMP": false, + "filterSYNSegmentsOnly": true, + "filterUdp": true, + "rules": [] + } + } + }, + { + "class": "Modem", + "name": "M", + "label": "Modem", + "bounds": [ + 300, + 20, + 21, + 20 + ], + "ports": [ + {} + ], + "system": { + "modem": { + "mode": 2, + "port": 12345, + "ipAdresse": "localhost" + } + } + } + ], + "cables": [ + { + "ends": [ + [ + 0, + 0 + ], + [ + 1, + 2 + ] + ], + "wireless": false, + "panel": [ + 0, + 1 + ] + }, + { + "ends": [ + [ + 2, + 2 + ], + [ + 1, + 0 + ] + ], + "wireless": true, + "panel": [ + 2, + 1 + ] + } + ], + "documentation": [ + { + "type": 1, + "text": null, + "bounds": [ + 5, + 6, + 70, + 80 + ], + "color": null, + "font": null + } + ], + "sha256": "4c35616f26ce28d77f0474aa0dab34ca71508c4c1b5636f7b38fe19f082d8e1d" + } +} diff --git a/tools/java-oracle/README.md b/tools/java-oracle/README.md index c27b55a..155596f 100644 --- a/tools/java-oracle/README.md +++ b/tools/java-oracle/README.md @@ -85,6 +85,17 @@ wird leer, der Eintrag bleibt trotzdem; Typen außer A/MX/NS (auch `a`, `CNAME`, eine Kommentarzeile) gelten als gültig; eine TTL, die kein `int` ist, wird still 3600. +## Was Java aus unseren Dateien lädt + +`run.sh` lädt auch die Dateien unter `packages/fls/test/written/`, die +`topologyWriter.test.ts` mit `UPDATE_WRITTEN=1` schreibt (nicht +eingecheckt), mit derselben Lademethode wie den Korpus, und schreibt +`packages/fls/test/written.java.json` samt SHA-256 jeder Datei +(`--sha256`), damit der Test merkt, wenn der Befund nicht mehr zur Ausgabe +passt. Je Kabel steht auch `panel`: die Geräte, zwischen denen die +Oberfläche es zeichnet (`JCablePanel.ziel1/ziel2`) — im Korpus bei allen 183 +Kabeln die Geräte, die es verbindet. + ## Was Java aus unserem XML macht `BeansDump` liest jede `*.xml` unter `packages/fls/test/beans/` mit diff --git a/tools/java-oracle/run.sh b/tools/java-oracle/run.sh index 089ebc7..7169a8c 100755 --- a/tools/java-oracle/run.sh +++ b/tools/java-oracle/run.sh @@ -88,3 +88,13 @@ beans="$root/packages/fls/test/beans" rm -f "$beans/beans.java.json" HOME="$here/.build/home" xvfb-run -a java -cp "$classpath:$here/.build" BeansDump "$beans" "$beans/beans.java.json" 2>&1 | grep -v 'logback\|^$' || true test -s "$beans/beans.java.json" + +# What Java loads from the files packages/fls writes (topologyWriter.test.ts +# writes them with UPDATE_WRITTEN=1; the files are not checked in, their +# SHA-256 is). +written="$root/packages/fls/test/written" +if [ -d "$written" ]; then + rm -f "$written.java.json" + HOME="$here/.build/home" xvfb-run -a java -cp "$classpath:$here/.build" FlsOracle "$written" "$written.java.json" --sha256 2>&1 | grep -v 'logback\|^$' || true + test -s "$written.java.json" +fi diff --git a/tools/java-oracle/src/FlsOracle.java b/tools/java-oracle/src/FlsOracle.java index 5ddca22..d5b8302 100644 --- a/tools/java-oracle/src/FlsOracle.java +++ b/tools/java-oracle/src/FlsOracle.java @@ -6,6 +6,7 @@ import filius.gui.netzwerksicht.GUIDocuItem; import filius.gui.netzwerksicht.GUIKabelItem; +import filius.gui.netzwerksicht.JCablePanel; import filius.gui.netzwerksicht.GUIKnotenItem; import filius.hardware.Kabel; import filius.hardware.NetzwerkInterface; @@ -72,7 +73,9 @@ public class FlsOracle { for (Path file : files) { String name = root.relativize(file).toString(); try { - result.put(name, read(file)); + Map view = read(file); + if (args.length > 2 && args[2].equals("--sha256")) view.put("sha256", sha256(Files.readAllBytes(file))); + result.put(name, view); } catch (Throwable error) { Throwable cause = error instanceof java.lang.reflect.InvocationTargetException && error.getCause() != null ? error.getCause() @@ -96,6 +99,19 @@ public class FlsOracle { System.exit(0); } + /** The position of an item in a list by identity, null when absent. */ + static Integer indexOf(List list, Object item) { + if (item == null) return null; + for (int index = 0; index < list.size(); index++) if (list.get(index) == item) return index; + return null; + } + + static String sha256(byte[] bytes) throws Exception { + StringBuilder hex = new StringBuilder(); + for (byte value : java.security.MessageDigest.getInstance("SHA-256").digest(bytes)) hex.append(String.format("%02x", value)); + return hex.toString(); + } + /** * Loads the file twice. What FILIUS does not find in a file it rolls at * random (MAC addresses, a switch's SSID) — such values differ between @@ -208,6 +224,10 @@ public class FlsOracle { } json.put("ends", ends); json.put("wireless", cable != null && cable.getWireless()); + // The nodes the editor draws the cable between (JCablePanel). + JCablePanel panel = item.getKabelpanel(); + json.put("panel", panel == null ? null + : Arrays.asList(indexOf(nodes, panel.getZiel1()), indexOf(nodes, panel.getZiel2()))); cableList.add(json); }