"""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}
