From 82ae8d433a9bb7505914eb3db0560ee983259cb1 Mon Sep 17 00:00:00 2001 From: Kay0u Date: Tue, 14 Sep 2021 14:01:46 +0200 Subject: [PATCH] Trying to fix regenconf --- conf/dnsmasq_regenconf_hook | 66 +++++++++++++++++++++---------- scripts/actions/reset_default_app | 6 ++- scripts/install | 3 +- scripts/remove | 2 +- scripts/restore | 2 +- scripts/upgrade | 3 +- 6 files changed, 57 insertions(+), 25 deletions(-) diff --git a/conf/dnsmasq_regenconf_hook b/conf/dnsmasq_regenconf_hook index 0e4c2ef..b54edfd 100755 --- a/conf/dnsmasq_regenconf_hook +++ b/conf/dnsmasq_regenconf_hook @@ -1,38 +1,64 @@ #!/bin/bash +source /usr/share/yunohost/helpers + force=${2:-0} # 0/1 --force argument dryrun=${3:-0} # 0/1 --dry-run argument pending_conf=$4 # Path of the pending conf file - -temp_dir=/tmp/pi-hole.bck +app="__APP__" do_pre_regen() { if [ $dryrun -eq 0 ] then + dnsmasq_dir="${pending_conf}/etc/dnsmasq.d" + mkdir -p "$dnsmasq_dir" + cp -a "/etc/dnsmasq.conf" "${pending_conf}/etc/dnsmasq.conf" # Créer une sauvegarde des config dnsmasq de pi-hole. Que la regen-conf va sauvagement supprimer - mkdir $temp_dir - cp -a "/etc/dnsmasq.d/01-pihole.conf" "$temp_dir" - test -e "/etc/dnsmasq.d/02-pihole-dhcp.conf" && cp -a "/etc/dnsmasq.d/02-pihole-dhcp.conf" "$temp_dir" - test -e "/etc/dnsmasq.d/03-pihole-wildcard.conf" && cp -a "/etc/dnsmasq.d/03-pihole-wildcard.conf" "$temp_dir" + cp -a "/etc/dnsmasq.d/01-pihole.conf" "$dnsmasq_dir/" - # Décommente le cache-size de la config par défaut - sed --in-place "s/^#pihole# cache-size=/cache-size=/g" /etc/dnsmasq.conf - # Et commente celui de pi-hole - sed --in-place "s/^cache-size=/#cache-size=/g" /etc/dnsmasq.d/01-pihole.conf + ynh_replace_string --match_string="^cache-size=" --replace_string="#pihole# cache-size=" --target_file="${pending_conf}/etc/dnsmasq.conf" + + enable_dhcp=$(ynh_app_setting_get --app=$app --key=enable_dhcp) + if [ $enable_dhcp -eq 1 ] + then + + # Get the default network interface + main_iface=$(ip route | grep --max-count=1 default | awk '{print $5;}') + # 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" > "${pending_conf}/etc/dnsmasq.d/04-pihole-static-dhcp.conf" + fi fi } do_post_regen() { - # Restaure la config dnsmasq de pi-hole - cp -a "$temp_dir/01-pihole.conf" "/etc/dnsmasq.d/" - test -e "$temp_dir/02-pihole-dhcp.conf" && cp -a "$temp_dir/02-pihole-dhcp.conf" "/etc/dnsmasq.d/" - test -e "$temp_dir/03-pihole-wildcard.conf" && cp -a "$temp_dir/03-pihole-wildcard.conf" "/etc/dnsmasq.d/" - # Supprime le dossier temporaire - test -n $temp_dir && rm -r $temp_dir - - # Commente le cache-size de la config par défaut - sed --in-place "s/^cache-size=/#pihole# cache-size=/g" /etc/dnsmasq.conf - # Reload dnsmasq systemctl reload dnsmasq } diff --git a/scripts/actions/reset_default_app b/scripts/actions/reset_default_app index 8e3fba5..301406d 100755 --- a/scripts/actions/reset_default_app +++ b/scripts/actions/reset_default_app @@ -228,7 +228,11 @@ ynh_replace_string --match_string=".*updatechecker.*" --replace_string="#&" --ta # REINSTALL CONF_REGEN HOOK #================================================= -(cd scripts; cp ../conf/dnsmasq_regenconf_hook /usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app) +( + cd scripts + cp ../conf/dnsmasq_regenconf_hook /usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app + ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app" +) #================================================= # RESTART PIHOLE-FTL diff --git a/scripts/install b/scripts/install index 9c3c494..6df124b 100644 --- a/scripts/install +++ b/scripts/install @@ -260,7 +260,7 @@ else # Replace the service dnsmasq by pihole-FTL # That way, YunoHost can continue to use dnsmasq by actually using pihole-FTL - ln -s /run/systemd/generator.late/pihole-FTL.service /etc/systemd/system/multi-user.target.wants/dnsmasq.service + ln -s /run/systemd/generator.late/pihole-FTL.service /etc/systemd/system/dnsmasq.service # Reload systemd config systemctl daemon-reload @@ -436,6 +436,7 @@ ynh_exec_warn_less /opt/pihole/gravity.sh #================================================= cp ../conf/dnsmasq_regenconf_hook /usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app +ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app" #================================================= # GENERIC FINALISATION diff --git a/scripts/remove b/scripts/remove index b9e9537..99a9f82 100755 --- a/scripts/remove +++ b/scripts/remove @@ -54,7 +54,7 @@ else fi # Move back the service configuration for dnsmasq - ynh_secure_remove --file="/etc/systemd/system/multi-user.target.wants/dnsmasq.service" + ynh_secure_remove --file="/etc/systemd/system/dnsmasq.service" mv /lib/systemd/system/.dnsmasq.service.backup_by_pihole /lib/systemd/system/dnsmasq.service mv /etc/init.d/.dnsmasq.backup_by_pihole /etc/init.d/dnsmasq diff --git a/scripts/restore b/scripts/restore index 2cf05da..628b1c8 100644 --- a/scripts/restore +++ b/scripts/restore @@ -182,7 +182,7 @@ then # Replace the service dnsmasq by pihole-FTL # That way, YunoHost can continue to use dnsmasq by actually using pihole-FTL - ln -s /run/systemd/generator.late/pihole-FTL.service /etc/systemd/system/multi-user.target.wants/dnsmasq.service + ln -s /run/systemd/generator.late/pihole-FTL.service /etc/systemd/system/dnsmasq.service # Reload systemd config systemctl daemon-reload diff --git a/scripts/upgrade b/scripts/upgrade index eea787a..2806466 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -305,7 +305,7 @@ else # Replace the service dnsmasq by pihole-FTL # That way, YunoHost can continue to use dnsmasq by actually using pihole-FTL - ln -sf /run/systemd/generator.late/pihole-FTL.service /etc/systemd/system/multi-user.target.wants/dnsmasq.service + ln -sf /run/systemd/generator.late/pihole-FTL.service /etc/systemd/system/dnsmasq.service # Reload systemd config systemctl daemon-reload @@ -373,6 +373,7 @@ yunohost service add pihole-FTL --description="PiHole backend service" --log="/v #================================================= cp ../conf/dnsmasq_regenconf_hook /usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app +ynh_replace_string --match_string="__APP__" --replace_string="$app" --target_file="/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app" #================================================= # RELOAD NGINX