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

Merge pull request #241 from YunoHost-Apps/version-2

Version 2
This commit is contained in:
Éric Gaspar 2023-03-24 08:54:30 +01:00 committed by GitHub
commit 7f9098a0f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 99 additions and 551 deletions

View file

@ -16,7 +16,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
## Overview
WeKan ® is an completely Open Source and Free software collaborative kanban board application with MIT license.
WeKan ® is an completely Open Source and Free software collaborative kanban board application.
**Shipped version:** 6.78~ynh1
@ -27,25 +27,6 @@ WeKan ® is an completely Open Source and Free software collaborative kanban boa
![Screenshot of Wekan](./doc/screenshots/screenshot.jpg)
## Disclaimers / important information
* There is currently **no SSO integration** though it might be integrated at some point in the app, now that it's supported in Meteor/Wekan. In the meantime, users can create accounts (in fact, they can create infinite number of accounts) manually, and need to login manually specifically in Wekan.
* This app **only works on x86, 64bits architecture**! In particular, it won't work on 32 bit machines or ARM. See the discussion [here](https://github.com/YunoHost-Apps/wekan_ynh/issues/1#issuecomment-401612500).
* YunoHost users with more than one email address can't login to wekan using ldap. For example first YunoHost user has severals email addresses: root@domain; admin@domain; webmaster@domain; postmaster@domain, etc... Workaround: remove all mail aliases of the user you want to connect, connect one time on wekan, recreate the aliases of the YunoHost user.
## Configuration:
As LDAP authentification is enabled by default, Wekan admins correspond to the permission `Wekan Admin`. The user you choose during installation is member of this group.
To add an admin account, you can:
- [with the webadmin] go to Users > Groups and permissions > Add the user to the permission `Wekan Admin`
- [or with the command line] `yunohost user permission update wekan.admin -a the_user_to_add`
All others YunhoHost user can access with LDAP authentication.
If you have disable ldap authentication, first registered user will be admin, and next ones normal users. If you want other admins too, you can change their permission to admin at Wekan Admin Panel.
**Private/Public mode:** In private mode, only authorized YunoHost members can access to the Wekan.
## Documentation and resources
* Official app website: <https://wekan.github.io>

View file

@ -16,7 +16,7 @@ Si vous navez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po
## Vue densemble
WeKan ® est une application de tableau kanban collaborative entièrement libre et open source avec une licence MIT.
WeKan ® est une application de tableau kanban collaborative entièrement libre et open source.
**Version incluse :** 6.78~ynh1
@ -27,25 +27,6 @@ WeKan ® est une application de tableau kanban collaborative entièrement libre
![Capture décran de Wekan](./doc/screenshots/screenshot.jpg)
## Avertissements / informations importantes
* Il n'y a actuellement **pas d'intégration SSO**, bien qu'elle puisse être intégrée à un moment donné dans l'application, maintenant qu'elle est supportée par Meteor/Wekan. En attendant, les utilisateurs peuvent créer des comptes (en fait, ils peuvent créer un nombre infini de comptes) manuellement, et doivent se connecter manuellement spécifiquement dans Wekan.
* Cette application **ne fonctionne que sur une architecture x86, 64bits** ! En particulier, elle ne fonctionnera pas sur les machines 32 bits ou ARM. Voir la discussion [ici] (https://github.com/YunoHost-Apps/wekan_ynh/issues/1#issuecomment-401612500).
* Les utilisateurs de YunoHost ayant plus d'une adresse e-mail ne peuvent pas se connecter à wekan en utilisant ldap. Par exemple, le premier utilisateur de YunoHost a plusieurs adresses e-mail : root@domain ; admin@domain ; webmaster@domain ; postmaster@domain, etc.... Solution : supprimez tous les alias de messagerie de l'utilisateur que vous voulez connecter, connectez-vous une fois sur wekan, recréez les alias de l'utilisateur YunoHost.
## Configuration :
L'authentification LDAP étant activée par défaut, les admins de Wekan correspondent à la permission `Wekan Admin`. L'utilisateur que vous choisissez lors de l'installation est membre de ce groupe.
Pour ajouter un compte admin, vous pouvez :
- [avec le webadmin] allez dans Utilisateurs > Groupes et permissions > Ajouter l'utilisateur à la permission `Wekan Admin`.
- [ou avec la ligne de commande] `yunohost user permission update wekan.admin -a the_user_to_add`.
Tous les autres utilisateurs de YunhoHost peuvent accéder avec l'authentification LDAP.
Si vous avez désactivé l'authentification LDAP, le premier utilisateur enregistré sera l'administrateur, et les suivants seront des utilisateurs normaux. Si vous voulez d'autres administrateurs, vous pouvez changer leur permission à admin dans le panneau d'administration de Wekan.
**Mode privé/public:** En mode privé, seuls les membres autorisés de YunoHost peuvent accéder au Wekan.
## Documentations et ressources
* Site officiel de lapp : <https://wekan.github.io>

View file

@ -1,57 +0,0 @@
;; Test complet
; Manifest
domain="domain.tld"
path="/path"
is_public=1
admin="john"
; Checks
pkg_linter=1
setup_sub_dir=1
setup_root=1
setup_nourl=0
setup_private=1
setup_public=1
upgrade=1
# 3.79~ynh2
#upgrade=1 from_commit=2843d504bcdb0402939f87ebeeda3417de02a9e4
# 3.95~ynh1
#upgrade=1 from_commit=46f4b540cb99090a3fe1d35828094dbbfb34b692
# 3.95~ynh1
#upgrade=1 from_commit=3cd252289f4fd138879872658762f4c6ae415cc4
# 4.09~ynh1
#upgrade=1 from_commit=c2b4715e8591031f3054cedb1220e7619607bb36
# 4.43~ynh1
#upgrade=1 from_commit=2cf63bd4d660eae4526221c1a68efede499e3ee6
# 4.64~ynh1
#upgrade=1 from_commit=32fe3a7c342e5f29d7a7534125151723f916de46
# 4.64~ynh2
#upgrade=1 from_commit=9e698d094c29fc6ab12ac60cd1d0e68b56bfc953
# 5.00~ynh1
#upgrade=1 from_commit=8655e8062d1bc6e90b01b98ca9a0dea15d60119e
# 5.17~ynh1
#upgrade=1 from_commit=8cdb28eff25b8b431635b87f92f96f8e216ad71f
# 5.35~ynh1
upgrade=1 from_commit=2e9c8be6b87d5c4cd6693e7b3c0c05cfc7d1ac51
# 5.93~ynh1
upgrade=1 from_commit=493a70f7d0e79b3ee92d53976a0cd35fa944b428
# 6.24~ynh1
#upgrade=1 from_commit=9a686b180d38329a5b53dcc40c0501961a0144b5
# 6.26~ynh1
upgrade=1 from_commit=20ccbbbd80021d71692291bfc8de6d03d32f7a76
# 6.27.1~ynh1 / Mongo 4.4
upgrade=1 from_commit=9cac9713c99aabae61074ebdb2b88b1e927a1f1b
# 6.27.1~ynh2 / Mongo 5.0
upgrade=0 from_commit=1ed17a307bd6a2374a21d3488f17a099107d3984
# 6.28~ynh1 / Mongo 5.0
upgrade=0 from_commit=2c93251155dd3ce73bfa03090e914d407cc89d30
# 6.28~ynh2 / Mongo 5.0
upgrade=0 from_commit=4bece11c12b5691811e8abb5478093cd932cad94
# 6.30~ynh1 / Mongo 4.4 ; 5.0
upgrade=1 from_commit=19d250f0c09d4f8dad4343a86a5d20672853221a
backup_restore=1
multi_instance=1
port_already_use=0
change_url=1
;;; Options
Email=ljf+ynh-wekan@reflexlibre.net
Notification=down

View file

@ -5,7 +5,7 @@ NODE_ENV=production
# Writable path for temporary saving attachments during migration to Meteor-Files
# Create directory wekan-uploads
WRITABLE_PATH=__FINALPATH__
WRITABLE_PATH=__INSTALL_DIR__
# The path to NODEJS
__YNH_NODE_LOAD_PATH__

View file

@ -1,6 +0,0 @@
SOURCE_URL=https://github.com/wekan/wekan/releases/download/v6.78/wekan-6.78-amd64.zip
SOURCE_SUM=68a01e20eed464c55a96837f5856a196777d965639e0f5cb8c2239a003bc117f
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=zip
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=

View file

@ -1,6 +0,0 @@
SOURCE_URL=https://github.com/wekan/wekan/releases/download/v6.78/wekan-6.78-arm64.zip
SOURCE_SUM=f85bc8ea5b6d154f8c1aac4f63374f0a30113e11923ec9484d352be8ffb6a5bd
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=zip
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=

View file

@ -1,5 +1,5 @@
[Unit]
Description=Wekan, task board
Description=Wekan: task board
Wants=__MONGODB_SERVICENAME__.service
After=network.target __MONGODB_SERVICENAME__.service
@ -7,18 +7,13 @@ After=network.target __MONGODB_SERVICENAME__.service
Type=simple
User=__APP__
Group=__APP__
EnvironmentFile=__FINALPATH__/.env
WorkingDirectory=__FINALPATH__/
ExecStart=__YNH_NODE__ __FINALPATH__/main.js
EnvironmentFile=__INSTALL_DIR__/.env
WorkingDirectory=__INSTALL_DIR__/
ExecStart=__YNH_NODE__ __INSTALL_DIR__/main.js
Restart=on-failure
#StartLimitInterval=86400
#StartLimitBurst=5
RestartSec=10
ExecReload=/bin/kill -USR1 $MAINPID
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=__APP__
SuccessExitStatus=143
#RestartSec=10
#ExecReload=/bin/kill -USR1 $MAINPID
[Install]
WantedBy=multi-user.target

View file

@ -12,5 +12,3 @@ To add an admin account, you can:
All others YunhoHost user can access with LDAP authentication.
If you have disable ldap authentication, first registered user will be admin, and next ones normal users. If you want other admins too, you can change their permission to admin at Wekan Admin Panel.
**Private/Public mode:** In private mode, only authorized YunoHost members can access to the Wekan.

View file

@ -12,5 +12,3 @@ Pour ajouter un compte admin, vous pouvez :
Tous les autres utilisateurs de YunhoHost peuvent accéder avec l'authentification LDAP.
Si vous avez désactivé l'authentification LDAP, le premier utilisateur enregistré sera l'administrateur, et les suivants seront des utilisateurs normaux. Si vous voulez d'autres administrateurs, vous pouvez changer leur permission à admin dans le panneau d'administration de Wekan.
**Mode privé/public:** En mode privé, seuls les membres autorisés de YunoHost peuvent accéder au Wekan.

View file

@ -1 +1 @@
WeKan ® is an completely Open Source and Free software collaborative kanban board application with MIT license.
WeKan ® is an completely Open Source and Free software collaborative kanban board application.

View file

@ -1 +1 @@
WeKan ® est une application de tableau kanban collaborative entièrement libre et open source avec une licence MIT.
WeKan ® est une application de tableau kanban collaborative entièrement libre et open source.

View file

@ -1,62 +0,0 @@
{
"name": "Wekan",
"id": "wekan",
"packaging_format": 1,
"description": {
"en": "Trello-like kanban",
"fr": "Un kanban similaire à Trello"
},
"version": "6.78~ynh1",
"url": "https://wekan.github.io",
"upstream": {
"license": "MIT",
"website": "https://wekan.github.io",
"demo": "https://demo.sandstorm.io/appdemo/m86q05rdvj14yvn78ghaxynqz7u2svw6rnttptxx49g1785cdv1h",
"admindoc": "https://github.com/wekan/wekan/wiki",
"code": "https://github.com/wekan/wekan"
},
"license": "MIT",
"maintainer": [
{
"name": "alexAubin",
"email": "alex.aubin@mailoo.org",
"url": "https://github.com/alexAubin/"
},
{
"name": "ljf"
},
{
"name": "yalh76"
}
],
"requirements": {
"yunohost": ">= 4.3.0"
},
"multi_instance": true,
"services": [
"nginx"
],
"arguments": {
"install": [
{
"name": "domain",
"type": "domain"
},
{
"name": "path",
"type": "path",
"example": "/wekan",
"default": "/wekan"
},
{
"name": "is_public",
"type": "boolean",
"default": false
},
{
"name": "admin",
"type": "user"
}
]
}
}

58
manifest.toml Normal file
View file

@ -0,0 +1,58 @@
packaging_format = 2
id = "wekan"
name = "Wekan"
description.en = "Trello-like kanban"
description.fr = "Kanban similaire à Trello"
version = "6.78~ynh1"
maintainers = ["alexAubin", "ljf", "yalh76"]
[upstream]
license = "MIT"
website = "https://wekan.github.io"
demo = "https://demo.sandstorm.io/appdemo/m86q05rdvj14yvn78ghaxynqz7u2svw6rnttptxx49g1785cdv1h"
admindoc = "https://github.com/wekan/wekan/wiki"
code = "https://github.com/wekan/wekan"
[integration]
yunohost = ">= 11.1.15"
architectures = ["arm64", "amd64"]
multi_instance = true
ldap = true
sso = false
disk = "50M"
ram.build = "50M"
ram.runtime = "50M"
[install]
[install.domain]
type = "domain"
[install.path]
type = "path"
default = "/wekan"
[install.init_main_permission]
type = "group"
default = false
[install.admin]
type = "user"
[resources]
[resources.sources.main]
arm64.url = "https://github.com/wekan/wekan/releases/download/v6.78/wekan-6.78-arm64.zip"
arm64.sha256 = "f85bc8ea5b6d154f8c1aac4f63374f0a30113e11923ec9484d352be8ffb6a5bd"
amd64.url = "https://github.com/wekan/wekan/releases/download/v6.78/wekan-6.78-amd64.zip"
amd64.sha256 = "68a01e20eed464c55a96837f5856a196777d965639e0f5cb8c2239a003bc117f"
[resources.ports]
[resources.system_user]
[resources.install_dir]
[resources.permissions]
main.url = "/"

View file

@ -4,9 +4,6 @@
# COMMON VARIABLES
#=================================================
# dependencies used by the app
pkg_dependencies=""
nodejs_version="14.19.3"
#=================================================

View file

@ -11,27 +11,6 @@ source ../settings/scripts/_common.sh
source ../settings/scripts/ynh_mongo_db__2
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_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 +20,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,66 +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..."
# Needed for helper "ynh_add_nginx_config"
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
# Add settings here as needed by your application
#db_name=$(ynh_app_setting_get --app=$app --key=db_name)
#db_user=$db_name
#db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd)
port=$(ynh_app_setting_get --app=$app --key=port)
#=================================================
# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..."
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
ynh_clean_check_starting
# 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
#=================================================
@ -83,29 +23,7 @@ ynh_systemd_action --service_name=$app --action="stop" --log_path=systemd
#=================================================
ynh_script_progression --message="Updating NGINX web server configuration..."
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
#=================================================
# SPECIFIC MODIFICATIONS
@ -114,9 +32,9 @@ fi
#=================================================
ynh_script_progression --message="Updating .env configuration..."
ynh_backup_if_checksum_is_different --file="$final_path/.env"
ynh_replace_string --match_string="$old_domain$old_path" --replace_string="$new_domain$new_path" --target_file="$final_path/.env"
ynh_store_file_checksum --file="$final_path/.env"
ynh_backup_if_checksum_is_different --file="$install_dir/.env"
ynh_replace_string --match_string="$old_domain$old_path" --replace_string="$new_domain$new_path" --target_file="$install_dir/.env"
ynh_store_file_checksum --file="$install_dir/.env"
#=================================================
# GENERIC FINALISATION
@ -132,13 +50,6 @@ if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
sleep 60
fi
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..."
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================

View file

@ -10,81 +10,15 @@ source _common.sh
source ynh_mongo_db__2
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
ynh_clean_check_starting
}
# 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
admin=$YNH_APP_ARG_ADMIN
app=$YNH_APP_INSTANCE_NAME
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#=================================================
ynh_script_progression --message="Validating installation parameters..."
# Check machine architecture (in particular, we don't support ARM and 32bit machines)
if [ $YNH_ARCH == "i386" ] || [ $YNH_ARCH == "armel" ] || [ $YNH_ARCH == "armhf" ] || [ $YNH_ARCH == "aarch64" ] || [ $YNH_ARCH == "arm64" ]
then
ynh_die --message="Sorry, but this app can only be installed on a x86, 64 bits machine :("
fi
final_path=/var/www/$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..."
ynh_app_setting_set --app=$app --key=domain --value=$domain
ynh_app_setting_set --app=$app --key=path --value=$path_url
#=================================================
# STANDARD MODIFICATIONS
#=================================================
# FIND AND OPEN A PORT
#=================================================
ynh_script_progression --message="Finding an available port..."
# Find an available port
port=$(ynh_find_port --port=8095)
ynh_app_setting_set --app=$app --key=port --value=$port
#=================================================
# INSTALL DEPENDENCIES
#=================================================
ynh_script_progression --message="Installing dependencies..."
ynh_install_app_dependencies $pkg_dependencies
ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_use_nodejs
ynh_install_mongo
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Configuring system user..."
# Create a system user
ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
# CREATE A MONGODB DATABASE
#=================================================
@ -100,13 +34,11 @@ ynh_mongo_setup_db --db_user=$db_user --db_name=$db_name
#=================================================
ynh_script_progression --message="Setting up source files..."
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$final_path" --source_id="$YNH_ARCH"
ynh_setup_source --dest_dir="$install_dir"
chmod 750 "$final_path"
chmod -R o-rwx "$final_path"
chown -R $app:$app "$final_path"
chmod -R o-rwx "$install_dir"
chown -R $app:$app "$install_dir"
#=================================================
# NGINX CONFIGURATION
@ -125,10 +57,10 @@ ynh_script_progression --message="Adding a config file..."
main_domain=$(cat /etc/yunohost/current_host)
ynh_add_config --template=".env" --destination="$final_path/.env"
ynh_add_config --template=".env" --destination="$install_dir/.env"
chmod 400 "$final_path/.env"
chown $app:$app "$final_path/.env"
chmod 400 "$install_dir/.env"
chown $app:$app "$install_dir/.env"
#=================================================
# SETUP SYSTEMD
@ -159,28 +91,6 @@ if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
sleep 60
fi
#=================================================
# SETUP SSOWAT
#=================================================
ynh_script_progression --message="Configuring permissions..."
# Make app public if necessary
if [ $is_public -eq 1 ]
then
# Everyone can access the app.
# The "main" permission is automatically created before the install script.
ynh_permission_update --permission="main" --add="visitors"
fi
ynh_permission_create --permission="admin" --allowed=$admin
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..."
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================

View file

@ -10,19 +10,6 @@ source _common.sh
source ynh_mongo_db__2
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..."
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
#=================================================
@ -52,14 +39,6 @@ ynh_script_progression --message="Removing the MongoDB database..."
# Remove a database if it exists, along with the associated user
ynh_mongo_remove_db --db_user=$db_user --db_name=$db_name
#=================================================
# REMOVE APP MAIN DIR
#=================================================
ynh_script_progression --message="Removing app main directory..."
# Remove the app directory securely
ynh_secure_remove --file="$final_path"
#=================================================
# REMOVE NGINX CONFIGURATION
#=================================================
@ -71,23 +50,12 @@ ynh_remove_nginx_config
#=================================================
# REMOVE DEPENDENCIES
#=================================================
ynh_script_progression --message="Removing dependencies..."
#REMOVEME? ynh_script_progression --message="Removing dependencies..."
# Remove metapackage and its dependencies
ynh_remove_app_dependencies
ynh_remove_nodejs
ynh_remove_mongo
#=================================================
# GENERIC FINALIZATION
#=================================================
# REMOVE DEDICATED USER
#=================================================
ynh_script_progression --message="Removing the dedicated system user..."
# Delete a system user
ynh_system_user_delete --username=$app
#=================================================
# END OF SCRIPT
#=================================================

View file

@ -11,68 +11,24 @@ source ../settings/scripts/_common.sh
source ../settings/scripts/ynh_mongo_db__2
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
ynh_clean_check_starting
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..."
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
mongo_version=$(ynh_app_setting_get --app=$app --key=mongo_version)
#=================================================
# CHECK IF THE APP CAN BE RESTORED
#=================================================
ynh_script_progression --message="Validating restoration parameters..."
test ! -d $final_path \
|| ynh_die --message="There is already a directory: $final_path "
#=================================================
# STANDARD RESTORATION STEPS
#=================================================
# RECREATE THE DEDICATED USER
#=================================================
ynh_script_progression --message="Recreating the dedicated system user..."
# 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..."
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:$app "$final_path"
chmod -R o-rwx "$install_dir"
chown -R $app:$app "$install_dir"
#=================================================
# SPECIFIC RESTORATION
#=================================================
# REINSTALL DEPENDENCIES
#=================================================
ynh_script_progression --message="Reinstalling dependencies..."
#REMOVEME? ynh_script_progression --message="Reinstalling dependencies..."
# Define and install dependencies
ynh_install_app_dependencies $pkg_dependencies
ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_use_nodejs
ynh_install_mongo --mongo_version=$mongo_version
@ -89,7 +45,8 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#=================================================
ynh_script_progression --message="Restoring the MongoDB database..."
db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd)
db_name=$(ynh_sanitize_dbid --db_name=$app)
db_user=$db_name
ynh_mongo_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
ynh_mongo_restore_db --database="$db_name" < ./dump.bson

View file

@ -10,42 +10,12 @@ source _common.sh
source ynh_mongo_db__2
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..."
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)
port=$(ynh_app_setting_get --app=$app --key=port)
mongo_version=$(ynh_app_setting_get --app=$app --key=mongo_version)
#=================================================
# CHECK VERSION
#=================================================
ynh_script_progression --message="Checking 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)..."
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
ynh_clean_check_starting
# 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,18 +30,6 @@ ynh_systemd_action --service_name=$app --action="stop" --log_path=systemd
#=================================================
ynh_script_progression --message="Ensuring downward compatibility..."
# Cleaning legacy permissions
if ynh_legacy_permissions_exists; then
ynh_legacy_permissions_delete_all
ynh_app_setting_delete --app=$app --key=is_public
fi
if ! ynh_permission_exists --permission="admin"; then
# Create the required permissions
ynh_permission_create --permission="admin" --allowed=$admin
fi
# If mongo_version doesn't exist, create it
if [ -z "$mongo_version" ]; then
mongo_version="$(mongod --version | grep -oP 'db version v\K.{0,3}')"
@ -81,14 +39,6 @@ fi
ynh_secure_remove --file="/etc/apt/sources.list.d/mongodb-org-3.2.list"
ynh_secure_remove --file="/etc/apt/sources.list.d/mongodb-org-4.4.list"
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Making sure dedicated system user exists..."
# Create a dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
@ -98,19 +48,17 @@ then
ynh_script_progression --message="Upgrading source files..."
# Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$final_path" --source_id="$YNH_ARCH" --keep=".env"
ynh_setup_source --dest_dir="$install_dir" --keep=".env"
fi
chmod 750 "$final_path"
chmod -R o-rwx "$final_path"
chown -R $app:$app "$final_path"
chmod -R o-rwx "$install_dir"
chown -R $app:$app "$install_dir"
#=================================================
# UPGRADE DEPENDENCIES
#=================================================
ynh_script_progression --message="Upgrading dependencies..."
ynh_install_app_dependencies $pkg_dependencies
ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_use_nodejs
ynh_install_mongo --mongo_version=$mongo_version
@ -132,10 +80,10 @@ ynh_script_progression --message="Updating a configuration file..."
main_domain=$(cat /etc/yunohost/current_host)
ynh_add_config --template=".env" --destination="$final_path/.env"
ynh_add_config --template=".env" --destination="$install_dir/.env"
chmod 400 "$final_path/.env"
chown $app:$app "$final_path/.env"
chmod 400 "$install_dir/.env"
chown $app:$app "$install_dir/.env"
#=================================================
# SETUP SYSTEMD
@ -165,13 +113,6 @@ if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
sleep 60
fi
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..."
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================

5
tests.toml Normal file
View file

@ -0,0 +1,5 @@
test_format = 1.0
[default]
test_upgrade_from.19d250f0.name = "Upgrade from 6.30"