"""Configuration constants for the PXE webapp. Reads from environment variables with sensible defaults that match the Ansible playbook's deploy paths. Also defines the canonical image type list and shared-directory taxonomy used by the import pipeline. """ import os # --- Filesystem paths -------------------------------------------------------- SAMBA_SHARE = os.environ.get("SAMBA_SHARE", "/srv/samba/winpeapps") CLONEZILLA_SHARE = os.environ.get("CLONEZILLA_SHARE", "/srv/samba/clonezilla") BLANCCO_REPORTS = os.environ.get("BLANCCO_REPORTS", "/srv/samba/blancco-reports") ENROLLMENT_SHARE = os.environ.get("ENROLLMENT_SHARE", "/srv/samba/enrollment") ENROLLMENT_PPKG_DIR = os.environ.get( "ENROLLMENT_PPKG_DIR", os.path.join(ENROLLMENT_SHARE, "ppkgs") ) UPLOAD_DIR = os.environ.get("UPLOAD_DIR", "/home/pxe/image-upload") SHARED_DIR = os.path.join(SAMBA_SHARE, "_shared") WEB_ROOT = os.environ.get("WEB_ROOT", "/var/www/html") BOOT_WIM = os.path.join(WEB_ROOT, "win11", "sources", "boot.wim") AUDIT_LOG = os.environ.get("AUDIT_LOG", "/var/log/pxe-webapp-audit.log") IMAGING_DIR = os.environ.get("IMAGING_DIR", "/var/log/pxe-imaging") # --- Flask ------------------------------------------------------------------- FLASK_SECRET_KEY = os.environ.get("FLASK_SECRET_KEY", "pxe-manager-dev-key-change-in-prod") MAX_CONTENT_LENGTH = 16 * 1024 * 1024 * 1024 # 16 GB max upload # --- Image taxonomy ---------------------------------------------------------- # Subdirs inside Deploy/ shared across ALL image types. SHARED_DEPLOY_GLOBAL = ["Out-of-box Drivers"] # Subdirs inside Deploy/ shared within the same image family (by prefix). SHARED_DEPLOY_SCOPED = { "gea-": ["Operating Systems", "Packages"], "ge-": ["Operating Systems", "Packages"], } # Sibling dirs at image root shared within the same image family. SHARED_ROOT_DIRS = { "gea-": ["Sources"], "ge-": ["Sources"], } IMAGE_TYPES = [ "gea-standard", "gea-engineer", "gea-shopfloor", "ge-standard", "ge-engineer", "ge-shopfloor-lockdown", "ge-shopfloor-mce", ] FRIENDLY_NAMES = { "gea-standard": "GE Aerospace Standard", "gea-engineer": "GE Aerospace Engineer", "gea-shopfloor": "GE Aerospace Shop Floor", "ge-standard": "GE Legacy Standard", "ge-engineer": "GE Legacy Engineer", "ge-shopfloor-lockdown": "GE Legacy Shop Floor Lockdown", "ge-shopfloor-mce": "GE Legacy Shop Floor MCE", } # --- Unattend XML namespaces ------------------------------------------------- UNATTEND_NS = "urn:schemas-microsoft-com:unattend" WCM_NS = "http://schemas.microsoft.com/WMIConfig/2002/State" NSMAP = {None: UNATTEND_NS, "wcm": WCM_NS}