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')",
|
||||
(initial_token, now_iso))
|
||||
|
||||
status = "active" if max_seats > 0 else "unlicensed"
|
||||
if enrollment_secret:
|
||||
conn.execute("""
|
||||
INSERT OR IGNORE INTO license_config (id, max_seats, enrollment_secret, license_status)
|
||||
VALUES (1, ?, ?, 'unlicensed')
|
||||
""", (max_seats, enrollment_secret))
|
||||
VALUES (1, ?, ?, ?)
|
||||
""", (max_seats, enrollment_secret, status))
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
@@ -1325,8 +1326,8 @@ def enroll_client(req: ClientEnrollRequest, request: Request = None):
|
||||
raise HTTPException(status_code=500, detail="License configuration not initialized")
|
||||
|
||||
expected_secret, max_seats = row[0], row[1]
|
||||
license_status = row[2] if len(row) > 2 and row[2] else "unlicensed"
|
||||
if max_seats <= 0 or license_status != "active":
|
||||
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 in ("unlicensed", "revoked", "expired"):
|
||||
conn.close()
|
||||
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"):
|
||||
status_label = "EXPIRED"
|
||||
elif max_seats <= 0 or license_status_db != "active" or info.get("is_self_signed") or not info.get("seats"):
|
||||
status_label = "UNLICENSED"
|
||||
else:
|
||||
elif info.get("seats") and not info.get("is_self_signed"):
|
||||
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
|
||||
return {
|
||||
|
||||
@@ -6,6 +6,7 @@ import struct
|
||||
import sqlite3
|
||||
import unittest
|
||||
import urllib.request
|
||||
import uuid
|
||||
import warnings
|
||||
from datetime import datetime, timezone, timedelta
|
||||
|
||||
@@ -21,12 +22,8 @@ import pgpy
|
||||
|
||||
class TestServerComponent(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.test_db = "test_server_state.db"
|
||||
self.test_config = "test_server_config.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)
|
||||
self.test_db = f"test_server_state_{uuid.uuid4().hex[:8]}.db"
|
||||
self.test_config = f"test_server_config_{uuid.uuid4().hex[:8]}.json"
|
||||
|
||||
def tearDown(self):
|
||||
if os.path.exists(self.test_db):
|
||||
|
||||
Reference in New Issue
Block a user