#!/bin/bash

##############################################################################
# Migration sequence
# Detect if there is a mounted volume on /wazuh-migration and copy the data
# to /var/wazuh-manager, finally it will create a flag ".migration-completed" inside
# the mounted volume
##############################################################################

function __colortext()
{
  echo -e " \e[1;$2m$1\e[0m"
}

function echogreen()
{
  echo $(__colortext "$1" "32")
}

function echoyellow()
{
  echo $(__colortext "$1" "33")
}

function echored()
{
  echo $(__colortext "$1" "31")
}

function_wazuh_migration(){
  if [ -d "/wazuh-migration" ]; then
    if [ ! -e /wazuh-migration/.migration-completed ]; then
      if [ ! -e /wazuh-migration/global.db ]; then
        echoyellow "The volume mounted on /wazuh-migration does not contain all the correct files."
        return
      fi

      \cp -f /wazuh-migration/data/etc/wazuh-manager.conf /var/wazuh-manager/etc/wazuh-manager.conf
      chown root:wazuh-manager /var/wazuh-manager/etc/wazuh-manager.conf
      chmod 640 /var/wazuh-manager/etc/wazuh-manager.conf

      \cp -f /wazuh-migration/data/etc/client.keys /var/wazuh-manager/etc/client.keys
      chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/client.keys
      chmod 640 /var/wazuh-manager/etc/client.keys

      \cp -f /wazuh-migration/data/etc/sslmanager.cert /var/wazuh-manager/etc/sslmanager.cert
      \cp -f /wazuh-migration/data/etc/sslmanager.key /var/wazuh-manager/etc/sslmanager.key
      chown root:root /var/wazuh-manager/etc/sslmanager.cert /var/wazuh-manager/etc/sslmanager.key
      chmod 640 /var/wazuh-manager/etc/sslmanager.cert /var/wazuh-manager/etc/sslmanager.key

      \cp -f /wazuh-migration/data/etc/shared/default/agent.conf /var/wazuh-manager/etc/shared/default/agent.conf
      chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/shared/default/agent.conf
      chmod 660 /var/wazuh-manager/etc/shared/default/agent.conf

      \cp -f /wazuh-migration/data/etc/decoders/* /var/wazuh-manager/etc/decoders/
      chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/decoders/*
      chmod 660 /var/wazuh-manager/etc/decoders/*
      \cp -f /wazuh-migration/data/etc/rules/* /var/wazuh-manager/etc/rules/
      chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/rules/*
      chmod 660 /var/wazuh-manager/etc/rules/*

      \cp -f /wazuh-migration/global.db /var/wazuh-manager/queue/db/global.db
      chown wazuh-manager:wazuh-manager /var/wazuh-manager/queue/db/global.db
      chmod 640 /var/wazuh-manager/queue/db/global.db

      # mark volume as migrated
      touch /wazuh-migration/.migration-completed

      echogreen "Migration completed succesfully"
    else
      echoyellow "This volume has already been migrated. You may proceed and remove it from the mount point (/wazuh-migration)"
    fi
  fi
}

function_entrypoint_scripts() {
  # It will run every .sh script located in entrypoint-scripts folder in lexicographical order
  if [ -d "/entrypoint-scripts/" ]
  then
    for script in `ls /entrypoint-scripts/*.sh | sort -n`; do
      bash "$script"
    done
  fi
}

function_configure_vulnerability_detection() {
if [ "$INDEXER_PASSWORD" != "" ]; then
  >&2 echo "Configuring password."
    echo "$INDEXER_USERNAME" | /var/wazuh-manager/bin/wazuh-manager-keystore -f indexer -k username
    echo "$INDEXER_PASSWORD" | /var/wazuh-manager/bin/wazuh-manager-keystore -f indexer -k password
fi
}

# Migrate data from /wazuh-migration volume
function_wazuh_migration

# configure Vulnerabilty detection
function_configure_vulnerability_detection

# run entrypoint scripts
function_entrypoint_scripts

# Start Wazuh
/var/wazuh-manager/bin/wazuh-manager-control start
