"""경로, 포트, 공개 주소 등 한곳에 모은 설정."""
import os
import socket
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent
WEB_DIR = BASE_DIR / "web"
DATA_DIR = BASE_DIR / "data"

HOST = os.environ.get("BOOTH_HOST", "0.0.0.0")
PORT = int(os.environ.get("BOOTH_PORT", "8000"))

# 결과물 보관 시간(시간 단위). 지나면 자동 삭제합니다.
RETENTION_HOURS = float(os.environ.get("BOOTH_RETENTION_HOURS", "6"))

# 업로드 1건당 최대 용량
MAX_UPLOAD_MB = int(os.environ.get("BOOTH_MAX_UPLOAD_MB", "120"))


def lan_ip() -> str:
    """휴대폰이 접속할 수 있는 이 PC의 랜 IP를 찾습니다."""
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        s.connect(("8.8.8.8", 80))
        return s.getsockname()[0]
    except OSError:
        return "127.0.0.1"
    finally:
        s.close()


def public_base_url() -> str:
    """QR에 넣을 주소. 도메인이 있으면 BOOTH_PUBLIC_URL 로 덮어쓰세요."""
    override = os.environ.get("BOOTH_PUBLIC_URL")
    if override:
        return override.rstrip("/")
    return "http://{}:{}".format(lan_ip(), PORT)
