diff --git a/scripts/internal_addresses_allow.txt b/scripts/internal_addresses_allow.txt new file mode 100644 index 0000000..2442ac9 --- /dev/null +++ b/scripts/internal_addresses_allow.txt @@ -0,0 +1,33 @@ +# Where an address or a host name of the school stands on purpose in this +# submodule. Applies **on top of** the dashboard's own list — the checker +# reads both (INTERNAL_ADDRESSES_ROOT points it here). +# +# :: # why +# host::: # why, for a host that is excused everywhere +# +# Why each rule exists: +# INTERNAL_ADDRESSES_ROOT=$PWD python3 ../scripts/check_no_internal_addresses.py --rules + +# ── Documentation stays specific to this school ───────────────────── +# Decided on 13.11.2026: the project *is* this school's, and the prose +# describes its deployment. What has to stand on its own in a dev container +# is the **code** — not the text about it. So the README keeps the real +# names while the configuration and the tools no longer carry any. +README.md::school-hostname + +# ── This program's subject *is* networks ──────────────────────────── +# Filius simulates a network, so every scenario, every test and every piece +# of documentation is full of addresses — 65 693 of them, measured on +# 13.11.2026. None belongs to a school: they are the addresses of invented +# machines in invented networks, which is the point of the program. The same +# reason the dashboard excuses `modules/dnsfilter`, where the feature itself +# is about ranges. +# +# This is deliberately broad. A narrower list would have to name every +# scenario file, and a new scenario would then have to remember this file — +# which is how an allow list becomes a list nobody keeps correct. +packages::internal-address +tools::internal-address +corpus::internal-address +CHANGES.md::internal-address +README.md::internal-address diff --git a/tools/live/lib.ts b/tools/live/lib.ts index 01697b0..4a08f16 100644 --- a/tools/live/lib.ts +++ b/tools/live/lib.ts @@ -17,7 +17,11 @@ const env = Object.fromEntries( .filter((l) => l.includes('=')) .map((l) => [l.slice(0, l.indexOf('=')).trim(), l.slice(l.indexOf('=') + 1).trim()]), ); -export const HOST = process.env.FILIUS_HOST ?? 'test-filius.hub.mdg-hamburg.de'; +// No deployment's host as a fallback: this repository is handed out, and +// a measuring tool that aims at somebody else's server by default is a +// trap. Unset, the run says what to set. +export const HOST = process.env.FILIUS_HOST ?? ''; +if (!HOST) throw new Error('set FILIUS_HOST to the instance to measure'); export const BASE = `https://${HOST}`; const SECRET = env.FILIUS_TICKET_SECRET!; const KEY = env.FILIUS_SERVICE_KEY!; diff --git a/tools/live/m3.ts b/tools/live/m3.ts index b99ca6d..dfba61f 100644 --- a/tools/live/m3.ts +++ b/tools/live/m3.ts @@ -9,7 +9,7 @@ // // npx vite-node tools/live/m3.ts [steps, e.g. 1,10,25,50] [seconds per step] -import { cleanUp, openRoom, seededProject, signIn, svc, type Room } from './lib.js'; +import { BASE, cleanUp, openRoom, seededProject, signIn, svc, type Room } from './lib.js'; const EXAMPLE = 'java-examples/Internet_Komplett_mit_eMail_Webserver_Intranet_Portforwarding_Firewall_DHCP_DE.fls'; const steps = (process.argv[2] ?? '1,10,25,50,100,150,200').split(',').map(Number); @@ -75,7 +75,7 @@ try { await new Promise((resolve) => setTimeout(resolve, seconds * 1000)); lost += [...pending.values()].filter((sent) => performance.now() - sent > 5_000).length; const sorted = [...samples].sort((a, b) => a - b); - const health = await (await fetch('https://test-filius.hub.mdg-hamburg.de/healthz')).json(); + const health = await (await fetch(`${BASE}/healthz`)).json(); console.log( [rooms.length, sorted.length, quantile(sorted, 0.5), quantile(sorted, 0.95), quantile(sorted, 0.99), sorted.at(-1) ?? NaN] .map((value, index) => (index < 2 ? String(value) : value.toFixed(0)).padStart(index === 0 ? 5 : 7)) @@ -88,6 +88,6 @@ try { room.close(); } await cleanUp(); - const health = await (await fetch('https://test-filius.hub.mdg-hamburg.de/healthz')).json(); + const health = await (await fetch(`${BASE}/healthz`)).json(); console.log('after clean-up:', JSON.stringify(health), (await svc('GET', '/svc/sessions')).status); }