#!/usr/bin/env bash
# Install pipe script, webhook secret, and verify inbound reply path.
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"

HOME_DIR="${HOME:-/home/$(whoami)}"
BIN_DIR="${HOME_DIR}/bin"
LOG_DIR="${HOME_DIR}/logs"
PIPE_SRC="${ROOT}/scripts/cpanel-email-inbound-pipe.php"
PIPE_DST="${BIN_DIR}/cpanel-email-inbound-pipe.php"
SECRET_FILE="${HOME_DIR}/.email-inbound-secret"
ENV_FILE="${ROOT}/.env"

echo ">> Inbound pipe setup (user: $(whoami))"
mkdir -p "${BIN_DIR}" "${LOG_DIR}"

if [[ ! -f "${PIPE_SRC}" ]]; then
  echo "ERROR: missing ${PIPE_SRC} — run git pull first"
  exit 1
fi

cp "${PIPE_SRC}" "${PIPE_DST}"
chmod 755 "${PIPE_DST}"
echo ">> Installed ${PIPE_DST}"

if [[ ! -f "${ENV_FILE}" ]]; then
  echo "ERROR: missing ${ENV_FILE}"
  exit 1
fi

SECRET="$(grep -E '^[[:space:]]*EMAIL_INBOUND_WEBHOOK_SECRET=' "${ENV_FILE}" | tail -1 | cut -d= -f2- | tr -d '\r"'"'"' ' | xargs)"
if [[ -z "${SECRET}" ]]; then
  echo "ERROR: EMAIL_INBOUND_WEBHOOK_SECRET not set in .env"
  exit 1
fi
printf '%s' "${SECRET}" > "${SECRET_FILE}"
chmod 600 "${SECRET_FILE}"
echo ">> Wrote ${SECRET_FILE}"

if ! command -v php >/dev/null 2>&1; then
  echo "ERROR: php not found — cPanel pipe requires PHP CLI"
  exit 1
fi
echo ">> PHP: $(php -v | head -1)"

WEBHOOK_URL="${EMAIL_INBOUND_WEBHOOK_URL:-https://company-api.ronnieridge.com/api/email/inbound/webhook}"
echo ">> Webhook URL: ${WEBHOOK_URL}"

echo ">> Direct webhook test (curl)…"
HTTP="$(curl -s -o /tmp/inbound-test.json -w '%{http_code}' -X POST "${WEBHOOK_URL}" \
  -H 'Content-Type: application/json' \
  -H "x-email-webhook-secret: ${SECRET}" \
  -d '{"from":"inbound-setup-test@example.com","subject":"Setup test","text":"pipe setup","trackingToken":"00000000000000000000000000000000"}')"
echo "   HTTP ${HTTP} $(head -c 120 /tmp/inbound-test.json 2>/dev/null || true)"
if [[ "${HTTP}" == "401" ]]; then
  echo "ERROR: webhook returned 401 — secret mismatch between .env and pipe"
  exit 1
fi
echo "   (HTTP 400 on fake token = NORMAL — pipe + API are connected)"

echo ">> Pipe script test (creates ${LOG_DIR}/email-inbound-pipe.log)…"
TEST_TOKEN="${INBOUND_TEST_TOKEN:-00000000000000000000000000000000}"
printf 'From: setup-test@example.com\r\nTo: wos+%s@ronnieridge.com\r\nSubject: Re: pipe setup\r\n\r\nInbound pipe self-test\r\n' "${TEST_TOKEN}" \
  | php "${PIPE_DST}"

sleep 1
if [[ -f "${LOG_DIR}/email-inbound-pipe.log" ]]; then
  echo ">> Last log lines:"
  tail -5 "${LOG_DIR}/email-inbound-pipe.log"
else
  echo "ERROR: log file not created — pipe script failed silently"
  exit 1
fi

echo ""
echo "=========================================="
echo "MANUAL cPanel CHECK (required for Gmail):"
echo "  Email → Default Address → ronnieridge.com"
echo "  Action: Pipe to Program"
echo "  Program: bin/cpanel-email-inbound-pipe.php"
echo "  NOT Forward to a mailbox"
echo ""
echo "Do NOT create wos@ or reply@ mailboxes (breaks plus-addressing)."
echo "New campaign emails use Reply-To: wos+{token}@ronnieridge.com"
echo ""
echo "After a real Gmail reply: tail -f ${LOG_DIR}/email-inbound-pipe.log"
echo "=========================================="
echo ">> Inbound pipe setup complete"
