#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers #================================================= # MANAGE SCRIPT FAILURE #================================================= # Exit if an error occurs during the execution of the script ynh_abort_if_errors # TODO: handle "/home/ynh$app" to final_path migration app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get $app domain) path_url=$(ynh_app_setting_get $app path) final_path=$(ynh_app_setting_get $app final_path) port=$(ynh_app_setting_get $app port) #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= # If final_path doesn't exist, create it if [ -z $final_path ]; then final_path=/var/www/$app ynh_app_setting_set $app final_path $final_path fi if [ -z "/home/ynh$app" ]; then mv "/home/ynh$app/data" "$final_path/data" ynh_secure_remove "/home/ynh$app" fi #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= # Backup the current version of the app ynh_backup_before_upgrade ynh_clean_setup () { # restore it if the upgrade fails ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= # CHECK THE PATH #================================================= # Normalize the URL path syntax path_url=$(ynh_normalize_url_path $path_url) #================================================= # STANDARD UPGRADE STEPS #================================================= # INSTALL DEPENDENCIES #================================================= ynh_install_app_dependencies dh-autoreconf \ python-pip python-dev python-lxml python-imaging python-virtualenv #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source "$final_path" mkdir -p "$final_path/data" #================================================= # NGINX CONFIGURATION #================================================= # Create a dedicated nginx config ynh_add_nginx_config if [ "$path_url" != "/" ] then ynh_replace_string "^#sub_path_only" "" "/etc/nginx/conf.d/$domain.d/$app.conf" fi ynh_store_file_checksum "/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # CREATE DEDICATED USER #================================================= # Create a system user ynh_system_user_create "$app" #================================================= # SPECIFIC UPGRADE #================================================= # Install nodesjs #================================================= # install nodejs ynh_install_nodejs 8 #================================================= # Install weboob with pip #================================================= virtualenv "${final_path}/venv" ( set +o nounset source "${final_path}/venv/bin/activate" set -o nounset pip install --upgrade pip pip install weboob html2text simplejson BeautifulSoup PyExecJS ) #================================================= # Install Kresus with npm #================================================= ynh_use_nodejs ( cd "$final_path" chown -R $app: "$final_path" npm install --production --unsafe-perm ) #================================================= # CONFIGURE HASTE #================================================= cp ../conf/config.ini "$final_path/config.ini" ynh_replace_string "__PORT__" "$port" "$final_path/config.ini" ynh_replace_string "__PATH__" "$path_url" "$final_path/config.ini" ynh_replace_string "__FINALPATH__" "$final_path" "$final_path/config.ini" # Calculate and store the config file checksum into the app settings ynh_store_file_checksum "$final_path/config.ini" #================================================= # SETUP SYSTEMD #================================================= ynh_replace_string "__NODEJS__" "$nodejs_use_version" ../conf/systemd.service ynh_replace_string "__ENV_PATH__" "$PATH" ../conf/systemd.service ynh_replace_string "__NODEPATH__" "$(dirname "$nodejs_path")" ../conf/systemd.service # Create a dedicated systemd config ynh_add_systemd_config #================================================= # GENERIC FINALIZATION #================================================= # SECURE FILES AND DIRECTORIES #================================================= # Reset permissions chown -R root:root "$final_path" # Set permissions to app files chown -R "$app":"$app" "$final_path/data/" chmod -R 750 "$final_path/data/" # Set permissions to config file chown "$app" "$final_path/config.ini" chmod 600 "$final_path/config.ini" #================================================= # RELOAD NGINX #================================================= service "$app" restart systemctl reload nginx #================================================= # SEND README TO ADMIN #================================================= message=" Kresus was updated! Domain: $domain Path : $path_url Config: $final_path/config.ini Please remember the default behavior of YunoHost when installing a new app is: everyone has access to the app. This may be an issue for Kresus as it is a personnal tool. Please remember to edit access rights in the YunoHost web administration panel or using command line interface. Are you facing an issue, want to improve this app or say thank you? Please open a new issue in this project: https://github.com/YunoHost-Apps/kresus_ynh " ynh_send_readme_to_admin "$message"