1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/ffsync_ynh.git synced 2024-09-03 18:26:38 +02:00

Merge branch 'testing'

This commit is contained in:
Josué Tille 2020-05-13 15:38:06 +02:00
commit 836a078d36
No known key found for this signature in database
GPG key ID: 716A6C99B04194EF
10 changed files with 346 additions and 170 deletions

View file

@ -1,14 +1,12 @@
Mozillas Sync Server for Yunohost # Mozillas Sync Server for Yunohost
==================================
[![Integration level](https://dash.yunohost.org/integration/ffsync.svg)](https://ci-apps.yunohost.org/ci/apps/ffsync%20%28Community%29/lastBuild/consoleFull) [![Integration level](https://dash.yunohost.org/integration/ffsync.svg)](https://dash.yunohost.org/appci/app/ffsync)
[![Install ffsync with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=ffsync) [![Install ffsync with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=ffsync)
> *This package allow you to install ffsync quickly and simply on a YunoHost server. > *This package allow you to install ffsync quickly and simply on a YunoHost server.
If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.* If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.*
Overview ## Overview
--------
The Sync Server provides a replacement for Firefoxs default server (hosted at Mozilla). The Sync Server provides a replacement for Firefoxs default server (hosted at Mozilla).
@ -16,50 +14,31 @@ By default, a server set up will defer authentication to the Mozilla-hosted acco
**Shipped version:** 1.8 **Shipped version:** 1.8
Documentation ## Configuration
-------------
Once installed, reaching `http://domain.tld/path` should show a page explaining how to configure it. Otherwise please refer to the [Yunohost page](https://yunohost.org/#/app_ffsync).
## Documentation
* Official documentation: https://docs.services.mozilla.com/howtos/run-sync-1.5.html * Official documentation: https://docs.services.mozilla.com/howtos/run-sync-1.5.html
* YunoHost documentation: There no other documentations, feel free to contribute. * YunoHost documentation: There no other documentations, feel free to contribute.
YunoHost specific features ## YunoHost specific features
--------------------------
<!--Limitations #### Supported architectures
-----------
* Any known limitations.--> * x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/ffsync%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/ffsync/)
* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/ffsync%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/ffsync/)
Additional informations
-----------------------
### Configuring
Once installed, reaching `http://domain.tld/path` should show a page explaining how to configure it. Otherwise please refer to the [Yunohost page](https://yunohost.org/#/app_ffsync).
## Links ## Links
* Report a bug about this package: https://github.com/YunoHost-Apps/ffsync_ynh/issues * Report a bug about this package: https://github.com/YunoHost-Apps/ffsync_ynh/issues
* Report a bug about firefox sync itself: https://github.com/mozilla-services/syncserver * Upstream app repository: https://github.com/mozilla-services/syncserver
* YunoHost website: https://yunohost.org/ * YunoHost website: https://yunohost.org/
--- ---
Install Developers info
-------
From command line:
`sudo yunohost app install -l ffsync https://github.com/YunoHost-Apps/ffsync_ynh`
Upgrade
-------
From command line:
`sudo yunohost app upgrade ffsync -u https://github.com/YunoHost-Apps/ffsync_ynh`
Developers infos
---------------- ----------------
Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/ffsync_ynh/tree/testing). Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/ffsync_ynh/tree/testing).
@ -70,11 +49,3 @@ sudo yunohost app install https://github.com/YunoHost-Apps/ffsync_ynh/tree/testi
or or
sudo yunohost app upgrade ffsync -u https://github.com/YunoHost-Apps/ffsync_ynh/tree/testing --debug sudo yunohost app upgrade ffsync -u https://github.com/YunoHost-Apps/ffsync_ynh/tree/testing --debug
``` ```
License
-------
ffsync is published under the Mozilla Public License Version 2.0
TODO
----

View file

@ -10,11 +10,12 @@
setup_private=0 setup_private=0
setup_public=1 setup_public=1
upgrade=1 upgrade=1
# 1.6.2 from 05/03/2017
upgrade=1 from_commit=fd6350495d5a1d864ae30e1a61e18939fdb6a428 upgrade=1 from_commit=fd6350495d5a1d864ae30e1a61e18939fdb6a428
# 1.5 from 15/12/2016
upgrade=1 from_commit=267ccc21f7b52d22bc3d5b9cd6239857b9a82aad upgrade=1 from_commit=267ccc21f7b52d22bc3d5b9cd6239857b9a82aad
backup_restore=1 backup_restore=1
multi_instance=1 multi_instance=1
incorrect_path=1
port_already_use=0 port_already_use=0
change_url=0 change_url=0
;;; Levels ;;; Levels

View file

@ -1,9 +1,10 @@
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
location __PATH__/ { location __PATH__/ {
# Path to source # Path to source
alias __FINALPATH__/ ; alias __FINALPATH__/ ;
# Force usage of https
if ($scheme = http) { if ($scheme = http) {
rewrite ^ https://$server_name$request_uri? permanent; rewrite ^ https://$server_name$request_uri? permanent;
} }

View file

@ -1,13 +1,14 @@
{ {
"name": "Firefox Sync Server", "name": "Firefox Sync Server",
"id": "ffsync", "id": "ffsync",
"version": "1.8.0~ynh1",
"url": "https://github.com/mozilla-services/syncserver",
"packaging_format": 1, "packaging_format": 1,
"description": { "description": {
"en": "Mozillas Sync-Server to host your Firefox account data", "en": "Mozillas Sync-Server to host your Firefox account data",
"fr": "Le serveur de synchronisation de Mozilla, pour héberger vos données Firefox" "fr": "Le serveur de synchronisation de Mozilla, pour héberger vos données Firefox"
}, },
"version": "1.8.0~ynh1",
"url": "https://github.com/mozilla-services/syncserver",
"license": "MPL-2.0",
"maintainer": { "maintainer": {
"name": "Josué Tille", "name": "Josué Tille",
"email": "josue@tille.ch" "email": "josue@tille.ch"
@ -20,13 +21,12 @@
"email": "jean-baptiste@holcroft.fr" "email": "jean-baptiste@holcroft.fr"
}], }],
"requirements": { "requirements": {
"yunohost": ">=3.0.0" "yunohost": ">= 3.5"
}, },
"license": "MPL-2.0", "multi_instance": true,
"services": [ "services": [
"nginx" "nginx"
], ],
"multi_instance": true,
"arguments": { "arguments": {
"install" : [ "install" : [
{ {

View file

@ -1,11 +1,17 @@
#!/bin/bash
#================================================= #=================================================
# SET ALL CONSTANTS # COMMON VARIABLES
#================================================= #=================================================
app=$YNH_APP_INSTANCE_NAME
# Note that we also need some specific dependances for build with arm architectures # Note that we also need some specific pkg_dependencies for build with arm architectures
dependances="python-dev python-virtualenv virtualenv uwsgi uwsgi-plugin-python build-essential libssl-dev libffi-dev" # dependencies used by the app
pkg_dependencies="python-dev python-virtualenv virtualenv uwsgi uwsgi-plugin-python build-essential libssl-dev libffi-dev"
#=================================================
# PERSONAL HELPERS
#=================================================
install_sources() { install_sources() {
ynh_setup_source --dest_dir "$final_path" ynh_setup_source --dest_dir "$final_path"
@ -39,3 +45,11 @@ set_permissions() {
chown $app:root /var/log/uwsgi/$app chown $app:root /var/log/uwsgi/$app
chmod -R u=rwX,g=rX,o= /var/log/uwsgi/$app chmod -R u=rwX,g=rX,o= /var/log/uwsgi/$app
} }
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
#=================================================
# FUTURE OFFICIAL HELPERS
#=================================================

View file

@ -3,45 +3,65 @@
#================================================= #=================================================
# GENERIC START # GENERIC START
#================================================= #=================================================
# IMPORT GENERIC HELPERS # IMPORT GENERIC HELPERS
#=================================================
#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
source ../settings/scripts/experimental_helper.sh
source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
# Import common cmd #=================================================
source ../settings/scripts/experimental_helper.sh
source ../settings/scripts/_common.sh
# LOAD SETTINGS # LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." ynh_script_progression --message="Loading installation settings..."
final_path=$(ynh_app_setting_get --app $app --key final_path)
domain=$(ynh_app_setting_get --app $app --key domain) app=$YNH_APP_INSTANCE_NAME
db_name=$(ynh_app_setting_get --app $app --key db_name)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
domain=$(ynh_app_setting_get --app=$app --key=domain)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
#================================================= #=================================================
# STANDARD BACKUP STEPS # STANDARD BACKUP STEPS
#================================================= #=================================================
# BACKUP THE APP MAIN DIR # BACKUP THE APP MAIN DIR
#=================================================
ynh_script_progression --message="Backing up the main app directory..." ynh_script_progression --message="Backing up the main app directory..."
ynh_backup --src_path "$final_path" ynh_backup --src_path="$final_path"
#=================================================
# BACKUP THE NGINX CONFIGURATION # BACKUP THE NGINX CONFIGURATION
ynh_script_progression --message="Backing configuration..." #=================================================
ynh_backup --src_path "/etc/nginx/conf.d/$domain.d/$app.conf" ynh_script_progression --message="Backing up nginx web server configuration..."
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#=================================================
# BACKUP THE MYSQL DATABASE # BACKUP THE MYSQL DATABASE
ynh_script_progression --message="Backing up database" #=================================================
ynh_mysql_dump_db "$db_name" > db.sql ynh_script_progression --message="Backing up the MySQL database..."
ynh_mysql_dump_db --database="$db_name" > db.sql
#=================================================
# SPECIFIC BACKUP
#=================================================
# Backup Log # Backup Log
ynh_script_progression --message="Backing up logs" ynh_script_progression --message="Backing up logs"
ynh_backup --src_path "/var/log/uwsgi/$app" ynh_backup --src_path="/var/log/uwsgi/$app"
# BACKUP THE UWSGI FILES # BACKUP THE UWSGI FILES
ynh_script_progression --message="Backing up configuration..." ynh_script_progression --message="Backing up UWSGI..."
ynh_backup --src_path "/etc/uwsgi/apps-available/$app.ini" ynh_backup --src_path="/etc/uwsgi/apps-available/$app.ini"
ynh_backup --src_path="/etc/systemd/system/uwsgi-app@.service"
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last

View file

@ -3,62 +3,83 @@
#================================================= #=================================================
# GENERIC START # GENERIC START
#================================================= #=================================================
# IMPORT GENERIC HELPERS # IMPORT GENERIC HELPERS
#=================================================
source ./experimental_helper.sh
source ./_common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
# Import common cmd #=================================================
source ./experimental_helper.sh # RETRIEVE ARGUMENTS FROM THE MANIFEST
source ./_common.sh #=================================================
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
secret=$(ynh_string_random)
app=$YNH_APP_INSTANCE_NAME
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#=================================================
ynh_script_progression --message="Validating installation parameters..." ynh_script_progression --message="Validating installation parameters..."
# Retrieve arguments
domain=$YNH_APP_ARG_DOMAIN
path_url=$(ynh_normalize_url_path --path_url $YNH_APP_ARG_PATH)
app=$YNH_APP_INSTANCE_NAME
final_path="/opt/yunohost/$app" final_path="/opt/yunohost/$app"
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
# Generate random password and save
secret=$(ynh_string_random)
# STORE SETTINGS FROM MANIFEST
ynh_app_setting_set --app $app --key final_path --value "$final_path"
ynh_app_setting_set --app $app --key secret --value "$secret"
# Check destination directory
test ! -e "$final_path" || ynh_die --message "This path already contains a folder"
# Register (book) web path # Register (book) web path
ynh_webpath_register --app $app --domain $domain --path_url $path_url ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================
ynh_app_setting_set --app=$app --key=domain --value=$domain
ynh_app_setting_set --app=$app --key=path --value=$path_url
ynh_app_setting_set --app=$app --key=secret --value="$secret"
#================================================= #=================================================
# STANDARD MODIFICATIONS # STANDARD MODIFICATIONS
#================================================= #=================================================
#=================================================
# INSTALL DEPENDENCIES # INSTALL DEPENDENCIES
#=================================================
ynh_script_progression --message="Installing dependencies..." --weight=7 ynh_script_progression --message="Installing dependencies..." --weight=7
ynh_install_app_dependencies $dependances ynh_install_app_dependencies $pkg_dependencies
#=================================================
# CREATE A MYSQL DATABASE # CREATE A MYSQL DATABASE
ynh_script_progression --message="Configuring MySQL database..." #=================================================
db_user=$app ynh_script_progression --message="Creating a MySQL database..."
db_name=$(ynh_sanitize_dbid --db_name $app)
ynh_app_setting_set --app $app --key db_name --value "$db_name"
ynh_mysql_setup_db --db_user "$db_user" --db_name "$db_name"
db_name=$(ynh_sanitize_dbid --db_name=$app)
db_user=$db_name
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE # DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
ynh_script_progression --message="Installing sources files..." --weight=10 ynh_script_progression --message="Installing sources files..." --weight=10
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
install_sources install_sources
# Modify assets to take path into account # Modify assets to take path into account
# TODO: try to include this as a patch if still needed # TODO: try to include this as a patch if still needed
# find ../sources/syncserver/page/sync_files/ -type f -exec sed -i -e "s@media\/img@$path_url\/media\/img@g" {} \; # find ../sources/syncserver/page/sync_files/ -type f -exec sed -i -e "s@media\/img@$path_url\/media\/img@g" {} \;
#=================================================
# NGINX CONFIGURATION # NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Configuring nginx" ynh_script_progression --message="Configuring nginx"
ynh_add_nginx_config ynh_add_nginx_config
@ -72,9 +93,16 @@ fi
ynh_store_file_checksum --file "$finalnginxconf" ynh_store_file_checksum --file "$finalnginxconf"
systemctl reload nginx systemctl reload nginx
#=================================================
# CREATE DEDICATED USER # CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Configuring system user..." ynh_script_progression --message="Configuring system user..."
ynh_system_user_create --username "$app" --home_dir "$final_path" # Create a system user
ynh_system_user_create --username=$app --home_dir=$final_path
#=================================================
# SPECIFIC SETUP
#=================================================
# create config file syncserver.ini # create config file syncserver.ini
ynh_script_progression --message="Configuring application..." ynh_script_progression --message="Configuring application..."
@ -84,7 +112,9 @@ ln -s "/etc/uwsgi/apps-available/$app.ini" "$final_path/syncserver.ini"
# configure uwsgi # configure uwsgi
ynh_add_uwsgi_service 'domain secret db_user db_pwd db_name' ynh_add_uwsgi_service 'domain secret db_user db_pwd db_name'
#=================================================
# MODIFY A CONFIG FILE # MODIFY A CONFIG FILE
#=================================================
# TODO: fix this css patch # TODO: fix this css patch
# ynh_replace_string "media\/img@$path_url\/media\/img@g" $final_path/syncserver/page/sync_files/firefox_sync-bundle.css # ynh_replace_string "media\/img@$path_url\/media\/img@g" $final_path/syncserver/page/sync_files/firefox_sync-bundle.css
# ynh_replace_string "media\/img@$path_url\/media\/img@g" $final_path/syncserver/page/sync_files/responsive-bundle.css # ynh_replace_string "media\/img@$path_url\/media\/img@g" $final_path/syncserver/page/sync_files/responsive-bundle.css
@ -92,14 +122,38 @@ ynh_add_uwsgi_service 'domain secret db_user db_pwd db_name'
#================================================= #=================================================
# GENERIC FINALIZATION # GENERIC FINALIZATION
#================================================= #=================================================
# SECURE FILES AND DIRECTORIES # SECURE FILES AND DIRECTORIES
#=================================================
ynh_script_progression --message="Protecting directory" ynh_script_progression --message="Protecting directory"
# Set permissions to app files
set_permissions set_permissions
#=================================================
# INTEGRATE SERVICE IN YUNOHOST
#=================================================
ynh_print_info --message="Integrating service in YunoHost..."
yunohost service add "uwsgi-app@$app.service" --log "/var/log/uwsgi/app/$app"
#=================================================
# SETUP SSOWAT # SETUP SSOWAT
# accessible by everyone (authentification is done by firefox accounts) #=================================================
ynh_script_progression --message="Configuring permissions" ynh_script_progression --message="Configuring permissions"
ynh_app_setting_set --app $app --key skipped_uris --value "/" # accessible by everyone (authentification is done by firefox accounts)
ynh_app_setting_set --app=$app --key=skipped_uris --value="/"
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading nginx web server..."
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Installation of $app completed" --last ynh_script_progression --message="Installation of $app completed" --last

View file

@ -3,50 +3,90 @@
#================================================= #=================================================
# GENERIC START # GENERIC START
#================================================= #=================================================
# IMPORT GENERIC HELPERS
#=================================================
# Source YunoHost helpers
source /usr/share/yunohost/helpers
# Stop script if errors
set -u
# Import common cmd
source ./experimental_helper.sh source ./experimental_helper.sh
source ./_common.sh source ./_common.sh
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS # LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." ynh_script_progression --message="Loading installation settings..."
domain=$(ynh_app_setting_get --app $app --key domain)
final_path=$(ynh_app_setting_get --app $app --key final_path) app=$YNH_APP_INSTANCE_NAME
db_user=$app
db_name=$app domain=$(ynh_app_setting_get --app=$app --key=domain)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
db_user=$db_name
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#================================================= #=================================================
# STANDARD REMOVE # STANDARD REMOVE
#================================================= #=================================================
# REMOVE UWSGI # REMOVE UWSGI
#=================================================
# Remove the service from the list of services known by Yunohost (added from `yunohost service add`)
if ynh_exec_warn_less yunohost service status $app >/dev/null
then
ynh_print_info --message="Removing $app service..."
yunohost service remove uwsgi-app@$app.service
fi
#=================================================
# STOP AND REMOVE SERVICE
#=================================================
ynh_script_progression --message="Removing configuration..." ynh_script_progression --message="Removing configuration..."
# Remove the dedicated systemd config
ynh_remove_uwsgi_service ynh_remove_uwsgi_service
#=================================================
# REMOVE THE MYSQL DATABASE
#=================================================
ynh_script_progression --message="Removing the MySQL database..."
# Remove a database if it exists, along with the associated user
ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name
#=================================================
# REMOVE DEPENDENCIES # REMOVE DEPENDENCIES
#=================================================
ynh_script_progression --message="Removing dependencies" --weight=10 ynh_script_progression --message="Removing dependencies" --weight=10
# Remove metapackage and its dependencies
ynh_remove_app_dependencies ynh_remove_app_dependencies
# REMOVE THE MYSQL DATABASE #=================================================
ynh_script_progression --message="Removing databases..."
ynh_mysql_remove_db --db_user "$db_user" --db_name "$db_name"
# REMOVE APP MAIN DIR # REMOVE APP MAIN DIR
ynh_script_progression --message="Backing up the main app directory..." #=================================================
ynh_script_progression --message="Removing app main directory..."
# Remove the app directory securely
ynh_secure_remove --file="$final_path" ynh_secure_remove --file="$final_path"
#=================================================
# REMOVE NGINX CONFIGURATION # REMOVE NGINX CONFIGURATION
ynh_script_progression --message="Removing nginx configuration" #=================================================
ynh_script_progression --message="Removing nginx web server configuration..."
# Remove the dedicated nginx config
ynh_remove_nginx_config ynh_remove_nginx_config
#=================================================
# GENERIC FINALIZATION
#=================================================
# REMOVE DEDICATED USER
#=================================================
ynh_script_progression --message="Removing the dedicated system user..."
# Delete a system user # Delete a system user
ynh_script_progression --message="Removing user..." ynh_system_user_delete --username=$app
ynh_system_user_delete --username "$app"
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Removal of $app completed" --last ynh_script_progression --message="Removal of $app completed" --last

View file

@ -3,26 +3,38 @@
#================================================= #=================================================
# GENERIC START # GENERIC START
#================================================= #=================================================
# IMPORT GENERIC HELPERS # IMPORT GENERIC HELPERS
#=================================================
source ../settings/scripts/experimental_helper.sh
source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
# Import common cmd #=================================================
source ../settings/scripts/experimental_helper.sh
source ../settings/scripts/_common.sh
# LOAD SETTINGS # LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading settings..." ynh_script_progression --message="Loading settings..."
domain=$(ynh_app_setting_get --app $app --key domain)
path_url=$(ynh_app_setting_get --app $app --key path)
final_path=$(ynh_app_setting_get --app $app --key final_path)
db_name=$(ynh_app_setting_get --app $app --key db_name)
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
db_user=$db_name
#=================================================
# CHECK IF THE APP CAN BE RESTORED # CHECK IF THE APP CAN BE RESTORED
ynh_webpath_available --domain $domain --path_url $path_url || ynh_die --message "$domain/$path_url is not available, please use an other domain or path." #=================================================
ynh_webpath_available --domain=$domain --path_url=$path_url \
|| ynh_die --message="Path not available: ${domain}${path_url}"
test ! -d $final_path \
|| ynh_die --message="There is already a directory: $final_path "
#================================================= #=================================================
# STANDARD RESTORATION STEPS # STANDARD RESTORATION STEPS
@ -32,26 +44,43 @@ ynh_webpath_available --domain $domain --path_url $path_url || ynh_die --message
ynh_script_progression --message="Restoring files..." --weight=5 ynh_script_progression --message="Restoring files..." --weight=5
ynh_restore ynh_restore
# RESTORE THE MYSQL DATABASE #=================================================
ynh_script_progression --message="Restoring database..." --weight=3
db_pwd=$(ynh_app_setting_get --app $app --key mysqlpwd)
ynh_mysql_setup_db --db_user "$db_name" --db_name "$db_name" --db_pwd "$db_pwd"
ynh_mysql_connect_as --user "$db_name" --password "$db_pwd" --database "$db_name" < ./db.sql
# RECREATE THE DEDICATED USER # RECREATE THE DEDICATED USER
#=================================================
ynh_script_progression --message="Recreating the dedicated system user..." ynh_script_progression --message="Recreating the dedicated system user..."
ynh_system_user_create --username "$app" ynh_system_user_create --username="$app"
usermod --append --groups www-data "$app" usermod --append --groups www-data "$app"
# REINSTALL DEPENDENCIES #=================================================
ynh_script_progression --message="Reinstalling dependencies..." --weight=5 # RESTORE USER RIGHTS
ynh_install_app_dependencies $dependances #=================================================
ynh_script_progression --message="Restoring user rights..."
# set authorizations
ynh_script_progression --message="Protecting directory..."
set_permissions set_permissions
# ADVERTISE SERVICE IN ADMIN PANEL #=================================================
# SPECIFIC RESTORATION
#=================================================
# REINSTALL DEPENDENCIES
#=================================================
ynh_script_progression --message="Reinstalling dependencies..." --weight=5
# Define and install dependencies
ynh_install_app_dependencies $pkg_dependencies
#=================================================
# RESTORE THE MYSQL DATABASE
#=================================================
ynh_script_progression --message="Restoring database..." --weight=3
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql
#=================================================
# INTEGRATE SERVICE IN YUNOHOST
#=================================================
yunohost service add "uwsgi-app@$app.service" --log "/var/log/uwsgi/app/$app" yunohost service add "uwsgi-app@$app.service" --log "/var/log/uwsgi/app/$app"
ynh_script_progression --message="Reloading services..." --weight=3 ynh_script_progression --message="Reloading services..." --weight=3
@ -59,7 +88,12 @@ ynh_script_progression --message="Reloading services..." --weight=3
ynh_check_global_uwsgi_config ynh_check_global_uwsgi_config
systemctl enable "uwsgi-app@$app.service" systemctl enable "uwsgi-app@$app.service"
#=================================================
# GENERIC FINALIZATION
#=================================================
# RELOAD NGINX AND UWSGI # RELOAD NGINX AND UWSGI
#=================================================
systemctl start "uwsgi-app@$app.service" systemctl start "uwsgi-app@$app.service"
systemctl reload nginx systemctl reload nginx

View file

@ -3,46 +3,56 @@
#================================================= #=================================================
# GENERIC START # GENERIC START
#================================================= #=================================================
# IMPORT GENERIC HELPERS # IMPORT GENERIC HELPERS
source /usr/share/yunohost/helpers #=================================================
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
# Import common cmd
source ./experimental_helper.sh source ./experimental_helper.sh
source ./_common.sh source ./_common.sh
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS # LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." ynh_script_progression --message="Loading installation settings..."
domain=$(ynh_app_setting_get --app $app --key domain)
path_url=$(ynh_app_setting_get --app $app --key path)
db_name=$(ynh_app_setting_get --app $app --key db_name)
db_pwd=$(ynh_app_setting_get --app $app --key mysqlpwd)
db_user=$app
final_path=$(ynh_app_setting_get --app $app --key final_path)
secret=$(ynh_app_setting_get --app $app --key secret)
path_url=$(ynh_normalize_url_path "$path_url")
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
final_path=$(ynh_app_setting_get --app $app --key=final_path)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
secret=$(ynh_app_setting_get --app $app --key=secret)
db_pwd=$(ynh_app_setting_get --app=$app --key mysqlpwd)
db_user=$app
#=================================================
# CHECK VERSION
#=================================================
ynh_print_info --message="Checking version..."
upgrade_type=$(ynh_check_app_version_changed)
#=================================================
# ENSURE DOWNWARD COMPATIBILITY
#=================================================
ynh_script_progression --message="Checking backware compatibility..." --weight=10 ynh_script_progression --message="Checking backware compatibility..." --weight=10
# If db_name doesn't exist, create it # If db_name doesn't exist, create it
if [ -z "$db_name" ]; then if [ -z "$db_name" ]; then
db_name=$(ynh_sanitize_dbid "$app") db_name=$(ynh_sanitize_dbid --db_name=$app)
ynh_app_setting_set --app $app --key db_name --value "$db_name" ynh_app_setting_set --app=$app --key=db_name --value=$db_name
fi fi
# If final_path doesn't exist, create it # If final_path doesn't exist, create it
if [ -z "$final_path" ]; then if [ -z "$final_path" ]; then
final_path=/opt/yunohost/$app final_path=/opt/yunohost/$app
ynh_app_setting_set --app $app --key final_path --value "$final_path" ynh_app_setting_set --app=$app --key=final_path --value=$final_path
fi fi
# If path_url doesn't exist, create it # If path_url doesn't exist, create it
if [ -z "$path_url" ]; then if [ -z "$path_url" ]; then
path_url=$(ynh_app_setting_get --app $app --key path) path_url=$(ynh_app_setting_get --app=$app --key=path)
ynh_app_setting_set --app $app --key path --value "$path_url" ynh_app_setting_set --app=$app --key=path --value="$path_url"
ynh_app_setting_delete "$app" path ynh_app_setting_delete "$app" path
fi fi
@ -58,27 +68,42 @@ if [ -e /etc/init.d/ffsync ]; then
yunohost service remove "$app" yunohost service remove "$app"
fi fi
# Backup the current version of the ap #=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=10 ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=10
# Backup the current version of the app
ynh_backup_before_upgrade ynh_backup_before_upgrade
ynh_clean_setup () { ynh_clean_setup () {
# restore it if the upgrade fails # restore it if the upgrade fails
ynh_restore_upgradebackup ynh_restore_upgradebackup
} }
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#================================================= #=================================================
# STANDARD UPGRADE STEPS # STANDARD UPGRADE STEPS
#================================================= #=================================================
# Check depends installation
#=================================================
# UPGRADE DEPENDENCIES
#=================================================
ynh_script_progression --message="Upgrading dependencies..." ynh_script_progression --message="Upgrading dependencies..."
ynh_install_app_dependencies $dependances ynh_install_app_dependencies $pkg_dependencies
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_script_progression --message="Upgrading source files..." --weight=6 ynh_script_progression --message="Upgrading source files..." --weight=6
install_sources install_sources
#=================================================
# NGINX CONFIGURATION # NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Configuring nginx..." ynh_script_progression --message="Configuring nginx..."
ynh_add_nginx_config ynh_add_nginx_config
@ -92,11 +117,18 @@ fi
ynh_store_file_checksum --file "$finalnginxconf" ynh_store_file_checksum --file "$finalnginxconf"
systemctl reload nginx systemctl reload nginx
# Create a system user #=================================================
ynh_system_user_create "$app" # CREATE DEDICATED USER
#=================================================
ynh_system_user_create --username="$app"
#=================================================
# SPECIFIC UPGRADE
#=================================================
# SETUP UWSGI # SETUP UWSGI
ynh_script_progression --message="Configuring application..." ynh_script_progression --message="Configuring application..."
# create config file syncserver.ini # create config file syncserver.ini
rm "$final_path/syncserver.ini" rm "$final_path/syncserver.ini"
ln -s "/etc/uwsgi/apps-available/$app.ini" "$final_path/syncserver.ini" ln -s "/etc/uwsgi/apps-available/$app.ini" "$final_path/syncserver.ini"
@ -107,12 +139,21 @@ ynh_add_uwsgi_service 'domain secret db_user db_pwd db_name'
#================================================= #=================================================
# GENERIC FINALIZATION # GENERIC FINALIZATION
#================================================= #=================================================
# SECURE FILES AND DIRECTORIES # SECURE FILES AND DIRECTORIES
ynh_script_progression --message="Protecting directory..." #=================================================
ynh_script_progression --message="Securing files and directories..."
# Set permissions on app files
set_permissions set_permissions
#=================================================
# SETUP SSOWAT # SETUP SSOWAT
ynh_app_setting_set --app $app --key skipped_uris --value "/" #=================================================
ynh_app_setting_set --app=$app --key=skipped_uris --value="/"
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Upgrade of $app completed" --last ynh_script_progression --message="Upgrade of $app completed" --last