|
@@ -1,38 +1,64 @@
|
|
|
#!/bin/bash
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
+source /usr/share/yunohost/helpers
|
|
|
|
|
+
|
|
|
force=${2:-0} # 0/1 --force argument
|
|
force=${2:-0} # 0/1 --force argument
|
|
|
dryrun=${3:-0} # 0/1 --dry-run argument
|
|
dryrun=${3:-0} # 0/1 --dry-run argument
|
|
|
pending_conf=$4 # Path of the pending conf file
|
|
pending_conf=$4 # Path of the pending conf file
|
|
|
-
|
|
|
|
|
-temp_dir=/tmp/pi-hole.bck
|
|
|
|
|
|
|
+app="__APP__"
|
|
|
|
|
|
|
|
do_pre_regen() {
|
|
do_pre_regen() {
|
|
|
if [ $dryrun -eq 0 ]
|
|
if [ $dryrun -eq 0 ]
|
|
|
then
|
|
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
|
|
# 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"
|
|
|
|
|
-
|
|
|
|
|
- # 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
|
|
|
|
|
|
|
+ cp -a "/etc/dnsmasq.d/01-pihole.conf" "$dnsmasq_dir/"
|
|
|
|
|
+
|
|
|
|
|
+ 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
|
|
fi
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
do_post_regen() {
|
|
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
|
|
# Reload dnsmasq
|
|
|
systemctl reload dnsmasq
|
|
systemctl reload dnsmasq
|
|
|
}
|
|
}
|