#!/bin/bash
# ============================================================
# asaoclinicSERVER VNC接続（統合版・実行環境を自動判別）
#
# デスクトップ(iCloud同期)に置けば、作業Mac・自宅Mac 両方で
# 同じ1ファイルをダブルクリックするだけで接続できる。
#
#   作業Mac(macMiniM4)で実行  → 直接 : 手元:5901 → asaoclinic:5900
#   それ以外(自宅Mac等)で実行 → 経由 : 手元:5901 → 作業Mac:5902 → asaoclinic:5900
#
# 判別ロジック: ~/.ssh/asaoclinic_keys があれば作業Mac、なければ外部とみなす。
#   （asaoclinic_keys は作業Macにしか無い秘密鍵。自宅Macにはコピーしない）
#
# ※ iCloud/Dropbox は実行ビット(+x)を保持しないことがある。
#    ダブルクリックで「実行できません」と出たら、各Macで一度だけ:
#       chmod +x ~/Desktop/asaoclinic-VNC.command
# ============================================================

LOCAL_PORT=5901          # 手元Mac側ポート（共通）
MID_PORT=5902            # 外部経由時の作業Mac側 中継ポート（作業Mac自身の5901と衝突回避）
WORKMAC_USER=menou
WORKMAC_HOST=159.28.108.1
WORKMAC_PORT=22022

echo "=== asaoclinic 画面共有 接続 ==="

# 既にトンネルがあれば再利用
if lsof -nP -iTCP:${LOCAL_PORT} -sTCP:LISTEN >/dev/null 2>&1; then
  echo "・トンネルは既に確立済み (localhost:${LOCAL_PORT})"
  open vnc://localhost:${LOCAL_PORT}
  exit 0
fi

if [ -f "$HOME/.ssh/asaoclinic_keys" ]; then
  # ---------- 作業Mac: 直接接続 ----------
  echo "・作業Macとして直接トンネルを確立 (5901 -> asaoclinic:5900)"
  ssh -f -o ExitOnForwardFailure=yes -o ConnectTimeout=15 \
      -N -L ${LOCAL_PORT}:localhost:5900 asaoclinic
  RC=$?
  HINT="（作業Macで）asaoclinic 逆トンネル確認: lsof -iTCP:22222 -sTCP:LISTEN"
else
  # ---------- 外部(自宅Mac等): 作業Mac経由 ----------
  echo "・外部Macとして作業Mac(${WORKMAC_HOST})を踏み台にトンネルを確立"
  echo "  （作業Macのパスワードを求められたら入力。鍵があれば不要）"
  ssh -f -o ExitOnForwardFailure=yes -o ConnectTimeout=15 \
      -L ${LOCAL_PORT}:localhost:${MID_PORT} \
      -p ${WORKMAC_PORT} ${WORKMAC_USER}@${WORKMAC_HOST} \
      "ssh -N -L ${MID_PORT}:localhost:5900 asaoclinic"
  RC=$?
  HINT="自宅Mac→作業Mac のSSH可否: ssh -p ${WORKMAC_PORT} ${WORKMAC_USER}@${WORKMAC_HOST}"
fi

if [ $RC -ne 0 ]; then
  echo ""
  echo "!! トンネル確立に失敗しました。確認事項:"
  echo "   ${HINT}"
  read -p "Enterキーで閉じます..."
  exit 1
fi

sleep 3
echo "・画面共有を開きます: vnc://localhost:${LOCAL_PORT}"
echo "  ユーザ: asaoadmin / パスワード: ログインパスワード"
open vnc://localhost:${LOCAL_PORT}

echo ""
echo "接続中です。切断するには:"
echo "   pkill -f '${LOCAL_PORT}:localhost:'"
echo "このウィンドウは閉じて構いません。"
