ge-tool/backend/services/nas_api/config.py
2025-12-10 13:41:43 +07:00

61 lines
1.9 KiB
Python
Executable File

"""
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()