2017-09-13 14:49:10 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# GENERIC START
|
|
|
|
#=================================================
|
|
|
|
# IMPORT GENERIC HELPERS
|
|
|
|
#=================================================
|
|
|
|
source _common.sh
|
|
|
|
source /usr/share/yunohost/helpers
|
|
|
|
|
2017-10-06 10:37:19 +02:00
|
|
|
ynh_abort_if_errors
|
|
|
|
|
2017-09-13 14:49:10 +02:00
|
|
|
#=================================================
|
|
|
|
# LOAD SETTINGS
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
app=$YNH_APP_INSTANCE_NAME
|
|
|
|
|
2017-10-04 15:22:54 +02:00
|
|
|
path_url=$(ynh_app_setting_get "$app" path)
|
|
|
|
is_public=$(ynh_app_setting_get "$app" is_public)
|
|
|
|
final_path=$(ynh_app_setting_get "$app" final_path)
|
|
|
|
db_name=$(ynh_app_setting_get "$app" db_name)
|
|
|
|
domain=$(ynh_app_setting_get "$app" domain)
|
2017-09-13 14:49:10 +02:00
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# ENSURE DOWNWARD COMPATIBILITY
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
if [ "$is_public" = "Yes" ]; then
|
2017-10-04 15:22:54 +02:00
|
|
|
ynh_app_setting_set "$app" is_public 1 # Fix is_public as a boolean value
|
2017-09-13 14:49:10 +02:00
|
|
|
is_public=1
|
|
|
|
elif [ "$is_public" = "No" ]; then
|
2017-10-04 15:22:54 +02:00
|
|
|
ynh_app_setting_set "$app" is_public 0
|
2017-09-13 14:49:10 +02:00
|
|
|
is_public=0
|
|
|
|
fi
|
|
|
|
|
2017-10-04 15:22:54 +02:00
|
|
|
if [ -z "$db_name" ]; then # If db_name doesn't exist, create it
|
|
|
|
db_name=$(ynh_sanitize_dbid "$app")
|
|
|
|
ynh_app_setting_set "$app" db_name "$db_name"
|
2017-09-13 14:49:10 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# CHECK THE PATH
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# Normalize the URL path syntax
|
2017-10-04 15:22:54 +02:00
|
|
|
path_url=$(ynh_normalize_url_path "$path_url")
|
2017-09-13 14:49:10 +02:00
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# STANDARD UPGRADE STEPS
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# NGINX CONFIGURATION
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# Create a dedicated nginx config
|
|
|
|
ynh_add_nginx_config
|
|
|
|
|
2017-10-17 15:46:35 +02:00
|
|
|
if [ "$path_url" == "/" ]
|
|
|
|
then
|
|
|
|
# $finalnginxconf comes from ynh_add_nginx_config
|
|
|
|
# uwsgi_param is only needed for non-root installation
|
|
|
|
ynh_replace_string "uwsgi_param " "#wsgi_param " "$finalnginxconf"
|
|
|
|
ynh_replace_string "uwsgi_modifier1 " "#uwsgi_modifier1 " "$finalnginxconf"
|
|
|
|
ynh_replace_string "location //" "location /" "$finalnginxconf"
|
|
|
|
|
|
|
|
# ynh panel is only comptable with non-root installation
|
|
|
|
ynh_replace_string " include conf.d/" " #include conf.d/" "$finalnginxconf"
|
|
|
|
|
|
|
|
ynh_store_file_checksum "$finalnginxconf"
|
|
|
|
fi
|
|
|
|
|
2017-09-13 14:49:10 +02:00
|
|
|
#=================================================
|
|
|
|
# CREATE DEDICATED USER
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# Create a system user
|
2017-09-28 16:42:10 +02:00
|
|
|
ynh_system_user_create "$app" "/home/$app"
|
2017-10-04 10:46:26 +02:00
|
|
|
chsh --shell /bin/bash "$app"
|
2017-09-13 14:49:10 +02:00
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# SPECIFIC UPGRADE
|
2017-09-26 17:01:57 +02:00
|
|
|
#=================================================
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# PIP INSTALLATION
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
(
|
|
|
|
set +eu
|
|
|
|
source "${final_path}/venv/bin/activate"
|
|
|
|
"${final_path}/venv/bin/pip" install Weblate==2.16
|
2017-10-04 10:46:26 +02:00
|
|
|
"${final_path}/venv/bin/pip" install pytz python-bidi PyYaML Babel pyuca pylibravatar pydns psycopg2 python-memcached
|
|
|
|
# specific to YunoHost package:
|
|
|
|
"${final_path}/venv/bin/pip" install django_sendmail_backend
|
2017-09-26 17:01:57 +02:00
|
|
|
)
|
|
|
|
|
2017-09-13 14:49:10 +02:00
|
|
|
#=================================================
|
2017-09-13 16:55:01 +02:00
|
|
|
# Migrate databases
|
2017-09-13 14:49:10 +02:00
|
|
|
#=================================================
|
|
|
|
|
2017-09-15 20:59:21 +02:00
|
|
|
(
|
|
|
|
set +eu
|
|
|
|
source ${final_path}/venv/bin/activate
|
|
|
|
export DJANGO_SETTINGS_MODULE="weblate.settings"
|
2017-10-04 15:22:54 +02:00
|
|
|
cd "${final_path}"
|
2017-09-15 20:59:21 +02:00
|
|
|
weblate migrate --noinput
|
|
|
|
)
|
2017-09-13 16:55:01 +02:00
|
|
|
|
2017-09-13 14:49:10 +02:00
|
|
|
# Verify the checksum and backup the file if it's different
|
2017-09-15 20:59:21 +02:00
|
|
|
ynh_backup_if_checksum_is_different "$final_path/venv/lib/python2.7/site-packages/weblate/settings.py"
|
2017-09-13 14:49:10 +02:00
|
|
|
# Recalculate and store the config file checksum into the app settings
|
2017-09-15 20:59:21 +02:00
|
|
|
ynh_store_file_checksum "$final_path/venv/lib/python2.7/site-packages/weblate/settings.py"
|
2017-09-13 14:49:10 +02:00
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# SETUP LOGROTATE
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
# Use logrotate to manage app-specific logfile(s)
|
|
|
|
ynh_use_logrotate
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# GENERIC FINALIZATION
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# SETUP SSOWAT
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
if [ $is_public -eq 0 ]
|
|
|
|
then # Remove the public access
|
2017-10-04 15:22:54 +02:00
|
|
|
ynh_app_setting_delete "$app" skipped_uris
|
2017-09-13 14:49:10 +02:00
|
|
|
fi
|
|
|
|
# Make app public if necessary
|
|
|
|
if [ $is_public -eq 1 ]
|
|
|
|
then
|
|
|
|
# unprotected_uris allows SSO credentials to be passed anyway
|
2017-10-04 15:22:54 +02:00
|
|
|
ynh_app_setting_set "$app" unprotected_uris "/"
|
2017-10-17 15:46:35 +02:00
|
|
|
|
|
|
|
# ynh panel is not needed
|
|
|
|
ynh_replace_string " include conf.d/" " #include conf.d/" "$finalnginxconf"
|
2017-09-13 14:49:10 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
#=================================================
|
|
|
|
# RELOAD NGINX
|
|
|
|
#=================================================
|
|
|
|
|
|
|
|
systemctl reload nginx
|