diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f0ff6f7..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.swp -*~ -Notes diff --git a/YEP.md b/YEP.md deleted file mode 100644 index ba3e025..0000000 --- a/YEP.md +++ /dev/null @@ -1,117 +0,0 @@ -#### [Level 0](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-0) -[YEP 1.1 - Nommer son app et son dépot](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-11) -`Validated` -[YEP 1.2 - Inscrire l'app sur un "répertoire" connu](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-12) -`Validated` - -#### [Level 1](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-1) -[YEP 2.2 - Utiliser bash pour les scripts principaux](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-22) -`Validated` -[YEP 2.5 - Copier correctement des fichiers](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-25) -`Don't know` -[YEP 2.7 - Donner des permissions suffisantes aux instructions bash](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-27) -`Validated` -[YEP 2.15 - Suivre les instructions d'installation de l'application](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-215) -`Validated` - -#### [Level 2](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-2) -[YEP 1.5 - Mettre à jour régulièrement le statut de l'app](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-11) -`Validated` -[YEP 2.18.2 - Gérer l'installation à la racine d’un nom de domaine](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2182) -`Validated` - *Automatically verified.* -[YEP 2.18.3 - Gérer l'installation sur un sous-domaine](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2183) -`Validated` - *Automatically verified.* -[YEP 2.18.4 - Gérer l'installation sur un chemin /path](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2184) -`Validated` - *Automatically verified.* -[YEP 4.6 - Gère le multi-instance](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-11) -`Not applicable` - *Automatically verified.* - -#### [Level 3](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-3) -[YEP 2.3 - Sauvegarder les réponses lors de l'installation](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-23) -`Validated` - -#### [Level 4](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-4) -[YEP 4.1 - Lier au ldap](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-41) -`Not applicable` -[YEP 4.2 - Lier l'authentification au sso](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-42) -`Not applicable` - -#### [Level 5](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-5) -[YEP 1.3 - Indiquer la licence associée au paquet](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-13) -`Validated` -[YEP 2.1 - Respecter le format du manifeste](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-21) -`Validated` - *Automatically verified.* -[YEP 2.12 - Utiliser les commandes pratiques (helpers)](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-212) -`Validated` -[YEP 2.18.1 - Lancer le script d'installation d'une webapp correctement](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2181) -`Not applicable` - -#### [Level 6](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-6) -[YEP 1.4 - Informer sur l'intention de maintenir un paquet](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-14) -`Validated` -[YEP 1.6 - Se tenir informé sur l'évolution du packaging d'apps](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-16) -`Validated` -[YEP 1.7 - Ajouter l'app à l'organisation YunoHost-Apps](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-17) -`Validated` - *Automatically verified.* -[YEP 1.8 - Publier des demandes de test](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-18) -`Validated` -[YEP 1.9 - Documenter l'app](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-19) -`Validated` -[YEP 1.10 - Garder un historique de version propre](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-110) -`Don't know` -[YEP 2.9 - Enlever toutes traces de l'app lors de la suppression](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-29) -`Validated` -[YEP 3.3 - Faciliter le contrôle de l'intégrité des sources](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-33) -`Validated` -[YEP 3.5 - Suivre les recommendations de la documentation de l'app](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-35) -`Validated` -[YEP 3.6 - Mettre à jour les versions contenant des CVE](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-36) -`Validated` -[YEP 4.3 - Fournir un script de sauvegarde YunoHost fonctionnel](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-43) -`Validated` - *Automatically verified.* -[YEP 4.4 - Fournir un script de restauration YunoHost fonctionnel](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-44) -`Validated` - *Automatically verified.* - -#### [Level 7](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-7) -[YEP 2.6 - Annuler l'action si les valeurs d'entrées sont incorrectes](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-26) -`Validated` -[YEP 3.2 - Ouvrir un port correctement](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-32) -`Validated` - -#### [Level 8](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-8) -[YEP 2.4 - Détecter et gérer les erreurs](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-24) -`Validated` -[YEP 2.8 - Modifier correctement une configuration système](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-28) -`Validated` -[YEP 2.16 - Vérifier la disponibilité des dépendances sur ARM, x86 et x64](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-216) -`Not yet validated` - *Automatically verified.* -[YEP 2.18.5 - Gérer la tuile YunoHost pour faciliter la navigation entre les applications](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-2185) -`Validated` -[YEP 3.4 - Isoler l'app](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-34) -`Partially validated` -[YEP 4.5 - Utiliser les hooks](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-45) -`Validated` - -#### [Level 9](https://github.com/YunoHost/doc/blob/master/packaging_apps_levels_fr.md#niveau-9) -[YEP 2.10 - Configurer les logs de l'application](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-210) -`Validated` -[YEP 2.11 - Utiliser une variable plutôt que l'app id directement](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-211) -`Validated` -[YEP 2.13 - Traduire le paquet en anglais](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-213) -`Partially validated` -[YEP 2.14 - Remplir correctement un fichier de conf](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-214) -`Not yet validated` -[YEP 2.17 - Prendre en compte la version d'origine lors des mises à jour](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-217) -`Validated` -[YEP 4.2.1 - Déconnexion](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-421) -`Not applicable` - -#### Other YEP -[YEP 3.1 - Ne pas demander ou stocker de mot de passe LDAP](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-31) -`Validated` -[YEP 4.7 - Ajouter un module à la CLI](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-47) -`Not applicable` -[YEP 4.8 - Ajouter un module à l'admin web](https://github.com/YunoHost/doc/blob/master/packaging_apps_guidelines_fr.md#yep-48) -`Not applicable` - -State of each YEP can be one of these: `Validated`, `Partially validated`, `Not yet validated`, `Not applicable`, `Don't know`. diff --git a/conf/nginx.conf b/conf/nginx.conf index b0000ac..43f743e 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,22 +1,23 @@ #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { - # Path to source - alias __FINALPATH__/; + # Path to source + alias __FINALPATH__/; - index index.html index.php ; + index index.html index.php; - try_files $uri $uri/ index.php; - location ~ [^/]\.php(/|$) { - fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:/var/run/php/php7.3-fpm-__NAME__.sock; - fastcgi_index index.php; - include fastcgi_params; - fastcgi_param REMOTE_USER $remote_user; - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_param SCRIPT_FILENAME $request_filename; - } + try_files $uri $uri/ index.php; + location ~ [^/]\.php(/|$) { + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; - # Include SSOWAT user panel. - include conf.d/yunohost_panel.conf.inc; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param REMOTE_USER $remote_user; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME $request_filename; + } + + # Include SSOWAT user panel. + include conf.d/yunohost_panel.conf.inc; } diff --git a/doc/.DS_Store b/doc/.DS_Store deleted file mode 100644 index fc7b8a4..0000000 Binary files a/doc/.DS_Store and /dev/null differ diff --git a/doc/.gitkeep b/doc/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..a88ba06 --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1 @@ +Network-wide ad blocking via your own DNS server diff --git a/doc/screenshots/.gitkeep b/doc/screenshots/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/manifest.json b/manifest.json index d36de66..e0a4f7c 100644 --- a/manifest.json +++ b/manifest.json @@ -32,7 +32,7 @@ "php7.3-fpm" ], "arguments": { - "install" : [ + "install": [ { "name": "domain", "type": "domain" diff --git a/scripts/_common.sh b/scripts/_common.sh index 8d3534c..7659999 100755 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,7 +1,14 @@ #!/bin/bash #================================================= -# FUTUR OFFICIAL HELPERS +# COMMON VARIABLES +#================================================= + +# dependencies used by the app +pkg_dependencies="sqlite3 idn2 php7.3-sqlite3 nettle-dev libcap2-bin build-essential libgmp-dev m4 cmake libidn11-dev libreadline-dev xxd" + +#================================================= +# PERSONAL HELPERS #================================================= #================================================= @@ -364,4 +371,8 @@ ynh_app_changelog () { then echo "No significative changes from the changelog..." > "${final_changelog}_lite" fi -} \ No newline at end of file +} + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= diff --git a/scripts/_variables b/scripts/_variables index f6ca2f5..7368c4e 100644 --- a/scripts/_variables +++ b/scripts/_variables @@ -1,8 +1,5 @@ #!/bin/bash -# Dependencies -app_depencencies="sqlite3 idn2 php7.3-sqlite3 nettle-dev libcap2-bin build-essential libgmp-dev m4 cmake libidn11-dev libreadline-dev xxd" - if [ "$YNH_APP_ARG_PIHOLE_VERSION" == "Last 3.X" ] then pihole_core_version=3.3.1 diff --git a/scripts/backup b/scripts/backup index 0646942..13dc624 100644 --- a/scripts/backup +++ b/scripts/backup @@ -6,6 +6,7 @@ # 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 @@ -36,7 +37,7 @@ fpm_config_dir=$(ynh_app_setting_get --app=$app --key=fpm_config_dir) ynh_print_info --message="Declaring files to be backed up..." #================================================= -# BACKUP THE MAIN APP DIRECTORIES +# BACKUP THE APP MAIN DIRECTORIES #================================================= ynh_backup --src_path="$final_path" @@ -45,13 +46,13 @@ ynh_backup --src_path="/etc/pihole" ynh_backup --src_path="/opt/pihole" #================================================= -# BACKUP NGINX CONFIGURATION +# BACKUP THE NGINX CONFIGURATION #================================================= ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= -# BACKUP PHP-FPM CONFIGURATION +# BACKUP THE PHP-FPM CONFIGURATION #================================================= ynh_backup --src_path="$fpm_config_dir/php-fpm-$app.conf" @@ -60,15 +61,11 @@ ynh_backup --src_path="$fpm_config_dir/pool.d/$app.conf" #================================================= # SPECIFIC BACKUP #================================================= -# BACKUP CRON FILE +# BACKUP VARIOUS FILES #================================================= ynh_backup --src_path="/etc/cron.d/pihole" -#================================================= -# BACKUP SPECIFIC FILES -#================================================= - ynh_backup --src_path="/usr/local/bin/pihole" ynh_backup --src_path="/etc/bash_completion.d/pihole" @@ -78,7 +75,7 @@ ynh_backup --src_path="/etc/init.d/pihole-FTL" ynh_backup --src_path="/usr/bin/pihole-FTL" if test -e "/etc/dnsmasq.d/03-pihole-wildcard.conf"; then - ynh_backup --src_path="/etc/dnsmasq.d/03-pihole-wildcard.conf" + ynh_backup --src_path="/etc/dnsmasq.d/03-pihole-wildcard.conf" fi ynh_backup --src_path="/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_$app" diff --git a/scripts/change_url b/scripts/change_url index b6adf0b..bd8bed4 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -26,21 +26,22 @@ app=$YNH_APP_INSTANCE_NAME #================================================= ynh_script_progression --message="Loading installation settings..." --weight=2 +# Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= -# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP #================================================= ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=11 # Backup the current version of the app ynh_backup_before_upgrade ynh_clean_setup () { - # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. - ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" + # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. + ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" - # restore it if the upgrade fails - ynh_restore_upgradebackup + # Restore it if the upgrade fails + ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -61,13 +62,13 @@ ynh_maintenance_mode_ON change_domain=0 if [ "$old_domain" != "$new_domain" ] then - change_domain=1 + change_domain=1 fi change_path=0 if [ "$old_path" != "$new_path" ] then - change_path=1 + change_path=1 fi #================================================= @@ -79,29 +80,26 @@ ynh_script_progression --message="Updating NGINX web server configuration..." -- nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf -# Change the path in the nginx config file +# Change the path in the NGINX config file if [ $change_path -eq 1 ] then - # Make a backup of the original nginx config file if modified - ynh_backup_if_checksum_is_different --file="$nginx_conf_path" - - # Set global variables for nginx helper - domain="$old_domain" - path_url="$new_path" - - # Create a dedicated nginx config - ynh_add_nginx_config + # Make a backup of the original NGINX config file if modified + ynh_backup_if_checksum_is_different --file="$nginx_conf_path" + # Set global variables for NGINX helper + domain="$old_domain" + path_url="$new_path" + # Create a dedicated NGINX config + ynh_add_nginx_config fi -# Change the domain for nginx +# Change the domain for NGINX if [ $change_domain -eq 1 ] then - # Delete file checksum for the old conf file location - ynh_delete_file_checksum --file="$nginx_conf_path" - mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf - - # Store file checksum for the new config file location - ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" + # Delete file checksum for the old conf file location + ynh_delete_file_checksum --file="$nginx_conf_path" + mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf + # Store file checksum for the new config file location + ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" fi #================================================= diff --git a/scripts/install b/scripts/install index 3258471..ed15ec4 100644 --- a/scripts/install +++ b/scripts/install @@ -1,19 +1,18 @@ #!/bin/bash #================================================= -# GENERIC STARTING +# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= # Load common variables for all scripts. source _variables - source _common.sh source /usr/share/yunohost/helpers #================================================= -# MANAGE FAILURE OF THE SCRIPT +# MANAGE SCRIPT FAILURE #================================================= # Exit if an error occurs during the execution of the script @@ -33,7 +32,7 @@ pihole_version="$YNH_APP_ARG_PIHOLE_VERSION" app=$YNH_APP_INSTANCE_NAME #================================================= -# CHECK IF THE APP CAN BE INSTALLED WITH THIS ARGS +# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= ynh_script_progression --message="Validating installation parameters..." --weight=2 @@ -68,11 +67,11 @@ ynh_app_setting_set --app=$app --key=admin_mail_html --value=1 #================================================= ynh_script_progression --message="Finding an available port..." --weight=12 -# Find a free port +# Find an available port port=$(ynh_find_port --port=4711) if [ $port -gt 4720 ] then - ynh_die --message="The ports 4711 to 4720 are already in use. Pi-hole can't work on another port. Please try to free one of these ports." + ynh_die --message="The ports 4711 to 4720 are already in use. Pi-hole can't work on another port. Please try to free one of these ports." fi ynh_app_setting_set --app=$app --key=port --value=$port @@ -85,15 +84,15 @@ ynh_exec_fully_quiet yunohost firewall allow Both 53 --no-upnp #================================================= ynh_script_progression --message="Installing dependencies..." --weight=12 -ynh_install_app_dependencies $app_depencencies +ynh_install_app_dependencies $pkg_dependencies #================================================= # CREATE DEDICATED USER #================================================= ynh_script_progression --message="Configuring system user..." --weight=2 -# Create a dedicated system user -ynh_system_user_create --username=$app +# Create a system user +ynh_system_user_create --username=$app --home_dir=$final_path #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -105,15 +104,15 @@ ynh_app_setting_set --app=$app --key=final_path --value=$final_path pihole_local_repo="/etc/.pihole" if [ "$pihole_version" == "Last 3.X" ] then - # Install the version 3.3.1 - ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_3 - # Install admin dashboard - ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_3 + # Install the version 3.3.1 + ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_3 + # Install admin dashboard + ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_3 else - # Install the last version available - ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_last - # Install admin dashboard - ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_last + # Install the last version available + ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_last + # Install admin dashboard + ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_last fi chown $app:www-data "$final_path" @@ -123,7 +122,7 @@ chown $app:www-data "$final_path" #================================================= ynh_script_progression --message="Configuring NGINX web server..." --weight=2 -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= @@ -131,7 +130,7 @@ ynh_add_nginx_config #================================================= ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 -# Create a dedicated php-fpm config +# Create a dedicated PHP-FPM config ynh_add_fpm_config --usage=low --footprint=low --dedicated_service #================================================= @@ -179,9 +178,9 @@ chown $dnsmasq_user:root /var/log/{pihole,pihole-FTL}.log # This sudoers config allow pihole to execute /usr/local/bin/pihole as root without password. Nothing more. if [ "$pihole_version" == "Last 3.X" ] then - cp "$pihole_local_repo/advanced/pihole.sudo" /etc/sudoers.d/pihole + cp "$pihole_local_repo/advanced/pihole.sudo" /etc/sudoers.d/pihole else - cp "$pihole_local_repo/advanced/Templates/pihole.sudo" /etc/sudoers.d/pihole + cp "$pihole_local_repo/advanced/Templates/pihole.sudo" /etc/sudoers.d/pihole fi echo "$app ALL=NOPASSWD: /usr/local/bin/pihole" >> /etc/sudoers.d/pihole # echo "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin" >> /etc/sudoers.d/pihole @@ -193,9 +192,9 @@ chmod 0440 /etc/sudoers.d/pihole if [ "$pihole_version" == "Last 3.X" ] then - cp "$pihole_local_repo/advanced/logrotate" "$pihole_storage/logrotate" + cp "$pihole_local_repo/advanced/logrotate" "$pihole_storage/logrotate" else - cp "$pihole_local_repo/advanced/Templates/logrotate" "$pihole_storage/logrotate" + cp "$pihole_local_repo/advanced/Templates/logrotate" "$pihole_storage/logrotate" fi sed -i "/# su #/d;" "$pihole_storage/logrotate" @@ -208,18 +207,18 @@ ynh_script_progression --message="Installing PiHole-FTL..." --weight=30 FTL_temp_path=$(mktemp -d) if [ "$pihole_version" == "Last 3.X" ] then - # Install the version 3.3.1 - ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_3 + # Install the version 3.3.1 + ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_3 else - # Install the last version available - ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_last + # Install the last version available + ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_last fi # Instead of downloading a binary file, we're going to compile it ( cd "$FTL_temp_path" if [ "$pihole_version" == "Last available" ] then - ynh_exec_warn_less cmake . + ynh_exec_warn_less cmake . fi ynh_exec_warn_less make ynh_exec_warn_less make install ) @@ -231,39 +230,39 @@ ynh_add_config --template="../conf/pihole-FTL.conf" --destination="$pihole_stora if [ "$pihole_version" == "Last 3.X" ] then - # Version 3.3.1 - cp -a $pihole_local_repo/advanced/pihole-FTL.service /etc/init.d/pihole-FTL - chmod +x /etc/init.d/pihole-FTL - ynh_exec_warn_less systemctl enable pihole-FTL --quiet + # Version 3.3.1 + cp -a $pihole_local_repo/advanced/pihole-FTL.service /etc/init.d/pihole-FTL + chmod +x /etc/init.d/pihole-FTL + ynh_exec_warn_less systemctl enable pihole-FTL --quiet else - # Last version available - # Stopped dnsmasq to replace it by pihole-FTL - ynh_systemd_action --action=stop --service_name=dnsmasq + # Last version available + # Stopped dnsmasq to replace it by pihole-FTL + ynh_systemd_action --action=stop --service_name=dnsmasq - # Disable the real dnsmasq service - ynh_exec_warn_less systemctl disable dnsmasq --quiet + # Disable the real dnsmasq service + ynh_exec_warn_less systemctl disable dnsmasq --quiet - # And move the files that make the service available in systemd to really disable it - mv /lib/systemd/system/dnsmasq.service /lib/systemd/system/.dnsmasq.service.backup_by_pihole - mv /etc/init.d/dnsmasq /etc/init.d/.dnsmasq.backup_by_pihole + # And move the files that make the service available in systemd to really disable it + mv /lib/systemd/system/dnsmasq.service /lib/systemd/system/.dnsmasq.service.backup_by_pihole + mv /etc/init.d/dnsmasq /etc/init.d/.dnsmasq.backup_by_pihole - # Move dnsmasq to preserve the current binary - mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.backup_by_pihole - # Replace dnsmasq by pihole-FTL - # NOTE: pihole-FTL is actually a modified version of dnsmasq - # https://github.com/pi-hole/FTL/tree/master/dnsmasq - ln -s /usr/bin/pihole-FTL /usr/sbin/dnsmasq + # Move dnsmasq to preserve the current binary + mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.backup_by_pihole + # Replace dnsmasq by pihole-FTL + # NOTE: pihole-FTL is actually a modified version of dnsmasq + # https://github.com/pi-hole/FTL/tree/master/dnsmasq + ln -s /usr/bin/pihole-FTL /usr/sbin/dnsmasq - cp -a $pihole_local_repo/advanced/Templates/pihole-FTL.service /etc/init.d/pihole-FTL - chmod +x /etc/init.d/pihole-FTL - ynh_exec_warn_less systemctl enable pihole-FTL --quiet + cp -a $pihole_local_repo/advanced/Templates/pihole-FTL.service /etc/init.d/pihole-FTL + chmod +x /etc/init.d/pihole-FTL + 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 -s /run/systemd/generator.late/pihole-FTL.service /etc/systemd/system/dnsmasq.service + # 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/dnsmasq.service - # Reload systemd config - systemctl daemon-reload + # Reload systemd config + systemctl daemon-reload fi #================================================= @@ -280,9 +279,9 @@ echo "IPV6_ADDRESS=::1" >> $setupVars echo "PIHOLE_DNS_1=" >> $setupVars echo "PIHOLE_DNS_2=" >> $setupVars if [ $query_logging -eq 1 ]; then - query_logging=true + query_logging=true else - query_logging=false + query_logging=false fi echo "QUERY_LOGGING=$query_logging" >> $setupVars echo "INSTALL_WEB=true" >> $setupVars @@ -301,12 +300,12 @@ localipv4=$(ip address | grep "${main_iface}\$" | awk '{print $2;}' | cut -d/ -f # 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 + # 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 + # 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/.*: \|.*- //')" #================================================= @@ -329,9 +328,9 @@ echo "$pihole_core_version $dashboard_version $FTL_version" | tee $pihole_storag if [ "$pihole_version" == "Last 3.X" ] then - cp $pihole_local_repo/advanced/pihole.cron /etc/cron.d/pihole + cp $pihole_local_repo/advanced/pihole.cron /etc/cron.d/pihole else - cp $pihole_local_repo/advanced/Templates/pihole.cron /etc/cron.d/pihole + cp $pihole_local_repo/advanced/Templates/pihole.cron /etc/cron.d/pihole fi # Remove git usage for version. Which fails because we use here a release instead of master. @@ -344,11 +343,11 @@ ynh_replace_string --match_string=".*updatechecker.*" --replace_string="#&" --ta # Restart dnsmasq only for the version 3.X, otherwise we're going to restart it twice. if [ "$pihole_version" == "Last 3.X" ] then - ynh_script_progression --message="Restarting Dnsmasq..." --weight=2 + ynh_script_progression --message="Restarting Dnsmasq..." --weight=2 - ynh_systemd_action --action=restart --service_name=dnsmasq + ynh_systemd_action --action=restart --service_name=dnsmasq - ynh_systemd_action --action=restart --service_name=pihole-FTL + ynh_systemd_action --action=restart --service_name=pihole-FTL fi #================================================= @@ -358,9 +357,9 @@ ynh_script_progression --message="Building the lists with Gravity..." --weight=7 if [ "$pihole_version" == "Last 3.X" ] then - cp "$pihole_local_repo/adlists.default" "$pihole_storage/adlists.default" + cp "$pihole_local_repo/adlists.default" "$pihole_storage/adlists.default" else - cp "../conf/adlists.default" "$pihole_storage/adlists.list" + cp "../conf/adlists.default" "$pihole_storage/adlists.list" fi ynh_exec_warn_less /opt/pihole/gravity.sh @@ -413,12 +412,12 @@ admin_panel="https://$(grep portal_domain /etc/ssowat/conf.json | cut -d'"' -f4) if [ $enable_dhcp -eq 1 ] then - dhcp_alert="You asked to use the internal DHCP server of dnsmasq with PiHole. + dhcp_alert="You asked to use the internal DHCP server of dnsmasq with PiHole. You should really read the __URL_TAG1__documentation about that__URL_TAG2__https://github.com/YunoHost-Apps/pihole_ynh/blob/master/dhcp.md__URL_TAG3__ " else - dhcp_alert="" + dhcp_alert="" fi echo "${dhcp_alert}You can configure this app easily by using the experimental __URL_TAG1__config-panel feature__URL_TAG2__$admin_panel/config-panel__URL_TAG3__. diff --git a/scripts/remove b/scripts/remove index 0870673..07c7805 100755 --- a/scripts/remove +++ b/scripts/remove @@ -1,7 +1,7 @@ #!/bin/bash #================================================= -# GENERIC STARTING +# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -23,14 +23,14 @@ pihole_version="$(ynh_app_setting_get --app=$app --key=pihole_version)" #================================================= # STANDARD REMOVE #================================================= -# REMOVE SERVICE FROM ADMIN PANEL +# REMOVE SERVICE INTEGRATION IN YUNOHOST #================================================= # Check if the service is declared in YunoHost if ynh_exec_fully_quiet yunohost service status pihole-FTL then - ynh_script_progression --message="Removing pihole-FTL service..." --weight=2 - yunohost service remove pihole-FTL + ynh_script_progression --message="Removing pihole-FTL service..." --weight=2 + yunohost service remove pihole-FTL fi #================================================= @@ -40,27 +40,27 @@ ynh_script_progression --message="Stop and remove the service" if [ "$pihole_version" == "Last 3.X" ] then - ynh_systemd_action --action=stop --service_name=pihole-FTL - ynh_exec_warn_less systemctl disable pihole-FTL --quiet + ynh_systemd_action --action=stop --service_name=pihole-FTL + ynh_exec_warn_less systemctl disable pihole-FTL --quiet else - ynh_systemd_action --action=stop --service_name=pihole-FTL + ynh_systemd_action --action=stop --service_name=pihole-FTL - # Restore dnsmasq as main DNS resolver - # Move dnsmasq back to its original place - if [ -e "/usr/sbin/dnsmasq.backup_by_pihole" ] - then # Remove dnsmasq only if we have its backup - ynh_secure_remove --file="/usr/sbin/dnsmasq" - mv /usr/sbin/dnsmasq.backup_by_pihole /usr/sbin/dnsmasq - fi + # Restore dnsmasq as main DNS resolver + # Move dnsmasq back to its original place + if [ -e "/usr/sbin/dnsmasq.backup_by_pihole" ] + then # Remove dnsmasq only if we have its backup + ynh_secure_remove --file="/usr/sbin/dnsmasq" + mv /usr/sbin/dnsmasq.backup_by_pihole /usr/sbin/dnsmasq + fi - # Move back the service configuration for dnsmasq - 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 + # Move back the service configuration for dnsmasq + 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 - ynh_exec_warn_less systemctl enable dnsmasq --quiet - # Reload systemd config - systemctl daemon-reload + ynh_exec_warn_less systemctl enable dnsmasq --quiet + # Reload systemd config + systemctl daemon-reload fi ynh_secure_remove --file="/etc/init.d/pihole-FTL" @@ -95,7 +95,7 @@ ynh_secure_remove --file="/etc/.pihole" #================================================= ynh_script_progression --message="Removing NGINX web server configuration..." -# Remove the dedicated nginx config +# Remove the dedicated NGINX config ynh_remove_nginx_config #================================================= @@ -103,7 +103,7 @@ ynh_remove_nginx_config #================================================= ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=2 -# Remove the dedicated php-fpm config +# Remove the dedicated PHP-FPM config ynh_remove_fpm_config #================================================= @@ -113,28 +113,25 @@ ynh_script_progression --message="Closing ports $port and 67..." --weight=13 if yunohost firewall list | grep -q "\- $port$" then - ynh_print_info "Close port $port" - ynh_exec_quiet yunohost firewall disallow TCP $port + ynh_print_info "Close port $port" + ynh_exec_quiet yunohost firewall disallow TCP $port fi if yunohost firewall list | grep -q "\- 67$" then - ynh_print_info "Close port 67" - ynh_exec_quiet yunohost firewall disallow UDP 67 + ynh_print_info "Close port 67" + ynh_exec_quiet yunohost firewall disallow UDP 67 fi #================================================= # SPECIFIC REMOVE #================================================= -# REMOVE CRON FILE +# REMOVE VARIOUS FILES #================================================= +ynh_script_progression --message="Removing various files..." ynh_secure_remove --file="/etc/cron.d/pihole" -#================================================= -# REMOVE OTHER FILES -#================================================= - # Remove logs ynh_secure_remove --file="/var/log/pihole.log" ynh_secure_remove --file="/var/log/pihole-FTL.log" @@ -182,7 +179,7 @@ ynh_script_progression --message="Restarting Dnsmasq..." ynh_systemd_action --action=restart --service_name=dnsmasq #================================================= -# GENERIC FINALISATION +# GENERIC FINALIZATION #================================================= # REMOVE DEDICATED USER #================================================= @@ -190,8 +187,8 @@ ynh_script_progression --message="Removing the dedicated system user..." --weigh if [ "$pihole_version" == "Last 3.X" ] then - # Dirty hack to remove correctly the user - killall -u $app + # Dirty hack to remove correctly the user + killall -u $app fi ynh_system_user_delete --username=$app diff --git a/scripts/restore b/scripts/restore index a0f1e61..510c023 100644 --- a/scripts/restore +++ b/scripts/restore @@ -6,9 +6,8 @@ # IMPORT GENERIC HELPERS #================================================= -# Load common variables for all scripts. +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_variables - source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers @@ -45,7 +44,7 @@ fpm_service=$(ynh_app_setting_get --app=$app --key=fpm_service) ynh_script_progression --message="Validating restoration parameters..." test ! -d $final_path \ - || ynh_die --message="There is already a directory: $final_path " + || ynh_die --message="There is already a directory: $final_path " #================================================= # ACTIVATE MAINTENANCE MODE @@ -62,6 +61,14 @@ ynh_maintenance_mode_ON ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" +#================================================= +# RECREATE THE DEDICATED USER +#================================================= +ynh_script_progression --message="Recreating the dedicated system user..." --weight=2 + +# Create the dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir=$final_path + #================================================= # RESTORE THE MAIN DIRECTORIES OF THE APP #================================================= @@ -75,18 +82,6 @@ ynh_restore_file --origin_path="/etc/pihole" ynh_restore_file --origin_path="/opt/pihole" -#================================================= -# RECREATE THE DEDICATED USER -#================================================= -ynh_script_progression --message="Recreating the dedicated system user..." --weight=2 - -# Create the dedicated user (if not existing) -ynh_system_user_create --username=$app - -#================================================= -# RESTORE USER RIGHTS -#================================================= - # Restore permissions on app files chown $app: -R "/etc/pihole" # /etc/pihole/logrotate have to belong to root, otherwise logrotate will failed silently... @@ -111,7 +106,8 @@ ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint --dedicated_ser #================================================= ynh_script_progression --message="Reinstalling dependencies..." --weight=12 -ynh_install_app_dependencies $app_depencencies +# Define and install dependencies +ynh_install_app_dependencies $pkg_dependencies #================================================= # ADVERTISE SERVICE IN ADMIN PANEL @@ -155,35 +151,35 @@ ynh_restore_file --origin_path="/usr/share/yunohost/hooks/conf_regen/50-dnsmasq_ if [ "$pihole_version" == "Last available" ] then - # Last version available - # Stopped dnsmasq to replace it by pihole-FTL - ynh_systemd_action --action=stop --service_name=dnsmasq + # Last version available + # Stopped dnsmasq to replace it by pihole-FTL + ynh_systemd_action --action=stop --service_name=dnsmasq - # Disable the real dnsmasq service - ynh_exec_warn_less systemctl disable dnsmasq --quiet + # Disable the real dnsmasq service + ynh_exec_warn_less systemctl disable dnsmasq --quiet - # And move the files that make the service available in systemd to really disable it - mv /lib/systemd/system/dnsmasq.service /lib/systemd/system/.dnsmasq.service.backup_by_pihole - mv /etc/init.d/dnsmasq /etc/init.d/.dnsmasq.backup_by_pihole + # And move the files that make the service available in systemd to really disable it + mv /lib/systemd/system/dnsmasq.service /lib/systemd/system/.dnsmasq.service.backup_by_pihole + mv /etc/init.d/dnsmasq /etc/init.d/.dnsmasq.backup_by_pihole - # Move dnsmasq to preserve the current binary - mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.backup_by_pihole - # Replace dnsmasq by pihole-FTL - # NOTE: pihole-FTL is actually a modified version of dnsmasq - # https://github.com/pi-hole/FTL/tree/master/dnsmasq - ln -s /usr/bin/pihole-FTL /usr/sbin/dnsmasq + # Move dnsmasq to preserve the current binary + mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.backup_by_pihole + # Replace dnsmasq by pihole-FTL + # NOTE: pihole-FTL is actually a modified version of dnsmasq + # https://github.com/pi-hole/FTL/tree/master/dnsmasq + ln -s /usr/bin/pihole-FTL /usr/sbin/dnsmasq - pihole_local_repo="/etc/.pihole" - cp -a $pihole_local_repo/advanced/Templates/pihole-FTL.service /etc/init.d/pihole-FTL - chmod +x /etc/init.d/pihole-FTL - ynh_exec_warn_less systemctl enable pihole-FTL --quiet + pihole_local_repo="/etc/.pihole" + cp -a $pihole_local_repo/advanced/Templates/pihole-FTL.service /etc/init.d/pihole-FTL + chmod +x /etc/init.d/pihole-FTL + 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 -s /run/systemd/generator.late/pihole-FTL.service /etc/systemd/system/dnsmasq.service + # 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/dnsmasq.service - # Reload systemd config - systemctl daemon-reload + # Reload systemd config + systemctl daemon-reload fi #================================================= @@ -192,7 +188,7 @@ fi ynh_script_progression --message="Restoring Dnsmasq config..." 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="/etc/dnsmasq.d/03-pihole-wildcard.conf" systemctl daemon-reload ynh_exec_warn_less yunohost tools regen-conf dnsmasq @@ -210,12 +206,12 @@ localipv4=$(ip address | grep "${main_iface}\$" | awk '{print $2;}' | cut -d/ -f # 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 + # 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 + # 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/.*: \|.*- //')" #================================================= @@ -225,9 +221,9 @@ done <<< "$(yunohost domain list | grep "\." | sed 's/.*: \|.*- //')" # Restart dnsmasq only for the version 3.X, otherwise we're going to restart it twice. if [ "$pihole_version" == "Last 3.X" ] then - ynh_script_progression --message="Restarting Dnsmasq..." + ynh_script_progression --message="Restarting Dnsmasq..." - ynh_systemd_action --action=restart --service_name=dnsmasq + ynh_systemd_action --action=restart --service_name=dnsmasq fi #================================================= @@ -252,7 +248,7 @@ ynh_exec_warn_less systemctl enable pihole-FTL --quiet ynh_systemd_action --action=restart --service_name=pihole-FTL #================================================= -# GENERIC FINALISATION +# GENERIC FINALIZATION #================================================= # RELOAD NGINX AND PHP-FPM #================================================= @@ -277,12 +273,12 @@ admin_panel="https://$(grep portal_domain /etc/ssowat/conf.json | cut -d'"' -f4) if [ $enable_dhcp -eq 1 ] then - dhcp_alert="You asked to use the internal DHCP server of Dnsmasq with PiHole. + dhcp_alert="You asked to use the internal DHCP server of Dnsmasq with PiHole. You should really read the __URL_TAG1__documentation about that__URL_TAG2__https://github.com/YunoHost-Apps/pihole_ynh/blob/master/dhcp.md__URL_TAG3__ " else - dhcp_alert="" + dhcp_alert="" fi echo "${dhcp_alert}You can configure this app easily by using the experimental __URL_TAG1__config-panel feature__URL_TAG2__$admin_panel/config-panel__URL_TAG3__. diff --git a/scripts/upgrade b/scripts/upgrade index 9bb1904..ed85657 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,14 +1,13 @@ #!/bin/bash #================================================= -# GENERIC STARTING +# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= # Load common variables for all scripts. source _variables - source _common.sh source /usr/share/yunohost/helpers @@ -39,62 +38,10 @@ fpm_usage=$(ynh_app_setting_get --app=$app --key=fpm_usage) #================================================= # CHECK VERSION #================================================= +ynh_script_progression --message="Checking version..." upgrade_type=$(ynh_check_app_version_changed) -#================================================= -# ENSURE DOWNWARD COMPATIBILITY -#================================================= -ynh_script_progression --message="Ensuring downward compatibility..." - -# If overwrite_setupvars doesn't exist, create it -if [ -z "$overwrite_setupvars" ]; then - overwrite_setupvars=1 - ynh_app_setting_set --app=$app --key=overwrite_setupvars --value=$overwrite_setupvars -fi - -# If overwrite_ftl doesn't exist, create it -if [ -z "$overwrite_ftl" ]; then - overwrite_ftl=1 - ynh_app_setting_set --app=$app --key=overwrite_ftl --value=$overwrite_ftl -fi - -# If overwrite_nginx doesn't exist, create it -if [ -z "$overwrite_nginx" ]; then - overwrite_nginx=1 - ynh_app_setting_set --app=$app --key=overwrite_nginx --value=$overwrite_nginx -fi - -# If overwrite_phpfpm doesn't exist, create it -if [ -z "$overwrite_phpfpm" ]; then - overwrite_phpfpm=1 - ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value=$overwrite_phpfpm -fi - -# If admin_mail_html doesn't exist, create it -if [ -z "$admin_mail_html" ]; then - admin_mail_html=1 - ynh_app_setting_set --app=$app --key=admin_mail_html --value=$admin_mail_html -fi - -# If fpm_footprint doesn't exist, create it -if [ -z "$fpm_footprint" ]; then - fpm_footprint=low - ynh_app_setting_set --app=$app --key=fpm_footprint --value=$fpm_footprint -fi - -# If fpm_usage doesn't exist, create it -if [ -z "$fpm_usage" ]; then - fpm_usage=low - ynh_app_setting_set --app=$app --key=fpm_usage --value=$fpm_usage -fi - -# If pihole_version doesn't exist, create it -if [ -z "$pihole_version" ]; then - pihole_version="Last 3.X" - ynh_app_setting_set --app=$app --key=pihole_version --value="$pihole_version" -fi - #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= @@ -103,8 +50,8 @@ ynh_script_progression --message="Backing up the app before upgrading (may take # Backup the current version of the app ynh_backup_before_upgrade ynh_clean_setup () { - # restore it if the upgrade fails - ynh_restore_upgradebackup + # Restore it if the upgrade fails + ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -119,11 +66,57 @@ ynh_maintenance_mode_ON #================================================= # STANDARD UPGRADE STEPS #================================================= -# INSTALL DEPENDENCIES +# ENSURE DOWNWARD COMPATIBILITY #================================================= -ynh_script_progression --message="Upgrading dependencies..." --weight=6 +ynh_script_progression --message="Ensuring downward compatibility..." -ynh_install_app_dependencies $app_depencencies +# If overwrite_setupvars doesn't exist, create it +if [ -z "$overwrite_setupvars" ]; then + overwrite_setupvars=1 + ynh_app_setting_set --app=$app --key=overwrite_setupvars --value=$overwrite_setupvars +fi + +# If overwrite_ftl doesn't exist, create it +if [ -z "$overwrite_ftl" ]; then + overwrite_ftl=1 + ynh_app_setting_set --app=$app --key=overwrite_ftl --value=$overwrite_ftl +fi + +# If overwrite_nginx doesn't exist, create it +if [ -z "$overwrite_nginx" ]; then + overwrite_nginx=1 + ynh_app_setting_set --app=$app --key=overwrite_nginx --value=$overwrite_nginx +fi + +# If overwrite_phpfpm doesn't exist, create it +if [ -z "$overwrite_phpfpm" ]; then + overwrite_phpfpm=1 + ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value=$overwrite_phpfpm +fi + +# If admin_mail_html doesn't exist, create it +if [ -z "$admin_mail_html" ]; then + admin_mail_html=1 + ynh_app_setting_set --app=$app --key=admin_mail_html --value=$admin_mail_html +fi + +# If fpm_footprint doesn't exist, create it +if [ -z "$fpm_footprint" ]; then + fpm_footprint=low + ynh_app_setting_set --app=$app --key=fpm_footprint --value=$fpm_footprint +fi + +# If fpm_usage doesn't exist, create it +if [ -z "$fpm_usage" ]; then + fpm_usage=low + ynh_app_setting_set --app=$app --key=fpm_usage --value=$fpm_usage +fi + +# If pihole_version doesn't exist, create it +if [ -z "$pihole_version" ]; then + pihole_version="Last 3.X" + ynh_app_setting_set --app=$app --key=pihole_version --value="$pihole_version" +fi #================================================= # CREATE DEDICATED USER @@ -140,19 +133,19 @@ ynh_system_user_create --username=$app pihole_local_repo="/etc/.pihole" if [ "$upgrade_type" == "UPGRADE_APP" ] then - ynh_script_progression --message="Upgrading source files..." --weight=4 - if [ "$pihole_version" == "Last 3.X" ] - then - # Update the version 3.X - ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_3 - # Update admin dashboard - ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_3 - else - # Update the last version available - ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_last - # Update admin dashboard - ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_last - fi + ynh_script_progression --message="Upgrading source files..." --weight=4 + if [ "$pihole_version" == "Last 3.X" ] + then + # Update the version 3.X + ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_3 + # Update admin dashboard + ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_3 + else + # Update the last version available + ynh_setup_source --dest_dir="$pihole_local_repo" --source_id=app_last + # Update admin dashboard + ynh_setup_source --dest_dir="$final_path" --source_id=admin_dashboard_last + fi fi chown $app:www-data "$final_path" @@ -164,11 +157,18 @@ chown $app:www-data "$final_path" # Overwrite the nginx configuration only if it's allowed if [ $overwrite_nginx -eq 1 ] then - ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=2 - # Create a dedicated nginx config - ynh_add_nginx_config + ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=2 + # Create a dedicated NGINX config + ynh_add_nginx_config fi +#================================================= +# UPGRADE DEPENDENCIES +#================================================= +ynh_script_progression --message="Upgrading dependencies..." --weight=6 + +ynh_install_app_dependencies $pkg_dependencies + #================================================= # PHP-FPM CONFIGURATION #================================================= @@ -176,9 +176,9 @@ fi # Overwrite the php-fpm configuration only if it's allowed if [ $overwrite_phpfpm -eq 1 ] then - ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=3 - # Create a dedicated php-fpm config - ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint --dedicated_service + ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=3 + # Create a dedicated php-fpm config + ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint --dedicated_service fi #================================================= @@ -209,9 +209,9 @@ cp -a "$pihole_local_repo/advanced/bash-completion/pihole" /etc/bash_completion. # This sudoers config allow pihole to execute /usr/local/bin/pihole as root without password. Nothing more. if [ "$pihole_version" == "Last 3.X" ] then - cp "$pihole_local_repo/advanced/pihole.sudo" /etc/sudoers.d/pihole + cp "$pihole_local_repo/advanced/pihole.sudo" /etc/sudoers.d/pihole else - cp "$pihole_local_repo/advanced/Templates/pihole.sudo" /etc/sudoers.d/pihole + cp "$pihole_local_repo/advanced/Templates/pihole.sudo" /etc/sudoers.d/pihole fi echo "$app ALL=NOPASSWD: /usr/local/bin/pihole" >> /etc/sudoers.d/pihole chmod 0440 /etc/sudoers.d/pihole @@ -223,11 +223,11 @@ chmod 0440 /etc/sudoers.d/pihole pihole_storage="/etc/pihole" if [ "$pihole_version" == "Last 3.X" ] then - cp "$pihole_local_repo/advanced/logrotate" "$pihole_storage/logrotate" - dnsmasq_user=$(grep DNSMASQ_USER= /etc/init.d/dnsmasq | cut -d'"' -f2) + cp "$pihole_local_repo/advanced/logrotate" "$pihole_storage/logrotate" + dnsmasq_user=$(grep DNSMASQ_USER= /etc/init.d/dnsmasq | cut -d'"' -f2) else - cp "$pihole_local_repo/advanced/Templates/logrotate" "$pihole_storage/logrotate" - dnsmasq_user=$(grep FTLUSER= /etc/init.d/pihole-FTL | cut -d'=' -f2) + cp "$pihole_local_repo/advanced/Templates/logrotate" "$pihole_storage/logrotate" + dnsmasq_user=$(grep FTLUSER= /etc/init.d/pihole-FTL | cut -d'=' -f2) fi sed -i "/# su #/d;" "$pihole_storage/logrotate" @@ -240,75 +240,75 @@ ynh_systemd_action --action=stop --service_name=pihole-FTL if [ "$upgrade_type" == "UPGRADE_APP" ] then - # Get the source of Pi-Hole-FTL - FTL_temp_path=$(mktemp -d) - if [ "$pihole_version" == "Last 3.X" ] - then - # Install the version 3.3.1 - ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_3 - else - # Install the last version available - ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_last - fi + # Get the source of Pi-Hole-FTL + FTL_temp_path=$(mktemp -d) + if [ "$pihole_version" == "Last 3.X" ] + then + # Install the version 3.3.1 + ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_3 + else + # Install the last version available + ynh_setup_source --dest_dir="$FTL_temp_path" --source_id=FTL_last + fi - # Instead of downloading a binary file, we're going to compile it - ( cd "$FTL_temp_path" - if [ "$pihole_version" == "Last available" ] - then - ynh_exec_warn_less cmake . - fi - ynh_exec_warn_less make - ynh_exec_warn_less make install ) - ynh_secure_remove --file="$FTL_temp_path" + # Instead of downloading a binary file, we're going to compile it + ( cd "$FTL_temp_path" + if [ "$pihole_version" == "Last available" ] + then + ynh_exec_warn_less cmake . + fi + ynh_exec_warn_less make + ynh_exec_warn_less make install ) + ynh_secure_remove --file="$FTL_temp_path" fi # Overwrite pihole-FTL config file only if it's allowed if [ $overwrite_ftl -eq 1 ] then - ynh_add_config --template="../conf/pihole-FTL.conf" --destination="$pihole_storage/pihole-FTL.conf" + ynh_add_config --template="../conf/pihole-FTL.conf" --destination="$pihole_storage/pihole-FTL.conf" fi if [ "$pihole_version" == "Last 3.X" ] then - # Version 3.3.1 - cp -a $pihole_local_repo/advanced/pihole-FTL.service /etc/init.d/pihole-FTL - chmod +x /etc/init.d/pihole-FTL - ynh_exec_warn_less systemctl enable pihole-FTL --quiet + # Version 3.3.1 + cp -a $pihole_local_repo/advanced/pihole-FTL.service /etc/init.d/pihole-FTL + chmod +x /etc/init.d/pihole-FTL + ynh_exec_warn_less systemctl enable pihole-FTL --quiet else - # Last version available - # Stopped dnsmasq to replace it by pihole-FTL - ynh_systemd_action --action=stop --service_name=dnsmasq + # Last version available + # Stopped dnsmasq to replace it by pihole-FTL + ynh_systemd_action --action=stop --service_name=dnsmasq - # Disable the real dnsmasq service - ynh_exec_warn_less systemctl disable dnsmasq --quiet + # Disable the real dnsmasq service + ynh_exec_warn_less systemctl disable dnsmasq --quiet - # And move the files that make the service available in systemd to really disable it - if [ ! -e "/lib/systemd/system/.dnsmasq.service.backup_by_pihole" ]; then - mv /lib/systemd/system/dnsmasq.service /lib/systemd/system/.dnsmasq.service.backup_by_pihole - fi - if [ ! -e "/etc/init.d/.dnsmasq.backup_by_pihole" ]; then - mv /etc/init.d/dnsmasq /etc/init.d/.dnsmasq.backup_by_pihole - fi + # And move the files that make the service available in systemd to really disable it + if [ ! -e "/lib/systemd/system/.dnsmasq.service.backup_by_pihole" ]; then + mv /lib/systemd/system/dnsmasq.service /lib/systemd/system/.dnsmasq.service.backup_by_pihole + fi + if [ ! -e "/etc/init.d/.dnsmasq.backup_by_pihole" ]; then + mv /etc/init.d/dnsmasq /etc/init.d/.dnsmasq.backup_by_pihole + fi - # Move dnsmasq to preserve the current binary - if [ ! -e "/usr/sbin/dnsmasq.backup_by_pihole" ]; then - mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.backup_by_pihole - fi - # Replace dnsmasq by pihole-FTL - # NOTE: pihole-FTL is actually a modified version of dnsmasq - # https://github.com/pi-hole/FTL/tree/master/dnsmasq - ln -sf /usr/bin/pihole-FTL /usr/sbin/dnsmasq + # Move dnsmasq to preserve the current binary + if [ ! -e "/usr/sbin/dnsmasq.backup_by_pihole" ]; then + mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.backup_by_pihole + fi + # Replace dnsmasq by pihole-FTL + # NOTE: pihole-FTL is actually a modified version of dnsmasq + # https://github.com/pi-hole/FTL/tree/master/dnsmasq + ln -sf /usr/bin/pihole-FTL /usr/sbin/dnsmasq - cp -a $pihole_local_repo/advanced/Templates/pihole-FTL.service /etc/init.d/pihole-FTL - chmod +x /etc/init.d/pihole-FTL - ynh_exec_warn_less systemctl enable pihole-FTL --quiet + cp -a $pihole_local_repo/advanced/Templates/pihole-FTL.service /etc/init.d/pihole-FTL + chmod +x /etc/init.d/pihole-FTL + 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 + # 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 - # Reload systemd config - systemctl daemon-reload + # Reload systemd config + systemctl daemon-reload fi #================================================= @@ -320,26 +320,26 @@ setupVars="$pihole_storage/setupVars.conf" # Overwrite the setupVars config file only if it's allowed if [ $overwrite_setupvars -eq 1 ] then - # Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script. - ynh_backup_if_checksum_is_different --file="$setupVars" + # Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script. + ynh_backup_if_checksum_is_different --file="$setupVars" - # Get the default network interface - main_iface=$(ip route | grep --max-count=1 default | awk '{print $5;}') - echo "PIHOLE_INTERFACE=$main_iface" > $setupVars - echo "IPV4_ADDRESS=127.0.0.1" >> $setupVars - echo "IPV6_ADDRESS=::1" >> $setupVars - echo "PIHOLE_DNS_1=" >> $setupVars - echo "PIHOLE_DNS_2=" >> $setupVars - if [ $query_logging -eq 1 ]; then - query_logging=true - else - query_logging=false - fi - echo "QUERY_LOGGING=$query_logging" >> $setupVars - echo "INSTALL_WEB=true" >> $setupVars + # Get the default network interface + main_iface=$(ip route | grep --max-count=1 default | awk '{print $5;}') + echo "PIHOLE_INTERFACE=$main_iface" > $setupVars + echo "IPV4_ADDRESS=127.0.0.1" >> $setupVars + echo "IPV6_ADDRESS=::1" >> $setupVars + echo "PIHOLE_DNS_1=" >> $setupVars + echo "PIHOLE_DNS_2=" >> $setupVars + if [ $query_logging -eq 1 ]; then + query_logging=true + else + query_logging=false + fi + echo "QUERY_LOGGING=$query_logging" >> $setupVars + echo "INSTALL_WEB=true" >> $setupVars - # Recalculate and store the checksum of the file for the next upgrade. - ynh_store_file_checksum --file="$setupVars" + # Recalculate and store the checksum of the file for the next upgrade. + ynh_store_file_checksum --file="$setupVars" fi #================================================= @@ -355,17 +355,17 @@ echo "$pihole_core_version $dashboard_version $FTL_version" | tee $pihole_storag if [ "$pihole_version" == "Last 3.X" ] then - cp $pihole_local_repo/advanced/pihole.cron /etc/cron.d/pihole + cp $pihole_local_repo/advanced/pihole.cron /etc/cron.d/pihole else - cp $pihole_local_repo/advanced/Templates/pihole.cron /etc/cron.d/pihole + cp $pihole_local_repo/advanced/Templates/pihole.cron /etc/cron.d/pihole fi # Remove git usage for version. Which fails because we use here a release instead of master. ynh_replace_string --match_string=".*updatechecker.*" --replace_string="#&" --target_file=/etc/cron.d/pihole #================================================= -# ADVERTISE SERVICE IN ADMIN PANEL +# INTEGRATE SERVICE IN YUNOHOST #================================================= - +ynh_script_progression --message="Integrating service in YunoHost..." yunohost service add pihole-FTL --description="PiHole backend service" --log="/var/log/pihole-FTL.log" #================================================= @@ -410,20 +410,20 @@ admin_panel="https://$(grep portal_domain /etc/ssowat/conf.json | cut -d'"' -f4) # If a html email is required. Apply html to the changelog. if [ "$admin_mail_html" -eq 1 ]; then - format=html + format=html else - format=plain + format=plain fi ynh_app_changelog --format=$format if [ $enable_dhcp -eq 1 ] then - dhcp_alert="You asked to use the internal DHCP server of dnsmasq with PiHole. + dhcp_alert="You asked to use the internal DHCP server of dnsmasq with PiHole. You should really read the documentation about that, https://github.com/YunoHost-Apps/pihole_ynh/blob/master/dhcp.md " else - dhcp_alert="" + dhcp_alert="" fi echo "${dhcp_alert}You can configure this app easily by using the experimental __URL_TAG1__config-panel feature__URL_TAG2__$admin_panel/config-panel__URL_TAG3__.