#!/bin/bash
#
# Quick Install file, creates core installer
# 1) Ask user for all install details
# 2) Install SSH certificate for github
# 3) Clone kiosk.local github repo
# 4) Execute install scripts
#
# How to run:
#     sudo sh kiosk-install.sh
#   rm install; wget http://install.upstrem.com/kiosk && bash install 
# final form:
#   bash -c "$(GET install.upstrem.com)"
#

# Colors for Pretty output
  export FIRST_RUN=true
  green='\033[0;32m'
  red='\033[0;31m'
  yellow='\033[0;33m'
  clear='\033[0m'
  tagSuccess='[\033[0;32msuccess\033[0m] '
  tagError='[\033[0;31merror\033[0m] '
  tagMenu='[\033[0;34mmenu\033[0m] '

# ask some default questions
  read -t 5 -s -p "Enter the sudo password [if blank, use default]: " sudopass; sudopass=${sudopass:-GreatScott!11}; echo "";
  echo "${sudopass}" | sudo -S echo "  Authorizing sudo..."


  read -t 5 -p "Enter the kiosk base install path [/var/www/kiosk.local]: " kioskBasePath; kioskBasePath=${kioskBasePath:-/var/www/kiosk.local}
  if [ -f $kioskBasePath/kiosk.version.id  ]; then
    kioskVersion=$( head -n 1 ${kioskBasePath}/kiosk.version.id )
    echo -e "${tagError}\n${tagError}\n${tagError}Upstrem Kiosk ${kioskVersion} is already installed\n${tagError}\n${tagError}"
    read -t 5 -p "-> Do you want to reinstall entire kiosk package? [yes] " answer; answer=${answer:-y}
    if [ "$answer" == 'n' ]; then
      echo "K Thx Bye. Kiosk Installation Cancelled."
      exit
    else 
      echo "${sudopass}" | sudo -S rm -r ${kioskBasePath} 
      fi
  fi
  read -t 5 -p "Enter the kiosk user [upkiosk]: " kioskUser; kioskUser=${kioskUser:-upkiosk}
  read -t 5 -p "Enter the base hostname [kiosk]: " kioskBaseName; kioskBaseName=${kioskBaseName:-kiosk}
  read -t 5 -p "Enter the kiosk home url [https://kiosk.upstrem.com/]: " kioskMainURL; kioskMainURL=${kioskMainURL:-https://kiosk.upstrem.com/}
  read -t 15 -p "Enter the wifi SSID [upstrem]: " wifissid; wifissid=${wifissid:-upstrem}
  read -t 15 -p "Enter the wifi Password [upstrem!1]: " wifipass; wifipass=${wifipass:-upstrem!1}


# install ssh
  echo "${sudopass}" | sudo -S /usr/bin/apt install ssh
  echo "${sudopass}" | sudo -S /bin/mkdir /home/$kioskUser/.ssh > /dev/null
  echo "${sudopass}" | sudo -S /bin/chown ${kioskUser}:${kioskUser} ~/.ssh 

# setup ssh keys for github
  echo "${sudopass}" | sudo -S /bin/echo "-----BEGIN OPENSSH PRIVATE KEY-----" > /home/${kioskUser}/.ssh/id_ed25519
  echo "${sudopass}" | sudo -S /bin/echo "b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW" >> /home/${kioskUser}/.ssh/id_ed25519
  echo "${sudopass}" | sudo -S /bin/echo "QyNTUxOQAAACCBygKQwq5CvxKLBfSv/eXNymStGcMTMCRaKK/lnnUc+gAAAJBhUcu2YVHL" >> /home/${kioskUser}/.ssh/id_ed25519
  echo "${sudopass}" | sudo -S /bin/echo "tgAAAAtzc2gtZWQyNTUxOQAAACCBygKQwq5CvxKLBfSv/eXNymStGcMTMCRaKK/lnnUc+g" >> /home/${kioskUser}/.ssh/id_ed25519
  echo "${sudopass}" | sudo -S /bin/echo "AAAED5YrPDBxxwMgJyrxT3muvqYlZX6Vsf664Zz+AwPZ/rQoHKApDCrkK/EosF9K/95c3K" >> /home/${kioskUser}/.ssh/id_ed25519
  echo "${sudopass}" | sudo -S /bin/echo "ZK0ZwxMwJFoor+WedRz6AAAADUtleSBmb3IgS2lvc2s=" >> /home/${kioskUser}/.ssh/id_ed25519
  echo "${sudopass}" | sudo -S /bin/echo "-----END OPENSSH PRIVATE KEY-----" >> /home/${kioskUser}/.ssh/id_ed25519
  echo "${sudopass}" | sudo -S /bin/chmod 700 /home/${kioskUser}/.ssh
  echo "${sudopass}" | sudo -S /bin/chmod 600 /home/${kioskUser}/.ssh/*
  echo "${sudopass}" | sudo -S /bin/chmod 644 /home/${kioskUser}/.ssh/*.pub

     # Load new keys into ring
     eval "$(ssh-agent)"
     ssh-add -k

# add github as an approved source
  echo "${sudopass}" | sudo -S -u ${kioskUser} ssh-keygen -R github.com
  echo "${sudopass}" | sudo -S -u ${kioskUser} ssh-keyscan github.com >> $HOME/.ssh/known_hosts

# setup main directories
  echo "${sudopass}" | sudo -S /bin/mkdir /var/www > /dev/null
  echo "${sudopass}" | sudo -S /bin/chown -R ${kioskUser} /var/www/ 2> /dev/null
  echo "${sudopass}" | sudo -S /bin/chgrp -R ${kioskUser} /var/www/ 2> /dev/null

# get kiosk code
  cd /var/www
  rm -r ./kiosk.local
  git clone git@github.com:modmerica/kiosk.local

# update owners, groups, and permissions
  echo "${sudopass}" | sudo -S /bin/chown -R ${kioskUser} /var/www/ 2> /dev/null
  echo "${sudopass}" | sudo -S /bin/chgrp -R ${kioskUser} /var/www/ 2> /dev/null

# save details if they were passed in
  # .env
  echo "${sudopass}" | sudo -S /bin/mkdir -p ${kioskBasePath}
  echo "${sudopass}" | sudo -S /bin/mkdir -p ${kioskBasePath}/env
  echo "${sudopass}" | sudo -S /bin/echo "sudopass=${sudopass}" >  ${kioskBasePath}/env/.env
  echo "${sudopass}" | sudo -S /bin/echo "wifissid=${wifissid}" >> ${kioskBasePath}/env/.env
  echo "${sudopass}" | sudo -S /bin/echo "wifipass=${wifipass}" >> ${kioskBasePath}/env/.env

  # .settings.env
  echo "${sudopass}" | sudo -S /bin/echo "" >> ${kioskBasePath}/env/.settings.env
  echo "${sudopass}" | sudo -S /bin/echo "sudopass=${sudopass}" >> ${kioskBasePath}/env/.settings.env
  echo "${sudopass}" | sudo -S /bin/echo "kioskUser=${kioskUser}" >> ${kioskBasePath}/env/.settings.env
  echo "${sudopass}" | sudo -S /bin/echo "kioskBaseName=${kioskBaseName}" >> ${kioskBasePath}/env/.settings.env
  echo "${sudopass}" | sudo -S /bin/echo "kioskMainURL=${kioskMainURL}" >> ${kioskBasePath}/env/.settings.env
  echo "${sudopass}" | sudo -S /bin/echo "wifissid=${wifissid}" >> ${kioskBasePath}/env/.settings.env
  echo "${sudopass}" | sudo -S /bin/echo "wifipass=${wifipass}" >> ${kioskBasePath}/env/.settings.env

# now that all install files have been feteched
#  run the main kiosk install and configuration script
  cd ${kioskBasePath} 
  . ${kioskBasePath}/kiosk.sh

  # fetch latest version installed
  kioskVersion=$( head -n 1 ${kioskBasePath}/kiosk.version.id )

# remove the auto installer crontab
  echo "$sudopass" | sudo -S /bin/rm /etc/cron.d/kiosktab 2> /dev/null
  echo "$sudopass" | sudo -S /bin/rm /var/spool/cron/kiosktab 2> /dev/null

# kill any browser windows to make sure system restarts,
# also clear any kiosk wait files
  echo "${sudopass}" | sudo -S /bin/rm ~/.kiosk.wait 2> /dev/null
  #echo "${sudopass}" | sudo -S killall chromium-browser  2> /dev/null
  
# Check if script was executed with $1 = no-reboot or ?q=no-reboot
  #if [ "$noReboot" != 1 ]; then
    echo ""
    echo -e "${green}[ rebooting ] Upstrem Kiosk ${kioskVersion} Installation Complete ${clear}"
    echo ""
    echo -n "${green}[ rebooting ]${clear} in 3..."
    sleep 1
    echo -n "2..."
    sleep 1
    echo -n "1..."
    echo "${sudopass}" | sudo -S /sbin/reboot now
  #fi