From facad5843e897559a0aea84ffcdd18a959da0b2e Mon Sep 17 00:00:00 2001 From: Julian Kiedaisch Date: Wed, 30 Sep 2026 08:18:52 +0000 Subject: [PATCH] feat(fls): write the system software of a .fls, loaded by Java as the original topologyWriter.ts now sets the system software each device's constructor makes, through its setters: a switch's SSID and learning time, a host's SSID, RIP, manual routes, DHCP client and server with static assignments, static NAT, the modem, and a router's or home router's firewall. The firewall is reached as XMLEncoder reaches it, through the web server's `konfig` plug-in: the constructor hangs the same object there and among the applications, where its key differs (Firewall on a router, NatGateway on a home router). A switch's SSID the file lacked stays unwritten, so Java rolls one as it did. Files and applications are later layers. javaBeansWriter.ts: a call can carry statements on its result (a map's value changed through get(key)), checked by Java's XMLDecoder in a new case; a short() helper for Java's short values. Checked by Java against Java: every corpus file, read and written again, loads with the same system software (without files and applications) as the original. The synthetic topology adds what the corpus lacks: a router firewall switched on with rules of every protocol (one with a null address), every flag away from its default, a modem with its own port and target, and a PC's SSID, routes and DHCP server. 16 mutation probes, each rewritten and loaded by Java, were all caught. Co-Authored-By: Claude Opus 5.5 --- CHANGES.md | 6 +- packages/fls/src/javaBeansWriter.ts | 14 +- packages/fls/src/topologyWriter.ts | 119 ++++- packages/fls/test/beans/beans.java.json | 30 +- packages/fls/test/beans/results.xml | 19 + packages/fls/test/javaBeansWriter.test.ts | 12 + packages/fls/test/topologyWriter.test.ts | 153 +++++- packages/fls/test/written.java.json | 623 +++++++++++++++------- 8 files changed, 749 insertions(+), 227 deletions(-) create mode 100644 packages/fls/test/beans/results.xml diff --git a/CHANGES.md b/CHANGES.md index c78e561..9a295b8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -48,9 +48,9 @@ Swift-Pfade relativ zu `filius-ipad/ios/FiliusPad/TopologyEditor/` (Stand | `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 | +| `test/javaBeansWriter.test.ts`, `test/beans/` | — | neu: 11 Dateien des Schreibers, von Javas `XMLDecoder` gelesen und beschrieben; Erwartungen von Hand | +| `src/topologyWriter.ts` | Java `SzenarioVerwaltung.netzwerkSpeichern`, Konstruktoren von `NetzwerkInterface`, `Port`, `GUIKabelItem` und der Systemsoftware | 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; Systemsoftware über ihre Setter: SSID, Lernzeit, RIP, manuelle Routen, DHCP-Client und -Server, statische NAT, Modem, Router-Firewall (über das `konfig`-Plug-in des Webservers, wie XMLEncoder sie erreicht); 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 und Systemsoftware (ohne Dateien und Programme) wie beim Original (Java gegen Java); dazu eine künstliche Topologie mit dem, was der Korpus nicht hat (u. a. eingeschaltete Router-Firewall mit Regeln jedes Protokolls, alle Firewall-Schalter abseits der Vorgabe, Modem mit eigenem Port und Ziel) | | `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/packages/fls/src/javaBeansWriter.ts b/packages/fls/src/javaBeansWriter.ts index 319a16d..77140e2 100644 --- a/packages/fls/src/javaBeansWriter.ts +++ b/packages/fls/src/javaBeansWriter.ts @@ -59,14 +59,15 @@ export type BeanStatement = | { readonly set: string; readonly value: BeanValue } /** 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.m(args), then the statements on its result */ + | { readonly call: string; readonly args: readonly BeanValue[]; readonly statements?: readonly BeanStatement[] } /** target.set(index, value) on a list */ | { readonly setIndex: number; readonly value: BeanValue } /** 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 short = (value: number): BeanPrimitive => ({ kind: 'short', value }); export const long = (value: number | bigint): BeanPrimitive => ({ kind: 'long', value }); export const double = (value: number): BeanPrimitive => ({ kind: 'double', value }); export const float = (value: number): BeanPrimitive => ({ kind: 'float', value }); @@ -194,12 +195,14 @@ class Writer { } else if ('get' in statement) { this.getter(`property="${escapeAttribute(statement.get)}"`, statement.statements, statement.as, depth, lines); } else if ('call' in statement) { - if (statement.args.length === 0) { + const inner = statement.statements ?? []; + if (statement.args.length === 0 && inner.length === 0) { lines.push(`${indent}`); return; } nested(` { for (const arg of statement.args) this.value(arg, depth + 1, lines); + for (const each of inner) this.statement(each, depth + 1, lines); }); } else if ('setIndex' in statement) { nested(` this.value(statement.value, depth + 1, lines)); @@ -252,7 +255,10 @@ function sharedObjects(roots: readonly BeanValue[]): Set const shared = new Set(); const visitStatement = (statement: BeanStatement): void => { if ('set' in statement || 'setIndex' in statement) visit(statement.value); - else if ('call' in statement) statement.args.forEach(visit); + else if ('call' in statement) { + statement.args.forEach(visit); + (statement.statements ?? []).forEach(visitStatement); + } else statement.statements.forEach(visitStatement); }; const visit = (value: BeanValue): void => { diff --git a/packages/fls/src/topologyWriter.ts b/packages/fls/src/topologyWriter.ts index f13827e..ce14693 100644 --- a/packages/fls/src/topologyWriter.ts +++ b/packages/fls/src/topologyWriter.ts @@ -1,5 +1,6 @@ // Writes `projekt/konfiguration.xml` from Java's view of a project — the -// counterpart of topology.ts. The four values Java's netzwerkLaden reads: the +// counterpart of topology.ts and, for the system software, of +// systemSoftware.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; @@ -7,28 +8,42 @@ // objects of the nodes, so the same cable joins the same ports when Java // loads the file. // +// The system software is the one the node's constructor makes; its settings +// are set through getters. A router's or home router's firewall is reached +// the way XMLEncoder reaches it: through the web server's `konfig` plug-in, +// which holds the same object (its key among the installed applications +// differs: Firewall on a router, NatGateway on a home router). Files and +// applications are later layers. +// // Checked by Java: every corpus file, read and written again, loads in Java -// FILIUS to the same topology (topologyWriter.test.ts, tools/java-oracle). +// FILIUS to the same topology and system software (topologyWriter.test.ts, +// tools/java-oracle). import { encodeJavaBeans, int, + long, object, reference, type BeanObject, type BeanReference, type BeanStatement, type BeanValue, + short, } from './javaBeansWriter.js'; +import type { FlsFirewall, FlsSystemSoftware } from './systemSoftware.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)'; +/** The system software's settings; its files and applications are later layers. */ +export type SystemToWrite = Omit; + export type NodeToWrite = Pick< FlsNode, 'javaClass' | 'name' | 'x' | 'y' | 'useIpAsName' | 'useMacAsName' | 'interfaces' | 'portCount' ->; +> & { readonly system: SystemToWrite }; export interface TopologyToWrite { readonly nodes: readonly NodeToWrite[]; @@ -124,9 +139,107 @@ function device(node: NodeToWrite, ports: BeanValue[]): BeanObject { ), ); } + statements.push({ get: 'systemSoftware', statements: systemStatements(node.system, node.javaClass) }); return object(`filius.hardware.knoten.${node.javaClass}`, statements); } +const WEB_SERVER_CLASS = 'filius.software.www.WebServer'; + +/** + * The settings the file has, each set on the constructor's system software. + * A switch's SSID the file lacked stays unwritten, so Java rolls one as it did. + */ +function systemStatements(system: SystemToWrite, javaClass: FlsNodeClass): BeanStatement[] { + const statements: BeanStatement[] = []; + if (system.firewall !== undefined) { + statements.push({ + get: 'installierteAnwendungen', + statements: [ + { + call: 'get', + args: [WEB_SERVER_CLASS], + statements: [ + { get: 'plugins', statements: [{ call: 'get', args: ['konfig'], statements: [{ get: 'firewall', statements: firewallStatements(system.firewall) }] }] }, + ], + }, + ], + }); + } + if (system.dhcpServer !== undefined) { + const server = system.dhcpServer; + statements.push({ + get: 'DHCPServer', + statements: [ + { set: 'aktiv', value: server.isActive }, + { set: 'untergrenze', value: server.lowerBound }, + { set: 'obergrenze', value: server.upperBound }, + { set: 'gatewayip', value: server.gateway }, + { set: 'dnsserverip', value: server.dnsServer }, + { set: 'ownSettings', value: server.useOwnSettings }, + { + set: 'staticAssignedAddresses', + value: object( + 'java.util.ArrayList', + server.staticAssignedAddresses.map(({ mac, ip }) => ({ call: 'add', args: [`${mac} ${ip}`] })), + ), + }, + ], + }); + } + if (system.dhcpClient !== undefined) statements.push({ set: 'DHCPKonfiguration', value: system.dhcpClient }); + if (system.manualRoutes !== undefined) { + statements.push({ get: 'weiterleitungstabelle', statements: [{ set: 'manuelleTabelle', value: rows(system.manualRoutes) }] }); + } + if (system.ripEnabled !== undefined) statements.push({ set: 'ripEnabled', value: system.ripEnabled }); + if (system.retentionTime !== undefined) statements.push({ set: 'retentionTime', value: long(system.retentionTime) }); + if (system.staticNAT !== undefined) statements.push({ set: 'staticNAT', value: rows(system.staticNAT) }); + if (system.modem !== undefined) { + statements.push( + { set: 'mode', value: int(system.modem.mode) }, + { set: 'port', value: int(system.modem.port) }, + { set: 'ipAdresse', value: system.modem.ipAddress }, + ); + } + // SwitchFirmware.setSSID, Betriebssystem.setSsid. + if (system.ssid !== undefined) statements.push({ set: javaClass === 'Switch' ? 'SSID' : 'ssid', value: system.ssid }); + return statements; +} + +/** A LinkedList of String arrays: routes, static NAT. */ +function rows(table: readonly (readonly (string | null)[])[]): BeanObject { + return listOf(table.map((row) => ({ kind: 'array', componentClass: 'java.lang.String', items: [...row] }))); +} + +function firewallStatements(firewall: FlsFirewall): BeanStatement[] { + return [ + { set: 'activated', value: firewall.activated }, + { set: 'defaultPolicy', value: short(firewall.defaultPolicy) }, + { set: 'dropICMP', value: firewall.dropICMP }, + { set: 'filterSYNSegmentsOnly', value: firewall.filterSYNSegmentsOnly }, + { set: 'filterUdp', value: firewall.filterUdp }, + { + set: 'ruleset', + value: object( + 'java.util.Vector', + firewall.rules.map((rule) => ({ + call: 'add', + args: [ + object('filius.software.firewall.FirewallRule', [], [ + rule.srcIP, + rule.srcMask, + rule.destIP, + rule.destMask, + int(rule.port), + short(rule.protocol), + short(rule.action), + ]), + ], + })), + ), + }, + ]; +} + /** * A list the constructor filled with `constructed` elements: those are * changed through `get(index)`, more are added. With fewer, the list is set diff --git a/packages/fls/test/beans/beans.java.json b/packages/fls/test/beans/beans.java.json index f55ef79..f1c3735 100644 --- a/packages/fls/test/beans/beans.java.json +++ b/packages/fls/test/beans/beans.java.json @@ -316,7 +316,7 @@ "string": "10.0.0.1" }, "mac": { - "string": "8E:A8:7E:96:38:62" + "string": "EE:8A:4E:46:17:34" }, "port": { "id": 2, @@ -337,6 +337,34 @@ ], "errors": [] }, + "results.xml": { + "values": [ + { + "id": 0, + "class": "java.util.HashMap", + "entries": [ + [ + { + "string": "key" + }, + { + "id": 1, + "class": "java.util.ArrayList", + "items": [ + { + "string": "first" + }, + { + "string": "second" + } + ] + } + ] + ] + } + ], + "errors": [] + }, "shared.xml": { "values": [ { diff --git a/packages/fls/test/beans/results.xml b/packages/fls/test/beans/results.xml new file mode 100644 index 0000000..de111b1 --- /dev/null +++ b/packages/fls/test/beans/results.xml @@ -0,0 +1,19 @@ + + + + + key + + + first + + + + + key + + second + + + + diff --git a/packages/fls/test/javaBeansWriter.test.ts b/packages/fls/test/javaBeansWriter.test.ts index 7e6f2c4..22551be 100644 --- a/packages/fls/test/javaBeansWriter.test.ts +++ b/packages/fls/test/javaBeansWriter.test.ts @@ -82,6 +82,18 @@ const CASES: Record = { { class: 'java.util.HashMap', entries: [[text('key'), { int: 8 }]] }, ], }, + // A method's result changed by the statements inside its call: a map's + // value reached through get(key), as XMLEncoder reaches what a + // constructor put into a map. + results: { + values: [ + object('java.util.HashMap', [ + { call: 'put', args: ['key', list('java.util.ArrayList', ['first'])] }, + { call: 'get', args: ['key'], statements: [{ call: 'add', args: ['second'] }] }, + ]), + ], + expected: [{ class: 'java.util.HashMap', entries: [[text('key'), items('java.util.ArrayList', [text('first'), text('second')])]] }], + }, shared: { values: [list('java.util.LinkedList', [inner, other, inner, other]), file, file], expected: [ diff --git a/packages/fls/test/topologyWriter.test.ts b/packages/fls/test/topologyWriter.test.ts index a632596..44c1a49 100644 --- a/packages/fls/test/topologyWriter.test.ts +++ b/packages/fls/test/topologyWriter.test.ts @@ -1,8 +1,9 @@ // 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. +// system software (without files and applications), 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 @@ -28,13 +29,30 @@ function flsFiles(directory: string): string[] { }); } -type JavaNode = { class: string; name: string | null; bounds: number[]; useIpAsName: boolean; useMacAsName: boolean; ports: unknown }; +type JavaNode = { + class: string; + name: string | null; + bounds: number[]; + useIpAsName: boolean; + useMacAsName: boolean; + ports: unknown; + system: Record; +}; 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. */ +/** The system software without its files and applications, which are later layers. */ +function systemOf(system: Record) { + const { fileSystem: _files, applications: _applications, ...settings } = system; + return settings; +} + +/** + * 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, @@ -45,6 +63,7 @@ function topologyOf(view: JavaFile) { useIpAsName: node.useIpAsName, useMacAsName: node.useMacAsName, ports: node.ports, + system: systemOf(node.system), })), cables: view.cables, documentation: view.documentation, @@ -70,7 +89,13 @@ describe('the topology written again, as Java loads it', () => { } }); -/** What the corpus does not have: a name set to null, useMACAsName, fewer ports than the constructor makes, more interfaces. */ +/** + * What the corpus does not have: a name set to null, useMACAsName, fewer + * ports than the constructor makes, more interfaces; a PC's SSID, routes and + * DHCP server with static assignments; a router's firewall switched on, with + * every flag away from its default and rules of every protocol, one with a + * null address; a modem's own port and address. + */ const SYNTHETIC: TopologyToWrite = { nodes: [ { @@ -82,8 +107,32 @@ const SYNTHETIC: TopologyToWrite = { 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, + system: { + ssid: 'Lab', + manualRoutes: [['10.1.0.0', '255.255.0.0', '10.0.0.254', '10.0.0.1']], + dhcpClient: true, + dhcpServer: { + isActive: true, + lowerBound: '10.0.0.100', + upperBound: '10.0.0.199', + gateway: '10.0.0.254', + dnsServer: '10.0.0.53', + useOwnSettings: true, + staticAssignedAddresses: [{ mac: 'AA:BB:CC:DD:EE:77', ip: '10.0.0.77' }], + }, + }, + }, + { + javaClass: 'Switch', + name: 'S', + x: 100, + y: 20, + useIpAsName: false, + useMacAsName: false, + interfaces: [], + portCount: 3, + system: { ssid: 'S-net', retentionTime: 1234 }, }, - { javaClass: 'Switch', name: 'S', x: 100, y: 20, useIpAsName: false, useMacAsName: false, interfaces: [], portCount: 3 }, { javaClass: 'Vermittlungsrechner', name: 'R', @@ -99,8 +148,34 @@ const SYNTHETIC: TopologyToWrite = { dns: '', })), portCount: 3, + system: { + ripEnabled: true, + firewall: { + activated: true, + defaultPolicy: 1, + dropICMP: true, + filterSYNSegmentsOnly: false, + filterUdp: false, + rules: [ + { srcIP: '10.0.1.0', srcMask: '255.255.255.0', destIP: '', destMask: '', port: -1, protocol: -1, action: 1 }, + { srcIP: '', srcMask: '', destIP: '10.0.2.5', destMask: '255.255.255.255', port: 80, protocol: 6, action: 0 }, + { srcIP: null, srcMask: '', destIP: '', destMask: '', port: 53, protocol: 17, action: 1 }, + { srcIP: '', srcMask: '', destIP: '', destMask: '', port: -1, protocol: 1, action: 0 }, + ], + }, + }, + }, + { + javaClass: 'Modem', + name: 'M', + x: 300, + y: 20, + useIpAsName: false, + useMacAsName: false, + interfaces: [], + portCount: 1, + system: { modem: { mode: 1, port: 4242, ipAddress: '192.168.1.5' } }, }, - { 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] }, @@ -109,6 +184,17 @@ const SYNTHETIC: TopologyToWrite = { documentation: [{ type: 1, text: null, x: 5, y: 6, width: 70, height: 80, color: null, font: null }], }; +/** The DHCP server as every IP stack's constructor leaves it. */ +const JAVA_DHCP_DEFAULTS = { + 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: [], +}; + describe('a topology beyond the corpus, as Java loads it', () => { it('keeps what the corpus never sets', () => { const name = 'synthetic/synthetic.fls'; @@ -132,8 +218,30 @@ describe('a topology beyond the corpus, as Java loads it', () => { 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: 'Lab', + manualRoutes: [['10.1.0.0', '255.255.0.0', '10.0.0.254', '10.0.0.1']], + dhcpClient: true, + dhcpServer: { + aktiv: true, + untergrenze: '10.0.0.100', + obergrenze: '10.0.0.199', + gatewayip: '10.0.0.254', + dnsserverip: '10.0.0.53', + ownSettings: true, + staticAssignedAddresses: ['AA:BB:CC:DD:EE:77 10.0.0.77'], + }, + }, + }, + { + class: 'Switch', + name: 'S', + position: [100, 20], + useIpAsName: undefined, + useMacAsName: undefined, + ports: [{}, {}, {}], + system: { ssid: 'S-net', retentionTime: 1234 }, }, - { class: 'Switch', name: 'S', position: [100, 20], useIpAsName: undefined, useMacAsName: undefined, ports: [{}, {}, {}] }, { class: 'Vermittlungsrechner', name: 'R', @@ -141,8 +249,35 @@ describe('a topology beyond the corpus, as Java loads it', () => { useIpAsName: undefined, useMacAsName: undefined, ports: ['1', '2', '3'].map(plainInterface), + system: { + ripEnabled: true, + manualRoutes: [], + dhcpClient: false, + dhcpServer: JAVA_DHCP_DEFAULTS, + firewall: { + activated: true, + defaultPolicy: 1, + dropICMP: true, + filterSYNSegmentsOnly: false, + filterUdp: false, + rules: [ + ['10.0.1.0', '255.255.255.0', '', '', -1, -1, 1], + ['', '', '10.0.2.5', '255.255.255.255', 80, 6, 0], + [null, '', '', '', 53, 17, 1], + ['', '', '', '', -1, 1, 0], + ], + }, + }, + }, + { + class: 'Modem', + name: 'M', + position: [300, 20], + useIpAsName: undefined, + useMacAsName: undefined, + ports: [{}], + system: { modem: { mode: 1, port: 4242, ipAdresse: '192.168.1.5' } }, }, - { class: 'Modem', name: 'M', position: [300, 20], useIpAsName: undefined, useMacAsName: undefined, ports: [{}] }, ], cables: [ { ends: [[0, 0], [1, 2]], wireless: false, panel: [0, 1] }, diff --git a/packages/fls/test/written.java.json b/packages/fls/test/written.java.json index 1f43e9c..c093156 100644 --- a/packages/fls/test/written.java.json +++ b/packages/fls/test/written.java.json @@ -24,14 +24,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFi", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -97,11 +97,11 @@ }, "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.0.11", + "obergrenze": "192.168.0.254", "gatewayip": "0.0.0.0", - "dnsserverip": "0.0.0.0", + "dnsserverip": "8.8.8.8", "ownSettings": false, "staticAssignedAddresses": [] }, @@ -150,7 +150,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -300,14 +300,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFi", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -356,7 +356,7 @@ {} ], "system": { - "ssid": null, + "ssid": "MyWiFi", "retentionTime": 300000 } } @@ -711,7 +711,7 @@ ] } ], - "sha256": "b0325ccfaa0d6fbb7012be1332a66985bb408b53fabff1354e2667c3b1efebb2" + "sha256": "718275f0dc630c0bda82a6d5edca29686680f8723ecce85509ce3bb33d9a2d3e" }, "ipad-fixtures/dns_server.fls": { "success": true, @@ -1167,7 +1167,7 @@ } ], "documentation": [], - "sha256": "fa9080e5707de6f7b511f82e63496bfb1928b5d85bf3bf50b44d88aa509eeea7" + "sha256": "ca9505af52e19316161a7232e76572fc8a81ea9ae3aa37c20e067e96f2d20ca8" }, "ipad-fixtures/zwei_rechnernetze_komplett.fls": { "success": true, @@ -1539,7 +1539,7 @@ } ], "documentation": [], - "sha256": "fbbcf5fd996a17f9d443865f83232870de866ace6823aa1614ba6173bb5e39db" + "sha256": "fe0e282c850160c3187dbe920984ce63fa7580d4ae965ffbd5b15a43e443245e" }, "java-examples/Internet_Complete_with_e-Mail_Webserver_Intranet_Portforwarding_Firewall_DHCP_EN.fls": { "success": true, @@ -1573,7 +1573,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -1622,7 +1622,7 @@ {} ], "system": { - "ssid": null, + "ssid": "[ausgeschaltet]", "retentionTime": 300000 } }, @@ -1655,7 +1655,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -1701,7 +1701,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -1788,7 +1788,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -1868,7 +1868,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -1962,7 +1962,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -2042,7 +2042,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -2115,7 +2115,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -2356,13 +2356,16 @@ "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": [] + "aktiv": true, + "untergrenze": "10.50.50.11", + "obergrenze": "10.50.50.254", + "gatewayip": "10.0.0.1", + "dnsserverip": "10.0.0.1", + "ownSettings": true, + "staticAssignedAddresses": [ + "A8:BD:04:A6:63:AD 10.10.20.11", + "3D:67:2A:01:2D:91 10.10.20.12" + ] } } }, @@ -2418,13 +2421,13 @@ } ] }, - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.1.11", + "obergrenze": "192.168.1.254", "gatewayip": "0.0.0.0", - "dnsserverip": "0.0.0.0", + "dnsserverip": "8.8.8.8", "ownSettings": false, "staticAssignedAddresses": [] }, @@ -2468,7 +2471,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -2502,14 +2505,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -2543,14 +2546,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -2584,14 +2587,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -2625,14 +2628,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -2681,7 +2684,7 @@ {} ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "retentionTime": 300000 } }, @@ -2747,14 +2750,76 @@ "ownSettings": false, "staticAssignedAddresses": [] }, - "staticNAT": [], + "staticNAT": [ + [ + "TCP", + "80", + "10.0.0.1", + "80" + ] + ], "firewall": { - "activated": false, + "activated": true, "defaultPolicy": 0, "dropICMP": false, "filterSYNSegmentsOnly": true, "filterUdp": true, - "rules": [] + "rules": [ + [ + "10.10.20.0", + "255.255.255.0", + "", + "", + -1, + -1, + 1 + ], + [ + "10.50.50.0", + "255.255.255.0", + "", + "", + -1, + -1, + 0 + ], + [ + "10.0.0.1", + "255.255.255.255", + "", + "", + -1, + -1, + 1 + ], + [ + "", + "", + "10.0.0.1", + "255.255.255.255", + -1, + -1, + 1 + ], + [ + "8.8.8.8", + "255.255.255.255", + "", + "", + -1, + -1, + 1 + ], + [ + "", + "", + "42.0.0.10", + "255.255.255.255", + -1, + -1, + 1 + ] + ] } } }, @@ -2785,7 +2850,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -2862,9 +2927,9 @@ "applications": [], "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "43.0.0.11", + "obergrenze": "43.0.0.254", "gatewayip": "0.0.0.0", "dnsserverip": "0.0.0.0", "ownSettings": false, @@ -2909,7 +2974,7 @@ {} ], "system": { - "ssid": null, + "ssid": "[ausgeschaltet]", "retentionTime": 300000 } } @@ -3634,7 +3699,7 @@ ] } ], - "sha256": "dad4c6f22bda84f99405a7098e63c5c7d1cc6af20dcfbb1abee30da240c715b6" + "sha256": "777856a436b4345deeaa73e3a1131a24d14e1d196df1a0afafaf4f71b97cccb0" }, "java-examples/Internet_Komplett_mit_eMail_Webserver_Intranet_Portforwarding_Firewall_DHCP_DE.fls": { "success": true, @@ -3668,7 +3733,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -3717,7 +3782,7 @@ {} ], "system": { - "ssid": null, + "ssid": "[ausgeschaltet]", "retentionTime": 300000 } }, @@ -3750,7 +3815,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -3796,7 +3861,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -3883,7 +3948,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -3963,7 +4028,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -4057,7 +4122,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -4137,7 +4202,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -4210,7 +4275,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -4451,13 +4516,16 @@ "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": [] + "aktiv": true, + "untergrenze": "10.50.50.11", + "obergrenze": "10.50.50.254", + "gatewayip": "10.0.0.1", + "dnsserverip": "10.0.0.1", + "ownSettings": true, + "staticAssignedAddresses": [ + "A8:BD:04:A6:63:AD 10.10.20.11", + "3D:67:2A:01:2D:91 10.10.20.12" + ] } } }, @@ -4513,13 +4581,13 @@ } ] }, - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.1.11", + "obergrenze": "192.168.1.254", "gatewayip": "0.0.0.0", - "dnsserverip": "0.0.0.0", + "dnsserverip": "8.8.8.8", "ownSettings": false, "staticAssignedAddresses": [] }, @@ -4563,7 +4631,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -4597,14 +4665,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -4638,14 +4706,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -4679,14 +4747,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -4720,14 +4788,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -4776,7 +4844,7 @@ {} ], "system": { - "ssid": null, + "ssid": "MyWiFiNetwork", "retentionTime": 300000 } }, @@ -4842,14 +4910,76 @@ "ownSettings": false, "staticAssignedAddresses": [] }, - "staticNAT": [], + "staticNAT": [ + [ + "TCP", + "80", + "10.0.0.1", + "80" + ] + ], "firewall": { - "activated": false, + "activated": true, "defaultPolicy": 0, "dropICMP": false, "filterSYNSegmentsOnly": true, "filterUdp": true, - "rules": [] + "rules": [ + [ + "10.10.20.0", + "255.255.255.0", + "", + "", + -1, + -1, + 1 + ], + [ + "10.50.50.0", + "255.255.255.0", + "", + "", + -1, + -1, + 0 + ], + [ + "10.0.0.1", + "255.255.255.255", + "", + "", + -1, + -1, + 1 + ], + [ + "", + "", + "10.0.0.1", + "255.255.255.255", + -1, + -1, + 1 + ], + [ + "8.8.8.8", + "255.255.255.255", + "", + "", + -1, + -1, + 1 + ], + [ + "", + "", + "42.0.0.10", + "255.255.255.255", + -1, + -1, + 1 + ] + ] } } }, @@ -4880,7 +5010,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -4957,9 +5087,9 @@ "applications": [], "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "43.0.0.11", + "obergrenze": "43.0.0.254", "gatewayip": "0.0.0.0", "dnsserverip": "0.0.0.0", "ownSettings": false, @@ -5004,7 +5134,7 @@ {} ], "system": { - "ssid": null, + "ssid": "[ausgeschaltet]", "retentionTime": 300000 } } @@ -5687,7 +5817,7 @@ ] } ], - "sha256": "710029e574fe346b4eb66ca9cde548ca372cd6ab64dd9d5d80de953bf28aa25f" + "sha256": "53aa09d69118faa598e136fdee9291bd7b1bc66058dd8afad22ca5af065f0679" }, "java-examples/Public_and_Private_Networks_2_EN.fls": { "success": true, @@ -5714,14 +5844,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFi", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -5787,11 +5917,11 @@ }, "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.0.11", + "obergrenze": "192.168.0.254", "gatewayip": "0.0.0.0", - "dnsserverip": "0.0.0.0", + "dnsserverip": "8.8.8.8", "ownSettings": false, "staticAssignedAddresses": [] }, @@ -5840,7 +5970,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -5990,14 +6120,14 @@ } ], "system": { - "ssid": null, + "ssid": "MyWiFi", "manualRoutes": [], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -6046,7 +6176,7 @@ {} ], "system": { - "ssid": null, + "ssid": "MyWiFi", "retentionTime": 300000 } } @@ -6401,7 +6531,7 @@ ] } ], - "sha256": "b0325ccfaa0d6fbb7012be1332a66985bb408b53fabff1354e2667c3b1efebb2" + "sha256": "718275f0dc630c0bda82a6d5edca29686680f8723ecce85509ce3bb33d9a2d3e" }, "java-examples/anwendung_komplett.fls": { "success": true, @@ -6625,7 +6755,7 @@ } ], "documentation": [], - "sha256": "6ddd17df1bb154d87d63d247b490d17015bea82ab16ff8f334df97d5702c276c" + "sha256": "8071c9219fafecb45d1fc4484c9cd4bf58307505b2526e251c64028eb46e813f" }, "java-examples/dhcp_test_scenario.fls": { "success": true, @@ -6661,9 +6791,9 @@ "applications": [], "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.0.100", + "obergrenze": "192.168.0.150", "gatewayip": "0.0.0.0", "dnsserverip": "0.0.0.0", "ownSettings": false, @@ -6700,7 +6830,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -6790,7 +6920,7 @@ {} ], "system": { - "ssid": null, + "ssid": "71253f", "retentionTime": 300000 } }, @@ -6823,7 +6953,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -6889,9 +7019,9 @@ }, "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.0.100", + "obergrenze": "192.168.0.200", "gatewayip": "0.0.0.0", "dnsserverip": "0.0.0.0", "ownSettings": false, @@ -6937,7 +7067,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -7038,7 +7168,7 @@ } ], "documentation": [], - "sha256": "2dcf79c82767ed9dfba3d4be054d7c604247a02757941fbd053fb725d01f0c3b" + "sha256": "863f5d67e356ba363db33d31ec818fa3de17a022812644551bf0c9838d90247d" }, "java-examples/dns_server.fls": { "success": true, @@ -7494,7 +7624,7 @@ } ], "documentation": [], - "sha256": "fa9080e5707de6f7b511f82e63496bfb1928b5d85bf3bf50b44d88aa509eeea7" + "sha256": "ca9505af52e19316161a7232e76572fc8a81ea9ae3aa37c20e067e96f2d20ca8" }, "java-examples/einfaches_rechnernetz_komplett.fls": { "success": true, @@ -7694,9 +7824,9 @@ "applications": [], "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.0.21", + "obergrenze": "192.168.0.29", "gatewayip": "0.0.0.0", "dnsserverip": "0.0.0.0", "ownSettings": false, @@ -7774,7 +7904,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -7815,7 +7945,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -7856,7 +7986,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -7897,7 +8027,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -8182,7 +8312,7 @@ } ], "documentation": [], - "sha256": "3e5ab47c056b9581d8422ddff06719c84111ff6894701bf74b166c4c010dfc29" + "sha256": "f8b624c4948cb85b860c3fe85ba94ec00eaacaf5d5f3f1035cfdf246d6bf410a" }, "java-examples/email_komplett.fls": { "success": true, @@ -8696,7 +8826,7 @@ } ], "documentation": [], - "sha256": "db96655e9ce9a17bdae05f1a2c7fef4001a70a096f6c70ced46eaed34dbe65e8" + "sha256": "fcc772f583aacee7b33f545e7b6b6b30eb204b2384cd6591808fe22945d539f7" }, "java-examples/internetwork_komplett.fls": { "success": true, @@ -8891,7 +9021,20 @@ ], "system": { "ripEnabled": false, - "manualRoutes": [], + "manualRoutes": [ + [ + "141.99.1.0", + "255.255.255.0", + "141.99.2.1", + "141.99.2.2" + ], + [ + "141.99.5.0", + "255.255.255.0", + "141.99.4.2", + "141.99.4.1" + ] + ], "fileSystem": { "directory": "root", "children": [ @@ -9603,7 +9746,7 @@ } ], "documentation": [], - "sha256": "1925c7dbe9f9e399fe94d8ae234e870e219a42d861c431aca9559a6f12dba06e" + "sha256": "b6939517e32ece3b7b93404a8489c5a0526c88fad4565e9e005f8a5090c16c12" }, "java-examples/man-in-the-middle.fls": { "success": true, @@ -9768,7 +9911,7 @@ {} ], "system": { - "ssid": null, + "ssid": "6e23d8", "retentionTime": 300000 } }, @@ -10061,7 +10204,7 @@ "font": null } ], - "sha256": "600656780750c1ba46528fb3c1188a179bc2eb478a3cdb89bd6e44f39313a9e5" + "sha256": "96c0d85613d78df73d34f2e3f51814672feb59d38c0e6061972ffa58126ea8ce" }, "java-examples/modem_beispiel.fls": { "success": true, @@ -10184,7 +10327,7 @@ ], "system": { "modem": { - "mode": 2, + "mode": 1, "port": 12345, "ipAdresse": "localhost" } @@ -10228,7 +10371,7 @@ } ], "documentation": [], - "sha256": "708dfdc16eeb2f7889a8b2cd25022ff54170ded635c5a0be10f86fe631900307" + "sha256": "7eff44c23697abe0e710a03074dc5412cff8e4ef0ca391292a463ae5edc66d9a" }, "java-examples/multicast_server.fls": { "success": true, @@ -10296,7 +10439,7 @@ } ], "system": { - "ssid": null, + "ssid": "Filius Wi Fi", "manualRoutes": [], "fileSystem": { "directory": "root", @@ -10337,7 +10480,7 @@ } ], "system": { - "ssid": null, + "ssid": "Filius Wi Fi", "manualRoutes": [], "fileSystem": { "directory": "root", @@ -10393,8 +10536,8 @@ {} ], "system": { - "ssid": null, - "retentionTime": 300000 + "ssid": "Filius Wi Fi", + "retentionTime": 2000 } } ], @@ -10452,7 +10595,7 @@ } ], "documentation": [], - "sha256": "527f7e5562c63337152005a4d7b58938fb3545b455b8bd7ff8dde1bff2e6f741" + "sha256": "f5947a48daf5f974b2a89a7aef8b6ece8427e391bc159464c97e8528ed1d3973" }, "java-examples/nat.fls": { "success": true, @@ -10649,7 +10792,7 @@ {} ], "system": { - "ssid": null, + "ssid": "082368", "retentionTime": 300000 } } @@ -10708,7 +10851,7 @@ } ], "documentation": [], - "sha256": "0b1cac470c2d99365f4971c5e4016e360a091f1fbaea30efefbe49e4f9331230" + "sha256": "4ead19012d1bb245f5649fca807561ba8974544e720e6cb486c4b1fd9c6c82ea" }, "java-examples/nat_with_mapped_port.fls": { "success": true, @@ -10750,7 +10893,7 @@ {} ], "system": { - "ssid": null, + "ssid": "9b063a", "retentionTime": 300000 } }, @@ -10791,7 +10934,7 @@ {} ], "system": { - "ssid": null, + "ssid": "a4e955", "retentionTime": 300000 } }, @@ -10903,7 +11046,20 @@ ], "system": { "ripEnabled": false, - "manualRoutes": [], + "manualRoutes": [ + [ + "141.99.1.0", + "255.255.255.0", + "141.99.2.1", + "141.99.2.2" + ], + [ + "141.99.5.0", + "255.255.255.0", + "141.99.4.2", + "141.99.4.1" + ] + ], "fileSystem": { "directory": "root", "children": [ @@ -11263,7 +11419,7 @@ {} ], "system": { - "ssid": null, + "ssid": "8b0798", "retentionTime": 300000 } }, @@ -11370,7 +11526,14 @@ "ownSettings": false, "staticAssignedAddresses": [] }, - "staticNAT": [], + "staticNAT": [ + [ + "TCP", + "80", + "192.168.0.10", + "80" + ] + ], "firewall": { "activated": false, "defaultPolicy": 0, @@ -11491,7 +11654,7 @@ {} ], "system": { - "ssid": null, + "ssid": "f1dc45", "retentionTime": 300000 } } @@ -11915,7 +12078,7 @@ ] } ], - "sha256": "97a490b6cd57dd3837a7c3aee0ab616f809010885d7a4648b3614b969f993c79" + "sha256": "ab7d156c76685822aa799cd4a9f18c771d8f5bc236d8bbd53561d19b52b935ab" }, "java-examples/private_and_public_network.fls": { "success": true, @@ -11957,7 +12120,7 @@ {} ], "system": { - "ssid": null, + "ssid": "52fd3f", "retentionTime": 300000 } }, @@ -11990,7 +12153,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -12031,7 +12194,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -12095,13 +12258,13 @@ } ] }, - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.0.10", + "obergrenze": "192.168.0.100", "gatewayip": "0.0.0.0", - "dnsserverip": "0.0.0.0", + "dnsserverip": "141.99.2.10", "ownSettings": false, "staticAssignedAddresses": [] }, @@ -12153,7 +12316,7 @@ {} ], "system": { - "ssid": null, + "ssid": "5e7d40", "retentionTime": 300000 } }, @@ -12188,9 +12351,9 @@ "applications": [], "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "141.99.2.100", + "obergrenze": "141.99.2.250", "gatewayip": "0.0.0.0", "dnsserverip": "0.0.0.0", "ownSettings": false, @@ -12427,7 +12590,7 @@ ] } ], - "sha256": "cfb83cb1e978bef9264b3578dded0380ff0c173a06b2acb2f604a59dd46e961b" + "sha256": "6b97e493fb3f7bda150ae695d5adf01f3e4d90e53988ab0adb50fd9e41cb8f84" }, "java-examples/private_und_public_networks_mit_provider_DE.fls": { "success": true, @@ -12469,7 +12632,7 @@ {} ], "system": { - "ssid": null, + "ssid": "bfc600", "retentionTime": 300000 } }, @@ -12502,7 +12665,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -12543,7 +12706,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -12607,13 +12770,13 @@ } ] }, - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.0.11", + "obergrenze": "192.168.0.100", "gatewayip": "0.0.0.0", - "dnsserverip": "0.0.0.0", + "dnsserverip": "42.0.0.2", "ownSettings": false, "staticAssignedAddresses": [] }, @@ -12665,7 +12828,7 @@ {} ], "system": { - "ssid": null, + "ssid": "[ausgeschaltet]", "retentionTime": 300000 } }, @@ -12700,9 +12863,9 @@ "applications": [], "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "42.0.0.11", + "obergrenze": "42.0.0.254", "gatewayip": "0.0.0.0", "dnsserverip": "0.0.0.0", "ownSettings": false, @@ -12744,7 +12907,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -12906,7 +13069,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -13304,7 +13467,7 @@ ] } ], - "sha256": "a11b38423b8c828e1164af8e04c07e4854177e890ae31ee55a5d29bb4c540aeb" + "sha256": "4d0a1a0da17fdc0c94f50cb941c41506f112d93645a7093533498c268a5717f0" }, "java-examples/webserver.fls": { "success": true, @@ -13470,7 +13633,7 @@ } ], "documentation": [], - "sha256": "9e85d436731d44c7dab1dbca44cbb7eefcd4049c6dc4c97e6b811133da6cc280" + "sha256": "d53de15a3b9f75a62dcd977a171b581249f4b2c0aa071b9201c9f10439ce76eb" }, "java-examples/zwei_rechnernetze_komplett.fls": { "success": true, @@ -13842,7 +14005,7 @@ } ], "documentation": [], - "sha256": "fbbcf5fd996a17f9d443865f83232870de866ace6823aa1614ba6173bb5e39db" + "sha256": "fe0e282c850160c3187dbe920984ce63fa7580d4ae965ffbd5b15a43e443245e" }, "java-tests/einfaches_rechnernetz_komplett.fls": { "success": true, @@ -14042,9 +14205,9 @@ "applications": [], "dhcpClient": false, "dhcpServer": { - "aktiv": false, - "untergrenze": "0.0.0.0", - "obergrenze": "0.0.0.0", + "aktiv": true, + "untergrenze": "192.168.0.21", + "obergrenze": "192.168.0.29", "gatewayip": "0.0.0.0", "dnsserverip": "0.0.0.0", "ownSettings": false, @@ -14122,7 +14285,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -14163,7 +14326,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -14204,7 +14367,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -14245,7 +14408,7 @@ "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "dhcpServer": { "aktiv": false, "untergrenze": "0.0.0.0", @@ -14530,7 +14693,7 @@ } ], "documentation": [], - "sha256": "3e5ab47c056b9581d8422ddff06719c84111ff6894701bf74b166c4c010dfc29" + "sha256": "f8b624c4948cb85b860c3fe85ba94ec00eaacaf5d5f3f1035cfdf246d6bf410a" }, "java-tests/empty.fls": { "success": true, @@ -14564,22 +14727,31 @@ } ], "system": { - "ssid": null, - "manualRoutes": [], + "ssid": "Lab", + "manualRoutes": [ + [ + "10.1.0.0", + "255.255.0.0", + "10.0.0.254", + "10.0.0.1" + ] + ], "fileSystem": { "directory": "root", "children": [] }, "applications": [], - "dhcpClient": false, + "dhcpClient": true, "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": [] + "aktiv": true, + "untergrenze": "10.0.0.100", + "obergrenze": "10.0.0.199", + "gatewayip": "10.0.0.254", + "dnsserverip": "10.0.0.53", + "ownSettings": true, + "staticAssignedAddresses": [ + "AA:BB:CC:DD:EE:77 10.0.0.77" + ] } } }, @@ -14599,8 +14771,8 @@ {} ], "system": { - "ssid": null, - "retentionTime": 300000 + "ssid": "S-net", + "retentionTime": 1234 } }, { @@ -14637,7 +14809,7 @@ } ], "system": { - "ripEnabled": false, + "ripEnabled": true, "manualRoutes": [], "fileSystem": { "directory": "root", @@ -14674,12 +14846,49 @@ "staticAssignedAddresses": [] }, "firewall": { - "activated": false, - "defaultPolicy": 0, - "dropICMP": false, - "filterSYNSegmentsOnly": true, - "filterUdp": true, - "rules": [] + "activated": true, + "defaultPolicy": 1, + "dropICMP": true, + "filterSYNSegmentsOnly": false, + "filterUdp": false, + "rules": [ + [ + "10.0.1.0", + "255.255.255.0", + "", + "", + -1, + -1, + 1 + ], + [ + "", + "", + "10.0.2.5", + "255.255.255.255", + 80, + 6, + 0 + ], + [ + null, + "", + "", + "", + 53, + 17, + 1 + ], + [ + "", + "", + "", + "", + -1, + 1, + 0 + ] + ] } } }, @@ -14698,9 +14907,9 @@ ], "system": { "modem": { - "mode": 2, - "port": 12345, - "ipAdresse": "localhost" + "mode": 1, + "port": 4242, + "ipAdresse": "192.168.1.5" } } } @@ -14755,6 +14964,6 @@ "font": null } ], - "sha256": "4c35616f26ce28d77f0474aa0dab34ca71508c4c1b5636f7b38fe19f082d8e1d" + "sha256": "85bc2cdcc2a4f424c2f407bd6a6ba0e0ebc4495cb27b7147dae76bd720e4ad44" } }