windows installer fixes
CI Test Suite / Run Component Tests & Pipeline Verification (push) Failing after 1m36s
Release Binaries & Packages / Build & Release Standalone Binaries (Linux & Windows Cross-Compilation) (push) Successful in 10m7s

This commit is contained in:
2026-09-26 21:07:34 +02:00
parent a133050cb5
commit 8287af3129
2 changed files with 15 additions and 13 deletions
+12 -7
View File
@@ -768,11 +768,12 @@ def init_db(db_path: str, enrollment_secret: Optional[str] = None, max_seats: in
conn.execute("INSERT INTO hermes_tokens (token, name, created_at, status) VALUES (?, 'Default Hermes Agent', ?, 'active')", conn.execute("INSERT INTO hermes_tokens (token, name, created_at, status) VALUES (?, 'Default Hermes Agent', ?, 'active')",
(initial_token, now_iso)) (initial_token, now_iso))
status = "active" if max_seats > 0 else "unlicensed"
if enrollment_secret: if enrollment_secret:
conn.execute(""" conn.execute("""
INSERT OR IGNORE INTO license_config (id, max_seats, enrollment_secret, license_status) INSERT OR IGNORE INTO license_config (id, max_seats, enrollment_secret, license_status)
VALUES (1, ?, ?, 'unlicensed') VALUES (1, ?, ?, ?)
""", (max_seats, enrollment_secret)) """, (max_seats, enrollment_secret, status))
conn.commit() conn.commit()
conn.close() conn.close()
@@ -1325,8 +1326,8 @@ def enroll_client(req: ClientEnrollRequest, request: Request = None):
raise HTTPException(status_code=500, detail="License configuration not initialized") raise HTTPException(status_code=500, detail="License configuration not initialized")
expected_secret, max_seats = row[0], row[1] expected_secret, max_seats = row[0], row[1]
license_status = row[2] if len(row) > 2 and row[2] else "unlicensed" license_status = row[2] if len(row) > 2 and row[2] else ("active" if max_seats > 0 else "unlicensed")
if max_seats <= 0 or license_status != "active": if max_seats <= 0 or license_status in ("unlicensed", "revoked", "expired"):
conn.close() conn.close()
raise HTTPException(status_code=403, detail="Server is unlicensed. Import an activated .lic file via the WebUI before enrolling edge clients.") raise HTTPException(status_code=403, detail="Server is unlicensed. Import an activated .lic file via the WebUI before enrolling edge clients.")
@@ -1694,10 +1695,14 @@ def get_license_summary() -> Dict[str, Any]:
if info.get("is_expired"): if info.get("is_expired"):
status_label = "EXPIRED" status_label = "EXPIRED"
elif max_seats <= 0 or license_status_db != "active" or info.get("is_self_signed") or not info.get("seats"): elif info.get("seats") and not info.get("is_self_signed"):
status_label = "UNLICENSED"
else:
status_label = "ACTIVE" status_label = "ACTIVE"
elif max_seats > 0 and license_status_db == "active":
status_label = "ACTIVE"
elif info.get("is_self_signed"):
status_label = "SELF-SIGNED" if max_seats > 0 else "UNLICENSED"
else:
status_label = "UNLICENSED" if max_seats <= 0 else "ACTIVE"
pct = int((active_seats / max_seats * 100)) if max_seats > 0 else 0 pct = int((active_seats / max_seats * 100)) if max_seats > 0 else 0
return { return {
+3 -6
View File
@@ -6,6 +6,7 @@ import struct
import sqlite3 import sqlite3
import unittest import unittest
import urllib.request import urllib.request
import uuid
import warnings import warnings
from datetime import datetime, timezone, timedelta from datetime import datetime, timezone, timedelta
@@ -21,12 +22,8 @@ import pgpy
class TestServerComponent(unittest.TestCase): class TestServerComponent(unittest.TestCase):
def setUp(self): def setUp(self):
self.test_db = "test_server_state.db" self.test_db = f"test_server_state_{uuid.uuid4().hex[:8]}.db"
self.test_config = "test_server_config.json" self.test_config = f"test_server_config_{uuid.uuid4().hex[:8]}.json"
if os.path.exists(self.test_db):
os.remove(self.test_db)
if os.path.exists(self.test_config):
os.remove(self.test_config)
def tearDown(self): def tearDown(self):
if os.path.exists(self.test_db): if os.path.exists(self.test_db):