2016-09-09 11:07:28 +02:00
#!/bin/bash
2018-04-14 22:02:50 +02:00
#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
2016-09-09 11:07:28 +02:00
2018-04-14 22:02:50 +02:00
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
#================================================
2016-09-09 11:07:28 +02:00
# Retrieve arguments
2017-09-17 11:03:01 +02:00
domain=$YNH_APP_ARG_DOMAIN
2018-04-14 22:02:50 +02:00
path_url=$YNH_APP_ARG_PATH
port=$(ynh_find_port 9876)
2016-09-09 11:07:28 +02:00
2018-04-14 22:02:50 +02:00
app=$YNH_APP_INSTANCE_NAME
2017-09-17 11:09:49 +02:00
2018-04-14 22:02:50 +02:00
#=================================================
# 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
#=================================================
2018-04-15 00:27:48 +02:00
ynh_install_app_dependencies dh-autoreconf \
python-pip python-dev python-lxml python-imaging python-virtualenv
2018-04-14 22:02:50 +02:00
#=================================================
# 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"
2016-09-09 11:07:28 +02:00
2018-04-14 22:02:50 +02:00
#=================================================
# NGINX CONFIGURATION
#=================================================
2016-09-09 11:07:28 +02:00
2018-04-14 22:02:50 +02:00
# Create a dedicated nginx config
ynh_add_nginx_config
2017-09-17 11:09:49 +02:00
2018-08-01 06:40:03 +02:00
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"
2018-04-14 22:02:50 +02:00
#=================================================
# 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
#=================================================
2018-04-14 23:11:53 +02:00
virtualenv "${final_path}/venv"
(
set +o nounset
source "${final_path}/venv/bin/activate"
set -o nounset
2018-04-14 22:02:50 +02:00
2018-04-14 23:11:53 +02:00
pip install --upgrade pip
2018-08-01 06:25:29 +02:00
pip install weboob html2text simplejson BeautifulSoup PyExecJS
2018-04-14 23:11:53 +02:00
)
2018-04-14 22:02:50 +02:00
#=================================================
# Install Kresus with npm
#=================================================
ynh_use_nodejs
(
cd "$final_path"
chown -R $app: "$final_path"
2018-08-01 06:25:29 +02:00
npm install --production --unsafe-perm
2018-04-14 22:02:50 +02:00
)
#=================================================
# 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
2016-09-09 11:07:28 +02:00
2018-04-14 22:02:50 +02:00
# Create a dedicated systemd config
ynh_add_systemd_config
2016-09-09 11:07:28 +02:00
2018-04-14 23:11:53 +02:00
#=================================================
# SECURE FILES AND DIRECTORIES
#=================================================
# Set permissions to app files
2018-08-08 23:28:10 +02:00
chown -R "$app":"$app" "$final_path/data/"
chmod -R 750 "$final_path/data/"
# Set permissions to config file
chown "$app" "$final_path/config.ini"
2018-04-14 23:11:53 +02:00
chmod 600 "$final_path/config.ini"
2018-04-14 22:02:50 +02:00
#=================================================
# RELOAD NGINX
#=================================================
2017-07-18 05:29:03 +02:00
2018-04-15 00:27:48 +02:00
service "$app" start
2018-04-14 22:02:50 +02:00
service nginx reload
2018-08-08 23:35:41 +02:00
#=================================================
# 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"