From 650138aae6a2d6ae26f57a22056bdf0ea5fa8c77 Mon Sep 17 00:00:00 2001 From: Petri Hienonen Date: Sun, 28 Sep 2025 10:45:49 +0300 Subject: Initial commit --- requirements.json | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 requirements.json (limited to 'requirements.json') diff --git a/requirements.json b/requirements.json new file mode 100644 index 0000000..3e0b728 --- /dev/null +++ b/requirements.json @@ -0,0 +1,62 @@ +{ + "project": "systemd-networkd Web UI", + "version": "0.1", + "requirements": { + "functional": [ + { + "id": "F-001", + "description": "The system shall provide a web-based dashboard to display current network status (interfaces, addresses, routes) by invoking `networkctl status --json=short`." + }, + { + "id": "F-002", + "description": "The system shall provide access to logs of `systemd-networkd.service` via `journalctl`." + }, + { + "id": "F-003", + "description": "The system shall provide controls to restart `systemd-networkd` without rebooting the device." + }, + { + "id": "F-004", + "description": "The system shall provide a control to reboot the device." + }, + { + "id": "F-005", + "description": "The system shall present contextual teaching information (e.g., IPv4 basics, logs explanation, restart rationale) directly within the web interface." + }, + { + "id": "F-006", + "description": "The system shall use a single-page design with minimal dependencies (HTML + Fluent UI web components from CDN)." + } + ], + "technical": [ + { + "id": "T-001", + "description": "The backend shall be implemented in Go, exposing HTTP endpoints on port 80." + }, + { + "id": "T-002", + "description": "The system shall run as a `systemd` service with restricted privileges (User=network-ui, ProtectSystem=strict, NoNewPrivileges=yes)." + }, + { + "id": "T-003", + "description": "The backend shall execute only specific whitelisted commands: `networkctl`, `journalctl`, `systemctl restart systemd-networkd`, and `systemctl reboot`." + }, + { + "id": "T-004", + "description": "The frontend shall consume backend endpoints via REST-style APIs returning UTF8-SON" + }, + { + "id": "T-005", + "description": "The system shall require no external database or file storage beyond access to `systemd` configuration and logs." + }, + { + "id": "T-006", + "description": "The service shall start automatically at boot and remain persistent under `systemd` supervision." + }, + { + "id": "T-007", + "description": "The design shall ensure sandboxing: no direct shell access beyond intended commands, no write access to arbitrary filesystem locations." + } + ] + } +} -- cgit v1.2.3-70-g09d2