#!/bin/bash

source /usr/share/yunohost/helpers

app="__APP__"

action=$1
pending_conf=$4/../dnsmasq

[[ "$action" == "pre" ]] || exit 0
[[ -d "$pending_conf" ]] || exit 0

#
# Tweak dnsmsasq's general conf cache-size
#

ynh_replace_string --match_string="^cache-size=" --replace_string="#pihole# cache-size=" --target_file="${pending_conf}/etc/dnsmasq.conf"
ynh_replace_string --match_string="^listen-address=" --replace_string="#pihole# listen-address=" --target_file="${pending_conf}/etc/dnsmasq.conf"

echo "
conf-dir=/etc/dnsmasq.d/" >> "${pending_conf}/etc/dnsmasq.conf"

#
# Regen /etc/dnsmasq.d/02-pihole-dhcp.conf
#

enable_dhcp=$(ynh_app_setting_get --app=$app --key=enable_dhcp)
if [ $enable_dhcp -eq 1 ]
then

	# Get the default network interface
	# Find the IP associated to the network interface
	localipv4=$(ip address | grep "${main_iface}\$" | awk '{print $2;}' | cut -d/ -f1)

	max_dhcp_range=250
	dhcp_range=100

	# Define the dhcp range from the current ip
	ip_beginning_part=$(echo "$localipv4" | cut -d. -f1-3)
	ip_fourth_part=$(echo "$localipv4" | cut -d. -f4)
	b_range=$(( $ip_fourth_part + $dhcp_range ))
	if [ $b_range -gt $max_dhcp_range ]; then
		b_range=$max_dhcp_range
	fi
	a_range=$(( $b_range - $dhcp_range ))

	# Get the gateway
	gateway=$(ip route | grep default | awk '{print $3;}')
	# And the mac adress
	hw_adress=$(ip link | grep -A1 "$main_iface" | tail -n1 | awk '{print $2;}')

	# Copy the config file
	cp -a "/etc/yunohost/apps/$app/conf/02-pihole-dhcp.conf" "$dnsmasq_dir/"

	# And set the config
	ynh_replace_string --match_string="__A_RANGE__" --replace_string="$ip_beginning_part.$a_range" --target_file="${pending_conf}/etc/dnsmasq.d/02-pihole-dhcp.conf"
	ynh_replace_string --match_string="__B_RANGE__" --replace_string="$ip_beginning_part.$b_range" --target_file="${pending_conf}/etc/dnsmasq.d/02-pihole-dhcp.conf"
	ynh_replace_string --match_string="__GATEWAY__" --replace_string="$gateway" --target_file="${pending_conf}/etc/dnsmasq.d/02-pihole-dhcp.conf"

	# Set a static ip for the server.
	echo "dhcp-host=$hw_adress,$localipv4" > "${dnsmasq_dir}/04-pihole-static-dhcp.conf"
fi
exit 0
