#!/bin/bash
set -e

echo "=================================================="
echo "DERIOX GUARD - MANUAL PAIRING REQUEST M9.5"
echo "=================================================="
echo "This sends one metadata-only pairing request to Guard."
echo "It does NOT approve the gateway, does NOT start a service,"
echo "does NOT scan cameras and does NOT send passwords, streams or media."
echo ""

CONF="/etc/deriox-guard/agent.env"
GUARD_URL="https://guard.deriox.ro"
AGENT_NAME="mini-pc-pilot-01"
GATEWAY_UUID=""

if [ -f "$CONF" ]; then
  # shellcheck disable=SC1090
  source "$CONF" || true
  if [ -n "${DERIOX_GUARD_URL:-}" ]; then GUARD_URL="$DERIOX_GUARD_URL"; fi
  if [ -n "${DERIOX_AGENT_NAME:-}" ]; then AGENT_NAME="$DERIOX_AGENT_NAME"; fi
  if [ -n "${DERIOX_GATEWAY_UUID:-}" ]; then GATEWAY_UUID="$DERIOX_GATEWAY_UUID"; fi
fi

HOST_NAME="$(hostname 2>/dev/null || echo unknown)"
OS_NAME="$(uname -a 2>/dev/null | tr '"' "'" | tr -d '\n')"
MACHINE_ID="$(cat /etc/machine-id 2>/dev/null || hostname)"
MACHINE_HASH="$(printf "%s" "$MACHINE_ID" | sha256sum | awk '{print $1}')"
LOCAL_IP="$(hostname -I 2>/dev/null | awk '{print $1}' || echo '')"

if [ -z "$GATEWAY_UUID" ]; then
  GATEWAY_UUID="manual-${HOST_NAME}-$(printf "%s" "$MACHINE_HASH" | awk '{print substr($1,1,16)}')"
fi

PAYLOAD=$(cat <<JSON
{
  "gateway_uuid": "$GATEWAY_UUID",
  "agent_name": "$AGENT_NAME",
  "agent_version": "m9.5-manual-pairing",
  "host_name": "$HOST_NAME",
  "os_name": "$OS_NAME",
  "machine_hash": "$MACHINE_HASH",
  "local_ip": "$LOCAL_IP",
  "manual_run": 1,
  "admin_approval_required": 1,
  "auto_approval_enabled": 0,
  "service_autostart_enabled": 0,
  "cron_enabled": 0,
  "production_go_live_enabled": 0,
  "real_camera_access_enabled": 0,
  "camera_discovery_enabled": 0,
  "stream_link_enabled": 0,
  "media_enabled": 0,
  "billing_enabled": 0
}
JSON
)

echo "Gateway UUID: $GATEWAY_UUID"
echo "Agent name:   $AGENT_NAME"
echo "Endpoint:     $GUARD_URL/api/gateway/mini-pc/pairing-request"
echo ""

curl -k -sS \
  -H "Content-Type: application/json" \
  -X POST "$GUARD_URL/api/gateway/mini-pc/pairing-request" \
  --data "$PAYLOAD"

echo ""
echo "M9.5 manual pairing request sent."
echo "Status should be pending_admin_approval until M9.6 admin approval."