From 48afcba7c9f549e2d116269df7b7906fdb80fa12 Mon Sep 17 00:00:00 2001 From: Ylies Chahi Date: Sun, 13 Aug 2017 03:00:21 +0200 Subject: [PATCH] Update upgrade --- scripts/upgrade | 168 +++++++++++++----------------------------------- 1 file changed, 45 insertions(+), 123 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 82ea0f5..a8a7894 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,133 +1,55 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - -source _common.sh +# Source app helpers and functions source /usr/share/yunohost/helpers -#================================================= -# LOAD SETTINGS -#================================================= +# Exit on command errors and treat unset variables as an error +set -eu -app=$YNH_APP_INSTANCE_NAME +# Retrieve arguments +domain=$(ynh_app_setting_get "$app" domain) +path=$(ynh_app_setting_get "$app" path) +is_public=$(ynh_app_setting_get "$app" is_public) +author=$(ynh_app_setting_get "$app" author) +title=$(ynh_app_setting_get "$app" title) -domain=$(ynh_app_setting_get $app domain) -path_url=$(ynh_app_setting_get $app path) -admin=$(ynh_app_setting_get $app admin) -is_public=$(ynh_app_setting_get $app is_public) -final_path=$(ynh_app_setting_get $app final_path) -port=$(ynh_app_setting_get $app port) -db_name=$(ynh_app_setting_get $app db_name) - -#================================================= -# ENSURE DOWNWARD COMPATIBILITY -#================================================= - -if [ "$is_public" = "Yes" ]; then - ynh_app_setting_set $app is_public 1 # Fix is_public as a boolean value - is_public=1 -elif [ "$is_public" = "No" ]; then - ynh_app_setting_set $app is_public 0 - is_public=0 -fi - -if [ -z $db_name ]; then # If db_name doesn't exist, create it - db_name=$(ynh_sanitize_dbid $app) - ynh_app_setting_set $app db_name $db_name -fi - -#================================================= -# CHECK THE PATH -#================================================= - -# Normalize the URL path syntax -path_url=$(ynh_normalize_url_path $path_url) - -#================================================= -# STANDARD UPGRADE STEPS -#================================================= -# DOWNLOAD, CHECK AND UNPACK SOURCE -#================================================= - -# Download, check integrity, uncompress and patch the source from app.src -ynh_setup_source "$final_path" - -#================================================= -# NGINX CONFIGURATION -#================================================= - -# Create a dedicated nginx config -ynh_nginx_config - -#================================================= -# CREATE DEDICATED USER -#================================================= - -# Create a system user -ynh_system_user_create $app - -#================================================= -# PHP-FPM CONFIGURATION -#================================================= - -# Create a dedicated php-fpm config -ynh_fpm_config - -#================================================= -# SPECIFIC UPGRADE -#================================================= -# ... -#================================================= - -# Verify the checksum and backup the file if it's different -ynh_backup_if_checksum_is_different "$final_path/CONFIG_FILE" -# Recalculate and store the config file checksum into the app settings -ynh_store_file_checksum "$final_path/CONFIG_FILE" - -#================================================= -# SETUP LOGROTATE -#================================================= - -# Use logrotate to manage app-specific logfile(s) -ynh_use_logrotate - -#================================================= -# SETUP SYSTEMD -#================================================= - -# Create a dedicated systemd config -ynh_systemd_config - -#================================================= -# GENERIC FINALIZATION -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= - -# Set right permissions for curl installation -sudo chown -R root: $final_path - -#================================================= -# SETUP SSOWAT -#================================================= - -if [ $is_public -eq 0 ] -then # Remove the public access - ynh_app_setting_delete $app skipped_uris -fi -# Make app public if necessary -if [ $is_public -eq 1 ] +# is_public is now a boolean field +if [ "$is_public" = "Yes" ]; then - # unprotected_uris allows SSO credentials to be passed anyway - ynh_app_setting_set $app unprotected_uris "/" + is_public=1 fi -#================================================= -# RELOAD NGINX -#================================================= +#force location to be / or /foo +location=${path:-/} -sudo systemctl reload nginx \ No newline at end of file +# Document root +document_root=/var/www/$app +sudo mkdir -p $document_root + +# Nginx configuration +sed -i "s@YNH_LOCATION@$location@g" ../conf/nginx.conf +sed -i "s@YNH_DOCUMENT_ROOT@$document_root/output/@g" ../conf/nginx.conf +sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf + +# Store settings from manifest +ynh_app_setting_set $app domain $domain +ynh_app_setting_set $app path $path +ynh_app_setting_set $app is_public $is_public +ynh_app_setting_set $app author $author + +# Install python dependencies +sudo apt-get install -y python-pip python-virtualenv python-dev libldap2-dev libsasl2-dev libssl-dev + +# Upgrade pelican +pip install --upgrade pelican markdown + +# Set permissions +sudo chmod 775 -R $document_root +sudo chown -hR www-data:www-data $document_root + +# Make app public if necessary +[[ $is_public -eq 1 ]] \ + && ynh_app_setting_set "$app" unprotected_uris "/" + +# Reload Nginx and regenerate SSOwat conf +sudo service nginx reload