docs: update README with v3.0.1 architecture, 35 unit tests, and cross-compilation
CI Test Suite / Run Component Tests & Pipeline Verification (push) Successful in 1m41s

This commit is contained in:
2026-09-26 13:05:19 +02:00
parent 93d9f0e463
commit fa8b9e0af5
2 changed files with 43 additions and 33 deletions
+42 -32
View File
@@ -267,17 +267,20 @@ stateDiagram-v2
- Admin WebUI is protected by authenticated login with user and tenant administration. - Admin WebUI is protected by authenticated login with user and tenant administration.
### 3. Integrated Fleet Licensing & WebUI Dashboard ### 3. Integrated Fleet Licensing & WebUI Dashboard
- **WebUI URL**: Accessible at `http://<server_host>:8443/webui` (or `/`). - **WebUI URL**: Accessible at `http://<server_host>:8443/webui` (or `/`). Protected by authenticated session login (`/login`).
- **Visual Seat Quota Meter**: Real-time progress bar displaying active forwarders vs. allocated seat limit. - **Tab 1: 📋 Active Anomalies & Telemetry**:
- **Licensing Actions**: - Real-time tabular stream of verified anomalies within the active 12-hour evaluation window.
- 1-click **Export .lic Request** file download. - Interactive search filter and Hermes AI status metrics.
- Interactive **View & Copy CA CSR** modal. - **Visual Seat Quota Meter**: Real-time progress bar displaying active forwarders vs. allocated seat limit.
- Drag-and-drop or paste **Import License (.lic / ca.crt)** modal. - **Seat Management & Revocation Table**: Lists all connected Windows and Linux edge forwarders with 1-click **Revoke Seat**, **Reactivate Seat**, and **Export Client Configuration** actions.
- **Sync & Renew via mTLS** button for immediate upstream synchronization and seat expansion. - **Tab 2: 📜 Sub-CA & Licensing**:
- **Seat Management & Revocation Table**: - Dedicated PKI and Subordinate CA lifecycle management interface.
- Lists all connected Windows and Linux edge forwarders. - Displays Master Authority WebSocket status (`logar.eibl.tech`), hardware fingerprint, and embedded seat quota.
- **Revoke Seat**: Instantly drops and blocks the client at the TLS socket handshake layer. - **Licensing Actions**:
- **Reactivate Seat**: Restores the client to active status if within seat quota limits. - 1-click **Export .lic Request** file download.
- Interactive **View & Copy CA CSR** modal.
- Drag-and-drop or paste **Import License (.lic / ca.crt)** modal.
- **Sync & Renew via WebSocket** button for immediate upstream synchronization and seat expansion.
### 4. Cloud-Side In-Flight Certificate Watchdog ### 4. Cloud-Side In-Flight Certificate Watchdog
- **Continuous Hub PKI Watchdog**: - **Continuous Hub PKI Watchdog**:
@@ -327,7 +330,7 @@ Client enrollment endpoint:
``` ```
### `GET /api/clients` ### `GET /api/clients`
Returns seat quota status and registered client telemetry: Returns seat quota status and registered client telemetry *(Requires Administrator session cookie or Bearer auth)*:
```json ```json
{ {
"active_seats": 2, "active_seats": 2,
@@ -369,7 +372,10 @@ Returns all **verified anomalies** within the active 12-hour evaluation window w
``` ```
### `GET /api/hermes/all` ### `GET /api/hermes/all`
Diagnostic endpoint listing all tracked anomalies in SQLite. Diagnostic endpoint listing all tracked anomalies in SQLite *(Requires Administrator auth)*.
### `POST /api/auth/login` & `POST /api/auth/logout`
Session authentication endpoints for Administrator WebUI access.
### `GET /health` ### `GET /health`
Returns hub health, encryption fingerprint, listener ports, and mTLS status. Returns hub health, encryption fingerprint, listener ports, and mTLS status.
@@ -422,15 +428,15 @@ LOGAR provides production-grade installation scripts and installer builders for
LOGAR/ LOGAR/
├── .gitea/ ├── .gitea/
│ └── workflows/ │ └── workflows/
│ ├── ci.yml # CI pipeline: syntax, 25 unit tests & mTLS pipeline test │ ├── ci.yml # CI pipeline: syntax, 35 unit tests & mTLS pipeline test
│ └── release.yml # Consolidated release workflow (Linux binaries & Windows installers) │ └── release.yml # Consolidated release workflow (Cross-compilation on Linux runner)
├── compilation/ # Packaging, installers, and release automation ├── compilation/ # Packaging, installers, and release automation
│ ├── install_linux_client.sh # Automated Linux client systemd installation script │ ├── install_linux_client.sh # Automated Linux client systemd installation script
│ ├── install_linux_server.sh # Automated Linux server systemd installation script │ ├── install_linux_server.sh # Automated Linux server systemd installation script
│ ├── installer_client.iss # Inno Setup Windows Client installer script │ ├── installer_client.iss # Inno Setup Windows Client installer script
│ ├── installer_server.iss # Inno Setup Windows Server installer script │ ├── installer_server.iss # Inno Setup Windows Server installer script
│ ├── nssm.exe # Official 64-bit NSSM service manager binary │ ├── nssm.exe # Official 64-bit NSSM service manager binary
│ ├── package_dist.py # Standalone binary compiler & packager │ ├── package_dist.py # Standalone binary cross-compiler & packager
│ ├── requirements.txt # Unified project dependencies │ ├── requirements.txt # Unified project dependencies
│ └── upload_release.py # Gitea REST API release asset publisher │ └── upload_release.py # Gitea REST API release asset publisher
├── src/ # Core application source modules ├── src/ # Core application source modules
@@ -440,9 +446,10 @@ LOGAR/
│ ├── Win_Client.py # Windows edge forwarder with auto-enrollment │ ├── Win_Client.py # Windows edge forwarder with auto-enrollment
│ └── Linux_Client.py # Linux edge forwarder with auto-enrollment │ └── Linux_Client.py # Linux edge forwarder with auto-enrollment
├── tests/ # Automated test suites ├── tests/ # Automated test suites
│ ├── test_license_authority.py # Subordinate CA, WebSocket sync, and WebUI integration tests
│ ├── test_linux_client.py # Linux client unit tests & mTLS certificate validation │ ├── test_linux_client.py # Linux client unit tests & mTLS certificate validation
│ ├── test_pipeline.py # End-to-end mTLS integration & direct anomaly verification test │ ├── test_pipeline.py # End-to-end mTLS integration & direct anomaly verification test
│ ├── test_server.py # Server unit tests, PKI generation, and seat quota tests │ ├── test_server.py # Server unit tests, PKI generation, user auth & seat quota tests
│ └── test_win_client.py # Windows client unit tests & mTLS certificate validation │ └── test_win_client.py # Windows client unit tests & mTLS certificate validation
├── .gitignore # Ignores venv, caches, DBs, and private keys ├── .gitignore # Ignores venv, caches, DBs, and private keys
├── README.md # Architecture and usage documentation ├── README.md # Architecture and usage documentation
@@ -491,7 +498,7 @@ LOGAR/
```bash ```bash
sudo ./compilation/install_linux_client.sh "http://<HUB_HOST>:8443" "<ENROLLMENT_SECRET>" sudo ./compilation/install_linux_client.sh "http://<HUB_HOST>:8443" "<ENROLLMENT_SECRET>"
``` ```
2. The installer enrolls the client, configures `/etc/logar/certs`, and activates `logar-client.service`. 2. The installer enrolls the client, configures `/etc/logar/certs` (with `chmod 700`), and activates `logar-client.service`.
--- ---
@@ -501,11 +508,13 @@ LOGAR/
```bash ```bash
python -m unittest discover -s tests -v python -m unittest discover -s tests -v
``` ```
Runs all **25 unit tests**, covering: Runs all **35 unit tests**, covering:
- Dynamic Root CA generation and server TLS certificate issuance. - Dynamic Root CA generation and server TLS certificate issuance.
- Dynamic client certificate issuance with CN and authority key extensions. - Dynamic client certificate issuance with CN and authority key extensions.
- Enrollment secret authentication, seat limits, and certificate revocation. - Enrollment secret authentication, seat limits, and certificate revocation.
- Proactive certificate validity checks, Root CA auto-renewal, and in-flight server SSLContext reload. - Proactive certificate validity checks, Root CA auto-renewal, and in-flight server SSLContext reload.
- Subordinate CA CSR generation, WebSocket enrollment, and dynamic seat quota updates.
- Administrator session authentication, PBKDF2 hashing, and Hermes Bearer token lifecycle.
- Windows & Linux event log collection, deduplication, and mTLS certificate verification. - Windows & Linux event log collection, deduplication, and mTLS certificate verification.
- 12-hour evaluation window and direct Hermes anomaly verification. - 12-hour evaluation window and direct Hermes anomaly verification.
@@ -526,29 +535,30 @@ Tests client enrollment, secret rejection, mTLS TLS 1.3 socket handshake, direct
## Releases & Binary Distribution ## Releases & Binary Distribution
Releases can be built and published through three complementary channels: Releases are cross-compiled and published through automated or manual triggers:
### 1. Tag Push Automation (Gitea Actions) ### 1. Tag Push Automation (Gitea Actions)
Pushing a release tag automatically triggers the build workflows: Pushing a release tag automatically triggers the build workflow:
```bash ```bash
git tag v3.0.0 git tag v3.0.1
git push origin v3.0.0 git push origin v3.0.1
``` ```
The consolidated workflow **`release.yml`** defines two parallel jobs: The consolidated workflow **`release.yml`** runs on a single Ubuntu runner (`ubuntu-latest`) using cross-compilation (`python compilation/package_dist.py --target all`):
- **`release-linux`** (`ubuntu-latest`): Compiles standalone native ELF binaries (`Linux_Client.bin`, `Server.bin`) and checksums. - **Linux Binaries**: Native ELF standalone executables (`Linux_Client.bin`, `Server.bin`).
- **`release-windows`** (`windows-latest`): Compiles Windows executables (`Win_Client.exe`, `Server.exe`), builds Inno Setup installers, and publishes checksums (requires self-hosted Windows Act Runner). - **Windows Executables & Bundles**: Cross-compiled standalone binaries (`Win_Client.exe`, `Server.exe`) and `.zip` distribution packages.
- **Automated Checksums & Publishing**: Generates `sha256sums.txt` and publishes all release assets and release notes directly to Gitea.
### 2. Manual Workflow Dispatch (Gitea UI) ### 2. Manual Workflow Dispatch (Gitea UI)
Workflows can be manually triggered on demand from the Gitea web interface: Workflows can be manually triggered on demand from the Gitea web interface:
1. Navigate to **Actions** $\rightarrow$ **Release Binaries & Installers** (`release.yml`). 1. Navigate to **Actions** $\rightarrow$ **Release Binaries & Installers** (`release.yml`).
2. Click **Run workflow**, set the release tag (defaults to `v3.0.0`), and run. 2. Click **Run workflow**, set the release tag (defaults to `v3.0.1`), and run.
### 3. Native Local Windows Build & Direct Release Upload ### 3. Local Native Build & Direct Release Upload
For environments without a registered Windows CI runner, Windows executables can be built and published directly to Gitea releases: To build and upload binaries locally from an administrative workstation:
```powershell ```powershell
# 1. Build Windows binaries locally # 1. Build binaries locally (windows, linux, or all)
python compilation/package_dist.py --target windows python compilation/package_dist.py --target all
# 2. Upload assets and release notes directly to the Gitea release # 2. Upload assets and release notes directly to the Gitea release
python compilation/upload_release.py --tag v3.0.0 --token <GITEA_TOKEN> --skip-build python compilation/upload_release.py --tag v3.0.1 --token <GITEA_TOKEN> --skip-build
``` ```