#!/usr/bin/env bash
# KT PC(macOS/Linux)용 클라이언트 설정 도우미.
# 묻는 값: 게이트웨이 도메인, 이름, 게이트웨이 키, (선택) Claude setup-token 결과
# 하는 일: ~/.config/llm-gateway/env.sh 생성, 셸 프로필에 source 한 줄 추가,
#          ~/.codex/config.toml 에 openai_base_url/chatgpt_base_url 추가(백업 생성)
set -euo pipefail
CONF_DIR="$HOME/.config/llm-gateway"; ENV_FILE="$CONF_DIR/env.sh"
ask() { local v; read -r -p "$1: " v; echo "$v"; }
DOMAIN="${GATEWAY_DOMAIN:-$(ask '게이트웨이 도메인 (예: ai-gw.example.com)')}"
NAME="${GATEWAY_NAME:-$(ask '이름(프록시 아이디)')}"
KEY="${GATEWAY_KEY:-$(ask '게이트웨이 키 (kt_...)')}"
read -r -s -p "Claude setup-token 결과 (없으면 Enter): " OAUTH; echo
[[ "$DOMAIN" =~ ^[a-z0-9.-]+$ ]] || { echo "도메인 형식 오류" >&2; exit 1; }
[[ "$KEY" =~ ^[A-Za-z0-9_-]{24,}$ ]] || { echo "키 형식 오류" >&2; exit 1; }
mkdir -p "$CONF_DIR"; umask 077
cat > "$ENV_FILE" <<ENV
# generated by LLM-gateway setup-client.sh — $(date +%F)
export LLM_GATEWAY_DOMAIN="$DOMAIN"
export LLM_GATEWAY_NAME="$NAME"
export LLM_GATEWAY_KEY="$KEY"

# Claude Code (base URL 방식)
export ANTHROPIC_BASE_URL="https://$DOMAIN/anthropic"
export ANTHROPIC_CUSTOM_HEADERS="X-Gateway-Key: $KEY"
${OAUTH:+export CLAUDE_CODE_OAUTH_TOKEN="$OAUTH"}
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
export CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1
export ENABLE_TOOL_SEARCH=true

# Codex (토큰 갱신 경로)
export CODEX_REFRESH_TOKEN_URL_OVERRIDE="https://$DOMAIN/k/$KEY/openai-auth/oauth/token"

# 전체 프록시가 필요할 때만 주석 해제 (로그인, 설치 등)
# export HTTPS_PROXY="https://$NAME:$KEY@$DOMAIN:443"
ENV
echo "✔ $ENV_FILE 작성"
RC="$HOME/.zshrc"; [[ "${SHELL:-}" == */bash ]] && RC="$HOME/.bashrc"
if ! grep -q 'LLM-gateway/env.sh' "$RC" 2>/dev/null; then
  printf '\n# LLM-gateway\n[ -f "%s" ] && source "%s"\n' "$ENV_FILE" "$ENV_FILE" >> "$RC"; echo "✔ $RC 에 source 추가"
fi
CODEX_CFG="$HOME/.codex/config.toml"; mkdir -p "$HOME/.codex"; touch "$CODEX_CFG"
if grep -qE '^(openai_base_url|chatgpt_base_url)' "$CODEX_CFG"; then
  echo "! $CODEX_CFG 에 base_url 설정이 이미 있어 건너뜀 (직접 확인)"
else
  cp "$CODEX_CFG" "$CODEX_CFG.bak.$(date +%s)"
  # top-level keys must precede any [table]; prepend
  { printf 'openai_base_url  = "https://%s/k/%s/chatgpt/backend-api/codex"\nchatgpt_base_url = "https://%s/k/%s/chatgpt/backend-api/"\n\n' "$DOMAIN" "$KEY" "$DOMAIN" "$KEY"; cat "$CODEX_CFG"; } > "$CODEX_CFG.new"
  mv "$CODEX_CFG.new" "$CODEX_CFG"; echo "✔ $CODEX_CFG 에 base URL 추가 (백업: $CODEX_CFG.bak.*)"
fi
cat <<MSG

다음 단계
  1. 새 터미널(또는 source $RC) 후  claude  실행 → /status 에서 Base URL 확인
  2. Codex: KT망 밖에서 'codex login' 후 ~/.codex/auth.json 을 이 PC로 복사
     (또는 HTTPS_PROXY 주석 해제 후 'codex login --device-auth')
  3. 브라우저: PAC URL  https://$DOMAIN/proxy.pac  설정 → claude.ai / chatgpt.com 접속, 인증창에 $NAME / 키 입력
MSG
