#!/usr/bin/env bash
# status.sh — 포트별 LISTEN 주소와 HTTP 상태를 한 줄씩 낸다. 0.0.0.0 또는 [::] 로 열리면 WARN.
LS=/home/madsc/work/insuniverse-temp/.git/worktrees/security-hotfix/live-stack
PIDS=$LS/pids
TS=100.105.217.53

listen_of() { ss -H -ltn "sport = :$1" | awk '{print $4}' | paste -sd' ' -; }

row() { # <name> <host> <port> [path]
  local name=$1 host=$2 port=$3 path=${4:-/} listen code=-
  listen=$(listen_of "$port")
  if [[ -n $listen && $path != - ]]; then
    code=$(curl -s -o /dev/null -m 3 --noproxy '*' -w '%{http_code}' "http://$host:$port$path" || true)
  fi
  local warn=""
  [[ $listen == *"0.0.0.0"* || $listen == *"[::]"* || $listen == *"*:"* ]] && warn=" WARN:wide-bind"
  printf '%-12s %-15s %-5s listen=[%s] http=%s%s\n' "$name" "$host" "$port" "${listen:-none}" "$code" "$warn"
}

for n in fake-toss server site-vite admin-vite proxy-site proxy-admin; do
  f=$PIDS/$n.pid
  if [[ -f $f ]] && kill -0 "$(cat "$f")" 2>/dev/null; then alive=alive; else alive=dead; fi
  printf 'pid %-12s %s\n' "$n" "$alive"
done

row fake-toss 127.0.0.1 7239 -
row server 127.0.0.1 7231 /
row site-vite 127.0.0.1 5231 /
row admin-vite 127.0.0.1 5233 /
row proxy-site 127.0.0.1 5232 /
row proxy-site "$TS" 5232 /
row proxy-admin 127.0.0.1 5234 /
row proxy-admin "$TS" 5234 /

db=$(docker inspect -f '{{.State.Status}}' secfix-live-mysql 2>/dev/null || echo missing)
printf '%-12s container=%s listen=[%s]\n' mysql "$db" "$(listen_of 33631)"
