#!/bin/bash

NOMECONTAINER="pihole"

docker_repo="pihole/pihole:latest"
imagem="pihole"

CustmN2="local_ip"
CustmN3="senha_web"
CustmN4="interface"
CustmN5="timezone"
CustmN6=""
CustmN7=""
CustmN8=""
CustmN9=""
CustmN10=""

VALUE2="0.0.0.0"
VALUE3="@#p4ssw0rd"
VALUE4="macvlan"
VALUE5="America/Bahia"
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 nao encontrado!"
  exit 1
fi

function set_mkdir {
  sudo mkdir -p /srv/containers/"$NOMECONTAINER"/{etc,dnsmasq.d,log}
  sudo chmod -R 777 /srv/containers/"$NOMECONTAINER"
}

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 \
    -p 80:80 -p 443:443 -p 67:67/tcp -p 67:67/udp -p 53:53/tcp -p 53:53/udp \
    --no-healthcheck --restart=unless-stopped \
    --shm-size=512m \
    --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 \
    -e TZ="$VALUE5" \
    -e FTLCONF_webserver_api_password="$VALUE3" \
    -e FTLCONF_dns_listeningMode=all \
    -v /etc/localtime:/etc/localtime:ro \
    -v /srv/containers/"$NOMECONTAINER"/etc/:/etc/pihole \
    -v /srv/containers/"$NOMECONTAINER"/dnsmasq.d/:/etc/dnsmasq.d \
    -v /srv/containers/"$NOMECONTAINER"/log/:/var/log/pihole \
    "$docker_repo"

    return
  fi

    docker run -d --name="$NOMECONTAINER" --hostname="$NOMECONTAINER" \
    --network macvlan --ip="$VALUE2" --dns="1.0.0.1" --dns="8.8.4.4" \
    --no-healthcheck --restart=unless-stopped \
    --shm-size=512m \
    --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 \
    -e TZ="$VALUE5" \
    -e FTLCONF_webserver_api_password="$VALUE3" \
    -e FTLCONF_dns_listeningMode=all \
    -v /etc/localtime:/etc/localtime:ro \
    -v /srv/containers/"$NOMECONTAINER"/etc/:/etc/pihole \
    -v /srv/containers/"$NOMECONTAINER"/dnsmasq.d/:/etc/dnsmasq.d \
    -v /srv/containers/"$NOMECONTAINER"/log/:/var/log/pihole \
    "$docker_repo"

}

function docker_extras {
echo ""; echo "Esperar 5s antes de aplicar as configs"; sleep 5
docker exec "$NOMECONTAINER" pihole-FTL --config misc.etc_dnsmasq_d true
docker exec "$NOMECONTAINER" rm /etc/pihole/pihole-FTL.conf
docker exec "$NOMECONTAINER" touch /etc/pihole/pihole-FTL.conf
docker exec "$NOMECONTAINER" bash -c "echo 'LOCAL_IPV4=0.0.0.0' >> /etc/pihole/pihole-FTL.conf"
docker exec "$NOMECONTAINER" bash -c "echo 'RATE_LIMIT=0/0' >> /etc/pihole/pihole-FTL.conf"

if ! [ -f /srv/containers/"$NOMECONTAINER"/dnsmasq.d/02-custom-settings.conf ]; then
  docker exec "$NOMECONTAINER" bash -c "echo '# domain forward lookups' > /etc/dnsmasq.d/02-custom-settings.conf"
  docker exec "$NOMECONTAINER" bash -c "echo '#server=/ad.domain.local/191.168.0.10' >> /etc/dnsmasq.d/02-custom-settings.conf"
  docker exec "$NOMECONTAINER" bash -c "echo '# domain PTR/reverse lookups' >> /etc/dnsmasq.d/02-custom-settings.conf"
  docker exec "$NOMECONTAINER" bash -c "echo '#server=/0.168.192.in-addr.arpa/192.168.0.10' >> /etc/dnsmasq.d/02-custom-settings.conf"
  docker exec "$NOMECONTAINER" bash -c "echo '# Custom DNS Max Queries and Cache' >> /etc/dnsmasq.d/02-custom-settings.conf"
  docker exec "$NOMECONTAINER" bash -c "echo 'dns-forward-max=5096' >> /etc/dnsmasq.d/02-custom-settings.conf"
  docker exec "$NOMECONTAINER" bash -c "echo 'min-cache-ttl=300' >> /etc/dnsmasq.d/02-custom-settings.conf"
  docker exec "$NOMECONTAINER" bash -c "echo 'rebind-domain-ok=' >> /etc/dnsmasq.d/02-custom-settings.conf"
fi

docker restart "$NOMECONTAINER"
:; }

execute_main

exit 0
