#!/bin/bash
# 실습 #5 ② — ~/.ssh/config 호스트 별칭 + ProxyJump (Bastion)
# - 별칭 한 번 등록해두면 ssh lab / ssh prod / ssh inner-db 한 단어로 접속
# - ProxyJump 로 bastion 경유 내부망 한 줄 진입
# - 백업·기존 설정 append 안전하게 처리
set -e

CFG_DIR="$HOME/.ssh"
CFG="$CFG_DIR/config"
SRC="$(dirname "$0")/configs/02_ssh_config"

mkdir -p "$CFG_DIR"
chmod 700 "$CFG_DIR"

# 1) 기존 config 백업
if [ -f "$CFG" ]; then
    cp "$CFG" "$CFG.bak.$(date +%Y%m%d%H%M%S)"
    echo "→ 기존 config 백업: $CFG.bak.*"
fi

# 2) lab 별칭 블록이 이미 있으면 건너뛰기 (멱등)
if grep -q "^# === lab block ===" "$CFG" 2>/dev/null; then
    echo "→ lab 별칭 블록 이미 존재. 건너뜀."
else
    cat "$SRC" >> "$CFG"
    chmod 600 "$CFG"
    echo "→ 별칭 추가됨: $CFG"
fi

# 3) 적용 결과 — 어떤 호스트가 어디로 가는지 한눈에
echo
echo "=== 등록된 호스트 ==="
ssh -G lab 2>/dev/null | grep -E '^(hostname|user|port|identityfile|proxyjump) ' | head -10
echo
echo "=== prod 별칭 해석 ==="
ssh -G prod 2>/dev/null | grep -E '^(hostname|user|port|serveralive)' | head -8
echo
echo "=== inner-db (ProxyJump bastion) ==="
ssh -G inner-db 2>/dev/null | grep -E '^(hostname|user|proxyjump)' | head -5

echo
echo "사용:"
echo "  ssh lab                # = ssh -i ~/.ssh/id_ed25519 lab@192.168.56.10"
echo "  ssh prod               # 운영 별칭"
echo "  ssh inner-db           # bastion 경유 한 줄 접속"
echo "  ssh -vG inner-db | less  # 적용된 옵션 디버깅"
