SECURE_REMOVE (){# Suppression de dossier avec vérification des variables
chaine="$1"# L'argument doit être donné entre quotes simple '', pour éviter d'interpréter les variables.
no_var=0
while(echo"$chaine"| grep -q '\$')# Boucle tant qu'il y a des $ dans la chaine
do
no_var=1
global_var=$(echo"$chaine"| cut -d '$' -f 2)# Isole la première variable trouvée.
only_var=\$$(expr "$global_var" : '\([A-Za-z0-9_]*\)')# Isole complètement la variable en ajoutant le $ au début et en gardant uniquement le nom de la variable. Se débarrasse surtout du / et d'un éventuel chemin derrière.
real_var=$(eval"echo ${only_var}")# `eval "echo ${var}` permet d'interpréter une variable contenue dans une variable.
iftest -z "$real_var"||["$real_var"="/"];then
echo"Variable $only_var is empty, suppression of $chaine cancelled." >&2
return1
fi
chaine=$(echo"$chaine"| sed "s@$only_var@$real_var@")# remplace la variable par sa valeur dans la chaine.
if [[ $YNH_APP_INSTANCE_NAME != $app ]]; then # Si le nom de l'app donné lors de la commande n'est pas nextcloud, vérifie si c'est owncloud pour lancer la migration.
[[ $YNH_APP_ID == owncloud ]] \
[[ $YNH_APP_ID == owncloud ]] \
|| ynh_die "Incompatible application to migrate to Nextcloud"
|| ynh_die "Incompatible application to migrate to Nextcloud"
@ -40,7 +40,7 @@ if [[ $YNH_APP_INSTANCE_NAME != $app ]]; then
&& ynh_die "Nextcloud is already installed"
&& ynh_die "Nextcloud is already installed"
# retrieve ownCloud app settings
# retrieve ownCloud app settings
real_app=$YNH_APP_INSTANCE_NAME
real_app=$YNH_APP_INSTANCE_NAME # real_app prend le nom de owncloud.
@ -156,12 +157,12 @@ sed -i "s@#GROUP#@${app}@g" ../hooks/post_user_create
# occ helper for the current installation
# occ helper for the current installation
_exec_occ() {
_exec_occ() {
exec_occ "$DESTDIR" "$app" $@
exec_occ "$DESTDIR" "$app" $@ # Appel de php occ avec les droits de l'user nextcloud. A noter que ce n'est là que la déclaration de la fonction qui sera appelée plus tard.
}
}
# Retrieve new Nextcloud sources in a temporary directory
# Retrieve new Nextcloud sources in a temporary directory
TMPDIR=$(ynh_mkdir_tmp)
extract_nextcloud "$TMPDIR"
TMPDIR=$(mktemp -d)
extract_nextcloud "$TMPDIR" # Télécharge nextcloud, vérifie sa somme de contrôle et le décompresse.
# Copy Nextcloud configuration file
# Copy Nextcloud configuration file
nc_conf="${DESTDIR}/config.json"
nc_conf="${DESTDIR}/config.json"
@ -180,8 +181,8 @@ for a in $(sudo ls "${DESTDIR}/apps"); do
done
done
# Rename existing app directory and move new one
# Rename existing app directory and move new one
sudo rm -rf "${DESTDIR}"
sudo mv "$TMPDIR" "$DESTDIR"
SECURE_REMOVE '${DESTDIR}' # Supprime le dossier actuel de nextcloud
sudo mv "$TMPDIR" "$DESTDIR" # Et le remplace par la nouvelle version du dossier temporaire
|| user_home=0 # Test l'existence du fichier mount.json pour connaître la valeur de user_home, dans le cas où la valeur ne serait pas renseignée. (Mais ce fichier semble ne plus exister...)