#!/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 #================================================= # RETRIEVE ARGUMENTS FROM THE MANIFEST #================================================ # Retrieve arguments domain=$YNH_APP_ARG_DOMAIN path_url=$YNH_APP_ARG_PATH port=$(ynh_find_port 9876) app=$YNH_APP_INSTANCE_NAME #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= final_path="/var/www/$app" test ! -e "$final_path" || ynh_die "This path already contains a folder" # Normalize the url path syntax path_url=$(ynh_normalize_url_path "$path_url") # Check web path availability ynh_webpath_available "$domain" "$path_url" # Register (book) web path ynh_webpath_register "$app" "$domain" "$path_url" #================================================= # STORE SETTINGS FROM MANIFEST #================================================= ynh_app_setting_set "$app" domain "$domain" ynh_app_setting_set "$app" path "$path_url" ynh_app_setting_set "$app" port "$port" #================================================= # STANDARD MODIFICATIONS #================================================= # INSTALL DEPENDENCIES #================================================= ynh_install_app_dependencies dh-autoreconf \ python-pip python-dev python-lxml python-imaging python-virtualenv #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_app_setting_set "$app" final_path "$final_path" # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source "$final_path" mkdir "$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 SETUP #================================================= # 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 #================================================= # SECURE FILES AND DIRECTORIES #================================================= # 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" start service nginx reload #================================================= # SEND README TO ADMIN #================================================= message=" 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"