1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/webtrees_ynh.git synced 2024-09-03 18:26:37 +02:00
webtrees_ynh/scripts/install
2018-09-01 20:03:40 +05:30

127 lines
3.8 KiB
Bash
Executable file
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
#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
### Remove this function if there's nothing to clean before calling the remove script.
true
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# RETRIEVE ARGUMENTS FROM THE MANIFEST
#=================================================
app=$YNH_APP_INSTANCE_NAME
# Retrieve arguments
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
is_public=$YNH_APP_ARG_IS_PUBLIC
admin_username=$YNH_APP_ARG_USERNAME
admin_name=$YNH_APP_ARG_NAME
admin_email=$YNH_APP_ARG_EMAIL
admin_password=$(openssl passwd -1 -salt xyz $YNH_APP_ARG_PASSWORD)
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#=================================================
# 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
final_path=/var/www/$app
test ! -e "$final_path" || ynh_die "This path already contains a folder"
# Save app settings
ynh_app_setting_set "$app" is_public "$is_public"
ynh_app_setting_set $app domain $domain
ynh_app_setting_set $app path $path_url
# Check password strength
[[ ${#admin_password} -gt 6 ]] || ynh_die \
"The password is too weak, it must be longer than 6 characters"
#=================================================
# 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"
# Set permissions to app files
# you may need to make some file and/or directory writeable by www-data (nginx user)
sudo chown -R root: $final_path
#=================================================
# CREATE A MYSQL DATABASE
#=================================================
# If your app uses a MySQL database, you can use these lines to bootstrap
# a database, an associated user and save the password in app settings
db_name=$(ynh_sanitize_dbid $app)
ynh_app_setting_set $app db_name $db_name
ynh_mysql_setup_db $db_name $db_name
# Adding the details of the database to the config file
sed -i "s@__dbuser__@$db_name@g" ../conf/config.ini.php
sed -i "s@__dbpass__@$db_pwd@g" ../conf/config.ini.php
sed -i "s@__dbname__@$db_name@g" ../conf/config.ini.php
# Copy the config file to the final path
sudo cp ../conf/config.ini.php $final_path/data/.
# # Load initial SQL into the new database
ynh_mysql_connect_as "$db_name" "$db_pwd" "$db_name" < "../conf/sql/webtrees.sql"
# Replace variables in sql scripts
ynh_replace_string "__USER_NAME__" "$admin_username" ../conf/sql/admin.sql
ynh_replace_string "__NAME__" "$admin_name" ../conf/sql/admin.sql
ynh_replace_string "__USER_EMAIL__" "$admin_email" ../conf/sql/admin.sql
ynh_replace_string "__PASSWORD__" "$admin_password" ../conf/sql/admin.sql
ynh_mysql_connect_as "$db_name" "$db_pwd" "$db_name" < "../conf/sql/admin.sql"
### MySQL end ###
# Create a dedicated nginx config
ynh_add_nginx_config
# If app is public, add url to SSOWat conf as skipped_uris
if [[ $is_public -eq 1 ]]; then
# unprotected_uris allows SSO credentials to be passed anyway.
ynh_app_setting_set "$app" unprotected_uris "/"
fi
sudo chmod -R 777 $final_path/data
# Reload services
sudo service nginx reload