#!/bin/bash

NOMECONTAINER="motion"

docker_repo="urbancompasspony/motion"
imagem="motion"

CustmN2="local_ip"
CustmN3="servidor_dns"
CustmN4="width"
CustmN5="height"
CustmN6="webcontrol_port"
CustmN7="stream_port"
CustmN8=""
CustmN9=""
CustmN10=""

VALUE2="0.0.0.0"
VALUE3="8.8.4.4"
VALUE4="640"
VALUE5="480"
VALUE6="8080"
VALUE7="8081"
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 {
if ! [ -d /srv/containers/"$NOMECONTAINER"/config ]; then
  sudo mkdir -p /srv/containers/"$NOMECONTAINER"/{logs,config,data}

  cat << EOF > /srv/containers/"$NOMECONTAINER"/config/motion.conf
############################################################
# System control configuration parameters
############################################################
daemon off
setup_mode off
log_file /var/log/motion/motion.log
log_level 6
target_dir /var/lib/motion
video_device /dev/video0

############################################################
# Image Processing configuration parameters
############################################################
width $VALUE4
height $VALUE5
framerate 60
text_left CAMERA1
# Usamos \\n para o bash nao quebrar a linha aqui, mas o Motion receber o \n
text_right %Y-%m-%d\\n%T-%q

############################################################
# Motion detection configuration parameters
############################################################
emulate_motion off
threshold 1500
despeckle_filter EedDl
minimum_motion_frames 1
event_gap 60
pre_capture 3
post_capture 0

############################################################
# Picture & Movie output parameters
############################################################
picture_output off
picture_filename %Y%m%d%H%M%S-%q
movie_output off
movie_max_time 60
movie_quality 45
movie_codec mkv
movie_filename %t-%v-%Y%m%d%H%M%S
video_params palette=15,width=$VALUE4,height=$VALUE5

############################################################
# Webcontrol & Live Stream
############################################################
webcontrol_port $VALUE6
webcontrol_localhost off
webcontrol_parms 0
stream_port $VALUE7
stream_localhost off

##############################################################
# Camera config files
##############################################################
camera /etc/motion/camera1.conf
EOF

  # MESMA COISA AQUI: REMOVIDO ' ' DO EOF
  cat << EOF > /srv/containers/"$NOMECONTAINER"/config/camera1.conf
camera_name webcam1
video_device /dev/video0
width $VALUE4
height $VALUE5
framerate 60
video_params palette=15,width=$VALUE4,height=$VALUE5
rotate 0
target_dir /var/lib/motion/camera1
text_left webcam1
text_right %Y-%m-%d %T
threshold 1500
minimum_motion_frames 1
picture_output off
picture_filename %Y%m%d_%H%M%S-%q
movie_output off
movie_filename %Y%m%d_%H%M%S
stream_port $VALUE7
stream_quality 100
stream_localhost off
stream_maxrate 60
webcontrol_port 0
EOF

  sudo chmod -R 777 /srv/containers/"$NOMECONTAINER"/{logs,config,data/camera1}
fi
}

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" --privileged \
    --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 \
    -p $VALUE6:$VALUE6 -p $VALUE7:$VALUE7 \
    -v /srv/containers/"$NOMECONTAINER"/config:/etc/motion \
    -v /srv/containers/"$NOMECONTAINER"/logs:/var/log/motion \
    -v /srv/containers/"$NOMECONTAINER"/data:/var/lib/motion \
    -v /dev/bus/usb:/dev/bus/usb \
    "$docker_repo"

    return
  fi

  docker run -d --name="$NOMECONTAINER" --hostname="$NOMECONTAINER" --privileged \
  --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"/config:/etc/motion \
  -v /srv/containers/"$NOMECONTAINER"/logs:/var/log/motion \
  -v /srv/containers/"$NOMECONTAINER"/data:/var/lib/motion \
  -v /dev/bus/usb:/dev/bus/usb \
  "$docker_repo"
}

function docker_extras {
  clear
  echo "Stream at: http://$VALUE2:$VALUE7/1/stream"
  echo "If not running, check at: http://$VALUE2:$VALUE6"
  echo "Click on the camera!"
  sleep 5
:; }

execute_main

exit 0
