#!/bin/bash

set -ue

REINSTALL=0
PACKAGES=1

while getopts -- "-:" a ; do
  case "${a}" in
    -)
    case "${OPTARG}" in
      reinstall)
        REINSTALL=1
        ;;
      no-packages)
        PACKAGES=0
        ;;
      *)
        echo "Unknown long option ${OPTARG}" >/dev/stderr
        exit 1
        ;;
    esac
  esac
done

shift $(($OPTIND-1))

if [ $# -ne 1 ] ; then
  echo "Usage: ${0} <tool>" >/dev/stderr
  exit 1
fi
TOOL=${1}

function install_pkgs {
  if [ ${PACKAGES} -eq 0 ] ; then
    return 0
  fi
  if [ `id -u` -ne "0" ] ; then
    sudo apt-get -y install $* || (
      echo -n "Unable to install packages, please ensure these " >/dev/stderr
      echo "are installed, then run with --no-packages." >/dev/stderr
      echo $*
      false )
    return 0
  fi
  apt-get -y install $*
}

DESTDIR="${HOME}/tools/${TOOL}"

if [ -d ${DESTDIR} ] ; then
  if [ ${REINSTALL} -eq 1 ] ; then
    rm -ri ${DESTDIR}
  else
    echo "${DESTDIR} exists but not reinstalling." >/dev/stderr
    exit 1
  fi
fi

case ${TOOL} in
  john)
    install_pkgs libssl-dev git build-essential yasm libgmp-dev libpcap-dev \
      pkg-config libbz2-dev libopenmpi-dev openmpi-bin libnss3-dev \
      libkrb5-dev libgmp-dev
    jtemp=`mktemp -d`
    git clone https://github.com/magnumripper/JohnTheRipper.git ${jtemp}/john
    cd ${jtemp}/john/src
    ./configure && make -sj2
    mkdir -p ${DESTDIR}
    cp -r ${jtemp}/john/run/* ${DESTDIR}
    rm -rf ${jtemp}
    # Persistent files
    mkdir -p ${HOME}/.john
    touch ${HOME}/.john/john.pot
    ln -sf ${HOME}/.john/* ${DESTDIR}
    ;;
  wordlists)
    mkdir -p ${DESTDIR}
    wget -q -O ${DESTDIR}/rockyou.txt.bz2 \
      http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2
    bunzip2 ${DESTDIR}/rockyou.txt.bz2
    wget -q -O ${DESTDIR}/phpbb.txt.bz2 \
      http://downloads.skullsecurity.org/passwords/phpbb.txt.bz2
    bunzip2 ${DESTDIR}/phpbb.txt.bz2
    wget -q -O ${DESTDIR}/hak5.txt.bz2 \
      http://downloads.skullsecurity.org/passwords/hak5.txt.bz2
    bunzip2 ${DESTDIR}/hak5.txt.bz2
    ;;
  gcloud)
    gtemp=`mktemp -d`
    gbase="https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/"
    gsdk="google-cloud-sdk-142.0.0-linux-x86_64.tar.gz"
    wget -q -O /tmp/gcloud.tar.gz \
      "${gbase}${gsdk}"
    tar zxf /tmp/gcloud.tar.gz --strip-components=1 -C ${DESTDIR}
    ;;
  *)
    echo "Unknown tool: ${TOOL}" >/dev/stderr
    exit 1
    ;;
esac
