#!/bin/bash

update_system() {
    echo "Updating system and installing mandatory tools"
    apt-get update
    apt-get install sudo nmon tmux restic tcpdump nano iputils-ping net-tools -y
}

install_docker() {
    echo "Installing Docker"
    apt-get install ca-certificates curl gnupg lsb-release -y
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
    apt-get update
    apt-get install docker-ce docker-ce-cli containerd.io -y
    systemctl start docker
    echo "Docker installation completed"
}

install_caddy() {
    echo "Installing Caddy"
    apt install -y debian-keyring debian-archive-keyring apt-transport-https
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
    curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
    apt-get update
    apt-get install caddy -y
    echo "Caddy installation completed."
}

setup_tf_users() {
    echo "Setting up TFUsers"
    wget https://docs.grid.tf/threefold_public/public/raw/branch/master/add-tf-users.sh
    sh add-tf-users.sh
    rm add-tf-users.sh
}

configure_ssh() {
    echo "Configuring SSH"
    wget https://docs.grid.tf/threefold_public/public/raw/branch/master/sshd_config
    mv sshd_config /etc/ssh/
    systemctl restart ssh
}

update_system
setup_tf_users
configure_ssh

while getopts ":dc" opt; do
  case ${opt} in
    d )
      install_docker
      ;;
    c )
      install_caddy
      ;;
    \? )
      echo "Invalid option: $OPTARG" 1>&2
      ;;
  esac
done
shift $((OPTIND -1))

echo "Preping VM Completed."