G2 — 한선씨 게이트웨이 관리자 API (:9100 대체)
개요
크라우니 게이트웨이 라이브 컷오버 NO-GO 항목(관리자 API 미구현) 해소.
레거시 JS
lib/gateway.js _handleAdmin(:9100) 동등 기능을 한선씨로 구현.
무엇을 했는지
신규 파일: /Users/ef/crowny-gateway/한선게이트웨이/관리자.한선
HTTP 수신부(TCP대기) — 그림자 :9101 (컷오버 시 관리자수신부(9100)):
GET /health → 200 {"status":"ok","services":{}} (워치독/infra 계약)
GET /status → 200 (uptime/totalRequests/certRenewRequests)
POST /certs/renew → 인증서리로드()로 라이브 :9100 위임 후 200
그 외 → 404
워치독 계약 충족: lib/watchdog.js _probe(statusCode<500→UP),
lib/infra.js:72
JSON.parse(body).services 파싱 가능(services 키 포함).
발견한 버그(근본 해결)
포함()은 문자 인덱스 반환(매치=오프셋, 미스=-1). HTTP 요청 라인 첫머리
"POST /certs/renew"는 오프셋 0 →
만약(포함(...)) 만 쓰면 falsy 처리되어
분기 누락(404). 해결:
포함(...) >= 0 명시 비교. 회귀 테스트 추가.
검증
- 컴파일 OK (hanseonc_high). 단위검증 6/6 PASS.
- 그림자 :9101 라이브 기동 후 curl: /health=200, /status=200,
POST /certs/renew=200(라이브 :9100 위임), /nope=404.
- 그림자 종료 후 잔류 :9101 = 0. 라이브 :9100/:8443(node PID 16619) 무접촉.
관련 파일
- /Users/ef/crowny-gateway/한선게이트웨이/관리자.한선 (산출)
- /Users/ef/crowny-gateway/한선게이트웨이/헬스.한선 (기존, 일부 중복 — 관리자.한선이 정본)
- 참조: /Users/ef/crowny-gateway/lib/gateway.js:477 (_handleAdmin)
- 참조: /Users/ef/crowny-infra/lib/watchdog.js:141 (_probe), lib/infra.js:72
잔여 이슈
- 라이브 :9100 takeover는 단일 node 프로세스(:8080/:8443/:9100 일체)라
admin만 분리 불가 → 전체 컷오버(컷오버.한선)와 함께만 수행. RUNBOOK은 파일 말미.