#!/usr/bin/env bash

#set -x

GREEN="\\033[1;32m"
DEFAULT="\\033[0;39m"
RED="\\033[1;31m"

function wait_until_redis_is_ready {
    redis_not_ready=true
    while $redis_not_ready; do
        if checking_redis; then
            redis_not_ready=false;
        else
            sleep 1
        fi
    done
    echo -e $GREEN"* Redis 6250 is running"$DEFAULT
}

function checking_redis {
    flag_redis=0
    bash -c 'redis-cli -p 6250 PING | grep "PONG" &> /dev/null'
    if [ ! $? == 0 ]; then
        echo -e $RED"Redis 6250 not ready"$DEFAULT
        flag_redis=1
    fi
    sleep 0.1
    return $flag_redis;
}

# Getting CWD where bash script resides
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DASH_HOME="${DIR}"

cd ${DASH_HOME}

if [ -e "${DIR}/DASHENV/bin/python" ]; then
    echo "dashboard virtualenv seems to exist, good"
    ENV_PY="${DIR}/DASHENV/bin/python"
else
    echo "Please make sure you have a dashboard environment, au revoir"
    exit 1
fi

if [[ -f "/etc/redhat-release" ]]; then
  echo "You are running a RedHat flavour. Detecting scl potential..."
  if [[ -f "/usr/bin/scl" ]]; then
    echo "scl detected, checking for redis-server"
    SCL_REDIS=$(scl -l|grep rh-redis)
    if [[ ! -z $SCL_REDIS ]]; then
      echo "We detected: ${SCL_REDIS} acting accordingly"
      REDIS_RUN="/usr/bin/scl enable ${SCL_REDIS}"
    fi
  else
    echo "redis-server seems not to be install in scl, perhaps system-wide, testing."
    [ ! -f "`which redis-server`" ] && echo "'redis-server' is not installed/not on PATH. Please fix and run again." && exit 1
  fi
else
  [ ! -f "`which redis-server`" ] && echo "'redis-server' is not installed/not on PATH. Please fix and run again." && exit 1
fi

netstat -an |grep LISTEN |grep 6250 |grep -v tcp6 ; check_redis_port=$?
netstat -an |grep LISTEN |grep 8001 |grep -v tcp6 ; check_dashboard_port=$?

# Configure accordingly, remember: 0.0.0.0 exposes to every active IP interface, play safe and bind it to something you trust and know
export FLASK_APP=server.py
export FLASK_DEBUG=0
export FLASK_PORT=8001
export FLASK_HOST=127.0.0.1

conf_dir="config/"

sleep 0.1
if [ "${check_redis_port}" == "1" ]; then
  echo -e $GREEN"\t* Launching Redis servers"$DEFAULT
    if [[ ! -z $REDIS_RUN ]]; then
      $REDIS_RUN "redis-server ${conf_dir}6250.conf" &
    else
      redis-server ${conf_dir}6250.conf &
    fi
else
    echo -e $RED"\t* NOT starting Redis server, made a very unrealiable check on port 6250, and something seems to be there… please double check if this is good!"$DEFAULT
fi

sleep 0.1
wait_until_redis_is_ready;

if [ "${check_dashboard_port}" == "1" ]; then
    echo -e $GREEN"\t* Launching flask server"$DEFAULT
    ${ENV_PY} ./server.py &
else
    echo -e $RED"\t* NOT starting flask server, made a very unrealiable check on port 8001, and something seems to be there… please double check if this is good!"$DEFAULT
fi

ps auxw |grep mispzmq.py        |grep -v grep ; check_zmq_tool=$?

sleep 0.1
if [ "${check_zmq_tool}" == "1" ]; then
    echo -e "MISP zmq tool is not currently running"
    sudo -b su -c "/var/www/MISP/venv/bin/python /var/www/MISP/app/files/scripts/mispzmq/mispzmq.py"
fi
sleep 0.1
${DIR}/start_zmq.sh &
