#!/bin/bash

declare -A lab_ids=(
  [luis.bellido]=4
  [david.fernandez]=5
  [aa.hajar]=6
  [luken.alvarez]=7
  [a.balseiro]=8
  [m.hjimenez]=9
  [alexis.pena.campos]=10
  [belen.stenias]=11
  [ivan.trejo]=12
  [h.zafra]=13
)

if [ $# -eq 0 ]; then
  echo "No arguments provided. Exiting..."
  exit 1
fi

uLogin="$1"

if [[ ! -v lab_ids[$uLogin] ]]; then
  echo "No assigned lab found for '$uLogin'. Exiting..."
  exit 1
fi

lab_id=${lab_ids[$uLogin]}

echo "Lab found for '$uLogin': $lab_id"

echo "--"
echo "-- Installing IP network lab..."
echo "--"
START_TIME=$SECONDS

export DEBIAN_FRONTEND=noninteractive
echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections

sudo apt-get update
sudo apt-get -y install \
  bash-completion bridge-utils curl eog expect genisoimage gnome-terminal \
  graphviz libappconfig-perl libdbi-perl liberror-perl libexception-class-perl \
  libfile-homedir-perl libio-pty-perl libmath-round-perl libnetaddr-ip-perl \
  libnet-ip-perl libnet-ipv6addr-perl libnet-pcap-perl libnet-telnet-perl \
  libreadonly-perl libswitch-perl libsys-virt-perl libterm-readline-perl-perl \
  libxml-checker-perl libxml-dom-perl libxml-libxml-perl \
  libxml-parser-perl libxml-tidy-perl lxc lxc-templates net-tools \
  openvswitch-switch picocom pv screen tree uml-utilities \
  vlan w3m wmctrl xdotool xfce4-terminal xterm lsof \
  wireshark yad

mkdir /tmp/vnx-update
cd /tmp/vnx-update
rm -rf /tmp/vnx-update/vnx-*
wget --no-check-certificate http://vnx.dit.upm.es/vnx/vnx-latest.tgz
tar xfvz vnx-latest.tgz
cd vnx-*-*
sudo ./install_vnx

cd /usr/share/vnx/filesystems/
sudo vnx_download_rootfs -r vnx_rootfs_lxc_ubuntu64-20.04-v025-vnxlab.tgz -l -y
sudo ln -s /usr/share/vnx/filesystems/vnx_rootfs_lxc_ubuntu64-20.04-v025-vnxlab /usr/share/vnx/filesystems/rootfs_lxc64-rdor

sudo mv /usr/share/vnx/etc/vnx.conf.sample /etc/vnx.conf
sudo sed -i 's/lxc_console_cmd=lxc-console/lxc_console_cmd=lxc-attach/' /etc/vnx.conf

echo "export XAUTHORITY=/home/upm/.Xauthority" >> ~/.bashrc
xhost +SI:localuser:root

cd $HOME/Escritorio/
wget --no-check-certificate https://idefix.dit.upm.es/download/rdor/ip/rdor-t1-$lab_id.tar
tar xvf rdor-t1-$lab_id.tar --warning=no-unknown-keyword
cd rdor-t1-$lab_id
./install-t1
sed -i 's/^Icon=.*/Icon=notification-audio-play/' Arrancar-T1.desktop
sed -i 's/^Icon=.*/Icon=notification-audio-stop/' Parar-T1.desktop
cd ..
rm -f rdor-t1-$lab_id.tar

cd rdor-te2-caso-estudio
./install
sed -i 's/^Icon=.*/Icon=notification-audio-play/' Arrancar.desktop
sed -i 's/^Icon=.*/Icon=notification-audio-stop/' Parar.desktop
sed -i 's/^Icon=.*/Icon=notification-network-wireless-full/' Configurar_rutas.desktop
sed -i 's/^Icon=.*/Icon=notification-network-wireless-none/' Borrar_rutas.desktop
cd ..
rm -f rdor-te2-caso-estudio.tgz

sudo bash -c "echo 8192 > /proc/sys/fs/inotify/max_user_instances"
sudo bash -c "echo 524288 > /proc/sys/fs/inotify/max_user_watches"

yes | pip install netaddr
sudo wget --no-check-certificate https://idefix.dit.upm.es/download/rdor/.ipprefix/ipprefix-divide -O /usr/local/bin/ipprefix-divide
sudo wget --no-check-certificate https://idefix.dit.upm.es/download/rdor/.ipprefix/ipprefix-aggregate -O /usr/local/bin/ipprefix-aggregate
sudo wget --no-check-certificate https://idefix.dit.upm.es/download/rdor/.ipprefix/ipprefix-get-free -O /usr/local/bin/ipprefix-get-free
sudo chmod +x /usr/local/bin/ipprefix-*

wget --no-check-certificate https://idefix.dit.upm.es/download/rdor/caso-estudio-ip.tgz
tar xfvz caso-estudio-ip.tgz

# Create virbr0 bridge connected to lxcbr0
sudo brctl addbr virbr0
sudo ip link add dev lxcbrif type veth peer name virbrif
sudo brctl addif lxcbr0 lxcbrif
sudo brctl addif virbr0 virbrif
sudo ip link set dev lxcbrif up
sudo ip link set dev virbrif up
sudo ip link set dev virbr0 up
sudo ip link set dev lxcbr0 up

ELAPSED_TIME=$(($SECONDS - $START_TIME))
echo "--"
echo "-- LAB installed in $ELAPSED_TIME sec. Close the terminal and open it again."
echo "--"
