From 11bd9c69a68084e3e6dbd49f37cb184e4093f84f Mon Sep 17 00:00:00 2001 From: yalh76 Date: Fri, 23 Apr 2021 21:17:00 +0200 Subject: [PATCH] Fix upload --- conf/uploads.exs | 2 ++ scripts/backup | 9 +++++++++ scripts/change_url | 2 +- scripts/install | 22 +++++++++++++++++++++- scripts/restore | 17 +++++++++++++++++ scripts/upgrade | 37 ++++++++++++++++++++++++++++++++++++- 6 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 conf/uploads.exs diff --git a/conf/uploads.exs b/conf/uploads.exs new file mode 100644 index 0000000..2e24754 --- /dev/null +++ b/conf/uploads.exs @@ -0,0 +1,2 @@ + +config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "__DATADIR__/uploads" \ No newline at end of file diff --git a/scripts/backup b/scripts/backup index 77494ff..c4f472b 100644 --- a/scripts/backup +++ b/scripts/backup @@ -30,6 +30,7 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP @@ -56,6 +57,14 @@ ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_backup --src_path="/etc/systemd/system/$app.service" +#================================================= +# BACKUP VARIOUS FILES +#================================================= + +ynh_backup --src_path="/etc/$app/config.exs" + +ynh_backup --src_path="$datadir" --is_big + #================================================= # BACKUP THE POSTGRESQL DATABASE #================================================= diff --git a/scripts/change_url b/scripts/change_url index d4b8f51..708ede5 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -122,7 +122,7 @@ ynh_replace_string --match_string="$old_domain" --replace_string="$new_domain" - ynh_store_file_checksum --file="$config" chmod 400 "$config" -chown $app:www-data "$config" +chown $app:$app "$config" #================================================= # GENERIC FINALISATION diff --git a/scripts/install b/scripts/install index 826cfc0..66b7c6c 100644 --- a/scripts/install +++ b/scripts/install @@ -133,6 +133,24 @@ ynh_add_nginx_config #================================================= # SPECIFIC SETUP +#================================================= +# CREATE THE DATA DIRECTORY +#================================================= +ynh_script_progression --message="Creating the data directory..." + +# Define app's data directory +datadir="/home/yunohost.app/${app}" + +ynh_app_setting_set --app=$app --key=datadir --value="$datadir" + +# Create app folders +mkdir -p "$datadir/" +mkdir -p "$datadir/uploads/" + +chmod 750 "$datadir" +chmod -R o-rwx "$datadir" +chown -R $app:$app "$datadir" + #================================================= # MAKE SETUP #================================================= @@ -159,6 +177,8 @@ popd cat "../conf/ldap.exs" >> "$config" cat "../conf/mail.exs" >> "$config" +ynh_replace_string --match_string="__DATADIR__" --replace_string="$datadir" --target_file="../conf/uploads.exs" +cat "../conf/uploads.exs" >> "$config" pushd $final_path/$app chmod o-rwx $config @@ -177,7 +197,7 @@ popd ynh_store_file_checksum --file="$config" chmod 400 "$config" -chown $app:www-data "$config" +chown $app:$app "$config" #================================================= # SETUP SYSTEMD diff --git a/scripts/restore b/scripts/restore index 8f1db57..147bb5d 100644 --- a/scripts/restore +++ b/scripts/restore @@ -36,6 +36,7 @@ db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) port=$(ynh_app_setting_get --app=$app --key=port) ynh_user_password=$(ynh_app_setting_get --app=$app --key=ynh_user_password) admin_email=$(ynh_app_setting_get --app=$app --key=admin_email) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # CHECK IF THE APP CAN BE RESTORED @@ -80,6 +81,22 @@ chown -R $app:www-data "$final_path" #================================================= # SPECIFIC RESTORATION +#================================================= +# RECREATE THE DATA DIRECTORY +#================================================= +ynh_script_progression --message="Recreating the data directory..." + +# Use --not_mandatory for the data directory, because if the backup has been made with BACKUP_CORE_ONLY, there's no data into the backup. +ynh_restore_file --origin_path="$datadir" --not_mandatory + +# Create app folders +mkdir -p "$datadir/" +mkdir -p "$datadir/uploads/" + +chmod 750 "$datadir" +chmod -R o-rwx "$datadir" +chown -R $app:$app "$datadir" + #================================================= # REINSTALL DEPENDENCIES #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index dd4c35a..113da70 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -28,6 +28,7 @@ db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) port=$(ynh_app_setting_get --app=$app --key=port) secret=$(ynh_app_setting_get --app=$app --key=secret) admin_email=$(ynh_app_setting_get --app=$app --key=admin_email) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # CHECK VERSION @@ -118,6 +119,40 @@ if ynh_version_gt "1.0.0~ynh1" "${previous_version}" ; then ynh_store_file_checksum --file="$config" fi +#================================================= +# CREATE DATADIR FOLDER +#================================================= + +# If datadir doesn't exist, create it +if [ -z "$datadir" ]; then + ynh_script_progression --message="Create datadir folder..." + + # Define app's data directory + datadir="/home/yunohost.app/${app}" + + ynh_app_setting_set --app=$app --key=datadir --value="$datadir" + + # Create app folders + mkdir -p "$datadir/" + mkdir -p "$datadir/uploads/" + + chmod 750 "$datadir" + chmod -R o-rwx "$datadir" + chown -R $app:$app "$datadir" + + config="$final_path/$app/config/prod.secret.exs" + + ynh_backup_if_checksum_is_different --file="$config" + + ynh_replace_string --match_string="__DATADIR__" --replace_string="$datadir" --target_file="../conf/uploads.exs" + cat "../conf/uploads.exs" >> "$config" + + ynh_store_file_checksum --file="$config" + + chmod 400 "$config" + chown $app:$app "$config" +fi + #================================================= # CREATE DEDICATED USER #================================================= @@ -229,7 +264,7 @@ ynh_backup_if_checksum_is_different --file="$config" ynh_store_file_checksum --file="$config" chmod 400 "$config" -chown $app:www-data "$config" +chown $app:$app "$config" #================================================= # SETUP SYSTEMD