From e57c35d0f1b5b29f7af5d9a61cd3a346eb359a91 Mon Sep 17 00:00:00 2001 From: Maniack Crudelis Date: Wed, 18 Nov 2015 00:28:42 +0100 Subject: [PATCH] MAJ script + backup --- manifest.json | 3 ++- scripts/backup | 27 +++++++++++++++++++++++++ scripts/install | 53 ++++++++++++++++++++++++++++--------------------- scripts/remove | 23 +++++++++++---------- scripts/restore | 28 ++++++++++++++++++++++++++ scripts/upgrade | 14 +++++++------ 6 files changed, 108 insertions(+), 40 deletions(-) create mode 100644 scripts/backup create mode 100644 scripts/restore diff --git a/manifest.json b/manifest.json index 67da490..94080ee 100644 --- a/manifest.json +++ b/manifest.json @@ -5,8 +5,9 @@ "en": "Self hosting images and sharing anonymous application", "fr": "Application d'hébergement et de partage d'images anonyme" }, - "version": "0.6", + "version": "0.6+", "url": "https://lut.im", + "licence": "free", "maintainer": { "name": "Maniack Crudelis et matlink", "email": "maniackc_dev@crudelis.fr matlink@matlink.fr" diff --git a/scripts/backup b/scripts/backup new file mode 100644 index 0000000..6560187 --- /dev/null +++ b/scripts/backup @@ -0,0 +1,27 @@ +#!/bin/bash + +# Récupère les infos de l'application. +app=lutim +final_path=$(sudo yunohost app setting $app final_path) +domain=$(sudo yunohost app setting $app domain) + + +# The parameter $1 is the backup directory location +# which will be compressed afterward +backup_dir=$1/apps/$app +sudo mkdir -p "$backup_dir" + +# Backup sources & data +sudo cp -a $final_path/. $backup_dir/sources + +# Copy Nginx and YunoHost parameters to make the script "standalone" +sudo cp -a /etc/yunohost/apps/$app/. $backup_dir/yunohost +sudo cp -a /etc/nginx/conf.d/$domain.d/$app.conf $backup_dir/nginx.conf + + +# Copie des fichiers du script init +sudo cp -a /etc/init.d/lutim $backup_dir/init.d_lutim +sudo cp -a /etc/default/lutim $backup_dir/default_lutim + +# Copie du fichier du cron +sudo cp -a /etc/cron.d/$app $backup_dir/cron_$app diff --git a/scripts/install b/scripts/install index 56c80a2..bf63bd4 100644 --- a/scripts/install +++ b/scripts/install @@ -8,13 +8,27 @@ is_public=$4 always_encrypt=$5 app=lutim -# Check if admin exists +# Vérifie la validité de l'user admin sudo yunohost user list --json | grep -q "\"username\": \"$admin\"" if [[ ! $? -eq 0 ]]; then echo "Wrong admin" exit 1 fi +# Vérifie la disponibilité du path et du domaine. +sudo yunohost app checkurl $domain$path -a $app +if [[ ! $? -eq 0 ]]; then + exit 1 +fi + +# Vérifie que le dossier de destination n'est pas déjà utilisé. +final_path=/var/www/$app +if [ -e "$final_path" ] +then + echo "This path already contains a folder" + exit 1 +fi + # Vérifie la présence du / en début de path if [ $(echo $path | cut -c1) != "/" ]; then path="/$path" @@ -25,13 +39,7 @@ pathRslash=$(echo "$path" | sed 's@/$@@') # Modifie le domaine pour qu'il passe dans une regex domain_regex=$(echo "$domain" | sed 's@-@.@g') -# Check domain/path availability -sudo yunohost app checkurl $domain$path -a $app -if [[ ! $? -eq 0 ]]; then - exit 1 -fi - -# Get an available port +# Cherche un port libre. port=8095 sudo yunohost app checkport $port while [[ ! $? -eq 0 ]]; do @@ -39,15 +47,7 @@ while [[ ! $? -eq 0 ]]; do sudo yunohost app checkport $port done -# Check /var/www/$app path is available -final_path=/var/www/$app -if [ -e "$final_path" ] -then - echo "This path already contains a folder" - exit 1 -fi - -# Add settings to YunoHost +# Enregistre les infos dans la config YunoHost sudo yunohost app setting $app admin -v $admin sudo yunohost app setting $app domain -v $domain sudo yunohost app setting $app is_public -v $is_public @@ -55,15 +55,20 @@ sudo yunohost app setting $app port -v $port sudo yunohost app setting $app always_encrypt -v $always_encrypt -# Copy files to right place -sudo mkdir -p "$final_path" -# Création archive source: tar -czp -f lutim.tar.gz lutim +# Créer le repertoire de destination et stocke son emplacement. +sudo mkdir "$final_path" +sudo yunohost app setting $app final_path -v $final_path + # Décompresse la source tar -x -f ../sources/lutim.tar.gz +# Copie les fichiers sources sudo cp -a lutim/. "$final_path" +# Copie les fichiers additionnels ou modifiés. sudo cp -a ../sources/ajouts/. "$final_path" +# Et copie le fichier de config nginx sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf + # Installation de perlmagick, interface perl pour imagemagick et de carton, gestionnaire de dépendances perl sudo apt-get update sudo apt-get install carton perlmagick -qy @@ -85,7 +90,6 @@ sudo sed -i "s@__SECRET__@$secret@g" "$final_path/lutim.conf" # Mise en place des scripts init sudo cp ../conf/lutim.init /etc/init.d/lutim -# sudo sed -i "s@__FINALPATH__@$final_path@g" /etc/init.d/lutim sudo cp ../conf/lutim.default /etc/default/lutim sudo chmod +x /etc/init.d/lutim sudo chown root:root /etc/init.d/lutim /etc/default/lutim @@ -128,16 +132,19 @@ sudo touch /var/log/$app/production.log sudo chown www-data: /var/log/$app/production.log sudo ln -s /var/log/$app/production.log "$final_path/log/production.log" -# Set right permissions +# Configure les droits d'accès au fichiers sudo chown -R www-data: $final_path # Start lutim sudo /etc/init.d/lutim start # Set right permissions on new files created at first start sudo chown -R www-data: "$final_path" + # Add lutim as a service sudo yunohost service add lutim -l $final_path/log/production.log -# Reload Nginx and regenerate SSOwat conf + +# Recharge la configuration Nginx sudo service nginx reload +# Régénère la configuration de SSOwat sudo yunohost app ssowatconf diff --git a/scripts/remove b/scripts/remove index a7e735f..63fb305 100644 --- a/scripts/remove +++ b/scripts/remove @@ -1,31 +1,34 @@ #!/bin/bash + app=lutim +# Récupère les infos de l'application. domain=$(sudo yunohost app setting $app domain) -# Arrêt de lutim +# Arrêt du service sudo service lutim stop -# Suppression du dossier -sudo rm -rf /var/www/$app - -# Suppression de la configuration nginx -sudo rm -f /etc/nginx/conf.d/$domain.d/$app.conf +# Retire le service du monitoring de Yunohost. +sudo yunohost service remove lutim # Suppression des fichiers init sudo rm -f /etc/default/lutim sudo rm -f /etc/init.d/lutim sudo update-rc.d -f lutim remove +# Suppression du dossier de l'application +sudo rm -rf /var/www/$app + +# Suppression de la configuration nginx +sudo rm -f /etc/nginx/conf.d/$domain.d/$app.conf + # Retirer le cron sudo rm -f /etc/cron.d/$app -# Remove lutim service in ynh panel -sudo yunohost service remove lutim - # Suppression des log sudo rm -r /var/log/$app/ -# Reload Nginx and regenerate SSOwat conf +# Recharge la configuration Nginx sudo service nginx reload +# Régénère la configuration de SSOwat sudo yunohost app ssowatconf diff --git a/scripts/restore b/scripts/restore new file mode 100644 index 0000000..c320a92 --- /dev/null +++ b/scripts/restore @@ -0,0 +1,28 @@ +#!/bin/bash + +# Récupère les infos de l'application. +app=lutim +final_path=$(sudo yunohost app setting $app final_path) +domain=$(sudo yunohost app setting $app domain) + +# The parameter $1 is the uncompressed restore directory location +backup_dir=$1/apps/$app + +# Restore sources & data +sudo cp -a $backup_dir/sources/. $final_path + +# Restore Nginx and YunoHost parameters +sudo cp -a $backup_dir/yunohost/. /etc/yunohost/apps/$app +sudo cp -a $backup_dir/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf + + +# Restauration des fichiers du script init +sudo cp -a $backup_dir/init.d_lutim /etc/init.d/lutim +sudo cp -a $backup_dir/default_lutim /etc/default/lutim + +# Restauration du fichier du cron +sudo cp -a $backup_dir/cron_$app /etc/cron.d/$app + + +# Restart webserver +sudo service nginx reload diff --git a/scripts/upgrade b/scripts/upgrade index 96e738a..b62f611 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,25 +1,26 @@ #!/bin/bash +# Récupère les infos de l'application. app=lutim - -# Retrieve arguments domain=$(sudo yunohost app setting $app domain) path=$(sudo yunohost app setting $app path) is_public=$(sudo yunohost app setting $app is_public) port=$(sudo yunohost app setting $app port) always_encrypt=$(sudo yunohost app setting $app always_encrypt) +final_path=$(sudo yunohost app setting $app final_path) # Vérifie l'absence du / en fin de path pathRslash=$(echo "$path" | sed 's@/$@@') # Modifie le domaine pour qu'il passe dans une regex domain_regex=$(echo "$domain" | sed 's@-@.@g') -# Copy files to right place -final_path=/var/www/$app # Décompresse la source tar -x -f ../sources/lutim.tar.gz +# Copie les fichiers sources sudo cp -a lutim/. "$final_path" +# Copie les fichiers additionnels ou modifiés. sudo cp -a ../sources/ajouts/. "$final_path" +# Et copie le fichier de config nginx sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf # Change variables in nginx configuration @@ -61,12 +62,13 @@ then # Si l'app est privée, seul le visionnage des images reste public sudo yunohost app setting $app protected_regex -v "$domain_regex$pathRslash/stats$","$domain_regex$pathRslash/manifest.webapp$","$domain_regex$pathRslash/$","$domain_regex$pathRslash/d/.*$","$domain_regex$pathRslash/m/.*$" fi -# Set right permissions +# Configure les droits d'accès au fichiers sudo chown -R www-data: $final_path # Restart lutim sudo /etc/init.d/lutim restart -# Reload Nginx and regenerate SSOwat conf +# Recharge la configuration Nginx sudo service nginx reload +# Régénère la configuration de SSOwat sudo yunohost app ssowatconf