1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/lstu_ynh.git synced 2024-09-03 19:36:12 +02:00
lstu_ynh/scripts/install
2017-04-21 16:45:54 +02:00

135 lines
3.9 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# vim:set noexpandtab:
# Exit on command errors and treat unset variables as an error
set -eu
source .fonctions # Loads the generic functions usually used in the script
source /usr/share/yunohost/helpers # Source app helpers
CLEAN_SETUP () {
# Clean installation residues that are not supported by the remove script.
# Clean hosts
echo ""
}
TRAP_ON # Active trap to stop the script if an error is detected.
# Retrieve arguments
domain=$YNH_APP_ARG_DOMAIN
path=$YNH_APP_ARG_PATH
is_public=$YNH_APP_ARG_IS_PUBLIC
app=$YNH_APP_INSTANCE_NAME
script_dir=$PWD
# Check variables are not empty
CHECK_VAR "$app" "app name not set"
CHECK_VAR "$script_dir" "script_dir not set"
CHECK_PATH # Check and fix path syntax
CHECK_DOMAINPATH # Check and fix domain disponibility
CHECK_FINALPATH # Check final path
# Check domain with regex
domain_regex=$(echo "$domain" | sed 's@-@.@g')
CHECK_VAR "$domain_regex" "domain_regex empty"
FIND_PORT 8096 # Check port availability
# Save app settings
ynh_app_setting_set $app domain $domain
ynh_app_setting_set $app is_public $is_public
ynh_app_setting_set $app port $port
# Install dependencies
ynh_package_update
ynh_package_install build-essential libssl-dev libpq-dev
# Copy files to the right place
sudo mkdir "${final_path}"
ynh_app_setting_set $app final_path $final_path
# Get source
SETUP_SOURCE
# Copy it to Nginx conf directory
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
if [ $is_public -eq 1 ];
then
sudo sed -i "s@#--PRIVATE--@@g" /etc/nginx/conf.d/$domain.d/$app.conf
fi
## Copy and fix variable into lstu config
sudo cp ../conf/lstu.conf.template "${final_path}/lstu.conf"
sudo sed -i "s@__DOMAIN__@$domain@g" "${final_path}/lstu.conf"
sudo sed -i "s@__PATH__@$path@g" "${final_path}/lstu.conf"
sudo sed -i "s@__PORT__@$port@g" "${final_path}/lstu.conf"
secret=$(ynh_string_random 24)
CHECK_VAR "$secret" "secret empty"
sudo sed -i "s@__SECRET__@$secret@g" "${final_path}/lstu.conf"
STORE_MD5_CONFIG "lstu.conf" "${final_path}/lstu.conf"
# Install systemd script
sudo cp ../conf/lstu.service /etc/systemd/system/lstu.service
sudo chown root: /etc/systemd/system/lstu.service
sudo sed -i "s@__FINALPATH__@$final_path/@g" /etc/systemd/system/lstu.service
# Install logrotate
sudo cp ../conf/logrotate /etc/logrotate.d/$app
sudo sed -i "s@__FINALPATH__@$final_path@g" /etc/logrotate.d/$app
# Install Carton
echo yes | sudo cpan Carton
# Install lstu's dependencies via carton
sudo mkdir -p /var/log/$app/
cd $final_path
sudo carton install 2>&1 | sudo tee -a "/var/log/$app/setup_carton.log"
# Change variables in nginx configuration
sudo sed -i "s@__PATH__@$path@g" /etc/nginx/conf.d/$domain.d/$app.conf
sudo sed -i "s@__PORT__@$port@g" /etc/nginx/conf.d/$domain.d/$app.conf
# Make app public or private
ynh_app_setting_set $app skipped_uris "/"
if [ $is_public -eq 0 ];
then # If the app is private, only the shortened URLs are publics
if [ "$path" == "/" ]; then
path=""
fi
ynh_app_setting_set $app protected_regex "$domain_regex$path/login$","$domain_regex$path/logout$","$domain_regex$path/api$","$domain_regex$path/extensions$","$domain_regex$path/stats$","$domain_regex$path/d/.*$","$domain_regex$path/a$","$domain_regex$path/$"
fi
# Making log symbolic link to /var/log
sudo touch /var/log/$app/production.log
sudo chown www-data: /var/log/$app/production.log
sudo ln -s /var/log/$app/production.log "$final_path/log/production.log"
# Configure owner
sudo chown -R www-data: $final_path
# Start lstu
sudo systemctl daemon-reload
sudo systemctl start lstu.service
sudo systemctl enable lstu.service
# Set right permissions on new files created at first start
sudo chown -R www-data: "$final_path"
# Add lstu as a service
sudo yunohost service add lstu -l $final_path/log/production.log
if [ $is_public -eq 0 ];
then
# Delete public access
ynh_app_setting_delete $app unprotected_uris
# Regenerate SSOwat's configuration
sudo yunohost app ssowatconf
fi
# Reload Nginx
sudo service nginx reload