ge-tool/backend/services/nas_api/config.py

61 lines
1.9 KiB
Python
Raw Permalink Normal View History

2025-12-10 06:41:43 +00:00
"""
NAS API Configuration
Environment variables and global settings.
"""
import os
import logging
import requests
import urllib3
from typing import cast
from dotenv import load_dotenv
# Load environment variables from .env.local first, then .env
load_dotenv('.env.local')
load_dotenv() # Fallback to .env
# Disable SSL warnings for self-signed certificates
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# Use logger from root (configured in main.py)
logger = logging.getLogger(__name__)
# === NAS Configuration from Environment ===
# NO FALLBACK VALUES - Must be explicitly set in .env.local
_base_url = os.getenv("NAS_BASE_URL")
_username = os.getenv("NAS_USERNAME")
_password = os.getenv("NAS_PASSWORD")
_env_dest_path = os.getenv("NAS_DESTINATION_PATH")
# Validate all required environment variables
missing_vars = []
if not _base_url:
missing_vars.append("NAS_BASE_URL")
if not _username:
missing_vars.append("NAS_USERNAME")
if not _password:
missing_vars.append("NAS_PASSWORD")
if not _env_dest_path:
missing_vars.append("NAS_DESTINATION_PATH")
if missing_vars:
error_msg = f"❌ CRITICAL: Missing required environment variables in .env.local: {', '.join(missing_vars)}"
logger.error(error_msg)
raise RuntimeError(error_msg)
# After validation, cast to str (guaranteed non-None after error check above)
BASE_URL: str = cast(str, _base_url)
USERNAME: str = cast(str, _username)
PASSWORD: str = cast(str, _password)
DESTINATION_PATH: str = cast(str, _env_dest_path).replace("/", "\\")
print(f"✅ [INIT] NAS Configuration loaded successfully")
print(f" - Base URL: {BASE_URL}")
print(f" - Username: {USERNAME}")
print(f" - Destination Path: {repr(DESTINATION_PATH)}")
logger.debug(
f"NAS Configuration: BASE_URL={BASE_URL}, USERNAME={USERNAME}, DESTINATION_PATH={DESTINATION_PATH}")
# Global session object
session = requests.Session()