#!/bin/bash

set -e
set -u

# First, confirm not running inside CCB
if [ -d /ceph/databank/igenomes ] && [[ `hostname` = imm-* ]]; then
  echo "Error: do not run this script inside CCB, instead run from your PC or laptop"
  exit 1
fi

JOB_NAME=rstudio

CONFDIR=$HOME/.ccb-jupyter
CONFFILE=$CONFDIR/config.txt

if [ ! -d $CONFDIR ]; then
  mkdir $CONFDIR
fi

if [ ! -f $CONFFILE ]; then
  echo Configuring first time setup
  read -p "Please enter CCB username: " CCB_USER
  CCB_HOME=/home/${CCB_USER:0:1}/$CCB_USER
  echo CCB_USER=$CCB_USER > $CONFFILE
  echo CCB_HOME=$CCB_HOME >> $CONFFILE
fi

CCB_USER=`grep CCB_USER $CONFFILE | cut -d '=' -f 2`
CCB_HOME=`grep CCB_HOME $CONFFILE | cut -d '=' -f 2`

echo '***********************************'
echo '* Enter your password if prompted *'
echo '***********************************'

# SSH port is your user ID
echo "Querying CCB for your personal SSH port number ..."
TPORT=`ssh $CCB_USER@login1.molbiol.ox.ac.uk "id -u"`

# Analyse Slurm queue to confirm that user has a RStudio job running. Relies
# on looking for job with specific job-name $JOB_NAME.
echo "Querying CCB for your Slurm job running RStudio ..."
HN=`ssh $CCB_USER@login1.molbiol.ox.ac.uk "squeue --me --name=$JOB_NAME --state=R -o '%N' --noheader"`
if [ `echo "$HN" | wc -l` != 1 ] || [ "$HN" = "" ]; then
	echo "Failed to deduce the cluster node where your RStudio is running."
	echo "Ensure job name is \"$JOB_NAME\" exactly, and is running in queue."
	exit 1
fi

echo "****************************************"
echo "*          CCB RStudio tunnel          *"
echo "****************************************"
echo "* Creating SSH tunnel:                 *"
echo "* your PC -> CCB login -> CCB cluster  *"
echo "* After connecting, no more feedback   *"
echo "* is given so assume successful.       *"
echo "* In web browser open:                 *"
echo "*                                      *"
echo "*      +-----------------------+       *"
echo "*      | http://localhost:8888 |       *"
echo "*      +-----------------------+       *"
echo "*                                      *"
echo "****************************************"
ssh -A -t -L 8888:localhost:${TPORT} ${CCB_USER}@login1.molbiol.ox.ac.uk ssh -N -L ${TPORT}:localhost:${TPORT} ${CCB_USER}@${HN}
