Spaces:
Paused
Paused
| import logging | |
| import os | |
| import sys | |
| from typing import Dict, List, Optional | |
| from launcher.config import ACTIVE_AUTH_DIR, SAVED_AUTH_DIR | |
| logger = logging.getLogger("CamoufoxLauncher") | |
| def ensure_auth_dirs_exist() -> None: | |
| try: | |
| os.makedirs(ACTIVE_AUTH_DIR, exist_ok=True) | |
| logger.debug(f"Active auth directory ready: {ACTIVE_AUTH_DIR}") | |
| os.makedirs(SAVED_AUTH_DIR, exist_ok=True) | |
| logger.debug(f"Saved auth directory ready: {SAVED_AUTH_DIR}") | |
| except Exception as e: | |
| logger.error(f"Failed to create auth directories: {e}", exc_info=True) | |
| sys.exit(1) | |
| def check_dependencies( | |
| launch_server: Optional[bool], DefaultAddons: Optional[bool] | |
| ) -> None: | |
| logger.debug("[Init] Step 1: Checking dependencies...") | |
| required_modules: Dict[str, str] = {} | |
| if launch_server is not None and DefaultAddons is not None: | |
| required_modules["camoufox"] = "camoufox (for server and addons)" | |
| elif launch_server is not None: | |
| required_modules["camoufox_server"] = "camoufox.server" | |
| logger.warning( | |
| " 'camoufox.server' imported, but 'camoufox.DefaultAddons' not imported. Addon exclusion functionality may be limited." | |
| ) | |
| missing_py_modules: List[str] = [] | |
| dependencies_ok = True | |
| if required_modules: | |
| for module_name, install_package_name in required_modules.items(): | |
| try: | |
| __import__(module_name) | |
| logger.debug(f"Module '{module_name}' found.") | |
| except ImportError: | |
| logger.error( | |
| f" Module '{module_name}' (package: '{install_package_name}') not found." | |
| ) | |
| missing_py_modules.append(install_package_name) | |
| dependencies_ok = False | |
| else: | |
| # Check if internal launch mode, if so camoufox must be importable | |
| is_any_internal_arg = any(arg.startswith("--internal-") for arg in sys.argv) | |
| if is_any_internal_arg and (launch_server is None or DefaultAddons is None): | |
| logger.error( | |
| " Internal launch mode (--internal-*) requires 'camoufox' package, but failed to import." | |
| ) | |
| dependencies_ok = False | |
| elif not is_any_internal_arg: | |
| logger.debug( | |
| "Internal launch mode not requested and camoufox.server not imported, skipping 'camoufox' Python package check." | |
| ) | |
| try: | |
| from server import app as server_app_check | |
| if server_app_check: | |
| logger.debug("[Init] Successfully imported app object from server.py") | |
| except ImportError as e_import_server: | |
| logger.error( | |
| f" Cannot import 'app' object from 'server.py': {e_import_server}", | |
| exc_info=True, | |
| ) | |
| logger.error("Please ensure 'server.py' file exists and has no import errors.") | |
| dependencies_ok = False | |
| if not dependencies_ok: | |
| logger.error("-------------------------------------------------") | |
| logger.error("Dependency check failed!") | |
| if missing_py_modules: | |
| logger.error(f"Missing Python libraries: {', '.join(missing_py_modules)}") | |
| logger.error( | |
| f" Please try installing with pip: pip install {' '.join(missing_py_modules)}" | |
| ) | |
| logger.error("-------------------------------------------------") | |
| sys.exit(1) | |
| else: | |
| logger.debug("[Init] All dependency checks passed") | |