@echo off
setlocal EnableDelayedExpansion

@set JOB_NAME=rstudio

if not exist %LOCALAPPDATA%\ccb-jupyter (
  mkdir %LOCALAPPDATA%\ccb-jupyter
)

if not exist %LOCALAPPDATA%\ccb-jupyter\config.txt (
  echo Configuring first time setup
  set /p CCB_USER="Please enter CCB username: "
  echo CCB_USER=!CCB_USER!> %LOCALAPPDATA%\ccb-jupyter\config.txt
  echo CCB_HOME=/home/!CCB_USER:~0,1!/!CCB_USER!>> %LOCALAPPDATA%\ccb-jupyter\config.txt
)

for /f "delims== tokens=1,2" %%G in (%LOCALAPPDATA%\ccb-jupyter\config.txt) do set %%G=%%H

echo ***********************************
echo * Enter your password if prompted *
echo ***********************************

:: SSH port is your user ID
echo Querying CCB for your personal SSH port number ...
for /f "delims=" %%a in ('ssh %CCB_USER%@login1.molbiol.ox.ac.uk "id -u"') do set "TPORT=%%a"

:: Analyse Slurm queue to confirm that user has a RStudio job running. Relies
:: on looking for job with specific job-name %JOB_NAME%.
set "HN="
echo Querying CCB for your Slurm job running RStudio ...
for /f "delims=" %%a in ('ssh %CCB_USER%@login1.molbiol.ox.ac.uk "squeue --me --name=%JOB_NAME% --state=R -o '%%N' --noheader"') do set "HN=%%a

if "!HN!"=="" (
    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 /b 1
)

:: Check login port is free
for /f "delims=" %%a in ('ssh %CCB_USER%@login1.molbiol.ox.ac.uk "lsof -t -i :%TPORT%"') do set "port_pids=%%a"
if not "%port_pids%"=="" (
  @echo off
  set /p reesp=You already have processes running in CCB login node occupying your personal port number. Kill them? [Y/n] 
  if /i not "!reesp!"=="Y" if /i not "!reesp!"=="y" (
    echo Not killing so cannot connect
    exit /b 0
  )
  for %%i in (%port_pids%) do (
    ssh %CCB_USER%@login1.molbiol.ox.ac.uk "kill %%i"
  )
)


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 -t -L 8888:localhost:%TPORT% %CCB_USER%@login1.molbiol.ox.ac.uk ssh -N -L %TPORT%:localhost:%TPORT% %CCB_USER%@%HN%

endlocal
