#!/bin/bash
set -e

source ${SCRIPT_DIR}/logging
source ${SCRIPT_DIR}/kasm_api

kasm_id=$1
container_name=$2
container_ns_id=$3
container_pid=$4
script_data=$5
notification_pipe=$6

notify_failure() {
  set +e
  local title="VPN Connection Failed"
  local message="VPN Configuration Failed. An error has occurred starting the VPN."
  set_container_status "starting" "0" "ERROR: $message"
  nsenter --mount=/proc/$container_pid/ns/mnt --net=/proc/$container_pid/ns/net -- sh -c "echo 'error' > /dockerstartup/.egress_status"
  show_container_notification "error" "$title" "$message"
  set -e
}

if [ -z "$kasm_id" ] ||  [ -z "$container_name" ] || [ -z "$container_ns_id" ] || [ -z "$container_pid" ] || [ -z "$script_data" ]; then
  error "Missing parameters. Got $@. Exiting."
  exit 1
fi

trap notify_failure ERR

set_container_status "starting" "0" "Executing custom network configuration script..."
show_container_notification "info" "Network configuration" "Running custom network configuration script."

script_content=$(echo $script_data | base64 -d | jq -r '.script')
nsenter --mount=/proc/$container_pid/ns/mnt --net=/proc/$container_pid/ns/net -- sh -c "$script_content"
nsenter --mount=/proc/$container_pid/ns/mnt --net=/proc/$container_pid/ns/net -- sh -c "echo 'ready' > /dockerstartup/.egress_status"

set_container_status "running" "0" "Custom network configuration script executed successfully."
show_container_notification "info" "Network configuration" "Custom network configuration script finished successfully."