| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- #!/bin/bash
- #=================================================
- # IMPORT GENERIC HELPERS
- #=================================================
- # Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
- source ../settings/scripts/_common.sh
- source /usr/share/yunohost/helpers
- #=================================================
- # INITIALIZE AND STORE SETTINGS
- #=================================================
- dnsmasq_user=$(grep DNSMASQ_USER= /etc/init.d/dnsmasq | cut -d'"' -f2)
- #=================================================
- # CHECK AVAILABLE PORT
- #=================================================
- _configure_ports
- #=================================================
- # ACTIVATE MAINTENANCE MODE
- #=================================================
- ynh_script_progression --message="Activating maintenance mode..." --weight=2
- ynh_maintenance_mode_ON
- #=================================================
- # RESTORE THE APP MAIN DIR
- #=================================================
- ynh_script_progression --message="Restoring the app main directory..." --weight=1
- ynh_restore_file --origin_path="$install_dir"
- chmod -R o-rwx "$install_dir"
- chown -R "$app:www-data" "$install_dir"
- touch /var/log/{pihole,pihole-FTL}.log
- chmod 644 /var/log/{pihole,pihole-FTL}.log
- chown "$dnsmasq_user:root" /var/log/{pihole,pihole-FTL}.log
- #=================================================
- # RESTORE SPECIFIC FILES
- #=================================================
- ynh_script_progression --message="Restoring specific files..." --weight=1
- ynh_restore_file --origin_path="$PI_HOLE_LOCAL_REPO"
- ynh_restore_file --origin_path="$PI_HOLE_CONFIG_DIR"
- chown "$app:" -R "$PI_HOLE_CONFIG_DIR"
- # $PI_HOLE_CONFIG_DIR/logrotate have to belong to root, otherwise logrotate will failed silently...
- chown root: -R "$PI_HOLE_CONFIG_DIR/logrotate"
- ynh_restore_file --origin_path="$PI_HOLE_INSTALL_DIR"
- ynh_restore_file --origin_path="$PI_HOLE_BIN_DIR/pihole"
- ynh_restore_file --origin_path="/etc/bash_completion.d/pihole"
- ynh_restore_file --origin_path="/usr/bin/pihole-FTL"
- #=================================================
- # FINAL EXPORTS
- #=================================================
- ynh_script_progression --message="Final exports..." --weight=1
- setupVars="$PI_HOLE_CONFIG_DIR/setupVars.conf"
- # Get the default network interface
- main_iface=$(ip route | grep --max-count=1 default | awk '{print $5;}')
- echo "PIHOLE_INTERFACE=$main_iface" > $setupVars
- ynh_replace_string --match_string="^PIHOLE_INTERFACE=.*" --replace_string="PIHOLE_INTERFACE=$main_iface" --target_file=$setupVars
- ynh_replace_string --match_string="^IPV4_ADDRESS=.*" --replace_string="IPV4_ADDRESS=127.0.0.1" --target_file=$setupVars
- # Calculate and store the config file checksum into the app settings
- ynh_store_file_checksum --file="$setupVars"
- #=================================================
- # DISABLING DNSMASQ
- #=================================================
- ynh_script_progression --message="Disabling DNSMASQ..." --weight=1
- # Last version available
- # Stopped dnsmasq to replace it by pihole-FTL
- ynh_systemd_action --service_name=dnsmasq --action=stop
- # Disable the real dnsmasq service
- #ynh_exec_warn_less systemctl disable dnsmasq --quiet
- #=================================================
- # ENABLING FTL
- #=================================================
- ynh_script_progression --message="Enable FTL..." --weight=1
- ynh_exec_warn_less systemctl enable pihole-FTL --quiet
- # 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/dnsmasq.service
- systemctl mask dnsmasq.service
- # Reload systemd config
- systemctl daemon-reload
- #=================================================
- # CONFIGURE DNS FOR THE LOCAL DOMAINS
- #=================================================
- ynh_script_progression --message="Configuring DNS for the local domains..." --weight=2
- # Find the IP associated to the network interface
- localipv4=$(ip address | grep "${main_iface}\$" | awk '{print $2;}' | cut -d/ -f1)
- # List all YunoHost domains
- while read perdomain
- do
- # Comment domain resolution in /etc/hosts on 127.0.0.1, because they can interfere with the local network resolution.
- ynh_replace_string --match_string="^127.0.0.1.*$perdomain" --replace_string="#Commented by pihole# &" --target_file=/etc/hosts
- # And add a resolution on the local IP instead
- grep -q "^$localipv4.*$perdomain" /etc/hosts || \
- echo "$localipv4 $perdomain #Added by pihole#" >> /etc/hosts
- done <<< "$(yunohost domain list | grep "\." | sed 's/.*: \|.*- //')"
- #=================================================
- # SET UP CONF_REGEN HOOK
- #=================================================
- ynh_script_progression --message="Setting up conf_regen hook..." --weight=1
- test -e "${YNH_APP_BACKUP_DIR}/etc/dnsmasq.d/03-pihole-wildcard.conf" && ynh_restore_file --origin_path="/etc/dnsmasq.d/03-pihole-wildcard.conf"
- ynh_restore_file --origin_path="/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app"
- ynh_exec_warn_less yunohost tools regen-conf dnsmasq
- #=================================================
- # RESTORE SYSTEM CONFIGURATIONS
- #=================================================
- ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1
- ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
- # Restore the file first, so it can have a backup if different
- ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf"
- ynh_add_fpm_config
- ynh_restore_file --origin_path="/etc/cron.d/pihole"
- ynh_restore_file --origin_path="/etc/sudoers.d/pihole"
- ynh_restore_file --origin_path="/etc/init.d/pihole-FTL"
- systemctl daemon-reload
- # install -T -m 0755 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL.service" "/etc/init.d/pihole-FTL"
- yunohost service add pihole-FTL --description="PiHole backend service" --log="/var/log/pihole-FTL.log" --needs_exposed_ports 53 67
- #=================================================
- # RELOAD NGINX AND PHP-FPM OR THE APP SERVICE
- #=================================================
- ynh_script_progression --message="Reloading NGINX web server and $app's service..." --weight=1
- ynh_systemd_action --service_name="pihole-FTL" --action="restart" --log_path="/var/log/pihole-FTL.log"
- ynh_systemd_action --service_name="php$phpversion-fpm" --action=reload
- ynh_systemd_action --service_name="nginx" --action=reload
- #=================================================
- # DEACTIVE MAINTENANCE MODE
- #=================================================
- ynh_script_progression --message="Disabling maintenance mode..." --weight=4
- ynh_maintenance_mode_OFF
- #=================================================
- # END OF SCRIPT
- #=================================================
- ynh_script_progression --message="Restoration completed for $app" --last
|