1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/facilmap_ynh.git synced 2024-09-03 18:36:07 +02:00

Merge branch 'version_2' into testing

This commit is contained in:
Salamandar 2024-01-27 13:08:41 +01:00
commit 95428a05ee
19 changed files with 142 additions and 581 deletions

View file

@ -24,7 +24,7 @@ Collaborative maps and routing with a straightforward interface
## Screenshots
![Screenshot of Facilmap](./doc/screenshots/screenshot.png)
![Screenshot of Facilmap](./doc/screenshots/screenshot.webp)
## Documentation and resources

View file

@ -16,7 +16,8 @@ Si vous navez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po
## Vue densemble
Carte collaborative avec une interface simple et pratique
Cartes et itinéraires collaboratifs avec une interface simple.
**Version incluse :** 3.4.0~ynh2
@ -24,7 +25,7 @@ Carte collaborative avec une interface simple et pratique
## Captures décran
![Capture décran de Facilmap](./doc/screenshots/screenshot.png)
![Capture décran de Facilmap](./doc/screenshots/screenshot.webp)
## Documentations et ressources

View file

@ -1,24 +0,0 @@
;; Test complet
; Manifest
domain="domain.tld"
path="/path"
is_public=1
ors_token="test"
mapbox_token="test"
maxmind_user_id=""
maxmind_license_key=""
user_agent="FacilMap (https://facilmap.org/, webmaster@example.org)"
; Checks
pkg_linter=1
setup_sub_dir=1
setup_root=1
setup_nourl=0
setup_private=1
setup_public=1
upgrade=1
backup_restore=1
multi_instance=1
change_url=1
;;; Options
Email=squeak@eauchat.org
Notification=none

View file

@ -7,10 +7,10 @@ Type=simple
User=__APP__
Group=__APP__
Environment=NODE_ENV=production
Environment=DOTENV_CONFIG_PATH=__FINALPATH__/etc/facilmap.env
Environment=DOTENV_CONFIG_PATH=__INSTALL_DIR__/etc/facilmap.env
Environment="__YNH_NODE_LOAD_PATH__"
ExecStart=__FINALPATH__/bin/facilmap-server
WorkingDirectory=__FINALPATH__
ExecStart=__INSTALL_DIR__/bin/facilmap-server
WorkingDirectory=__INSTALL_DIR__
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=__APP__

1
doc/DESCRIPTION.md Normal file
View file

@ -0,0 +1 @@
Collaborative maps and routing with a straightforward interface

1
doc/DESCRIPTION_fr.md Normal file
View file

@ -0,0 +1 @@
Cartes et itinéraires collaboratifs avec une interface simple.

View file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

View file

@ -1,123 +0,0 @@
{
"name": "Facilmap",
"id": "facilmap",
"packaging_format": 1,
"description": {
"en": "Collaborative maps and routing with a straightforward interface",
"fr": "Carte collaborative avec une interface simple et pratique"
},
"version": "3.4.0~ynh2",
"url": "https://github.com/FacilMap/facilmap",
"upstream": {
"license": "AGPL-3.0",
"website": "https://facilmap.org/",
"demo": "https://facilmap.org/",
"admindoc": "https://docs.facilmap.org/developers/",
"userdoc": "https://docs.facilmap.org/users/",
"code": "https://github.com/FacilMap/facilmap"
},
"license": "AGPL-3.0",
"maintainer": {
"name": "Squeak",
"email": "squeak@eauchat.org",
"url": "https://squeak.eauchat.org"
},
"requirements": {
"yunohost": ">= 11.2"
},
"multi_instance": true,
"services": [
"nginx",
"mysql"
],
"arguments": {
"install" : [
{
"name": "domain",
"type": "domain"
},
{
"name": "path",
"type": "path",
"example": "/example",
"default": "/example"
},
{
"name": "is_public",
"type": "boolean",
"default": true
},
{
"name": "tokens_info",
"type": "display_text",
"ask": {
"en": "The following questions concern tokens of accounts to external services in order for facilmap to work. Some are optional and just improve the facilmap experience. You will need to subscribe to the services to create accounts in order to be able to have those tokens.",
"fr": "Les questions qui suivent concernent les tokens associés à des comptes liés à des services externes auxquels vous devriez souscrire en tant qu'administrateur de facilmap. Certains sont optionels et permettent simplement d'améliorer l'expérience de facilmap. Pour obtenir ces tokens, vous devrez créer des comptes chez les services correspondants."
}
},
{
"name": "ors_token",
"type": "string",
"ask": {
"en": "Fill in your OpenRouteService token",
"fr": "Remplissez ici votre token OpenRouteService"
},
"help": {
"en": "OpenRouteService is used for calculating routes with advanced settings. You can get a token on https://openrouteservice.org/",
"fr": "OpenRouteService est utilisé pour calculer les routes complexes. Vous pouvez obtenir un token ici: https://openrouteservice.org/"
}
},
{
"name": "mapbox_token",
"type": "string",
"ask": {
"en": "Fill in your MapBox token",
"fr": "Remplissez ici votre token MapBox"
},
"help": {
"en": "MapBox is used for calculating routes with simple settings. You can get an API key on https://www.mapbox.com/signup/",
"fr": "MapBox est utilisé pour calcluer les routes simples. Vous pouvez obtenir une clé API ici : https://www.mapbox.com/signup/"
}
},
{
"name": "maxmind_user_id",
"type": "string",
"ask": {
"en": "Fill in your maxmind user id",
"fr": "Remplissez ici votre identifiant maxmind"
},
"help": {
"en": "Maxmind configuration. If specified, the maxmind GeoLite2 database will be downloaded for Geo IP lookup (to show the initial map state) and kept in memory. Sign up here: https://www.maxmind.com/en/geolite2/signup",
"fr": "Configuration maxmind. Si vous spécifiez ce champ et le prochain, la base de donnée maxmind GeoLite2 sera téléchargée puis gardée en mémoire, pour localiser les addresse IP (afin que le chargement de la carte se fasse centré là où l'utilisateur est). Vous pouvez créer un compte ici : https://www.maxmind.com/en/geolite2/signup"
},
"optional": true
},
{
"name": "maxmind_license_key",
"type": "string",
"ask": {
"en": "Fill in your maxmind license key",
"fr": "Remplissez ici votre clé de license maxmind"
},
"help": {
"en": "License key associated to the maxmind user ID you specified.",
"fr": "La clé de license associée à l'utilisateur maxmind que vous avez spécifié."
},
"optional": true
},
{
"name": "user_agent",
"type": "string",
"ask": {
"en": "User-Agent header",
"fr": "Entête User-Agent facilmap"
},
"help": {
"en": "HTTP requests made by the backend will send this User-Agent header. Fill here the URL facilmap will have and your e-mail address.",
"fr": "Les requêtes faites par le serveur enveront cette entête User-Agent. Remplissez ici l'URL de votre instance facilmap et votre adresse email."
},
"example": "FacilMap (https://facilmapdomain.tld/, webmaster@example.org)"
}
]
}
}

95
manifest.toml Normal file
View file

@ -0,0 +1,95 @@
packaging_format = 2
id = "facilmap"
name = "Facilmap"
description.en = "Collaborative maps and routing with a straightforward interface"
description.fr = "Carte collaborative avec une interface simple et pratique"
version = "3.4.0~ynh2"
maintainers = ["Squeak"]
[upstream]
license = "AGPL-3.0"
website = "https://facilmap.org/"
demo = "https://facilmap.org/"
admindoc = "https://docs.facilmap.org/developers/"
userdoc = "https://docs.facilmap.org/users/"
code = "https://github.com/FacilMap/facilmap"
[integration]
yunohost = ">= 11.2"
architectures = "all"
multi_instance = true
ldap = false
sso = false
disk = "50M"
ram.build = "50M"
ram.runtime = "50M"
[install]
[install.domain]
type = "domain"
[install.path]
type = "path"
default = "/facilmap"
[install.init_main_permission]
type = "group"
default = "visitors"
[install.ors_token]
ask.en = "Fill in your OpenRouteService token"
ask.fr = "Remplissez ici votre token OpenRouteService"
help.en = "OpenRouteService is used for calculating routes with advanced settings. You can get a token on https://openrouteservice.org/"
help.fr = "OpenRouteService est utilisé pour calculer les routes complexes. Vous pouvez obtenir un token ici: https://openrouteservice.org/"
type = "string"
[install.mapbox_token]
ask.en = "Fill in your MapBox token"
ask.fr = "Remplissez ici votre token MapBox"
help.en = "MapBox is used for calculating routes with simple settings. You can get an API key on https://www.mapbox.com/signup/"
help.fr = "MapBox est utilisé pour calcluer les routes simples. Vous pouvez obtenir une clé API ici : https://www.mapbox.com/signup/"
type = "string"
[install.maxmind_user_id]
ask.en = "Fill in your maxmind user id"
ask.fr = "Remplissez ici votre identifiant maxmind"
help.en = "Maxmind configuration. If specified, the maxmind GeoLite2 database will be downloaded for Geo IP lookup (to show the initial map state) and kept in memory. Sign up here: https://www.maxmind.com/en/geolite2/signup"
help.fr = "Configuration maxmind. Si vous spécifiez ce champ et le prochain, la base de donnée maxmind GeoLite2 sera téléchargée puis gardée en mémoire, pour localiser les addresse IP (afin que le chargement de la carte se fasse centré là où l'utilisateur est). Vous pouvez créer un compte ici : https://www.maxmind.com/en/geolite2/signup"
type = "string"
optional = true
[install.maxmind_license_key]
ask.en = "Fill in your maxmind license key"
ask.fr = "Remplissez ici votre clé de license maxmind"
help.en = "License key associated to the maxmind user ID you specified."
help.fr = "La clé de license associée à l'utilisateur maxmind que vous avez spécifié."
type = "string"
optional = true
[install.user_agent]
ask.en = "User-Agent header"
ask.fr = "Entête User-Agent facilmap"
help.en = "HTTP requests made by the backend will send this User-Agent header. Fill here the URL facilmap will have and your e-mail address."
help.fr = "Les requêtes faites par le serveur enveront cette entête User-Agent. Remplissez ici l'URL de votre instance facilmap et votre adresse email."
type = "string"
example = "FacilMap (https://facilmapdomain.tld/, webmaster@example.org)"
[resources]
[resources.ports]
[resources.system_user]
[resources.install_dir]
[resources.permissions]
main.url = "/"
[resources.apt]
packages = "mariadb-server"
[resources.database]
type = "mysql"

View file

@ -1,49 +1,5 @@
#!/bin/bash
#=================================================
# COMMON VARIABLES
#=================================================
nodejs_version=14
nodejs_version=20
facilmap_version=3.4.0
#=================================================
# PERSONAL HELPERS
#=================================================
facilmap_add_config() {
mkdir -p "$final_path/etc"
ynh_add_config --template="../conf/config.env" --destination="$final_path/etc/facilmap.env"
}
facilmap_set_permissions() {
chown -R $app:$app $final_path
mkdir -p "$final_path/lib/node_modules/facilmap-server/cache"
}
facilmap_install_app() {
chown -R "$app":"$app" $final_path
pushd "$final_path"
ynh_exec_as "$app" "$ynh_node_load_PATH" "$ynh_npm" install --prefix "$final_path" -g facilmap-server@"$facilmap_version"
popd
}
facilmap_create_user() {
ynh_system_user_create --username=$app --home_dir="$final_path"
mkdir -p "$final_path"
}
facilmap_create_db() {
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
echo "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name
}
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
#=================================================
# FUTURE OFFICIAL HELPERS
#=================================================

View file

@ -10,28 +10,6 @@
source ../settings/scripts/_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
#=================================================
# LOAD SETTINGS
#=================================================
ynh_print_info --message="Loading installation settings..."
app=$YNH_APP_INSTANCE_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)
#=================================================
# DECLARE DATA AND CONF FILES TO BACKUP
#=================================================
@ -41,7 +19,7 @@ ynh_print_info --message="Declaring files to be backed up..."
# BACKUP THE APP MAIN DIR
#=================================================
ynh_backup --src_path="$final_path"
ynh_backup --src_path="$install_dir"
#=================================================
# BACKUP THE NGINX CONFIGURATION

View file

@ -9,60 +9,6 @@
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# RETRIEVE ARGUMENTS
#=================================================
old_domain=$YNH_APP_OLD_DOMAIN
old_path=$YNH_APP_OLD_PATH
new_domain=$YNH_APP_NEW_DOMAIN
new_path=$YNH_APP_NEW_PATH
app=$YNH_APP_INSTANCE_NAME
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
# Needed for helper "ynh_add_nginx_config"
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
port=$(ynh_app_setting_get --app=$app --key=port)
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=30
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
# Remove the new domain config file, the remove script won't do it as it doesn't know yet its location.
ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
# Restore it if the upgrade fails
ynh_restore_upgradebackup
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# CHECK WHICH PARTS SHOULD BE CHANGED
#=================================================
change_domain=0
if [ "$old_domain" != "$new_domain" ]
then
change_domain=1
fi
change_path=0
if [ "$old_path" != "$new_path" ]
then
change_path=1
fi
#=================================================
# STANDARD MODIFICATIONS
#=================================================
@ -77,29 +23,7 @@ ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd"
#=================================================
ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
# Change the path in the NGINX config file
if [ $change_path -eq 1 ]
then
# Make a backup of the original NGINX config file if modified
ynh_backup_if_checksum_is_different --file="$nginx_conf_path"
# Set global variables for NGINX helper
domain="$old_domain"
path_url="$new_path"
# Create a dedicated NGINX config
ynh_add_nginx_config
fi
# Change the domain for NGINX
if [ $change_domain -eq 1 ]
then
# Delete file checksum for the old conf file location
ynh_delete_file_checksum --file="$nginx_conf_path"
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
# Store file checksum for the new config file location
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
fi
ynh_change_url_nginx_config
#=================================================
# GENERIC FINALISATION
@ -110,13 +34,6 @@ ynh_script_progression --message="Starting a systemd service..." --weight=7
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Server started"
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================

View file

@ -9,70 +9,6 @@
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
#=================================================
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
is_public=$YNH_APP_ARG_IS_PUBLIC
user_agent="$YNH_APP_ARG_USER_AGENT"
# APIS TOKENS
ors_token="$YNH_APP_ARG_ORS_TOKEN"
mapbox_token="$YNH_APP_ARG_MAPBOX_TOKEN"
maxmind_user_id="$YNH_APP_ARG_MAXMIND_USER_ID"
maxmind_license_key="$YNH_APP_ARG_MAXMIND_LICENSE_KEY"
app=$YNH_APP_INSTANCE_NAME
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#=================================================
ynh_script_progression --message="Validating installation parameters..." --weight=1
final_path=/opt/yunohost/$app
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
# Register (book) web path
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================
ynh_script_progression --message="Storing installation settings..." --weight=1
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=user_agent --value=$user_agent
ynh_app_setting_set --app=$app --key=ors_token --value=$ors_token
ynh_app_setting_set --app=$app --key=mapbox_token --value=$mapbox_token
ynh_app_setting_set --app=$app --key=maxmind_user_id --value=$maxmind_user_id
ynh_app_setting_set --app=$app --key=maxmind_license_key --value=$maxmind_license_key
#=================================================
# STANDARD MODIFICATIONS
#=================================================
# FIND AND OPEN A PORT
#=================================================
ynh_script_progression --message="Finding an available port..." --weight=1
# Find an available port
port=$(ynh_find_port --port=8080)
ynh_app_setting_set --app=$app --key=port --value=$port
#=================================================
# INSTALL DEPENDENCIES
#=================================================
@ -85,27 +21,8 @@ ynh_install_nodejs --nodejs_version=$nodejs_version
#=================================================
ynh_script_progression --message="Creating a MySQL database..." --weight=2
db_name=$(ynh_sanitize_dbid --db_name=$app)
db_user=$db_name
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name
echo "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Configuring system user..." --weight=1
ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
ynh_script_progression --message="Setting up source files..." --weight=10
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
#=================================================
# NGINX CONFIGURATION
#=================================================
@ -121,16 +38,16 @@ ynh_add_nginx_config
#=================================================
ynh_script_progression --message="Building node dependencies..." --weight=20
mkdir -p $final_path
chown -R $app $final_path
mkdir -p $install_dir
chown -R $app $install_dir
pushd $final_path
ynh_exec_as $app "$ynh_node_load_PATH" $ynh_npm install --prefix "$final_path" -g facilmap-server@"$facilmap_version" 2>/dev/null
pushd $install_dir
ynh_exec_as $app "$ynh_node_load_PATH" $ynh_npm install --prefix "$install_dir" -g facilmap-server@"$facilmap_version" 2>/dev/null
popd
chmod 750 "$final_path"
chmod -R o-rwx "$final_path"
chown -R $app:www-data "$final_path"
chmod 750 "$install_dir"
chmod -R o-rwx "$install_dir"
chown -R $app:www-data "$install_dir"
#=================================================
# SETUP SYSTEMD
@ -145,8 +62,8 @@ ynh_add_systemd_config
#=================================================
ynh_script_progression --message="Adding configuration..." --weight=2
mkdir -p $final_path/etc
ynh_add_config --template="../conf/config.env" --destination="$final_path/etc/facilmap.env"
mkdir -p $install_dir/etc
ynh_add_config --template="../conf/config.env" --destination="$install_dir/etc/facilmap.env"
#=================================================
# SETUP LOGROTATE
@ -171,24 +88,6 @@ ynh_script_progression --message="Starting a systemd service..." --weight=7
# Start a systemd service
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Server started"
#=================================================
# SETUP SSOWAT
#=================================================
ynh_script_progression --message="Configuring app permissions..." --weight=2
# Make app public if necessary
if [ $is_public -eq 1 ]
then
ynh_permission_update --permission="main" --add="visitors"
fi
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=2
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================

View file

@ -9,19 +9,6 @@
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
port=$(ynh_app_setting_get --app=$app --key=port)
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
#=================================================
@ -43,57 +30,14 @@ ynh_script_progression --message="Stopping and removing the systemd service..."
# Remove the dedicated systemd config
ynh_remove_systemd_config
#=================================================
# REMOVE THE MYSQL DATABASE
#=================================================
ynh_script_progression --message="Removing the MySQL database..." --weight=3
# 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
#=================================================
ynh_script_progression --message="Removing dependencies..." --weight=3
# Remove metapackage and its dependencies
ynh_remove_app_dependencies
ynh_remove_nodejs
#=================================================
# REMOVE APP MAIN DIR
#=================================================
ynh_script_progression --message="Removing app main directory..." --weight=2
# Remove the app directory securely
ynh_secure_remove --file="$final_path"
#=================================================
# REMOVE NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1
# Remove the dedicated NGINX config
ynh_remove_nginx_config
#=================================================
# REMOVE LOGROTATE CONFIGURATION
#=================================================
ynh_script_progression --message="Removing logrotate configuration..." --weight=1
# Remove the app-specific logrotate config
ynh_remove_logrotate
#=================================================
# GENERIC FINALIZATION
#=================================================
# REMOVE DEDICATED USER
#=================================================
ynh_script_progression --message="Removing the dedicated system user..." --weight=1
# Delete a system user
ynh_system_user_delete --username=$app
#=================================================
# END OF SCRIPT
#=================================================

View file

@ -10,37 +10,6 @@
source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
true
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=2
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
#=================================================
ynh_script_progression --message="Validating restoration parameters..." --weight=2
test ! -d $final_path \
|| ynh_die --message="There is already a directory: $final_path "
#=================================================
# STANDARD RESTORATION STEPS
#=================================================
@ -49,31 +18,23 @@ test ! -d $final_path \
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#=================================================
# RECREATE THE DEDICATED USER
#=================================================
ynh_script_progression --message="Recreating the dedicated system user..." --weight=2
# Create the dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
# RESTORE THE APP MAIN DIR
#=================================================
ynh_script_progression --message="Restoring the app main directory..." --weight=2
ynh_restore_file --origin_path="$final_path"
ynh_restore_file --origin_path="$install_dir"
chmod 750 "$final_path"
chmod -R o-rwx "$final_path"
chown -R $app:www-data "$final_path"
chmod 750 "$install_dir"
chmod -R o-rwx "$install_dir"
chown -R $app:www-data "$install_dir"
#=================================================
# SPECIFIC RESTORATION
#=================================================
# REINSTALL DEPENDENCIES
#=================================================
ynh_script_progression --message="Reinstalling dependencies..." --weight=10
#REMOVEME? ynh_script_progression --message="Reinstalling dependencies..." --weight=10
# Define and install dependencies
ynh_install_nodejs --nodejs_version=$nodejs_version
@ -83,8 +44,6 @@ ynh_install_nodejs --nodejs_version=$nodejs_version
#=================================================
ynh_script_progression --message="Restoring the MySQL database..." --weight=5
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
echo "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql

View file

@ -9,48 +9,12 @@
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=2
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
port=$(ynh_app_setting_get --app=$app --key=port)
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
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
# APIS TOKENS AND USER AGENT (USEFUL TO RESTORE CONFIG FILE)
user_agent=$(ynh_app_setting_get --app=$app --key=user_agent)
ors_token=$(ynh_app_setting_get --app=$app --key=ors_token)
mapbox_token=$(ynh_app_setting_get --app=$app --key=mapbox_token)
maxmind_user_id=$(ynh_app_setting_get --app=$app --key=maxmind_user_id)
maxmind_license_key=$(ynh_app_setting_get --app=$app --key=maxmind_license_key)
#=================================================
# CHECK VERSION
#=================================================
upgrade_type=$(ynh_check_app_version_changed)
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=40
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
# Restore it if the upgrade fails
ynh_restore_upgradebackup
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# STANDARD UPGRADE STEPS
#=================================================
@ -60,14 +24,6 @@ ynh_script_progression --message="Stopping a systemd service..." --weight=1
ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd"
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1
# Create a dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
# NGINX CONFIGURATION
#=================================================
@ -76,11 +32,6 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." -
# Create a dedicated NGINX config
ynh_add_nginx_config
#=================================================
# UPGRADE DEPENDENCIES
#=================================================
ynh_script_progression --message="Upgrading dependencies..." --weight=10
ynh_install_nodejs --nodejs_version=$nodejs_version
#=================================================
@ -92,9 +43,9 @@ ynh_script_progression --message="Install $app..." --weight=20
if [ "$upgrade_type" == "UPGRADE_APP" ]
then
chown -R $app $final_path
pushd $final_path
ynh_exec_as $app "$ynh_node_load_PATH" $ynh_npm install --prefix "$final_path" -g facilmap-server@"$facilmap_version" 2>/dev/null
chown -R $app $install_dir
pushd $install_dir
ynh_exec_as $app "$ynh_node_load_PATH" $ynh_npm install --prefix "$install_dir" -g facilmap-server@"$facilmap_version" 2>/dev/null
popd
fi
@ -111,8 +62,8 @@ ynh_add_systemd_config
#=================================================
ynh_script_progression --message="Updating config files..." --weight=2
mkdir -p "$final_path/etc"
ynh_add_config --template="../conf/config.env" --destination="$final_path/etc/facilmap.env"
mkdir -p "$install_dir/etc"
ynh_add_config --template="../conf/config.env" --destination="$install_dir/etc/facilmap.env"
#=================================================
# GENERIC FINALIZATION
@ -122,9 +73,9 @@ ynh_add_config --template="../conf/config.env" --destination="$final_path/etc/fa
ynh_script_progression --message="Setting files permissions..." --weight=1
# Set permissions on app files
chmod 750 "$final_path"
chmod -R o-rwx "$final_path"
chown -R $app:www-data "$final_path"
chmod 750 "$install_dir"
chmod -R o-rwx "$install_dir"
chown -R $app:www-data "$install_dir"
#=================================================
# SETUP LOGROTATE
@ -148,13 +99,6 @@ ynh_script_progression --message="Starting a systemd service..." --weight=5
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Server started"
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=2
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================

13
tests.toml Normal file
View file

@ -0,0 +1,13 @@
test_format = 1.0
[default]
# -------------------------------
# Default args to use for install
# -------------------------------
args.ors_token = "test"
args.mapbox_token = "test"
args.maxmind_user_id = ""
args.maxmind_license_key = ""
args.user_agent = "FacilMap (https://facilmap.org/, webmaster@example.org)"