firegex/frontend
Domingo Dirutigliano 2c3316b036
Harden the no-auth reverse-proxy mode
Rename the flag to --unsafe-disable-auth so the risk is visible at the call
site, and close the ways the mode could outlive itself:

- Keep an explicit -P/--startup-psw instead of dropping it. Without a password
  in the database, --no-unsafe-disable-auth brought firegex up in its
  initial-setup state, where anyone able to reach it could choose the password.
- Refuse /api/login, /api/set-password and /api/change-password while
  authentication is disabled: an anonymous caller could otherwise plant a
  credential that kept working once authentication was turned back on.
  run.py config --password still works, writing to the database from the host.
- Print a banner on every start/restart with authentication disabled. The flag
  is persisted in the config file, so a later bare `run.py start` inherits it.
- Report the change in `run.py config --unsafe-disable-auth`, which claimed
  "No configuration changes specified" while persisting it, and stop that
  command from nulling the stored port and host on the way.
- Expose the state as auth_disabled in /api/status and hide the logout button
  and the change-password entry, which were silent no-ops in this mode.

Tests cover both directions of the toggle, the socket.io handler, the password
endpoints and the -P handling.
2026-09-03 01:07:51 +02:00
..
public add: frontend update 2024-10-13 01:50:52 +02:00
src Harden the no-auth reverse-proxy mode 2026-09-03 01:07:51 +02:00
bun.lock integrated and refactore docs + minor changes 2026-07-23 16:53:09 +02:00
index.html mantine update + passed to vite 2023-06-05 00:57:54 +02:00
package.json integrated and refactore docs + minor changes 2026-07-23 16:53:09 +02:00
README.md docs: update 2023-10-01 02:21:07 +02:00
tsconfig.json mantine update 2026-06-21 11:49:53 +02:00
vite.config.ts integrated and refactore docs + minor changes 2026-07-23 16:53:09 +02:00

Firegex Frontend

Firegex Frontend

The frontend of firegex is written using vite. The routing of the pages is managed by react-router 6 and the graphics is mainly managed by the framework Mantine and icons provided by React Icons. The style of the page is written with sass.

The page is auto-updated by a global timeout and also thanks to socket.io that raise an event triggering all parts of the app that requires fetch updated data from the backend, the update of these data.

GO BACK