//! HTTP server — single axum app that serves:
//!   - `/`                   the web UI (static assets from `openpxe-webui`)
//!   - `/api/*`              JSON API for the web UI
//!   - `/boot.ipxe`          the generated top-level iPXE boot menu
//!   - `/boot/<entry>.ipxe`  per-entry iPXE scripts (one per boot target)
//!   - `/ipxe/<file>`        bundled iPXE binaries (for UEFI HTTP boot)
//!   - `/iso/<id>.iso`       raw ISO file (with Range support)
//!   - `/iso/<id>/<path>`    files inside the ISO (for wimboot WIM fetches
//!     and Linux kernel/initrd, without having to
//!     re-extract on every request)
//!
//! The `<id>/<path>` handler uses a read-only ISO9660 shim (see `iso_fs`)
//! that lseeks into the ISO on disk — so we never keep extracted copies.
#![forbid(unsafe_code)]

pub mod app;
pub mod auth;
pub mod error;
pub mod ipxe_script;
pub mod iso_fs;
pub mod log_stream;
pub mod notify;
pub mod saml_routes;
pub mod state;
pub mod terminal;
pub mod uploads;

pub use app::build_router;
pub use state::AppState;
