feat(packs-lab): DSM_VERIFY_SSL env — LAN IP + self-signed cert 환경 대응
운영 NAS에서 DSM_HOST=https://192.168.x.x:5001 같은 LAN IP 사용 시 DSM의 self-signed 인증서가 IP 주소에 매칭되지 않아 SSL 검증 실패 (SSL: CERTIFICATE_VERIFY_FAILED — IP address mismatch). LAN 내부 통신이라 verify=False 허용 가능. 환경변수로 토글: - DSM_VERIFY_SSL=true (default) — 도메인 + 정상 cert 환경 - DSM_VERIFY_SSL=false — LAN IP + self-signed 환경 dsm_client.py가 환경변수 읽어 httpx.AsyncClient(verify=...)에 전달. docker-compose.yml + .env.example + CLAUDE.md에 신규 env 명시. 회귀 25/25 passing.
This commit is contained in:
@@ -15,6 +15,9 @@ logger = logging.getLogger("packs-lab.dsm")
|
||||
DSM_HOST = os.getenv("DSM_HOST", "") # 예: https://gahusb.synology.me:5001
|
||||
DSM_USER = os.getenv("DSM_USER", "")
|
||||
DSM_PASS = os.getenv("DSM_PASS", "")
|
||||
# LAN IP로 DSM 접근 시 self-signed cert가 IP에 매칭 안 되어 검증 실패. LAN 내부 통신이라 false 허용.
|
||||
# 운영에서 LAN IP + self-signed면 DSM_VERIFY_SSL=false. 도메인 + 정상 cert면 기본값(true) 유지.
|
||||
DSM_VERIFY_SSL = os.getenv("DSM_VERIFY_SSL", "true").strip().lower() != "false"
|
||||
|
||||
API_AUTH = "/webapi/auth.cgi"
|
||||
API_SHARE = "/webapi/entry.cgi"
|
||||
@@ -74,7 +77,7 @@ async def create_share_link(file_path: str, expires_in_sec: int = 14400) -> tupl
|
||||
expires_at = datetime.now(timezone.utc) + timedelta(seconds=expires_in_sec)
|
||||
expire_time_ms = int(expires_at.timestamp() * 1000)
|
||||
|
||||
async with httpx.AsyncClient(verify=True) as client:
|
||||
async with httpx.AsyncClient(verify=DSM_VERIFY_SSL) as client:
|
||||
sid = await _login(client)
|
||||
try:
|
||||
r = await client.get(
|
||||
|
||||
Reference in New Issue
Block a user