windows installer fixes
This commit is contained in:
+12
-7
@@ -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 {
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user