Browse Source

Update package

Maniack Crudelis 8 years ago
parent
commit
5facd01339
5 changed files with 217 additions and 193 deletions
  1. 56 11
      README.md
  2. 117 0
      YEP.md
  3. 6 2
      check_process
  4. 32 176
      scripts/_common.sh
  5. 6 4
      scripts/change_url

+ 56 - 11
README.md

@@ -1,17 +1,62 @@
-Pi-hole for YunoHost
-==================
+# Pi-hole for YunoHost
 
 
-[Yunohost project](https://yunohost.org/#/)
+[![Integration level](https://dash.yunohost.org/integration/pihole.svg)](https://ci-apps.yunohost.org/jenkins/job/pihole%20%28Community%29/lastBuild/consoleFull)  
+[![Install Pi-hole with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=pihole
 
 
-Filtrage publicitaire sur l'ensemble du réseau via votre propre serveur DNS.
+> *This package allow you to install Pi-hole quickly and simply on a YunoHost server.  
+If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.*
 
 
-https://pi-hole.net/
+## Overview
+Network-wide ad blocking via your own Linux hardware
 
 
-**Mise à jour du package:**
-sudo yunohost app upgrade pihole -u https://github.com/YunoHost-Apps/pihole_ynh
+**Shipped version:** 3.1.4
 
 
-**Multi-utilisateur:** Non applicable
+## Screenshots
 
 
-**Voir l'état du package:**  
-*[Dernier rapport hebdomadaire](https://forum.yunohost.org/t/rapport-hebdomadaire-dintegration-continue/2297)*  
-*[Dernier test d'intégration continue](https://ci-apps.yunohost.org/jenkins/job/pihole%20%28Community%29/lastBuild/consoleFull)*
+![](https://i0.wp.com/pi-hole.net/wp-content/uploads/2016/12/dashboard212.png)
+
+## Configuration
+
+Use the admin panel of your Pi-hole to configure this app.
+
+## Documentation
+
+* Official documentation: Not found
+* Pi-hole as a DHCP server: [dhcp.md](./dhcp.md)
+* YunoHost documentation: There no other documentations, feel free to contribute.
+
+## YunoHost specific features
+
+* Private access to the admin panel.
+
+#### Multi-users support
+
+#### Supported architectures
+
+* Tested on x86_64
+
+## Limitations
+
+* Activate DHCP with Pi-hole need a manuel configuration of your router.
+
+## Additionnal informations
+
+## Links
+
+ * Report a bug: https://github.com/YunoHost-Apps/pihole_ynh/issues
+ * Pi-hole website: https://pi-hole.net/
+ * YunoHost website: https://yunohost.org/
+
+---
+
+Developers infos
+----------------
+
+Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/pihole_ynh/tree/testing).
+
+To try the testing branch, please proceed like that.
+```
+sudo yunohost app install https://github.com/YunoHost-Apps/pihole_ynh/tree/testing --verbose
+or
+sudo yunohost app upgrade pihole -u https://github.com/YunoHost-Apps/pihole_ynh/tree/testing --verbose
+```

+ 117 - 0
YEP.md

@@ -0,0 +1,117 @@
+#### [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`.

+ 6 - 2
check_process

@@ -10,9 +10,10 @@
 		setup_sub_dir=1
 		setup_sub_dir=1
 		setup_root=1
 		setup_root=1
 		setup_nourl=0
 		setup_nourl=0
-		setup_private=0
+		setup_private=1
 		setup_public=0
 		setup_public=0
 		upgrade=1
 		upgrade=1
+		upgrade=1	from_commit=32af3e208d36dd9601dd7a33efab656425822782
 		backup_restore=1
 		backup_restore=1
 		multi_instance=0
 		multi_instance=0
 		incorrect_path=1
 		incorrect_path=1
@@ -24,7 +25,6 @@
 	Level 3=auto
 	Level 3=auto
 # Level 4: 
 # Level 4: 
 	Level 4=na
 	Level 4=na
-# Level 5: 
 	Level 5=auto
 	Level 5=auto
 	Level 6=auto
 	Level 6=auto
 	Level 7=auto
 	Level 7=auto
@@ -34,3 +34,7 @@
 ;;; Options
 ;;; Options
 Email=
 Email=
 Notification=down
 Notification=down
+;;; Upgrade options
+	; commit=32af3e208d36dd9601dd7a33efab656425822782
+		name= Première version du package
+		manifest_arg=domain=DOMAIN&path=PATH&admin=USER&query_logging=1&

+ 32 - 176
scripts/_common.sh

@@ -1,135 +1,5 @@
 #!/bin/bash
 #!/bin/bash
 
 
-# =============================================================================
-#                     YUNOHOST 2.7 FORTHCOMING HELPERS
-# =============================================================================
-
-# Create a dedicated nginx config
-#
-# usage: ynh_add_nginx_config
-ynh_add_nginx_config () {
-	finalnginxconf="/etc/nginx/conf.d/$domain.d/$app.conf"
-	ynh_backup_if_checksum_is_different "$finalnginxconf"
-	sudo cp ../conf/nginx.conf "$finalnginxconf"
-
-	# To avoid a break by set -u, use a void substitution ${var:-}. If the variable is not set, it's simply set with an empty variable.
-	# Substitute in a nginx config file only if the variable is not empty
-	if test -n "${path_url:-}"; then
-		ynh_replace_string "__PATH__" "$path_url" "$finalnginxconf"
-	fi
-	if test -n "${domain:-}"; then
-		ynh_replace_string "__DOMAIN__" "$domain" "$finalnginxconf"
-	fi
-	if test -n "${port:-}"; then
-		ynh_replace_string "__PORT__" "$port" "$finalnginxconf"
-	fi
-	if test -n "${app:-}"; then
-		ynh_replace_string "__NAME__" "$app" "$finalnginxconf"
-	fi
-	if test -n "${final_path:-}"; then
-		ynh_replace_string "__FINALPATH__" "$final_path" "$finalnginxconf"
-	fi
-	ynh_store_file_checksum "$finalnginxconf"
-
-	sudo systemctl reload nginx
-}
-
-# Remove the dedicated nginx config
-#
-# usage: ynh_remove_nginx_config
-ynh_remove_nginx_config () {
-	ynh_secure_remove "/etc/nginx/conf.d/$domain.d/$app.conf"
-	sudo systemctl reload nginx
-}
-
-# Create a dedicated php-fpm config
-#
-# usage: ynh_add_fpm_config
-ynh_add_fpm_config () {
-	finalphpconf="/etc/php5/fpm/pool.d/$app.conf"
-	ynh_backup_if_checksum_is_different "$finalphpconf"
-	sudo cp ../conf/php-fpm.conf "$finalphpconf"
-	ynh_replace_string "__NAMETOCHANGE__" "$app" "$finalphpconf"
-	ynh_replace_string "__FINALPATH__" "$final_path" "$finalphpconf"
-	ynh_replace_string "__USER__" "$app" "$finalphpconf"
-	sudo chown root: "$finalphpconf"
-	ynh_store_file_checksum "$finalphpconf"
-
-	if [ -e "../conf/php-fpm.ini" ]
-	then
-		finalphpini="/etc/php5/fpm/conf.d/20-$app.ini"
-		ynh_backup_if_checksum_is_different "$finalphpini"
-		sudo cp ../conf/php-fpm.ini "$finalphpini"
-		sudo chown root: "$finalphpini"
-		ynh_store_file_checksum "$finalphpini"
-	fi
-
-	sudo systemctl reload php5-fpm
-}
-
-# Remove the dedicated php-fpm config
-#
-# usage: ynh_remove_fpm_config
-ynh_remove_fpm_config () {
-	ynh_secure_remove "/etc/php5/fpm/pool.d/$app.conf"
-	ynh_secure_remove "/etc/php5/fpm/conf.d/20-$app.ini" 2>&1
-	sudo systemctl reload php5-fpm
-}
-
-# Create a dedicated systemd config
-#
-# usage: ynh_add_systemd_config
-ynh_add_systemd_config () {
-	finalsystemdconf="/etc/systemd/system/$app.service"
-	ynh_backup_if_checksum_is_different "$finalsystemdconf"
-	sudo cp ../conf/systemd.service "$finalsystemdconf"
-
-	# To avoid a break by set -u, use a void substitution ${var:-}. If the variable is not set, it's simply set with an empty variable.
-	# Substitute in a nginx config file only if the variable is not empty
-	if test -n "${final_path:-}"; then
-		ynh_replace_string "__FINALPATH__" "$final_path" "$finalsystemdconf"
-	fi
-	if test -n "${app:-}"; then
-		ynh_replace_string "__APP__" "$app" "$finalsystemdconf"
-	fi
-	ynh_store_file_checksum "$finalsystemdconf"
-
-	sudo chown root: "$finalsystemdconf"
-	sudo systemctl enable $app
-	sudo systemctl daemon-reload
-}
-
-# Remove the dedicated systemd config
-#
-# usage: ynh_remove_systemd_config
-ynh_remove_systemd_config () {
-	finalsystemdconf="/etc/systemd/system/$app.service"
-	if [ -e "$finalsystemdconf" ]; then
-		sudo systemctl stop $app
-		sudo systemctl disable $app
-		ynh_secure_remove "$finalsystemdconf"
-	fi
-}
-
-#=================================================
-#=================================================
-
-#=================================================
-# CHECKING
-#=================================================
-
-CHECK_DOMAINPATH () {	# Vérifie la disponibilité du path et du domaine.
-	# Check availability of a web path
-	ynh_webpath_available $domain $path_url
-	# Register/book a web path for an app
-	ynh_webpath_register $app $domain $path_url
-}
-
-CHECK_FINALPATH () {	# Vérifie que le dossier de destination n'est pas déjà utilisé.
-	final_path=/var/www/$app
-	test ! -e "$final_path" || ynh_die "This path already contains a folder"
-}
-
 #=================================================
 #=================================================
 # DISPLAYING
 # DISPLAYING
 #=================================================
 #=================================================
@@ -160,35 +30,6 @@ ALL_QUIET () {	# Redirige la sortie standard et d'erreur dans /dev/null
 # BACKUP
 # BACKUP
 #=================================================
 #=================================================
 
 
-BACKUP_FAIL_UPGRADE () {
-	WARNING echo "Upgrade failed."
-	app_bck=${app//_/-}	# Replace all '_' by '-'
-	if sudo yunohost backup list | grep -q $app_bck-pre-upgrade$backup_number; then	# Vérifie l'existence de l'archive avant de supprimer l'application et de restaurer
-		sudo yunohost app remove $app	# Supprime l'application avant de la restaurer.
-		sudo yunohost backup restore --ignore-system $app_bck-pre-upgrade$backup_number --apps $app --force	# Restore the backup if upgrade failed
-		ynh_die "The app was restored to the way it was before the failed upgrade."
-	fi
-}
-
-BACKUP_BEFORE_UPGRADE () {	# Backup the current version of the app, restore it if the upgrade fails
-	backup_number=1
-	old_backup_number=2
-	app_bck=${app//_/-}	# Replace all '_' by '-'
-	if sudo yunohost backup list | grep -q $app_bck-pre-upgrade1; then	# Vérifie l'existence d'une archive déjà numéroté à 1.
-		backup_number=2	# Et passe le numéro de l'archive à 2
-		old_backup_number=1
-	fi
-
-	sudo yunohost backup create --ignore-system --apps $app --name $app_bck-pre-upgrade$backup_number	# Créer un backup différent de celui existant.
-	if [ "$?" -eq 0 ]; then	# Si le backup est un succès, supprime l'archive précédente.
-		if sudo yunohost backup list | grep -q $app_bck-pre-upgrade$old_backup_number; then	# Vérifie l'existence de l'ancienne archive avant de la supprimer, pour éviter une erreur.
-			QUIET sudo yunohost backup delete $app_bck-pre-upgrade$old_backup_number
-		fi
-	else	# Si le backup a échoué
-		ynh_die "Backup failed, the upgrade process was aborted."
-	fi
-}
-
 HUMAN_SIZE () {	# Transforme une taille en Ko en une taille lisible pour un humain
 HUMAN_SIZE () {	# Transforme une taille en Ko en une taille lisible pour un humain
 	human=$(numfmt --to=iec --from-unit=1K $1)
 	human=$(numfmt --to=iec --from-unit=1K $1)
 	echo $human
 	echo $human
@@ -196,8 +37,8 @@ HUMAN_SIZE () {	# Transforme une taille en Ko en une taille lisible pour un huma
 
 
 CHECK_SIZE () {	# Vérifie avant chaque backup que l'espace est suffisant
 CHECK_SIZE () {	# Vérifie avant chaque backup que l'espace est suffisant
 	file_to_analyse=$1
 	file_to_analyse=$1
-	backup_size=$(sudo du --summarize "$file_to_analyse" | cut -f1)
-	free_space=$(sudo df --output=avail "/home/yunohost.backup" | sed 1d)
+	backup_size=$(du --summarize "$file_to_analyse" | cut -f1)
+	free_space=$(df --output=avail "/home/yunohost.backup" | sed 1d)
 
 
 	if [ $free_space -le $backup_size ]
 	if [ $free_space -le $backup_size ]
 	then
 	then
@@ -207,14 +48,6 @@ CHECK_SIZE () {	# Vérifie avant chaque backup que l'espace est suffisant
 	fi
 	fi
 }
 }
 
 
-# Ce helper est temporaire et sert de remplacement à la véritable fonction ynh_restore_file. Le temps qu'elle arrive...
-ynh_restore_file () {
-	if [ -f "$1" ]; then
-		ynh_die "There is already a file at this path: $1"
-	fi
-	sudo cp -a "${YNH_APP_BACKUP_DIR}$1" "$1"
-}
-
 #=================================================
 #=================================================
 # PACKAGE CHECK BYPASSING...
 # PACKAGE CHECK BYPASSING...
 #=================================================
 #=================================================
@@ -241,11 +74,27 @@ IS_PACKAGE_CHECK () {	# Détermine une exécution en conteneur (Non testé)
 # Dans ce cas, c'est $PATH qui contient le chemin de la version de node. Il doit être propagé sur les autres shell si nécessaire.
 # Dans ce cas, c'est $PATH qui contient le chemin de la version de node. Il doit être propagé sur les autres shell si nécessaire.
 
 
 n_install_dir="/opt/node_n"
 n_install_dir="/opt/node_n"
-node_version_path="/usr/local/n/versions/node"
+node_version_path="/opt/node_n/n/versions/node"
+# N_PREFIX est le dossier de n, il doit être chargé dans les variables d'environnement pour n.
+export N_PREFIX="$n_install_dir"
+
+ynh_install_n () {
+	echo "Installation of N - Node.js version management" >&2
+	# Build an app.src for n
+	mkdir -p "../conf"
+	echo "SOURCE_URL=https://github.com/tj/n/archive/v2.1.7.tar.gz
+SOURCE_SUM=2ba3c9d4dd3c7e38885b37e02337906a1ee91febe6d5c9159d89a9050f2eea8f" > "../conf/n.src"
+	# Download and extract n
+	ynh_setup_source "$n_install_dir/git" n
+	# Install n
+	(cd "$n_install_dir/git"
+	PREFIX=$N_PREFIX make install 2>&1)
+}
+
 ynh_use_nodejs () {
 ynh_use_nodejs () {
 	nodejs_version=$(ynh_app_setting_get $app nodejs_version)
 	nodejs_version=$(ynh_app_setting_get $app nodejs_version)
 
 
-	load_n_path="[[ :$PATH: == *\":$n_install_dir/bin:\"* ]] || PATH=\"$n_install_dir/bin:$PATH\""
+	load_n_path="[[ :$PATH: == *\":$n_install_dir/bin:\"* ]] || PATH=\"$n_install_dir/bin:$PATH\"; N_PREFIX="$n_install_dir""
 
 
 	nodejs_use_version="$n_install_dir/bin/n -q $nodejs_version"
 	nodejs_use_version="$n_install_dir/bin/n -q $nodejs_version"
 
 
@@ -277,9 +126,13 @@ ynh_install_nodejs () {
 	test -x /usr/bin/npm && mv /usr/bin/npm /usr/bin/npm_n
 	test -x /usr/bin/npm && mv /usr/bin/npm /usr/bin/npm_n
 
 
 	# If n is not previously setup, install it
 	# If n is not previously setup, install it
-	n --version > /dev/null 2>&1 || \
-	( echo "Installation of N - Node.js version management" >&2; \
-	curl -sL $n_install_script | N_PREFIX="$n_install_dir" bash -s -- -y - )
+	if ! test n --version > /dev/null 2>&1
+	then
+		ynh_install_n
+	fi
+
+	# Modify the default N_PREFIX in n script
+	ynh_replace_string "^N_PREFIX=\${N_PREFIX-.*}$" "N_PREFIX=\${N_PREFIX-$N_PREFIX}" "$n_install_dir/bin/n"
 
 
 	# Restore /usr/local/bin in PATH
 	# Restore /usr/local/bin in PATH
 	PATH=$CLEAR_PATH
 	PATH=$CLEAR_PATH
@@ -295,8 +148,11 @@ ynh_install_nodejs () {
 	real_nodejs_version=$(find $node_version_path/$nodejs_version* -maxdepth 0 | sort --version-sort | tail --lines=1)
 	real_nodejs_version=$(find $node_version_path/$nodejs_version* -maxdepth 0 | sort --version-sort | tail --lines=1)
 	real_nodejs_version=$(basename $real_nodejs_version)
 	real_nodejs_version=$(basename $real_nodejs_version)
 
 
-	# Create a symbolic link for this major version
-	ln --symbolic --force --no-target-directory $node_version_path/$real_nodejs_version $node_version_path/$nodejs_version
+	# Create a symbolic link for this major version. If the file doesn't already exist
+	if [ ! -e "$node_version_path/$nodejs_version" ]
+	then
+		ln --symbolic --force --no-target-directory $node_version_path/$real_nodejs_version $node_version_path/$nodejs_version
+	fi
 
 
 	# Store the ID of this app and the version of node requested for it
 	# Store the ID of this app and the version of node requested for it
 	echo "$YNH_APP_ID:$nodejs_version" | tee --append "$n_install_dir/ynh_app_version"
 	echo "$YNH_APP_ID:$nodejs_version" | tee --append "$n_install_dir/ynh_app_version"

+ 6 - 4
scripts/change_url

@@ -52,12 +52,14 @@ fi
 
 
 if [ $change_domain -eq 0 ]
 if [ $change_domain -eq 0 ]
 then
 then
-	# The backup process will failed if the domain has changed, because the file settings.yml has already changed
-	BACKUP_BEFORE_UPGRADE	# Backup the current version of the app
+	# Backup the current version of the app
+	ynh_backup_before_upgrade
 	ynh_clean_setup () {
 	ynh_clean_setup () {
-		BACKUP_FAIL_UPGRADE	# restore it if the upgrade fails
+		# restore it if the upgrade fails
+		ynh_restore_upgradebackup
 	}
 	}
-	ynh_abort_if_errors	# Active trap pour arrêter le script si une erreur est détectée.
+	# Exit if an error occurs during the execution of the script
+	ynh_abort_if_errors
 fi
 fi
 
 
 #=================================================
 #=================================================