#!/bin/bash
#Install and setup files for VNC

#Set this so that \n in echo strings are parsed correctly.
shopt -s xpg_echo

REDHAT_RELEASE="/etc/redhat-release"
AMAZON_RELEASE="/etc/system-release"

defaultXstartup=$HOME/.vnc/xstartup

#Check for UBUNTU 
UNIX_TYPE=`lsb_release -d 2>/dev/null | awk -F"\t" '{print $2}' | awk -F " " '{print $1}' 2>/dev/null`
#Check for Red Hat type
if [ -f $REDHAT_RELEASE ] 
 then
    grep "Red Hat Enterprise Linux release 8" $REDHAT_RELEASE
    if [ "$?" == "0" ] 
    then 
        UNIX_TYPE="RHEL 8"
    fi
    grep "Red Hat Enterprise Linux Server release 7" $REDHAT_RELEASE
    if [ "$?" == "0" ] 
    then 
        UNIX_TYPE="RHEL 7"
    fi
fi
if [ -f $AMAZON_RELEASE ]
 then
    grep "Amazon Linux release 2" $AMAZON_RELEASE
    if [ "$?" == "0" ] 
    then 
        UNIX_TYPE="Amazon Linux 2"
    fi
fi
echo "Setup for UNIX type: $UNIX_TYPE"

#The VNC Startup file
VNCSERVER="/usr/bin/vncserver"
BACKUP_VNCSERVER="/tmp/vncserver"

#The four files that end up created on the system
PUBLICIP_SCRIPT=mypublicip
VNCSTART=myvncstart
VNCEND=myvncend
VNCINIT=myvncinit

PUBLICIP=`curl http://checkip.amazonaws.com 2>/dev/null`
PUBLICIP_TEXT="PUBLICIP=\`curl http://checkip.amazonaws.com 2>/dev/null\`\necho \"Public IP address=\$PUBLICIP\"\necho \"For VNC use: \$PUBLICIP:1\""  

REDHAT_REPO8="https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm"
REDHAT_REPO7="https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm"
REDHAT_UPDATE="sudo yum -y update"
REDHAT_INSTALL="sudo yum install -y"
REDHAT_PACKAGES1="tigervnc-server tigervnc xterm gnome-calculator dconf-editor gvim vim metacity nautilus"
REDHAT_PACKAGES2="exo libwnck3 xfce-polkit xfce4-session xfce4-terminal xfce4-settings xfwm4 xfdesktop xfce4-screenshooter xfce4-notifyd ristretto mousepad desktop-backgrounds desktop-backgrounds-gnome orage links xfce4-*-plugin xfce4-appfinder geany xfce4-dict"

UBUNTU_UPDATE="sudo apt-get update"
UBUNTU_INSTALL="sudo apt-get -y install"
UBUNTU_PACKAGES1="xfce4 xfce4-goodies tightvncserver"
UBUNTU_PACKAGES2="gnome-icon-theme tango-icon-theme links2 geany autocutsel" 

if [ "$UNIX_TYPE" == "Ubuntu" ]
then
  $UBUNTU_UPDATE
    #$UBUNTU_INSTALL debconf-utils
    #sudo echo "gdm3    shared/default-x-display-manager select gdm3" | debconf-set-selections
    #sudo echo "lightdm shared/default-x-display-manager select gdm3" | debconf-set-selections
  $UBUNTU_INSTALL $UBUNTU_PACKAGES1
  $UBUNTU_INSTALL $UBUNTU_PACKAGES2
else
  #Not Ubuntu - so RedHat or Amazon Linux
  if [ "$UNIX_TYPE" == "RHEL 8" ]
  then
    $REDHAT_INSTALL $REDHAT_REPO8
  elif [ "$UNIX_TYPE" == "RHEL 7" ] || [ "$UNIX_TYPE" == "Amazon Linux 2" ]
  then
    $REDHAT_INSTALL $REDHAT_REPO7
  else
    echo "Red Hat Type not provided."
  fi
  $REDHAT_UPDATE
  $REDHAT_INSTALL $REDHAT_PACKAGES1
  $REDHAT_INSTALL $REDHAT_PACKAGES2
  
  #Need to add XFCE to startup in xstartup or there will be no fun.
  #HOME="/home/ec2-user"

  #echo xstartup=$defaultXstartup
  #if [ ! -f $defaultXstartup ]
  #then
  #  mkdir -p $HOME/.vnc
  #  chmod 755 $HOME/.vnc
  #  echo "#!/bin/sh\nunset SESSION_MANAGER\nunset DBUS_SESSION_BUS_ADDRESS\n/etc/X11/xinit/xinitrc\nstartxfce4\n" > $defaultXstartup
  #  chmod +x $defaultXstartup
  #  chown -R ec2-user:ec2-user $HOME/.vnc 
  #fi
    
  #Install the Netsurf GTK Webbrowser
  wget http://www.nosuchhost.net/~cheese/fedora/packages/epel-7/x86_64/netsurf-3.10-1.el7.x86_64.rpm
  sudo rpm -i netsurf*.rpm
fi

##############################################################################
#Let's create a script, mypublicip to display the external IP address
sudo echo -e "#!/bin/bash" > $PUBLICIP_SCRIPT
sudo echo -e $PUBLICIP_TEXT >> $PUBLICIP_SCRIPT
sudo chmod +x $PUBLICIP_SCRIPT

#Create myvncstart script to start the vncserver on display :1
sudo echo -e "#!/bin/bash" > $VNCSTART
sudo echo -e "vncserver -geometry 1920x1080 :1" >> $VNCSTART
sudo echo -e $PUBLICIP_TEXT >> $VNCSTART
sudo chmod +x $VNCSTART

#Create myvncend script to stop the vncserver on display :1
sudo echo -e "#!/bin/bash" > $VNCEND
sudo echo -e "vncserver -kill :1" >> $VNCEND
sudo chmod +x $VNCEND

#Create myvncinit script to setup variables
sudo echo -e "#!/bin/bash" > $VNCINIT
sudo echo -e "rm -rf \$HOME/.vnc" >> $VNCINIT
sudo echo -e "vncserver -geometry 1920x1080 :1" >> $VNCINIT
sudo echo -e "sleep 2" >> $VNCINIT
sudo echo -e "cp \$HOME/.vnc/xstartup \$HOME/.vnc/xstartup.bak" >> $VNCINIT
sudo echo -e "sed 's/export XKL_XMODMAP_DISABLE/#&/' \$HOME/.vnc/xstartup.bak > \$HOME/.vnc/xstartup" >> $VNCINIT
sudo echo -e "grep -q \"startxfce4\" \$HOME/.vnc/xstartup 2>/dev/null" >> $VNCINIT
sudo echo -e "if [ "\$?" == 1 ]" >> $VNCINIT
sudo echo -e "  then " >> $VNCINIT
sudo echo -e "  echo \"startxfce4 &\" >> \$HOME/.vnc/xstartup 2>/dev/null" >> $VNCINIT
sudo echo -e "fi" >> $VNCINIT
sudo echo -e "vncserver -kill :1" >> $VNCINIT
sudo echo -e "echo \"Now run myvncstart to start the VNC server.\"" >> $VNCINIT
sudo chmod +x $VNCINIT

echo "VNC Install Finished."
echo "Copying the four files to location in the path, and run $VNCINIT to setup the password:"
echo "Suggested: /usr/local/bin"
echo "   $PUBLICIP_SCRIPT, $VNCSTART, $VNCEND, $VNCINIT"
sudo cp $PUBLICIP_SCRIPT /usr/local/bin
sudo cp $VNCSTART /usr/local/bin
sudo cp $VNCEND /usr/local/bin
sudo cp $VNCINIT /usr/local/bin
