Pages
Dashboard (/)
The home page shows the status of the four required input files:
csvdata/fwnics.csvcsvdata/routes.csvcsvdata/tests.csvconfig/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.pyas 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_resultstable. Theuserstable 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 issuedeny + 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 <name>.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=<code>. The choice
is stored in the session.