fix(licensing): use importlib loader in src/License_Authority.py proxy to prevent circular imports
This commit is contained in:
+14
-19
@@ -7,27 +7,22 @@ Repo: https://gitea.eibl.tech/me0nline/LOGAR-LICENSING.git
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import importlib.util
|
||||||
|
|
||||||
# Prefer the submodule implementation
|
|
||||||
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
||||||
SUBMODULE_DIR = os.path.join(ROOT_DIR, "LOGAR-LICENSING")
|
SUBMODULE_FILE = os.path.join(ROOT_DIR, "LOGAR-LICENSING", "License_Authority.py")
|
||||||
if SUBMODULE_DIR not in sys.path:
|
|
||||||
sys.path.insert(0, SUBMODULE_DIR)
|
|
||||||
|
|
||||||
from License_Authority import (
|
if not os.path.exists(SUBMODULE_FILE):
|
||||||
init_authority_db,
|
raise ImportError(f"LOGAR-LICENSING submodule not found at {SUBMODULE_FILE}. Run 'git submodule update --init --recursive'.")
|
||||||
extract_license_info_from_cert,
|
|
||||||
generate_master_root_ca,
|
spec = importlib.util.spec_from_file_location("_submodule_authority", SUBMODULE_FILE)
|
||||||
sign_ca_csr_with_seats,
|
_sub = importlib.util.module_from_spec(spec)
|
||||||
issue_license_from_csr,
|
spec.loader.exec_module(_sub)
|
||||||
renew_license_cert,
|
|
||||||
revoke_license,
|
# Export public symbols from submodule into this module's namespace
|
||||||
list_licenses,
|
for attr in dir(_sub):
|
||||||
main,
|
if not attr.startswith("__"):
|
||||||
OID_LOGAR_SEATS,
|
globals()[attr] = getattr(_sub, attr)
|
||||||
OID_LOGAR_LICENSE_ID,
|
|
||||||
OID_LOGAR_ISSUER_URL
|
|
||||||
)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
_sub.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user