#!/bin/bash

NOMECONTAINER="apache2-generic"

docker_repo="httpd:latest"
imagem="apache2"

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

VALUE2="0.0.0.0"
VALUE3="8.8.4.4"
VALUE4="/srv/containers/$NOMECONTAINER/Data/"
VALUE5="admin"
VALUE6="p4ss0rd"
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"/Data
  sudo mkdir -p $VALUE4
:; }

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 "$VALUE4":/usr/local/apache2/htdocs/ \
    "$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 "$VALUE4":/usr/local/apache2/htdocs/ \
  "$docker_repo"
}

function docker_extras {
  if ! dialog --title "Definir Usuario e Senha!" --yesno "Deseja proteger o acesso?" 6 40; then
    return
  fi

  if ! VALUE10=$(dialog --ok-label "Definir" --title "Novo Usuario e Senha" --form "Container: $NOMECONTAINER" 9 40 0 \
"Username: " 1 1 "$VALUE5" 1 11 50 0 \
"Password: " 2 1 "$VALUE6" 2 11 50 0 \
3>&1 1>&2 2>&3 3>&- > /dev/tty); then
    return
  fi

  username0=$(echo "$VALUE10" | sed -n 1p)
  password0=$(echo "$VALUE10" | sed -n 2p)

  docker exec "$NOMECONTAINER" bash -c "apt update"
  docker exec "$NOMECONTAINER" bash -c "apt install apache2-utils -y"

  # BAIXAR O ARQUIVO NO HOST (fora do container)
  echo "Baixando httpd.conf..."
  curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' \
       -H 'Accept: text/plain' \
       -sSL https://git.linuxuniverse.com.br/docker/configurations/httpd.txt \
       -o /tmp/httpd-custom.conf

  # Verificar se baixou
  if [ ! -f /tmp/httpd-custom.conf ] || [ ! -s /tmp/httpd-custom.conf ]; then
    echo "ERRO: Não foi possível baixar httpd.conf!"
    echo "Usando configuração padrão do Apache..."
  else
    # COPIAR PARA O CONTAINER
    docker cp /tmp/httpd-custom.conf "$NOMECONTAINER":/usr/local/apache2/conf/httpd.conf
    echo "httpd.conf configurado com sucesso!"
  fi

  docker exec "$NOMECONTAINER" bash -c "touch /usr/local/apache2/.htpasswd"
  docker exec "$NOMECONTAINER" bash -c "echo $password0 | tee /usr/local/apache2/webpass"
  docker exec "$NOMECONTAINER" bash -c "htpasswd -c -i .htpasswd $username0 < /usr/local/apache2/webpass"
  docker restart "$NOMECONTAINER"
:; }

execute_main

exit 0
