#!/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
cd cs144-dhcp
# TODO fix this
#sudo ./dhcp.py --check-required
cd ~

# -------------- 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

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

#TODO: add backgrounds folder
#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

# 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

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

# ------------- 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
