#!/bin/bash

# NC Version
version="31"

#############################################################################################################

# Some notes:

# DOES NOT PUT ANY PORTS ON -p FLAG FOR THIS CONTAINER!
# IF YOU DO SO, WILL CONFLICT WITH MYSQL CONTAINER THROUGH BRIDGE NETWORK.

# Do it too after migrating:

# Change /data permissions set as root user: sudo -i
# chown www-data:www-data -R /mnt/data

# find /mnt/data -type f -print0 | xargs -0 chmod 0640
# find /mnt/data -type d -print0 | xargs -0 chmod 0750

# Inside Container:

# docker exec -it nextcloud bash
# php occ maintenance:theme:update ((???))

# SET MAINTENANCE OFF!

# docker exec -u www-data -it nextcloud bash
# php occ files:scan --all

# Outside container:

# Set this on Cron's Host:
# */5 * * * * docker exec -t -u www-data nextcloud php -f /var/www/html/cron.php
# Will run cron.php when needed.

# Last but not least: NEVER use it through bridge if want to access some AD!

# The End!

#############################################################################################################

NOMECONTAINER="nextcloud"

docker_repo="nextcloud"
imagem="nextcloud"

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

VALUE2="0.0.0.0"
VALUE3="8.8.4.4"
VALUE4="$version"
VALUE5="/srv/containers/$NOMECONTAINER"
VALUE6="-v /mnt:/mnt/extra"
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"/{php,config}
  sudo touch /srv/containers/"$NOMECONTAINER"/php/opcache-recommed.ini

echo -e "opcache.enable=1
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=10000
opcache.memory_consumption=360
opcache.save_comments=1
opcache.revalidate_freq=60" | sudo tee -a /srv/containers/"$NOMECONTAINER"/php/opcache-recommed.ini

  sudo mkdir -p "$VALUE5"
:; }

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 \
    -e VIRTUAL_PORT=443 -e VIRTUAL_PROTO=https -e POST_MAX_SIZE=16G -e PHP_MEMORY_LIMIT=16G -e PHP_UPLOAD_LIMIT=16G -e PHP_OPCACHE_MEMORY_CONSUMPTION=512M \
    -v /srv/containers/"$NOMECONTAINER"/config:/var/www/html/config \
    -v /srv/containers/"$NOMECONTAINER"/php/opcache-recommed.ini:/usr/local/etc/php/conf.d/opcache-recommended.ini \
    -v "$VALUE5"/data:/var/www/html/data \
    $VALUE6 \
    "$docker_repo":"$VALUE4"

    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 \
  -e VIRTUAL_PORT=443 -e VIRTUAL_PROTO=https -e POST_MAX_SIZE=16G -e PHP_MEMORY_LIMIT=16G -e PHP_UPLOAD_LIMIT=16G -e PHP_OPCACHE_MEMORY_CONSUMPTION=512M \
  -p 389:389 -p 636:636 -p 80:80 -p 443:443 \
  -v /srv/containers/"$NOMECONTAINER"/config:/var/www/html/config \
  -v /srv/containers/"$NOMECONTAINER"/php/opcache-recommed.ini:/usr/local/etc/php/conf.d/opcache-recommended.ini \
  -v "$VALUE5"/data:/var/www/html/data \
  $VALUE6 \
  "$docker_repo":"$VALUE4"
}

function docker_extras {
  # Configuring SAMBA
  docker exec -it "$NOMECONTAINER" apt update
  docker exec -it "$NOMECONTAINER" apt install smbclient libsmbclient-dev -y
  docker restart "$NOMECONTAINER"

  # Configuring Cron
  CRONMENTARIO="# Nextcloud"
  CRONLINE="*/5 * * * * docker exec -t -u www-data $NOMECONTAINER php -f /var/www/html/cron.php"
  CRONLINE2="#*/15 * * * * docker exec -t -u www-data $NOMECONTAINER ./occ files:scan --unscanned --all"
  (sudo crontab -l 2>/dev/null | grep -Fv "$CRONMENTARIO"; echo "$CRONMENTARIO") | sudo crontab -
  (sudo crontab -l 2>/dev/null | grep -Fv "$CRONLINE"; echo "$CRONLINE") | sudo crontab -
  (sudo crontab -l 2>/dev/null | grep -Fv "$CRONLINE2"; echo "$CRONLINE2") | sudo crontab -
:; }

execute_main

exit 0
