diff --git a/README.md b/README.md
index 9168327..b3d0e14 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
Wiki.js is a copylefted libre software, modern and powerful wiki app built on Node.js, Git and Markdown for YunoHost.
-**Shipped version:** 2.5.300~ynh3
+**Shipped version:** 2.5.298~ynh1
**Demo:** https://docs-beta.requarks.io/
@@ -27,12 +27,6 @@ Wiki.js is a copylefted libre software, modern and powerful wiki app built on No

-## Disclaimers / important information
-
-* **Wiki.js** requires a dedicated **root domain**, e.g. wikijs.domain.tld
-* LDAP is implemented, root will receive an e-mail at the end of the installation or the upgrade with the info on how to configure LDAP.
-* No HTTP auth for now, but planned for the future.
-
## Documentation and resources
* Official app website:
diff --git a/README_fr.md b/README_fr.md
index 2ce2002..81bd825 100644
--- a/README_fr.md
+++ b/README_fr.md
@@ -19,7 +19,7 @@ Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po
Wiki.js is a copylefted libre software, modern and powerful wiki app built on Node.js, Git and Markdown for YunoHost.
-**Version incluse :** 2.5.300~ynh3
+**Version incluse :** 2.5.298~ynh1
**Démo :** https://docs-beta.requarks.io/
@@ -27,12 +27,6 @@ Wiki.js is a copylefted libre software, modern and powerful wiki app built on No

-## Avertissements / informations importantes
-
-* **Wiki.js** requires a dedicated **root domain**, e.g. wikijs.domain.tld
-* LDAP is implemented, root will receive an e-mail at the end of the installation or the upgrade with the info on how to configure LDAP.
-* No HTTP auth for now, but planned for the future.
-
## Documentations et ressources
* Site officiel de l’app :
diff --git a/check_process b/check_process
deleted file mode 100644
index 54cacf9..0000000
--- a/check_process
+++ /dev/null
@@ -1,23 +0,0 @@
-;; Test complet
- ; Manifest
- domain="domain.tld"
- is_public=1
- ; Checks
- pkg_linter=1
- setup_sub_dir=1
- setup_root=1
- setup_nourl=0
- setup_private=1
- setup_public=1
- upgrade=1
- # 2.5.272~ynh1
- upgrade=1 from_commit=0721e06b03c1fa384adcade256b1d67c9462d61e
- # 2.5.299~ynh1
- upgrade=1 from_commit=562dde836f45847aaf53caa6a4e77c24377d6b76
- backup_restore=1
- multi_instance=1
- port_already_use=0
- change_url=0
-;;; Options
-Email=
-Notification=none
diff --git a/conf/app.src b/conf/app.src
deleted file mode 100644
index 0874c77..0000000
--- a/conf/app.src
+++ /dev/null
@@ -1,7 +0,0 @@
-SOURCE_URL=https://github.com/Requarks/wiki/releases/download/v2.5.300/wiki-js.tar.gz
-SOURCE_SUM=0b272ada8781f2fd3656d13928fb34f7ebb366abc66c9447f89e183c3628fb26
-SOURCE_SUM_PRG=sha256sum
-SOURCE_FORMAT=tar.gz
-SOURCE_IN_SUBDIR=false
-SOURCE_FILENAME=
-SOURCE_EXTRACT=true
diff --git a/conf/ldap_message b/conf/ldap_message
index 152c37a..a643d98 100644
--- a/conf/ldap_message
+++ b/conf/ldap_message
@@ -1,5 +1,5 @@
Wiki.js was successfully installed :)
-Please open https://__DOMAIN____PATH_URL__ and follow the steps to setup LDAP for Wiki.js
+Please open https://__DOMAIN____PATH__ and follow the steps to setup LDAP for Wiki.js
After following the setup steps, login, create an home page, click on the upper right wheel.
In the Modules / Authentication, activate the LDAP / Active Directory and apply following parameters and click Apply:
diff --git a/conf/nginx.conf b/conf/nginx.conf
index 22e9f0f..4fa77a5 100644
--- a/conf/nginx.conf
+++ b/conf/nginx.conf
@@ -1,11 +1,11 @@
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
-location / {
+location __PATH__/ {
# Common parameter to increase upload size limit in conjunction with dedicated php-fpm file
client_max_body_size 50M;
proxy_set_header Accept-Encoding "";
- proxy_pass http://localhost:__PORT__;
+ proxy_pass http://127.0.0.1:__PORT__;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
diff --git a/conf/systemd.service b/conf/systemd.service
index 0a734fb..27d7082 100644
--- a/conf/systemd.service
+++ b/conf/systemd.service
@@ -8,8 +8,8 @@ User=__APP__
Group=__APP__
Environment=__YNH_NODE_LOAD_PATH__
Environment=NODE_ENV=production
-WorkingDirectory=__FINALPATH__
-ExecStart=__YNH_NODE__ __FINALPATH__/server
+WorkingDirectory=__INSTALL_DIR__
+ExecStart=__YNH_NODE__ __INSTALL_DIR__/server
Restart=always
# Sandboxing options to harden security
diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md
deleted file mode 100644
index 1ed0282..0000000
--- a/doc/DISCLAIMER.md
+++ /dev/null
@@ -1,3 +0,0 @@
-* **Wiki.js** requires a dedicated **root domain**, e.g. wikijs.domain.tld
-* LDAP is implemented, root will receive an e-mail at the end of the installation or the upgrade with the info on how to configure LDAP.
-* No HTTP auth for now, but planned for the future.
diff --git a/doc/POST_INSTALL.md b/doc/POST_INSTALL.md
new file mode 100644
index 0000000..a643d98
--- /dev/null
+++ b/doc/POST_INSTALL.md
@@ -0,0 +1,20 @@
+Wiki.js was successfully installed :)
+Please open https://__DOMAIN____PATH__ and follow the steps to setup LDAP for Wiki.js
+
+After following the setup steps, login, create an home page, click on the upper right wheel.
+In the Modules / Authentication, activate the LDAP / Active Directory and apply following parameters and click Apply:
+
+Strategy Configuration
+LDAP_URL: ldap://localhost:389
+Admin Bind DN: uid=__LDAP_USER__,ou=users,dc=yunohost,dc=org
+Admin Bind Credential: __LDAP_PASSWORD__
+Search Base: ou=users,dc=yunohost,dc=org
+Search Filter: (uid={{username}})
+
+Registration
+Allow self-registration: Yes
+Assign to group: Guest
+
+When activated, users will be able to login using ldap and providing their username (not email address) and password.
+
+If you facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/wikijs_ynh
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
deleted file mode 100644
index fa721cf..0000000
--- a/manifest.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "Wiki.js",
- "id": "wikijs",
- "packaging_format": 1,
- "description": {
- "en": "Open source powerful wiki app built on Node.js, Git and Markdown",
- "fr": "Wiki open source propulsé par Node.js, Git et Markdown"
- },
- "version": "2.5.300~ynh3",
- "url": "https://wiki.js.org/",
- "upstream": {
- "license": "AGPL-3.0-or-later",
- "website": "https://wiki.js.org/",
- "demo": "https://docs-beta.requarks.io/",
- "userdoc": "https://docs-beta.requarks.io/",
- "code": "https://github.com/Requarks/wiki"
- },
- "license": "AGPL-3.0-or-later",
- "maintainer": {
- "name": "yalh76"
- },
- "requirements": {
- "yunohost": ">= 11.2"
- },
- "multi_instance": true,
- "services": [
- "nginx"
- ],
- "arguments": {
- "install": [
- {
- "name": "domain",
- "type": "domain"
- },
- {
- "name": "is_public",
- "type": "boolean",
- "default": true
- }
- ]
- }
-}
diff --git a/manifest.toml b/manifest.toml
new file mode 100644
index 0000000..6aaceb2
--- /dev/null
+++ b/manifest.toml
@@ -0,0 +1,60 @@
+packaging_format = 2
+
+id = "wikijs"
+name = "Wiki.js"
+description.en = "Open source powerful wiki app built on Node.js, Git and Markdown"
+description.fr = "Wiki open source propulsé par Node.js, Git et Markdown"
+
+version = "2.5.298~ynh1"
+
+maintainers = ["yalh76"]
+
+[upstream]
+license = "AGPL-3.0-or-later"
+website = "https://wiki.js.org/"
+demo = "https://docs-beta.requarks.io/"
+userdoc = "https://docs-beta.requarks.io/"
+code = "https://github.com/Requarks/wiki"
+
+[integration]
+yunohost = ">= 11.2"
+architectures = "all"
+multi_instance = true
+
+ldap = true
+
+sso = false
+
+disk = "50M"
+ram.build = "50M"
+ram.runtime = "50M"
+
+[install]
+ [install.domain]
+ type = "domain"
+
+ [install.init_main_permission]
+ type = "group"
+ default = "visitors"
+
+[resources]
+ [resources.sources.main]
+ url = "https://github.com/Requarks/wiki/releases/download/v2.5.298/wiki-js.tar.gz"
+ sha256 = "3bb290d77e3387dba5958c906629a6c5f751c17787903f1a021cbfa51cc88f1a"
+ in_subdir = false
+
+ [resources.ports]
+
+ [resources.system_user]
+
+ [resources.install_dir]
+
+ [resources.permissions]
+ main.url = "/"
+ main.auth_header = false
+
+ [resources.apt]
+ packages = "postgresql"
+
+ [resources.database]
+ type = "postgresql"
diff --git a/scripts/_common.sh b/scripts/_common.sh
index 581c006..b818f0f 100644
--- a/scripts/_common.sh
+++ b/scripts/_common.sh
@@ -4,9 +4,6 @@
# COMMON VARIABLES
#=================================================
-# dependencies used by the app
-pkg_dependencies="postgresql postgresql-contrib rsync"
-
nodejs_version=16
#=================================================
diff --git a/scripts/backup b/scripts/backup
index 95dbd9b..a10a642 100644
--- a/scripts/backup
+++ b/scripts/backup
@@ -10,27 +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_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
#=================================================
@@ -40,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
diff --git a/scripts/change_url b/scripts/change_url
index b7b313c..8123f1e 100644
--- a/scripts/change_url
+++ b/scripts/change_url
@@ -9,62 +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="/"
-
-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)
-
-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
#=================================================
@@ -79,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
#=================================================
# GENERIC FINALISATION
@@ -111,14 +33,7 @@ fi
ynh_script_progression --message="Starting a systemd service..."
# Start a systemd service
-ynh_systemd_action --service_name=$app --action="start" --log_path=systemd --line_match="HTTP Server:"
-
-#=================================================
-# RELOAD NGINX
-#=================================================
-ynh_script_progression --message="Reloading NGINX web server..."
-
-ynh_systemd_action --service_name=nginx --action=reload
+ynh_systemd_action --service_name="$app" --action="start" --log_path=systemd --line_match="HTTP Server:"
#=================================================
# END OF SCRIPT
diff --git a/scripts/install b/scripts/install
index 169138d..cf1fa10 100644
--- a/scripts/install
+++ b/scripts/install
@@ -7,150 +7,72 @@
#=================================================
source _common.sh
-source ynh_send_readme_to_admin__2
source /usr/share/yunohost/helpers
#=================================================
-# MANAGE SCRIPT FAILURE
+# INITIALIZE AND STORE SETTINGS
#=================================================
-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="/"
-is_public=$YNH_APP_ARG_IS_PUBLIC
-
-app=$YNH_APP_INSTANCE_NAME
-
ldap_user="svc_${app}_ldap"
ldap_password=$(ynh_string_random --length=8)
-#=================================================
-# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
-#=================================================
-ynh_script_progression --message="Validating installation parameters..."
-
-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
-ynh_app_setting_set --app=$app --key=ldap_user --value=$ldap_user
-ynh_app_setting_set --app=$app --key=ldap_password --value=$ldap_password
-
-#=================================================
-# 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
+ynh_app_setting_set --app="$app" --key=ldap_user --value="$ldap_user"
+ynh_app_setting_set --app="$app" --key=ldap_password --value="$ldap_password"
#=================================================
# INSTALL DEPENDENCIES
#=================================================
-ynh_script_progression --message="Installing dependencies..."
+ynh_script_progression --message="Installing NodeJS..."
-ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
-ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
+ynh_exec_warn_less ynh_install_nodejs --nodejs_version="$nodejs_version"
ynh_use_nodejs
-#=================================================
-# 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 POSTGRESQL DATABASE
#=================================================
ynh_script_progression --message="Creating a PostgreSQL database..."
-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_psql_test_if_first_run
-ynh_psql_setup_db --db_user=$db_user --db_name=$db_name
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
-db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
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"
+ynh_setup_source --dest_dir="$install_dir"
-chmod 750 "$final_path"
-chmod -R o-rwx "$final_path"
-chown -R $app:$app "$final_path"
-
-#=================================================
-# NGINX CONFIGURATION
-#=================================================
-ynh_script_progression --message="Configuring NGINX web server..."
-
-# Create a dedicated NGINX config
-ynh_add_nginx_config
-
-#=================================================
-# SPECIFIC SETUP
-#=================================================
-# CREATE LDAP USER
-#=================================================
-ynh_script_progression --message="Creating LDAP user..."
-
-yunohost user create $ldap_user --firstname "SvcWikijsLdap" --lastname "SvcWikijsLdap" --domain $domain --password $ldap_password -q 0
+chmod -R o-rwx "$install_dir"
+chown -R "$app:$app" "$install_dir"
#=================================================
# ADD A CONFIGURATION
#=================================================
ynh_script_progression --message="Adding a configuration file..."
-ynh_add_config --template="../conf/config.sample.yml" --destination="$final_path/config.yml"
+ynh_add_config --template="config.sample.yml" --destination="$install_dir/config.yml"
-chmod 400 "$final_path/config.yml"
-chown $app:$app "$final_path/config.yml"
+chmod 400 "$install_dir/config.yml"
+chown "$app:$app" "$install_dir/config.yml"
#=================================================
-# SETUP SYSTEMD
+# SYSTEM CONFIGURATION
#=================================================
-ynh_script_progression --message="Configuring a systemd service..."
+ynh_script_progression --message="Adding system configurations related to $app..." --weight=1
+
+# Create a dedicated NGINX config
+ynh_add_nginx_config
# Create a dedicated systemd config
ynh_add_systemd_config
+yunohost service add "$app" --description="$app daemon for Wiki.js" --log="/var/log/$app/$app.log"
#=================================================
-# GENERIC FINALIZATION
+# CREATE LDAP USER
#=================================================
-# INTEGRATE SERVICE IN YUNOHOST
-#=================================================
-ynh_script_progression --message="Integrating service in YunoHost..."
+ynh_script_progression --message="Creating LDAP user..."
-yunohost service add $app --description="$app daemon for Wiki.js" --log="/var/log/$app/$app.log"
+yunohost user create "$ldap_user" --fullname "SvcWikijsLdap" --domain "$domain" --password "$ldap_password" -q 0
#=================================================
# START SYSTEMD SERVICE
@@ -158,35 +80,7 @@ yunohost service add $app --description="$app daemon for Wiki.js" --log="/var/lo
ynh_script_progression --message="Starting a systemd service..."
# Start a systemd service
-ynh_systemd_action --service_name=$app --action="start" --log_path=systemd --line_match="HTTP Server:"
-
-#=================================================
-# SETUP SSOWAT
-#=================================================
-ynh_script_progression --message="Configuring permissions..."
-
-# Make app public if necessary
-if [ $is_public -eq 1 ]
-then
- ynh_permission_update --permission="main" --add="visitors"
-fi
-
-ynh_permission_url --permission="main" --auth_header=false
-
-#=================================================
-# RELOAD NGINX
-#=================================================
-ynh_script_progression --message="Reloading NGINX web server..."
-
-ynh_systemd_action --service_name=nginx --action=reload
-
-#=================================================
-# SEND README TO ADMIN
-#=================================================
-ynh_script_progression --message="Sending ReadMe to admin..."
-
-ynh_add_config --template="../conf/ldap_message" --destination="../conf/message_install"
-ynh_send_readme_to_admin --app_message="../conf/message_install" --recipients="root" --type='install'
+ynh_systemd_action --service_name="$app" --action="start" --log_path=systemd --line_match="HTTP Server:"
#=================================================
# END OF SCRIPT
diff --git a/scripts/remove b/scripts/remove
index 2b5720f..6d2a91b 100644
--- a/scripts/remove
+++ b/scripts/remove
@@ -9,20 +9,6 @@
source _common.sh
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)
-ldap_user=$(ynh_app_setting_get --app=$app --key=ldap_user)
-
#=================================================
# STANDARD REMOVE
#=================================================
@@ -30,72 +16,22 @@ ldap_user=$(ynh_app_setting_get --app=$app --key=ldap_user)
#=================================================
# 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_script_progression --message="Removing $app service integration..."
- yunohost service remove $app
+if ynh_exec_warn_less yunohost service status $app >/dev/null; then
+ ynh_script_progression --message="Removing $app service integration..."
+ yunohost service remove "$app"
fi
-#=================================================
-# STOP AND REMOVE SERVICE
-#=================================================
-ynh_script_progression --message="Stopping and removing the systemd service..."
-
# Remove the dedicated systemd config
ynh_remove_systemd_config
-#=================================================
-# REMOVE THE POSTGRESQL DATABASE
-#=================================================
-ynh_script_progression --message="Removing the PostgreSQL database..."
-
-# Remove a database if it exists, along with the associated user
-ynh_psql_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
-#=================================================
-ynh_script_progression --message="Removing NGINX web server configuration..."
-
# Remove the dedicated NGINX config
ynh_remove_nginx_config
-#=================================================
-# REMOVE DEPENDENCIES
-#=================================================
-ynh_script_progression --message="Removing dependencies..."
-
# Remove metapackage and its dependencies
ynh_remove_nodejs
-ynh_remove_app_dependencies
-
-#=================================================
-# SPECIFIC REMOVE
-#=================================================
-# REMOVE LDAP USER
-#=================================================
-ynh_script_progression --message="Removing LDAP user..."
yunohost user delete $ldap_user --purge
-#=================================================
-# 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
#=================================================
diff --git a/scripts/restore b/scripts/restore
index 8bd1ac7..2d6a1d9 100644
--- a/scripts/restore
+++ b/scripts/restore
@@ -11,124 +11,51 @@ source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers
#=================================================
-# MANAGE SCRIPT FAILURE
+# REINSTALL DEPENDENCIES
#=================================================
+ynh_script_progression --message="Reinstalling NodeJS..."
-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
-db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
-ldap_user=$(ynh_app_setting_get --app=$app --key=ldap_user)
-ldap_password=$(ynh_app_setting_get --app=$app --key=ldap_password)
-
-#=================================================
-# 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
+# Define and install dependencies
+ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
+ynh_use_nodejs
#=================================================
# 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"
-
-#=================================================
-# SPECIFIC RESTORATION
-#=================================================
-# REINSTALL DEPENDENCIES
-#=================================================
-ynh_script_progression --message="Reinstalling dependencies..."
-
-# Define and install dependencies
-ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
-ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
-ynh_use_nodejs
-
-#=================================================
-# RESTORE THE NGINX CONFIGURATION
-#=================================================
-ynh_script_progression --message="Restoring the NGINX web server configuration..."
-
-ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
+chmod -R o-rwx "$install_dir"
+chown -R "$app:$app" "$install_dir"
#=================================================
# RESTORE THE POSTGRESQL DATABASE
#=================================================
ynh_script_progression --message="Restoring the PostgreSQL database..."
-ynh_psql_test_if_first_run
-ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
ynh_psql_execute_file_as_root --file="./db.sql" --database="$db_name"
#=================================================
-# CREATE LDAP USER
+# RESTORE SYSTEM CONFIGURATIONS
#=================================================
-ynh_script_progression --message="Creating LDAP user..."
+ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1
-yunohost user create $ldap_user --firstname "SvcWikijsLdap" --lastname "SvcWikijsLdap" --domain $domain --password $ldap_password -q 0
-
-#=================================================
-# RESTORE SYSTEMD
-#=================================================
-ynh_script_progression --message="Restoring the systemd configuration..."
+ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
-systemctl enable $app.service --quiet
+systemctl enable "$app.service" --quiet
+yunohost service add "$app" --description="$app daemon for Wiki.js" --log="/var/log/$app/$app.log"
-#=================================================
-# INTEGRATE SERVICE IN YUNOHOST
-#=================================================
-ynh_script_progression --message="Integrating service in YunoHost..."
-
-yunohost service add $app --description="$app daemon for Wiki.js" --log="/var/log/$app/$app.log"
+yunohost user create "$ldap_user" --fullname "SvcWikijsLdap" --domain "$domain" --password "$ldap_password" -q 0
#=================================================
# START SYSTEMD SERVICE
#=================================================
ynh_script_progression --message="Starting a systemd service..."
-ynh_systemd_action --service_name=$app --action="start" --log_path=systemd --line_match="HTTP Server:"
-
-#=================================================
-# GENERIC FINALIZATION
-#=================================================
-# RELOAD NGINX
-#=================================================
-ynh_script_progression --message="Reloading NGINX web server..."
+ynh_systemd_action --service_name="$app" --action="start" --log_path=systemd --line_match="HTTP Server:"
ynh_systemd_action --service_name=nginx --action=reload
diff --git a/scripts/upgrade b/scripts/upgrade
index 569bac9..6a8e0c3 100644
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -7,47 +7,14 @@
#=================================================
source _common.sh
-source ynh_send_readme_to_admin__2
source /usr/share/yunohost/helpers
-#=================================================
-# LOAD SETTINGS
-#=================================================
-ynh_script_progression --message="Loading 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_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
-port=$(ynh_app_setting_get --app=$app --key=port)
-ldap_user=$(ynh_app_setting_get --app=$app --key=ldap_user)
-ldap_password=$(ynh_app_setting_get --app=$app --key=ldap_password)
-
#=================================================
# 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
#=================================================
@@ -63,148 +30,60 @@ ynh_systemd_action --service_name=$app --action="stop" --log_path=systemd
ynh_script_progression --message="Ensuring downward compatibility..."
# If ldap_user doesn't exist, retrieve it or create it
-if [[ -z "$ldap_user" ]]; then
- ldap_user="svc_${app}_ldap"
- ldap_password=$(ynh_string_random --length=8)
- ynh_app_setting_set "$app" ldap_user "$ldap_user"
- ynh_app_setting_set "$app" ldap_password "$ldap_password"
- yunohost user create $ldap_user --firstname "SvcWikijsLdap" --lastname "SvcWikijsLdap" --domain $domain --password $ldap_password -q 0
+if [[ -z "${ldap_user:-}" ]]; then
+ ldap_user="svc_${app}_ldap"
+ ldap_password=$(ynh_string_random --length=8)
+ ynh_app_setting_set "$app" ldap_user "$ldap_user"
+ ynh_app_setting_set "$app" ldap_password "$ldap_password"
+ yunohost user create "$ldap_user" --fullname "SvcWikijsLdap" --domain $domain --password $ldap_password -q 0
fi
-# Cleaning legacy permissions
-if ynh_legacy_permissions_exists; then
- ynh_legacy_permissions_delete_all
-
- ynh_app_setting_delete --app=$app --key=is_public
-fi
-
-ynh_permission_url --permission="main" --auth_header=false
-
-# Remove yarn repository
-ynh_secure_remove --file="/etc/apt/sources.list.d/yarn.list"
-
-# Remove old log file
-ynh_secure_remove --file="/var/log/$app/"
-
-# Create PostgreSQL User
-ynh_psql_create_user $db_name $db_pwd
-
-# Install pg_trgm extension to provide a PostgreSQL search solution
-ynh_psql_test_if_first_run
-ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name
-
-# Cleaning legacy permissions
-if ynh_legacy_permissions_exists; then
- ynh_legacy_permissions_delete_all
-
- ynh_app_setting_delete --app=$app --key=is_public
-fi
-
-ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
-
-#=================================================
-# 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
-#=================================================
-
-if [ "$upgrade_type" == "UPGRADE_APP" ]
-then
- ynh_script_progression --message="Upgrading source files..."
-
- config_file="$final_path/config.yml"
- tmpdir="$(mktemp -d)"
-
- rsync -a "$config_file" "$tmpdir/."
- if [ -d "$final_path/.ssh" ]; then
- rsync -a "$final_path/.ssh" "$tmpdir/."
- fi
- if [ -d "$final_path/data" ]; then
- rsync -a "$final_path/data" "$tmpdir/."
- fi
- ynh_secure_remove --file="$final_path"
-
- # Download, check integrity, uncompress and patch the source from app.src
- ynh_setup_source --dest_dir="$final_path"
-
- rsync -a "$tmpdir/config.yml" "$final_path/."
- if [ -d "$tmpdir/.ssh" ]; then
- rsync -a "$tmpdir/.ssh" "$final_path/."
- fi
- if [ -d "$tmpdir/data" ]; then
- rsync -a "$tmpdir/data" "$final_path/."
- fi
-fi
-
-chmod 750 "$final_path"
-chmod -R o-rwx "$final_path"
-chown -R $app:$app "$final_path"
-
#=================================================
# UPGRADE DEPENDENCIES
#=================================================
ynh_script_progression --message="Upgrading dependencies..."
-ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_use_nodejs
#=================================================
-# NGINX CONFIGURATION
+# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
-ynh_script_progression --message="Upgrading NGINX web server configuration..."
+ynh_script_progression --message="Upgrading source files..."
-# Create a dedicated NGINX config
-ynh_add_nginx_config
+ynh_setup_source --dest_dir="$install_dir" --full_replace=1 --keep="config.yml .ssh data"
+
+chmod -R o-rwx "$install_dir"
+chown -R "$app:$app" "$install_dir"
-#=================================================
-# SPECIFIC UPGRADE
#=================================================
# UPDATE A CONFIG FILE
#=================================================
ynh_script_progression --message="Updating a configuration file..."
-ynh_add_config --template="../conf/config.sample.yml" --destination="$final_path/config.yml"
+ynh_add_config --template="config.sample.yml" --destination="$install_dir/config.yml"
-chmod 400 "$final_path/config.yml"
-chown $app:$app "$final_path/config.yml"
+chmod 400 "$install_dir/config.yml"
+chown "$app:$app" "$install_dir/config.yml"
#=================================================
-# SETUP SYSTEMD
+# REAPPLY SYSTEM CONFIGURATIONS
#=================================================
-ynh_script_progression --message="Upgrading systemd configuration..."
+ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1
+
+# Create a dedicated NGINX config
+ynh_add_nginx_config
# Create a dedicated systemd config
ynh_add_systemd_config
-
-#=================================================
-# GENERIC FINALIZATION
-#=================================================
-# INTEGRATE SERVICE IN YUNOHOST
-#=================================================
-ynh_script_progression --message="Integrating service in YunoHost..."
-
-yunohost service add $app --description="$app daemon for Wiki.js" --log="/var/log/$app/$app.log"
+yunohost service add "$app" --description="$app daemon for Wiki.js" --log="/var/log/$app/$app.log"
#=================================================
# START SYSTEMD SERVICE
#=================================================
ynh_script_progression --message="Starting a systemd service..."
-ynh_systemd_action --service_name=$app --action="start" --log_path=systemd --line_match="HTTP Server:"
-
-#=================================================
-# RELOAD NGINX
-#=================================================
-ynh_script_progression --message="Reloading NGINX web server..."
-
-ynh_systemd_action --service_name=nginx --action=reload
+ynh_systemd_action --service_name="$app" --action="start" --log_path=systemd --line_match="HTTP Server:"
#=================================================
# END OF SCRIPT
diff --git a/scripts/ynh_send_readme_to_admin__2 b/scripts/ynh_send_readme_to_admin__2
deleted file mode 100644
index 8b1edf1..0000000
--- a/scripts/ynh_send_readme_to_admin__2
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/bin/bash
-
-# Send an email to inform the administrator
-#
-# usage: ynh_send_readme_to_admin --app_message=app_message [--recipients=recipients] [--type=type]
-# | arg: -m --app_message= - The file with the content to send to the administrator.
-# | arg: -r, --recipients= - The recipients of this email. Use spaces to separate multiples recipients. - default: root
-# example: "root admin@domain"
-# If you give the name of a YunoHost user, ynh_send_readme_to_admin will find its email adress for you
-# example: "root admin@domain user1 user2"
-# | arg: -t, --type= - Type of mail, could be 'backup', 'change_url', 'install', 'remove', 'restore', 'upgrade'
-ynh_send_readme_to_admin() {
- # Declare an array to define the options of this helper.
- declare -Ar args_array=( [m]=app_message= [r]=recipients= [t]=type= )
- local app_message
- local recipients
- local type
- # Manage arguments with getopts
-
- ynh_handle_getopts_args "$@"
- app_message="${app_message:-}"
- recipients="${recipients:-root}"
- type="${type:-install}"
-
- # Get the value of admin_mail_html
- admin_mail_html=$(ynh_app_setting_get $app admin_mail_html)
- admin_mail_html="${admin_mail_html:-0}"
-
- # Retrieve the email of users
- find_mails () {
- local list_mails="$1"
- local mail
- local recipients=" "
- # Read each mail in argument
- for mail in $list_mails
- do
- # Keep root or a real email address as it is
- if [ "$mail" = "root" ] || echo "$mail" | grep --quiet "@"
- then
- recipients="$recipients $mail"
- else
- # But replace an user name without a domain after by its email
- if mail=$(ynh_user_get_info "$mail" "mail" 2> /dev/null)
- then
- recipients="$recipients $mail"
- fi
- fi
- done
- echo "$recipients"
- }
- recipients=$(find_mails "$recipients")
-
- # Subject base
- local mail_subject="☁️🆈🅽🅷☁️: \`$app\`"
-
- # Adapt the subject according to the type of mail required.
- if [ "$type" = "backup" ]; then
- mail_subject="$mail_subject has just been backup."
- elif [ "$type" = "change_url" ]; then
- mail_subject="$mail_subject has just been moved to a new URL!"
- elif [ "$type" = "remove" ]; then
- mail_subject="$mail_subject has just been removed!"
- elif [ "$type" = "restore" ]; then
- mail_subject="$mail_subject has just been restored!"
- elif [ "$type" = "upgrade" ]; then
- mail_subject="$mail_subject has just been upgraded!"
- else # install
- mail_subject="$mail_subject has just been installed!"
- fi
-
- local mail_message="This is an automated message from your beloved YunoHost server.
-
-Specific information for the application $app.
-
-$(cat "$app_message")"
-
- # Store the message into a file for further modifications.
- echo "$mail_message" > mail_to_send
-
- # If a html email is required. Apply html tags to the message.
- if [ "$admin_mail_html" -eq 1 ]
- then
- # Insert 'br' tags at each ending of lines.
- ynh_replace_string "$" "
" mail_to_send
-
- # Insert starting HTML tags
- sed --in-place '1s@^@\n\n
\n\n@' mail_to_send
-
- # Keep tabulations
- ynh_replace_string " " "\ \ " mail_to_send
- ynh_replace_string "\t" "\ \ " mail_to_send
-
- # Insert url links tags
- ynh_replace_string "__URL_TAG1__\(.*\)__URL_TAG2__\(.*\)__URL_TAG3__" "\1" mail_to_send
-
- # Insert finishing HTML tags
- echo -e "\n\n" >> mail_to_send
-
- # Otherwise, remove tags to keep a plain text.
- else
- # Remove URL tags
- ynh_replace_string "__URL_TAG[1,3]__" "" mail_to_send
- ynh_replace_string "__URL_TAG2__" ": " mail_to_send
- fi
-
- # Define binary to use for mail command
- if [ -e /usr/bin/bsd-mailx ]
- then
- local mail_bin=/usr/bin/bsd-mailx
- else
- local mail_bin=/usr/bin/mail.mailutils
- fi
-
- if [ "$admin_mail_html" -eq 1 ]
- then
- content_type="text/html"
- else
- content_type="text/plain"
- fi
-
- # Send the email to the recipients
- cat mail_to_send | $mail_bin -a "Content-Type: $content_type; charset=UTF-8" -s "$mail_subject" "$recipients"
-}
diff --git a/tests.toml b/tests.toml
new file mode 100644
index 0000000..91daf17
--- /dev/null
+++ b/tests.toml
@@ -0,0 +1,7 @@
+test_format = 1.0
+
+[default]
+
+ # ------------
+ # Tests to run
+ # ------------
\ No newline at end of file