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

ONOS_USER=mininet
ONOS_USER_HOME=/home/${ONOS_USER}

ECLIPSE_URL=http://ftp.osuosl.org/pub/eclipse/technology/epp/downloads/release/luna/R/eclipse-java-luna-R-linux-gtk-x86_64.tar.gz

sudo apt-get update

# ------------- Install ONOS Dependencies -------------
sudo apt-get install -y openjdk-7-jdk
sudo apt-get install -y maven

# Not needed: Adding JAVA_HOME and adding java/bin to PATH
#cat << EOF >> $ONOS_USER_HOME/.profile
#JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
#PATH=\$PATH:\$JAVA_HOME/bin
#EOF

# Install Zookeeper
wget http://apache.osuosl.org/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar xvzf zookeeper-3.4.6.tar.gz

# CLI dependencies
sudo apt-get install -y python-flask python-cmd2 python-pyparsing

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

#TODO: add backgrounds folder
#TODO: change background
# Remove wallpaper, change background color, and disable screensaver
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
sudo sed -i '/screensaver/d' /etc/xdg/lxsession/LXDE/autostart

DESKTOP=${ONOS_USER_HOME}/Desktop

mkdir -p ${DESKTOP}

cat > ${DESKTOP}/Eclipse << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Eclipse
Name[en_US]=Eclipse
Icon=/opt/eclipse/icon.xpm
Exec=/usr/bin/eclipse
Comment[en_US]=
EOF

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}/Gerrit << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=ONOS Gerrit
Name[en_US]=ONOS Gerrit
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser http://gerrit.onos.onlab.us
Comment[en_US]=
EOF

cat > ${DESKTOP}/Docs << EOF
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=ONOS Docs
Name[en_US]=ONOS Docs
Icon=internet-web-browser
Exec=/usr/bin/chromium-browser http://docs.onos.onlab.us
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

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

sudo apt-get install -y git-review

wget -c -N -O /tmp/eclipse.tar.gz ${ECLIPSE_URL}
tar xzf /tmp/eclipse.tar.gz
sudo mv eclipse /opt
sudo ln -s /opt/eclipse/eclipse /usr/bin/eclipse

# ------------ Change username and hostname ---------------
echo 'mininet:onos' | sudo chpasswd
sudo mv /home/mininet /home/onos
sudo sed -i 's/mininet/onos/g' /etc/group /etc/gshadow /etc/hosts /etc/hostname /etc/passwd /etc/shadow /etc/sudoers

