#!/bin/bash

# When upgrading, answer N all times to keep the files!
# Then restart openfire service, through restarting docker; or "service restart openfire"

# If needed:
# mariadb -u root -p
# GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
# GRANT ALL ON *.* to root@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'P4ssw0rd';
# GRANT ALL ON *.* to openfire@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'P4ssw0rd';
# FLUSH PRIVILEGES;

NOMECONTAINER="openfire-4.7.3"

docker_repo="urbancompasspony/openfire:latest"
imagem="openfire"

CustmN2="local_ip"
CustmN3="servidor_dns"
CustmN4=""
CustmN5=""
CustmN6=""
CustmN7=""
CustmN8=""
CustmN9=""
CustmN10=""

VALUE2="0.0.0.0"
VALUE3="8.8.4.4"
VALUE4=""
VALUE5=""
VALUE6=""
VALUE7=""
VALUE8=""
VALUE9=""
VALUE10=""

export NOMECONTAINER docker_repo imagem
export CustmN2 CustmN3 CustmN4 CustmN5 CustmN6 CustmN7 CustmN8 CustmN9 CustmN10
export VALUE2 VALUE3 VALUE4 VALUE5 VALUE6 VALUE7 VALUE8 VALUE9 VALUE10

source /root/.index.sh

if [ -f /tmp/common-functions.sh ]; then
  source /tmp/common-functions.sh
else
  echo "ERRO: common-functions.sh não encontrado!"
  exit 1
fi

function set_mkdir {
  sudo mkdir -p /srv/containers/"$NOMECONTAINER"/{etc,var,usr,default}
:; }

function docker_create {
  local ip_regex="^([0-9]{1,3}\.){3}[0-9]{1,3}$"

  # Se NAO for numerico, execute como host!
  if [[ ! "$VALUE2" =~ $ip_regex ]]; then

    docker run -d --name="$NOMECONTAINER" --hostname="$NOMECONTAINER" \
    --network host \
    --no-healthcheck --restart=unless-stopped -v /etc/localtime:/etc/localtime:ro \
    --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 \
    -v /srv/containers/"$NOMECONTAINER"/etc/:/etc/openfire/ \
    -v /srv/containers/"$NOMECONTAINER"/var/:/var/lib/openfire/ \
    -v /srv/containers/"$NOMECONTAINER"/usr/:/usr/share/openfire/ \
    -v /srv/containers/"$NOMECONTAINER"/default/:/etc/default/ \
    "$docker_repo"

    return
  fi

  docker run -d --name="$NOMECONTAINER" --hostname="$NOMECONTAINER" \
  --network macvlan --ip="$VALUE2" --dns="$VALUE3" \
  --no-healthcheck --restart=unless-stopped -v /etc/localtime:/etc/localtime:ro \
  --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 \
  -v /srv/containers/"$NOMECONTAINER"/etc/:/etc/openfire/ \
  -v /srv/containers/"$NOMECONTAINER"/var/:/var/lib/openfire/ \
  -v /srv/containers/"$NOMECONTAINER"/usr/:/usr/share/openfire/ \
  -v /srv/containers/"$NOMECONTAINER"/default/:/etc/default/ \
  "$docker_repo"
}

function docker_extras {
  curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' \
       -H 'Accept: text/plain' \
       -sSL https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.7.3_all.deb \
       -o /tmp/openfire.deb

  # Verificar se baixou
  if [ ! -f /tmp/openfire.deb ] || [ ! -s /tmp/openfire.deb ]; then
    echo "ERRO: Não foi possível baixar openfire_4.7.3_all.deb!"
    echo "Verifique depois..."
    sleep 5
  else
    # COPIAR PARA O CONTAINER
    docker cp /tmp/openfire.deb "$NOMECONTAINER":/openfire.deb
    docker exec $NOMECONTAINER bash -c "DEBIAN_FRONTEND=noninteractive dpkg -i --force-confold openfire.deb"
    docker restart $NOMECONTAINER
    echo ""
    echo "Acesso pela porta 9090"
    echo ""
    sleep 5
fi
:; }

execute_main

exit 0
