| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/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
- 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
- cp -a "/etc/.pihole/advanced/01-pihole.conf" "$dnsmasq_dir/"
- ynh_replace_string --match_string="@DNS1@" --replace_string="" --target_file="$dnsmasq_dir/01-pihole.conf"
- ynh_replace_string --match_string="@DNS2@" --replace_string="" --target_file="$dnsmasq_dir/01-pihole.conf"
- ynh_replace_string --match_string="^no-resolv" --replace_string="#no-resolv" --target_file="$dnsmasq_dir/01-pihole.conf"
- ynh_replace_string --match_string="@INT@" --replace_string="$main_iface" --target_file="$dnsmasq_dir/01-pihole.conf"
- if [ "$query_logging" = "true" ]; then
- ynh_replace_string --match_string="^#log-queries" --replace_string="log-queries" --target_file="$dnsmasq_dir/01-pihole.conf"
- else
- ynh_replace_string --match_string="^log-queries" --replace_string="#log-queries" --target_file="$dnsmasq_dir/01-pihole.conf"
- fi
- # Fix a too recent option for our dnsmasq version.
- ynh_replace_string --match_string="log-queries=extra" --replace_string="log-queries" --target_file="$dnsmasq_dir/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() {
- # Reload dnsmasq
- systemctl reload dnsmasq
- }
- case "$1" in
- pre)
- do_pre_regen
- ;;
- post)
- do_post_regen
- ;;
- *)
- echo "Hook called with unknown argument \`$1'" >&2
- exit 1
- ;;
- esac
- exit 0
|