""" L2 Server Configuration. Environment-based settings for the ActivityPub server. """ import os from dataclasses import dataclass from pathlib import Path @dataclass class Settings: """L2 Server configuration.""" # Domain and URLs domain: str = os.environ.get("ARTDAG_DOMAIN", "artdag.rose-ash.com") l1_public_url: str = os.environ.get("L1_PUBLIC_URL", "https://celery-artdag.rose-ash.com") effects_repo_url: str = os.environ.get("EFFECTS_REPO_URL", "https://git.rose-ash.com/art-dag/effects") ipfs_gateway_url: str = os.environ.get("IPFS_GATEWAY_URL", "") # L1 servers l1_servers: list = None # Cookie domain for cross-subdomain auth cookie_domain: str = None # Data directory data_dir: Path = None # JWT settings jwt_secret: str = os.environ.get("JWT_SECRET", "") jwt_algorithm: str = "HS256" access_token_expire_minutes: int = 60 * 24 * 30 # 30 days def __post_init__(self): # Parse L1 servers l1_str = os.environ.get("L1_SERVERS", "https://celery-artdag.rose-ash.com") self.l1_servers = [s.strip() for s in l1_str.split(",") if s.strip()] # Cookie domain env_cookie = os.environ.get("COOKIE_DOMAIN") if env_cookie: self.cookie_domain = env_cookie else: parts = self.domain.split(".") if len(parts) >= 2: self.cookie_domain = "." + ".".join(parts[-2:]) # Data directory self.data_dir = Path(os.environ.get("ARTDAG_DATA", str(Path.home() / ".artdag" / "l2"))) self.data_dir.mkdir(parents=True, exist_ok=True) (self.data_dir / "assets").mkdir(exist_ok=True) settings = Settings()