#!/usr/bin/env bash
set -euo pipefail

# --- Parameters ---
TOKEN=${1:-}
ENVIRONMENT=${2:-sandbox}

if [ -z "$TOKEN" ]; then
  echo "Usage: $0 <TOKEN> [ENVIRONMENT]"
  exit 1
fi

read -p "What do you want to use as your machine name (used to identify your agent in the console)? " HOSTNAME
sudo hostnamectl set-hostname $HOSTNAME
echo "Hostname is updated"

echo "[INFO] Using TOKEN: $TOKEN"
echo "[INFO] Using ENVIRONMENT: $ENVIRONMENT"

# --- Install Docker ---
echo "[INFO] Installing Docker..."
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings
if [ ! -f /etc/apt/keyrings/docker.gpg ]; then
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
fi

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# --- Run TCP Echo Server ---
echo "[INFO] Running TCP echo server on port 9000..."
sudo docker run -d --name tcp-echo -p 9000:9000 venilnoronha/tcp-echo-server:latest

# --- Install Frontdoor Agent ---
echo "[INFO] Installing Frontdoor Agent..."
curl -s https://get.netfoundry.io/linux-install.bash | sudo bash -s frontdoor-agent

# --- Enroll Frontdoor Agent ---
echo "[INFO] Enrolling Frontdoor Agent..."
sudo -u frontdoor-agent frontdoor-agent enroll "$TOKEN" \
  --enrollment-gateway "https://gateway.${ENVIRONMENT}.netfoundry.io"

# --- Enable Frontdoor Agent Service ---
echo "[INFO] Enabling and starting frontdoor-agent.service..."
sudo systemctl enable --now frontdoor-agent.service

echo "[SUCCESS] Setup complete."
