#!/bin/bash
# vm-setup.sh
#  
# This script installs ONOS dependencies and installs a desktop environment on a Miniet VM.

USER=mininet
USER_HOME=/home/${USER}

sudo apt-get update

# -------------- Bufferbloat Install ----------

cd ~
git clone https://bitbucket.org/huangty/cs144_bufferbloat.git
sudo apt-get -y install screen
sudo apt-get -y install python-matplotlib

# -------------- BGP-attack Install -----------

git clone https://bitbucket.org/jvimal/bgp.git
cd bgp
./install.sh
cd ~

# ------------- DHCP demo Install ------------

git clone https://bitbucket.org/lantz/cs144-dhcp.git

# -------------- Offline content -------------
sudo apt-get install -y python-pip
sudo pip install grip

git clone https://github.com/mininet/mininet.wiki.git
cd mininet.wiki
grip --gfm --export Bufferbloat.md
grip --gfm --export Dhcp-masquerade-attack.md
grip --gfm --export BGP-Path-Hijacking-Attack-Demo.md

# -------------- Setup Desktop ----------------
sudo apt-get install -y xorg lxde

# DHCP dependencies
cd cs144-dhcp
sudo python -c "import dhcp; dhcp.checkRequired()"
cd ~

#TODO: add backgrounds folder
sudo mkdir /usr/share/backgrounds
#TODO: change background
# Remove wallpaper, change background color
sudo sed -i 's/wallpaper_mode=1/wallpaper_mode=0/g' /usr/share/lxde/pcmanfm/LXDE.conf
sudo sed -i 's/desktop_bg=#000000/desktop_bg=#104187/g' /usr/share/lxde/pcmanfm/LXDE.conf

# Automatically start LXDE on login
echo '[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx' >> ~/.bashrc

# Automatically log into the VM
#sudo sed -i 's/exec /sbin/getty -8 38400 tty1//g' /etc/init/tty1.conf
#sudo sed -i '$ d' /etc/init/tty1.conf
#echo 'exec /bin/login -f bob < /dev/tty1 > /dev/tty1 2>&1' | sudo tee -a /etc/init/tty1.conf

# Disable screensaver
sudo sed -i '/screensaver/d' /etc/xdg/lxsession/LXDE/autostart
cat > ${USER_HOME}/.xsessionrc << EOF
# disable screensaver
xset s off
# disable dpms (standby)
xset -dpms
EOF

# Change LXTerminal default colors
#sudo sed -i 's/bgcolor=#000000000000/bgcolor=#ffffffffffff/g' ${USER_HOME}/.config/lxterminal/lxterminal.conf
#sudo sed -i 's/fgcolor=#aaaaaaaaaaaa/fgcolor=#000000000000/g' ${USER_HOME}/.config/lxterminal/lxterminal.conf
sudo sed -i 's/bgcolor=#000000000000/bgcolor=#ffffffffffff/g' /usr/share/lxterminal/lxterminal.conf
sudo sed -i 's/fgcolor=#aaaaaaaaaaaa/fgcolor=#000000000000/g' /usr/share/lxterminal/lxterminal.conf

DESKTOP=${USER_HOME}/Desktop
OFFLINE="${DESKTOP}/Offline Exercises"

mkdir -p ${DESKTOP}
mkdir -p "${OFFLINE}"

cat > ${DESKTOP}/Terminal << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Terminal
Name[en_US]=Terminal
Icon=konsole
Exec=/usr/bin/x-terminal-emulator
Comment[en_US]=
EOF

cat > ${DESKTOP}/Mininet << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Teaching with Mininet
Name[en_US]=Teaching with Mininet
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser http://teaching.mininet.org
Comment[en_US]=
EOF

cat > ${DESKTOP}/Wireshark << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Wireshark
Name[en_US]=Wireshark
Icon=wireshark
Exec=/usr/bin/wireshark
Comment[en_US]=
EOF

cat > "${OFFLINE}/Bufferbloat" << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Bufferbloat
Name[en_US]=Bufferbloat
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser file:///home/mininet/mininet.wiki/Bufferbloat.html
Comment[en_US]=
EOF

cat > "${OFFLINE}/DHCP Attack" << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=DHCP Attack
Name[en_US]=DHCP Attack
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser file:///home/mininet/mininet.wiki/Dhcp-masquerade-attack.html
Comment[en_US]=
EOF

cat > "${OFFLINE}/BGP Hijacking" << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=BGP Hijacking
Name[en_US]=BGP Hijacking
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser file:///home/mininet/mininet.wiki/BGP-Path-Hijacking-Attack-Demo.html
Comment[en_US]=
EOF

# ------------- Install Other Tools ------------- 
sudo apt-get install -y wireshark
# Enable root-less wireshark and add mininet
echo "Enabling wireshark group"
echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections 
sudo dpkg-reconfigure -f noninteractive wireshark-common
sudo usermod -a -G wireshark mininet

echo "Installing VirtualBox Guest Additions"
sudo apt-get install -y virtualbox-guest-x11

# ------------- Zero Unused Blocks -------------
#TODO investigate zerofree
echo "Zeroing unused blocks"
sync
dd if=/dev/zero of=tmp-zeros
sync
rm tmp-zeros
sync
