Pages ===== Dashboard (``/``) ----------------- The home page shows the status of the four required input files: - ``csvdata/fwnics.csv`` - ``csvdata/routes.csv`` - ``csvdata/tests.csv`` - ``config/config.yml`` A green indicator means the file exists and is readable. A red indicator means it is missing. Quick links lead to the CSV editors and the configuration page. CSV Editors (``/csv/fwnics``, ``/csv/routes``, ``/csv/tests``) --------------------------------------------------------------- Each CSV editor provides two ways to update its file: **Inline edit** The file is rendered as an editable HTML table. Click any cell to modify it. The toolbar at the top of the page is fixed; the table body scrolls independently. Column headers remain visible while scrolling. Save the changes with the *Save* button in the toolbar. **Upload** Use the *Upload* button in the toolbar to replace the file entirely with a CSV file from your local machine. .. note:: The CSV files must follow the column structure described in the main FWTester documentation. The editor does not validate the content beyond writing the raw text back to disk. Configuration (``/config``) ---------------------------- Displays and edits ``config/config.yml``. The *Save* button is pinned to the top toolbar so it is always visible regardless of scroll position. The configuration body scrolls freely. Before writing to disk, the application parses the submitted text as YAML. If parsing fails, an error message is shown and the file is not overwritten. The most relevant configuration keys are described inline on the page. Run Tests (``/runner``) ------------------------ The main test execution page. Controls ~~~~~~~~ - **Start** — restarts all LXC containers (client, server, router) to ensure a clean state, then launches ``fwtester.py`` as a background subprocess. - **Pause / Resume** — suspends or continues the running subprocess. - **Stop** — sends a termination signal to the subprocess. - **View Log** — opens the log viewer in a new tab. - **Clear results** — deletes all rows from the ``tests_results`` table. The ``users`` table is not affected. Disabled while a run is in progress. Status indicators ~~~~~~~~~~~~~~~~~ The toolbar shows three counters in the centre: - **Lines** — number of non-blank, non-comment rows in ``tests.csv``, with an ℹ tooltip explaining that the total number of executed tests may be higher depending on configuration (multiple protocols, ports, or IPs per line). - **ok / fail / total** — cumulative counts from the database, colour-coded green, red, and black respectively. These reflect *all* results in the database, not just the current session. A badge next to the Stop button shows the runner state: *Running*, *Paused*, *Done*, or *Debug exit*. When ``debug_level > 0`` is configured, an additional *Debug Level N* badge is displayed as a reminder. Live results table ~~~~~~~~~~~~~~~~~~ Rows appear one by one as ``fwtester.py`` commits each test to SQLite, streamed via Server-Sent Events (SSE). The table header is sticky. Row colour coding: - **Green** — test passed (result = ``ok``): the firewall behaved as expected. - **Red** — test failed (result = ``fail``): the firewall did not behave as expected. Failed rows show an expandable hint: - ``permit + fail`` → *routing / zone / ACL match issue* - ``deny + fail`` → *a more permissive rule above is shadowing this one* Right-click (or tap-and-hold) any row to open a context menu with a *Re-run* option. Re-running opens a modal with a live output stream. If the new result differs from the stored one, the row is updated in place in the database and on screen. Hot Test (``/hot-test``) ------------------------- Runs a single ad-hoc test without requiring an entry in ``tests.csv``. Fill in the form fields: - Protocol (tcp, udp, icmp) - Source IP and port - Destination IP and port - Application (optional L7 plugin, e.g. ``dns``, ``ntp``) - Expected action (permit / deny) Click *Run*. The output streams live in the terminal area below the form via SSE. ``fwnics.csv`` and ``routes.csv`` must be present; ``tests.csv`` is not used. Logs (``/logs``) ----------------- Displays the content of one of two log files: - ``outputs/logs/fwtester.log`` — main runner log. - ``outputs/logs/hot-test.log`` — hot-test subprocess log. Select the desired file with the buttons in the fixed toolbar. The log content auto-scrolls to the bottom when a new file is selected or when the page first loads. The *Clear* button empties the currently displayed log file. Report (``/report``) --------------------- Renders ``outputs/reports/report.csv`` as a colour-coded HTML table. The summary statistics bar is sticky at the top. The table body scrolls independently with sticky column headers. Row colours follow the same green/red convention as the Runner page. Containers (``/containers``) ----------------------------- Lists the LXC containers available on the host and their current state. For each container you can: - **Restart** — issues ``lxc restart ``. - **Exec** — run an arbitrary shell command inside the container and see the output. Language selection ------------------ The interface is available in three languages: English (``en``), Spanish (``es``), and Catalan (``ca``). Change the active language via the selector in the navigation bar, which navigates to ``/set-lang?lang=``. The choice is stored in the session.