61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
|
|
"""
|
||
|
|
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()
|