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

Merge pull request #84 from YunoHost-Apps/testing

Upgrade
This commit is contained in:
Fabian Wilkens 2022-09-03 09:03:39 +02:00 committed by GitHub
commit 273de1feeb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 637 additions and 687 deletions

View file

@ -15,8 +15,7 @@
# Fetching information # Fetching information
current_version=$(cat manifest.json | jq -j '.version|split("~")[0]') current_version=$(cat manifest.json | jq -j '.version|split("~")[0]')
#repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]') repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]')
repo="standardnotes/server"
commit="" commit=""
id=0 id=0
while [[ -z $commit && $id -le 29 ]] while [[ -z $commit && $id -le 29 ]]
@ -31,8 +30,8 @@ do
done done
if [ -z $commit ]; then if [ -z $commit ]; then
echo "::warning ::No new version found.." echo "::warning ::No new version found.."
exit 0 exit 0
fi fi
version=$(curl --silent "https://api.github.com/repos/$repo/commits/$commit" | jq -r '.commit.committer.date' | sed 's/T.*$//g' | sed 's/-/./g') version=$(curl --silent "https://api.github.com/repos/$repo/commits/$commit" | jq -r '.commit.committer.date' | sed 's/T.*$//g' | sed 's/-/./g')
@ -61,12 +60,12 @@ echo "PROCEED=false" >> $GITHUB_ENV
# Proceed only if the retrieved version is greater than the current one # Proceed only if the retrieved version is greater than the current one
if [[ "$current_version" == "$version" ]]; then if [[ "$current_version" == "$version" ]]; then
echo "::warning ::No new version available" echo "::warning ::No new version available"
exit 0 exit 0
# Proceed only if a PR for this new version does not already exist # Proceed only if a PR for this new version does not already exist
elif git ls-remote -q --exit-code --heads https://github.com/$GITHUB_REPOSITORY.git ci-auto-update-v$version ; then elif git ls-remote -q --exit-code --heads https://github.com/$GITHUB_REPOSITORY.git ci-auto-update-v$version ; then
echo "::warning ::A branch already exists for this update" echo "::warning ::A branch already exists for this update"
exit 0 exit 0
fi fi
asset="https://github.com/$repo/archive/$commit.tar.gz" asset="https://github.com/$repo/archive/$commit.tar.gz"
@ -93,6 +92,8 @@ SOURCE_SUM=$checksum
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=
SOURCE_EXTRACT=true
EOT EOT
echo "... conf/app.src updated" echo "... conf/app.src updated"
@ -104,7 +105,7 @@ echo "... conf/app.src updated"
# The GitHub Action workflow takes care of committing all changes after this script ends. # The GitHub Action workflow takes care of committing all changes after this script ends.
#================================================= #=================================================
# GENERIC FINALIZA-TION # GENERIC FINALIZATION
#================================================= #=================================================
# Replace new version in manifest # Replace new version in manifest

View file

@ -8,42 +8,42 @@ on:
workflow_dispatch: workflow_dispatch:
# Run it every monday at 6:00 UTC # Run it every monday at 6:00 UTC
schedule: schedule:
- cron: '0 6 * * 1' - cron: '0 6 * * 1'
jobs: jobs:
updater: updater:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Fetch the source code - name: Fetch the source code
uses: actions/checkout@v2 uses: actions/checkout@v2
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
- name: Run the updater script - name: Run the updater script
id: run_updater id: run_updater
run: | run: |
# Setting up Git user # Setting up Git user
git config --global user.name 'yunohost-bot' git config --global user.name 'yunohost-bot'
git config --global user.email 'yunohost-bot@users.noreply.github.com' git config --global user.email 'yunohost-bot@users.noreply.github.com'
# Run the updater script # Run the updater script
/bin/bash .github/workflows/updater.sh /bin/bash .github/workflows/updater.sh
- name: Commit changes - name: Commit changes
id: commit id: commit
if: ${{ env.PROCEED == 'true' }} if: ${{ env.PROCEED == 'true' }}
run: | run: |
git commit -am "Upgrade to $VERSION" git commit -am "Upgrade to $VERSION"
- name: Create Pull Request - name: Create Pull Request
id: cpr id: cpr
if: ${{ env.PROCEED == 'true' }} if: ${{ env.PROCEED == 'true' }}
uses: peter-evans/create-pull-request@v3 uses: peter-evans/create-pull-request@v3
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
commit-message: 'Update: to latest versions' commit-message: 'Update: to latest versions'
committer: 'yunohost-bot <yunohost-bot@users.noreply.github.com>' committer: 'yunohost-bot <yunohost-bot@users.noreply.github.com>'
author: 'yunohost-bot <yunohost-bot@users.noreply.github.com>' author: 'yunohost-bot <yunohost-bot@users.noreply.github.com>'
signoff: false signoff: false
branch: ci-auto-update-${{ env.VERSION }} branch: ci-auto-update-${{ env.VERSION }}
base: testing base: testing
delete-branch: true delete-branch: true
title: 'Upgrade to ${{ env.VERSION }}' title: 'Upgrade to ${{ env.VERSION }}'
body: | body: |
Upgrade ${{ env.VERSION_CURRENT }} to ${{ env.VERSION }} Upgrade ${{ env.VERSION_CURRENT }} to ${{ env.VERSION }}
draft: false draft: false

View file

@ -15,9 +15,10 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
## Overview ## Overview
The Standard Notes syncing server. An end-to-end encrypted note-taking app. Standard Notes is an end-to-end encrypted note-taking app for digitalists and professionals. Capture your notes, files, and lifes work all in one secure place.
**Shipped version:** 2022.07.29~ynh1
**Shipped version:** 2022.08.30~ynh1
**Demo:** https://standardnotes.org/demo **Demo:** https://standardnotes.org/demo
@ -27,13 +28,12 @@ The Standard Notes syncing server. An end-to-end encrypted note-taking app.
* Ram requirements ( 4GB swap memory will be created during install ): * Ram requirements ( 4GB swap memory will be created during install ):
* Configuration can be changed under: https://my_domain.tld/yunohost/admin/#/apps/$app_id/config-panel * Configuration can be changed under: https://my_domain.tld/yunohost/admin/#/apps/$app_id/config-panel
## Documentation and resources ## Documentation and resources
* Official app website: <https://standardnotes.org/> * Official app website: <https://standardnotes.org/>
* Official user documentation: <https://standardnotes.com/help> * Official user documentation: <https://standardnotes.com/help>
* Official admin documentation: <https://docs.standardnotes.org/> * Official admin documentation: <https://docs.standardnotes.org/>
* Upstream app code repository: <https://github.com/standardnotes/standalone> * Upstream app code repository: <https://github.com/standardnotes/server>
* YunoHost documentation for this app: <https://yunohost.org/app_snserver> * YunoHost documentation for this app: <https://yunohost.org/app_snserver>
* Report a bug: <https://github.com/YunoHost-Apps/snserver_ynh/issues> * Report a bug: <https://github.com/YunoHost-Apps/snserver_ynh/issues>

View file

@ -15,25 +15,25 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour
## Vue d'ensemble ## Vue d'ensemble
Standard Notes est une application de prise de notes chiffrée de bout en bout pour les numériciens et les professionnels. Capturez vos notes, vos fichiers et le travail de votre vie en un seul endroit sécurisé.
**Version incluse :** 2022.07.29~ynh1 **Version incluse :** 2022.08.30~ynh1
**Démo :** https://standardnotes.org/demo **Démo :** https://standardnotes.org/demo
## Avertissements / informations importantes ## Avertissements / informations importantes
* No single-sign on or LDAP integration * Pas d'authentification unique ou d'intégration LDAP.
* Ram requirements ( 4GB swap memory will be created during install ): * Besoins en mémoire vive (4 Go de mémoire swap seront créés pendant l'installation) :
* Configuration can be changed under: https://my_domain.tld/yunohost/admin/#/apps/$app_id/config-panel * La configuration peut être modifiée sous : https://my_domain.tld/yunohost/admin/#/apps/$app_id/config-panel
## Documentations et ressources ## Documentations et ressources
* Site officiel de l'app : <https://standardnotes.org/> * Site officiel de l'app : <https://standardnotes.org/>
* Documentation officielle utilisateur : <https://standardnotes.com/help> * Documentation officielle utilisateur : <https://standardnotes.com/help>
* Documentation officielle de l'admin : <https://docs.standardnotes.org/> * Documentation officielle de l'admin : <https://docs.standardnotes.org/>
* Dépôt de code officiel de l'app : <https://github.com/standardnotes/standalone> * Dépôt de code officiel de l'app : <https://github.com/standardnotes/server>
* Documentation YunoHost pour cette app : <https://yunohost.org/app_snserver> * Documentation YunoHost pour cette app : <https://yunohost.org/app_snserver>
* Signaler un bug : <https://github.com/YunoHost-Apps/snserver_ynh/issues> * Signaler un bug : <https://github.com/YunoHost-Apps/snserver_ynh/issues>

View file

@ -1,30 +1,24 @@
# See here for more information
# https://github.com/YunoHost/package_check#syntax-check_process-file
# Move this file from check_process.default to check_process when you have filled it.
;; Test complet ;; Test complet
; Manifest ; Manifest
domain="domain.tld" domain="domain.tld"
path="/path" path="/path"
; Checks ; Checks
pkg_linter=1 pkg_linter=1
setup_sub_dir=1 setup_sub_dir=1
setup_root=1 setup_root=1
setup_nourl=0 setup_nourl=0
setup_private=0 setup_private=0
setup_public=1 setup_public=1
upgrade=1 upgrade=1
# 2022.06.20~yhn1 # 2022.06.20~yhn1
upgrade=1 from_commit=2a0f413937f8a3d4bd067a5890480bce1222ec5a upgrade=1 from_commit=2a0f413937f8a3d4bd067a5890480bce1222ec5a
backup_restore=1 backup_restore=1
multi_instance=1 multi_instance=1
port_already_use=0 port_already_use=0
change_url=1 change_url=1
;;; Options ;;; Options
Email= Email=
Notification= Notificationnone
;;; Upgrade options ;;; Upgrade options
; commit=2a0f413937f8a3d4bd067a5890480bce1222ec5a ; commit=2a0f413937f8a3d4bd067a5890480bce1222ec5a
name=2022.06.20~ynh1 name=2022.06.20~ynh1

View file

@ -1,5 +1,7 @@
SOURCE_URL=https://github.com/standardnotes/server/archive/033bc25d8f55e22ba168bad2d0c44fa1ac9a86e4.tar.gz SOURCE_URL=https://github.com/standardnotes/server/archive/f6b359a77207deb66b497038e8ff2f04b287bea2.tar.gz
SOURCE_SUM=1f64d26630932d19985df8989f51c909912066b1dc4539b22f952f5e81f978f2 SOURCE_SUM=50f92435eb2c86e42ab2dc9c17b3a6d2b45278e845355e3fa148bcb003ff8763
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=
SOURCE_EXTRACT=true

View file

@ -1,24 +1,25 @@
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
location __PATH__/ { location __PATH__/ {
proxy_pass http://127.0.0.1:__PORT_API_GATEWAY__/; proxy_pass http://127.0.0.1:__PORT_API_GATEWAY__/;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade; proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; proxy_buffering off;
} }
location = __PATH__/ { location = __PATH__/ {
default_type text/plain; default_type text/plain;
return 200 "This is where Standard Notes - Syncing Server is installed."; return 200 "This is where Standard Notes - Syncing Server is installed.";
} }
location __PATH__/files/ { location __PATH__/files/ {
proxy_pass http://127.0.0.1:__PORT_FILES__/; proxy_pass http://127.0.0.1:__PORT_FILES__/;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade; proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; proxy_buffering off;
} }

View file

@ -3,25 +3,25 @@ version = "1.0"
[main] [main]
name = "StandardNotes Server configuration" name = "StandardNotes Server configuration"
[main.new_user] [main.new_user]
name = "New User Options" name = "New User Options"
[main.new_user.disable_user_registration] [main.new_user.disable_user_registration]
ask = "Disable user registration?" ask = "Disable user registration?"
type = "boolean" type = "boolean"
default = "false" default = "false"
help = "false = New users can register\ntrue = No new user registrations allowed" help = "false = New users can register\ntrue = No new user registrations allowed"
[main.new_user.files_limit] [main.new_user.files_limit]
ask = "Default files limit" ask = "Default files limit"
type = "number" type = "number"
default = "100" default = "100"
help = "Choose a default limit in MB for the user file upload space.\n 100 = 100 MB\n 1024 = 1GB\n 10240 = 10GB" help = "Choose a default limit in MB for the user file upload space.\n 100 = 100 MB\n 1024 = 1GB\n 10240 = 10GB"
[main.subscription] [main.subscription]
name = "User Subscription" name = "User Subscription"
[main.subscription.info] [main.subscription.info]
ask = "" ask = ""
type = "alert" type = "alert"
style = "info" style = "info"

1
doc/DESCRIPTION.md Normal file
View file

@ -0,0 +1 @@
Standard Notes is an end-to-end encrypted note-taking app for digitalists and professionals. Capture your notes, files, and lifes work all in one secure place.

1
doc/DESCRIPTION_fr.md Normal file
View file

@ -0,0 +1 @@
Standard Notes est une application de prise de notes chiffrée de bout en bout pour les numériciens et les professionnels. Capturez vos notes, vos fichiers et le travail de votre vie en un seul endroit sécurisé.

View file

@ -1,4 +1,3 @@
* No single-sign on or LDAP integration * No single-sign on or LDAP integration
* Ram requirements ( 4GB swap memory will be created during install ): * Ram requirements ( 4GB swap memory will be created during install ):
* Configuration can be changed under: https://my_domain.tld/yunohost/admin/#/apps/$app_id/config-panel * Configuration can be changed under: https://my_domain.tld/yunohost/admin/#/apps/$app_id/config-panel

3
doc/DISCLAIMER_fr.md Normal file
View file

@ -0,0 +1,3 @@
* Pas d'authentification unique ou d'intégration LDAP.
* Besoins en mémoire vive (4 Go de mémoire swap seront créés pendant l'installation) :
* La configuration peut être modifiée sous : https://my_domain.tld/yunohost/admin/#/apps/$app_id/config-panel

View file

@ -5,7 +5,7 @@
"description": { "description": {
"en": "The Standard Notes syncing server. An end-to-end encrypted note-taking app." "en": "The Standard Notes syncing server. An end-to-end encrypted note-taking app."
}, },
"version": "2022.07.29~ynh1", "version": "2022.08.30~ynh1",
"url": "https://github.com/standardnotes/standalone", "url": "https://github.com/standardnotes/standalone",
"upstream": { "upstream": {
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
@ -13,7 +13,7 @@
"demo": "https://standardnotes.org/demo", "demo": "https://standardnotes.org/demo",
"admindoc": "https://docs.standardnotes.org/", "admindoc": "https://docs.standardnotes.org/",
"userdoc": "https://standardnotes.com/help", "userdoc": "https://standardnotes.com/help",
"code": "https://github.com/standardnotes/standalone" "code": "https://github.com/standardnotes/server"
}, },
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"maintainer": { "maintainer": {

View file

@ -3,12 +3,13 @@
#================================================= #=================================================
# COMMON VARIABLES # COMMON VARIABLES
#================================================= #=================================================
NODEJS_VERSION="16"
nodejs_version=16.13.1
swap_needed=4096 swap_needed=4096
node_max_old_space_size=4096 node_max_old_space_size=4096
# dependencies used by the app # dependencies used by the app (must be on a single line)
pkg_dependencies="" pkg_dependencies=""
#================================================= #=================================================
@ -17,47 +18,45 @@ pkg_dependencies=""
# Reset failed systemd services. # Reset failed systemd services.
ynh_reset_systemd(){ ynh_reset_systemd(){
systemctl reset-failed systemctl reset-failed
} }
# Substitute/replace a string (or expression) by another in a file on a line # Substitute/replace a string (or expression) by another in a file on a line
# #
# usage: ynh_replace_string_on_line --line=line --match_string=match_string --replace_string=replace_string --target_file=target_file # usage: ynh_replace_string_on_line --line=line --match_string=match_string --replace_string=replace_string --target_file=target_file
# | arg: -l, --line= - Replace match on nth line in the file # | arg: -l, --line= - Replace match on nth line in the file
# | arg: -m, --match_string= - String to be searched and replaced in the file # | arg: -m, --match_string= - String to be searched and replaced in the file
# | arg: -r, --replace_string= - String that will replace matches # | arg: -r, --replace_string= - String that will replace matches
# | arg: -f, --target_file= - File in which the string will be replaced. # | arg: -f, --target_file= - File in which the string will be replaced.
# #
# As this helper is based on sed command, regular expressions and references to # As this helper is based on sed command, regular expressions and references to
# sub-expressions can be used (see sed manual page for more information) # sub-expressions can be used (see sed manual page for more information)
# #
ynh_replace_string_on_line() { ynh_replace_string_on_line() {
# Declare an array to define the options of this helper. # Declare an array to define the options of this helper.
local legacy_args=lmrf local legacy_args=lmrf
local -A args_array=([l]=line= [m]=match_string= [r]=replace_string= [f]=target_file=) local -A args_array=([l]=line= [m]=match_string= [r]=replace_string= [f]=target_file=)
local line local line
local match_string local match_string
local replace_string local replace_string
local target_file local target_file
# Manage arguments with getopts # Manage arguments with getopts
ynh_handle_getopts_args "$@" ynh_handle_getopts_args "$@"
set +o xtrace # set +x set +o xtrace # set +x
local delimit=@ local delimit=@
# Escape the delimiter if it's in the string. # Escape the delimiter if it's in the string.
match_string=${match_string//${delimit}/"\\${delimit}"} match_string=${match_string//${delimit}/"\\${delimit}"}
replace_string=${replace_string//${delimit}/"\\${delimit}"} replace_string=${replace_string//${delimit}/"\\${delimit}"}
set -o xtrace # set -x set -o xtrace # set -x
sed --in-place "${line} s${delimit}${match_string}${delimit}${replace_string}${delimit}" "$target_file" sed --in-place "${line} s${delimit}${match_string}${delimit}${replace_string}${delimit}" "$target_file"
} }
#================================================ #=================================================
# EXPERIMENTAL HELPERS # EXPERIMENTAL HELPERS
#================================================= #=================================================
#================================================= #=================================================
# FUTURE OFFICIAL HELPERS # FUTURE OFFICIAL HELPERS
#================================================= #=================================================

View file

@ -29,26 +29,26 @@ ynh_script_progression --message="Add a subscription and $FILES_SIZE MB of file
# Searching for new users in the last 10 minutes without a Pro_Plan subscription. # Searching for new users in the last 10 minutes without a Pro_Plan subscription.
mysql --password=$DB_PASSWORD --database=$DB_DATABASE <<< " \ mysql --password=$DB_PASSWORD --database=$DB_DATABASE <<< " \
SELECT email FROM users WHERE NOT EXISTS( SELECT * FROM user_subscriptions WHERE user_subscriptions.plan_name = \"PRO_PLAN\" AND user_subscriptions.user_uuid = users.uuid ); \ SELECT email FROM users WHERE NOT EXISTS( SELECT * FROM user_subscriptions WHERE user_subscriptions.plan_name = \"PRO_PLAN\" AND user_subscriptions.user_uuid = users.uuid ); \
" 2>/dev/null | " 2>/dev/null |
# Read through the piped result until it's empty. # Read through the piped result until it's empty.
while IFS='\n' read email; do while IFS='\n' read email; do
if [[ ${email} = "email" ]]; then if [[ ${email} = "email" ]]; then
ynh_print_info --message="New users found:" ynh_print_info --message="New users found:"
ynh_print_info --message="----------------------------------------" ynh_print_info --message="----------------------------------------"
else else
# ADD new user with Email $EMAIL a PRO_PLAN subscription # ADD new user with Email $EMAIL a PRO_PLAN subscription
ynh_print_info --message="[$(date -Iseconds)] User: $email added to the PRO_PLAN subscription." ynh_print_info --message="[$(date -Iseconds)] User: $email added to the PRO_PLAN subscription."
mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \ mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \
"INSERT INTO user_roles (role_uuid , user_uuid) VALUES ((SELECT uuid FROM roles WHERE name=\"PRO_USER\" ORDER BY version DESC limit 1) ,(SELECT uuid FROM users WHERE email=\"$email\")) ON DUPLICATE KEY UPDATE role_uuid = VALUES(role_uuid);" "INSERT INTO user_roles (role_uuid , user_uuid) VALUES ((SELECT uuid FROM roles WHERE name=\"PRO_USER\" ORDER BY version DESC limit 1) ,(SELECT uuid FROM users WHERE email=\"$email\")) ON DUPLICATE KEY UPDATE role_uuid = VALUES(role_uuid);"
mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \ mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \
"INSERT INTO user_subscriptions SET uuid=UUID(), plan_name=\"PRO_PLAN\", ends_at=8640000000000000, created_at=0, updated_at=0, user_uuid=(SELECT uuid FROM users WHERE email=\"$email\"), subscription_id=1, subscription_type=\"regular\";" "INSERT INTO user_subscriptions SET uuid=UUID(), plan_name=\"PRO_PLAN\", ends_at=8640000000000000, created_at=0, updated_at=0, user_uuid=(SELECT uuid FROM users WHERE email=\"$email\"), subscription_id=1, subscription_type=\"regular\";"
# Add new user Files space. Size is 1GB*$FILES_SIZE # Add new user Files space. Size is 1GB*$FILES_SIZE
ynh_print_info --message="[$(date -Iseconds)] User: $email added $FILES_SIZE MB of file spcae." ynh_print_info --message="[$(date -Iseconds)] User: $email added $FILES_SIZE MB of file spcae."
mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \ mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \
"INSERT INTO subscription_settings(uuid, name, value, created_at, updated_at, user_subscription_uuid) VALUES (UUID(), \"FILE_UPLOAD_BYTES_LIMIT\", \"$FILE_UPLOAD_BYTES_LIMIT\", FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), (SELECT us.uuid FROM user_subscriptions us INNER JOIN users u ON us.user_uuid=u.uuid WHERE u.email=\"$email\"));" "INSERT INTO subscription_settings(uuid, name, value, created_at, updated_at, user_subscription_uuid) VALUES (UUID(), \"FILE_UPLOAD_BYTES_LIMIT\", \"$FILE_UPLOAD_BYTES_LIMIT\", FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), (SELECT us.uuid FROM user_subscriptions us INNER JOIN users u ON us.user_uuid=u.uuid WHERE u.email=\"$email\"));"
fi fi
done done

View file

@ -6,7 +6,7 @@
# IMPORT GENERIC HELPERS # IMPORT GENERIC HELPERS
#================================================= #=================================================
#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts # Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
source ../settings/scripts/_common.sh source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
@ -15,8 +15,7 @@ source /usr/share/yunohost/helpers
#================================================= #=================================================
ynh_clean_setup () { ynh_clean_setup () {
### Remove this function if there's nothing to clean before calling the remove script. true
true
} }
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
@ -24,7 +23,7 @@ ynh_abort_if_errors
#================================================= #=================================================
# LOAD SETTINGS # LOAD SETTINGS
#================================================= #=================================================
ynh_print_info "Loading installation settings..." ynh_print_info --message="Loading installation settings..."
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME
@ -33,10 +32,14 @@ domain=$(ynh_app_setting_get --app=$app --key=domain)
db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_name=$(ynh_app_setting_get --app=$app --key=db_name)
datadir=$(ynh_app_setting_get --app=$app --key=datadir) datadir=$(ynh_app_setting_get --app=$app --key=datadir)
#=================================================
# DECLARE DATA AND CONF FILES TO BACKUP
#=================================================
ynh_print_info --message="Declaring files to be backed up..."
#================================================= #=================================================
# BACKUP THE APP MAIN DIR # BACKUP THE APP MAIN DIR
#================================================= #=================================================
ynh_print_info "Backing up the main app directory..."
ynh_backup --src_path="$final_path" ynh_backup --src_path="$final_path"
@ -49,21 +52,12 @@ ynh_backup --src_path="$datadir" --is_big
#================================================= #=================================================
# BACKUP THE NGINX CONFIGURATION # BACKUP THE NGINX CONFIGURATION
#================================================= #=================================================
ynh_print_info "Backing up nginx web server configuration..."
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#=================================================
# BACKUP THE MYSQL DATABASE
#=================================================
ynh_print_info "Backing up the MySQL database..."
ynh_mysql_dump_db --database="$db_name" > db.sql
#================================================= #=================================================
# BACKUP FAIL2BAN CONFIGURATION # BACKUP FAIL2BAN CONFIGURATION
#================================================= #=================================================
ynh_print_info "Backing up fail2ban configuration..."
ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf" ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf"
ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf"
@ -73,14 +67,12 @@ ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf"
#================================================= #=================================================
# BACKUP LOGROTATE # BACKUP LOGROTATE
#================================================= #=================================================
ynh_print_info "Backing up logrotate configuration..."
ynh_backup --src_path="/etc/logrotate.d/$app" ynh_backup --src_path="/etc/logrotate.d/$app"
#================================================= #=================================================
# BACKUP SYSTEMD # BACKUP SYSTEMD
#================================================= #=================================================
ynh_print_info "Backing up systemd configuration..."
ynh_backup --src_path="/etc/systemd/system/$app-api-gateway.service" ynh_backup --src_path="/etc/systemd/system/$app-api-gateway.service"
ynh_backup --src_path="/etc/systemd/system/$app-auth.service" ynh_backup --src_path="/etc/systemd/system/$app-auth.service"
@ -90,14 +82,20 @@ ynh_backup --src_path="/etc/systemd/system/$app-syncing-server.service"
ynh_backup --src_path="/etc/systemd/system/$app-syncing-server-worker.service" ynh_backup --src_path="/etc/systemd/system/$app-syncing-server-worker.service"
#================================================= #=================================================
# CRON LOGROTATE # BACKUP VARIOUS FILES
#================================================= #=================================================
ynh_print_info "Backing up cron configuration..."
ynh_backup --src_path="/etc/cron.d/$app" ynh_backup --src_path="/etc/cron.d/$app"
#=================================================
# BACKUP THE MYSQL DATABASE
#=================================================
ynh_print_info --message="Backing up the MySQL database..."
ynh_mysql_dump_db --database="$db_name" > db.sql
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================
ynh_print_info "Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."

View file

@ -29,6 +29,7 @@ ynh_script_progression --message="Loading installation settings..." --weight=1
# Needed for helper "ynh_add_nginx_config" # Needed for helper "ynh_add_nginx_config"
final_path=$(ynh_app_setting_get --app=$app --key=final_path) final_path=$(ynh_app_setting_get --app=$app --key=final_path)
# Add settings here as needed by your application
port_api_gateway=$(ynh_app_setting_get --app=$app --key=port_api_gateway) port_api_gateway=$(ynh_app_setting_get --app=$app --key=port_api_gateway)
port_auth=$(ynh_app_setting_get --app=$app --key=port_auth) port_auth=$(ynh_app_setting_get --app=$app --key=port_auth)
port_auth_worker=$(ynh_app_setting_get --app=$app --key=port_auth_worker) port_auth_worker=$(ynh_app_setting_get --app=$app --key=port_auth_worker)
@ -39,18 +40,18 @@ port_syncing_server_worker=$(ynh_app_setting_get --app=$app --key=port_syncing_s
config_api_gateway="$final_path/live/api-gateway.env" config_api_gateway="$final_path/live/api-gateway.env"
#================================================= #=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP # BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP
#================================================= #=================================================
ynh_script_progression --message="Backing up the app before changing its url (may take a while)..." --weight=33 ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=1
# Backup the current version of the app # Backup the current version of the app
ynh_backup_before_upgrade ynh_backup_before_upgrade
ynh_clean_setup () { ynh_clean_setup () {
# Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. # 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" ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
# restore it if the upgrade fails # Restore it if the upgrade fails
ynh_restore_upgradebackup ynh_restore_upgradebackup
} }
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
@ -62,13 +63,13 @@ ynh_abort_if_errors
change_domain=0 change_domain=0
if [ "$old_domain" != "$new_domain" ] if [ "$old_domain" != "$new_domain" ]
then then
change_domain=1 change_domain=1
fi fi
change_path=0 change_path=0
if [ "$old_path" != "$new_path" ] if [ "$old_path" != "$new_path" ]
then then
change_path=1 change_path=1
fi fi
#================================================= #=================================================
@ -77,30 +78,30 @@ fi
#================================================= #=================================================
# MODIFY URL IN NGINX CONF # MODIFY URL IN NGINX CONF
#================================================= #=================================================
ynh_script_progression --message="Updating nginx web server configuration..." --weight=2 ynh_script_progression --message="Updating NGINX web server configuration..." --weight=2
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
# Change the path in the nginx config file # Change the path in the NGINX config file
if [ $change_path -eq 1 ] if [ $change_path -eq 1 ]
then then
# Make a backup of the original nginx config file if modified # Make a backup of the original NGINX config file if modified
ynh_backup_if_checksum_is_different --file="$nginx_conf_path" ynh_backup_if_checksum_is_different --file="$nginx_conf_path"
# Set global variables for nginx helper # Set global variables for NGINX helper
domain="$old_domain" domain="$old_domain"
path_url="$new_path" path_url="$new_path"
# Create a dedicated nginx config # Create a dedicated NGINX config
ynh_add_nginx_config ynh_add_nginx_config
fi fi
# Change the domain for nginx # Change the domain for NGINX
if [ $change_domain -eq 1 ] if [ $change_domain -eq 1 ]
then then
# Delete file checksum for the old conf file location # Delete file checksum for the old conf file location
ynh_delete_file_checksum --file="$nginx_conf_path" ynh_delete_file_checksum --file="$nginx_conf_path"
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
# Store file checksum for the new config file location # Store file checksum for the new config file location
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
fi fi
#================================================= #=================================================
@ -116,11 +117,11 @@ ynh_store_file_checksum --file="$config_api_gateway"
#================================================= #=================================================
# SETUP FAIL2BAN # SETUP FAIL2BAN
#================================================= #=================================================
ynh_script_progression --message="Configuring fail2ban..." --weight=1 ynh_script_progression --message="Configuring Fail2Ban..." --weight=1
domain=$new_domain domain=$new_domain
path_url=$new_path path_url=$new_path
# Create a dedicated fail2ban config # Create a dedicated Fail2Ban config
touch "/var/log/$app/$app.log" touch "/var/log/$app/$app.log"
ynh_add_fail2ban_config --use_template ynh_add_fail2ban_config --use_template
@ -130,7 +131,7 @@ ynh_add_fail2ban_config --use_template
#================================================= #=================================================
# RELOAD NGINX # RELOAD NGINX
#================================================= #=================================================
ynh_script_progression --message="Reloading nginx web server..." --weight=1 ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload ynh_systemd_action --service_name=nginx --action=reload

View file

@ -23,22 +23,22 @@ final_path=$(ynh_app_setting_get $app final_path)
get__disable_user_registration(){ get__disable_user_registration(){
disabled=$(ynh_read_var_in_file --file="$final_path/live/auth.env" --key="DISABLE_USER_REGISTRATION") disabled=$(ynh_read_var_in_file --file="$final_path/live/auth.env" --key="DISABLE_USER_REGISTRATION")
echo $disabled echo $disabled
} }
get__files_limit(){ get__files_limit(){
limit=$(ynh_read_var_in_file --file="$final_path/cron.env" --key="FILES_SIZE") limit=$(ynh_read_var_in_file --file="$final_path/cron.env" --key="FILES_SIZE")
echo $limit echo $limit
} }
get__info(){ get__info(){
domain="$(cat /etc/yunohost/current_host)" domain="$(cat /etc/yunohost/current_host)"
limit=$(ynh_read_var_in_file --file="$final_path/cron.env" --key="FILES_SIZE") limit=$(ynh_read_var_in_file --file="$final_path/cron.env" --key="FILES_SIZE")
link="https://$domain/yunohost/admin/#/apps/$app/actions" link="https://$domain/yunohost/admin/#/apps/$app/actions"
cat << EOF cat << EOF
ask: "Add subscriptions:\nAdd a subscription and $limit MB of file space to all users without a subscription.\n$link" ask: "Add subscriptions:\nAdd a subscription and $limit MB of file space to all users without a subscription.\n$link"
EOF EOF
@ -53,56 +53,56 @@ EOF
#================================================= #=================================================
set__disable_user_registration(){ set__disable_user_registration(){
#--------------------------------------------- #---------------------------------------------
# IMPORTANT: setter are trigger only if a change is detected # IMPORTANT: setter are trigger only if a change is detected
#--------------------------------------------- #---------------------------------------------
if [ $disable_user_registration = "1" ]; then if [ $disable_user_registration = "1" ]; then
disabled="true" disabled="true"
fi fi
if [ $disable_user_registration = "0" ]; then if [ $disable_user_registration = "0" ]; then
disabled="false" disabled="false"
fi fi
config_auth="$final_path/live/auth.env" config_auth="$final_path/live/auth.env"
config_auth_worker="$final_path/live/auth-worker.env" config_auth_worker="$final_path/live/auth-worker.env"
ynh_write_var_in_file --file="$config_auth" --key="DISABLE_USER_REGISTRATION" --value="$disabled" ynh_write_var_in_file --file="$config_auth" --key="DISABLE_USER_REGISTRATION" --value="$disabled"
ynh_write_var_in_file --file="$config_auth_worker" --key="DISABLE_USER_REGISTRATION" --value="$disabled" ynh_write_var_in_file --file="$config_auth_worker" --key="DISABLE_USER_REGISTRATION" --value="$disabled"
ynh_store_file_checksum --file="$config_auth" ynh_store_file_checksum --file="$config_auth"
ynh_store_file_checksum --file="$config_auth_worker" ynh_store_file_checksum --file="$config_auth_worker"
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth" \ --service_name="$app-auth" \
--action="restart" \ --action="restart" \
--log_path="/var/log/$app/auth.log" \ --log_path="/var/log/$app/auth.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth-worker" \ --service_name="$app-auth-worker" \
--action="restart" \ --action="restart" \
--log_path="/var/log/$app/auth-worker.log" \ --log_path="/var/log/$app/auth-worker.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
#--------------------------------------------- #---------------------------------------------
# IMPORTANT: to be able to upgrade properly, you have to saved the value in settings too # IMPORTANT: to be able to upgrade properly, you have to saved the value in settings too
#--------------------------------------------- #---------------------------------------------
ynh_app_setting_set --app="$app" --key="disable_user_registration" --value="$disabled" ynh_app_setting_set --app="$app" --key="disable_user_registration" --value="$disabled"
} }
set__files_limit(){ set__files_limit(){
#--------------------------------------------- #---------------------------------------------
# IMPORTANT: setter are trigger only if a change is detected # IMPORTANT: setter are trigger only if a change is detected
#--------------------------------------------- #---------------------------------------------
config_cron="$final_path/cron.env" config_cron="$final_path/cron.env"
ynh_write_var_in_file --file="$config_cron" --key="FILES_SIZE" --value="$files_limit" ynh_write_var_in_file --file="$config_cron" --key="FILES_SIZE" --value="$files_limit"
ynh_store_file_checksum --file="$config_cron" ynh_store_file_checksum --file="$config_cron"
#--------------------------------------------- #---------------------------------------------
# IMPORTANT: to be able to upgrade properly, you have to saved the value in settings too # IMPORTANT: to be able to upgrade properly, you have to saved the value in settings too
#--------------------------------------------- #---------------------------------------------
ynh_app_setting_set --app="$app" --key="files_size" --value="$files_limit" ynh_app_setting_set --app="$app" --key="files_size" --value="$files_limit"
} }
#================================================= #=================================================

View file

@ -16,7 +16,7 @@ source /usr/share/yunohost/helpers
#================================================= #=================================================
ynh_clean_setup () { ynh_clean_setup () {
ynh_clean_check_starting true
} }
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
@ -29,11 +29,16 @@ domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH path_url=$YNH_APP_ARG_PATH
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME
redis_db=$(ynh_redis_get_free_db)
disable_user_registration=false
files_size=100
#================================================= #=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#================================================= #=================================================
ynh_script_progression --message="Validating installation parameters..." --weight=1
final_path=/opt/yunohost/$app final_path=/opt/yunohost/$app
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
test ! -e "$final_path" || ynh_die --message="This path already contains a folder" test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
# Register (book) web path # Register (book) web path
@ -42,19 +47,11 @@ ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
#================================================= #=================================================
# STORE SETTINGS FROM MANIFEST # STORE SETTINGS FROM MANIFEST
#================================================= #=================================================
ynh_script_progression --message="Storing installation settings..." --weight=3 ynh_script_progression --message="Storing installation settings..." --weight=3
ynh_app_setting_set --app=$app --key=domain --value=$domain 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=path --value=$path_url
redis_db=$(ynh_redis_get_free_db)
ynh_app_setting_set --app=$app --key=redis_db --value="$redis_db" ynh_app_setting_set --app=$app --key=redis_db --value="$redis_db"
#=================================================
# STORE SETTINGS
#=================================================
disable_user_registration=false
files_size=100
ynh_app_setting_set --app=$app --key=DISABLE_USER_REGISTRATION --value=$disable_user_registration ynh_app_setting_set --app=$app --key=DISABLE_USER_REGISTRATION --value=$disable_user_registration
ynh_app_setting_set --app=$app --key=FILES_SIZE --value=$files_size ynh_app_setting_set --app=$app --key=FILES_SIZE --value=$files_size
@ -63,7 +60,7 @@ ynh_app_setting_set --app=$app --key=FILES_SIZE --value=$files_size
#================================================= #=================================================
# FIND AND OPEN A PORT # FIND AND OPEN A PORT
#================================================= #=================================================
ynh_script_progression --message="Finding an available port..." --weight=1 ynh_script_progression --message="Finding an available port..." --weight=1
# Find an available port # Find an available port
port_api_gateway=$(ynh_find_port --port=3000) port_api_gateway=$(ynh_find_port --port=3000)
@ -83,24 +80,24 @@ ynh_app_setting_set --app=$app --key=port_syncing_server_worker --value=$port_sy
#================================================= #=================================================
# INSTALL DEPENDENCIES # INSTALL DEPENDENCIES
#================================================= #=================================================
ynh_script_progression --message="Installing dependencies..." --weight=17 ynh_script_progression --message="Installing dependencies..." --weight=17
ynh_install_app_dependencies $pkg_dependencies ynh_install_app_dependencies $pkg_dependencies
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg" ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
#================================================= #=================================================
# CREATE DEDICATED USER # CREATE DEDICATED USER
#================================================= #=================================================
ynh_script_progression --message="Configuring system user..." --weight=1 ynh_script_progression --message="Configuring system user..." --weight=1
# Create a system user # Create a system user
ynh_system_user_create --username=$app --home_dir=$final_path ynh_system_user_create --username=$app --home_dir="$final_path"
#================================================= #=================================================
# CREATE A MYSQL DATABASE # CREATE A MYSQL DATABASE
#================================================= #=================================================
ynh_script_progression --message="Creating a MySQL database..." --weight=2 ynh_script_progression --message="Creating a MySQL database..." --weight=2
db_name=$(ynh_sanitize_dbid --db_name=$app) db_name=$(ynh_sanitize_dbid --db_name=$app)
db_user=$db_name db_user=$db_name
@ -110,10 +107,10 @@ ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name
#================================================= #=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE # DOWNLOAD, CHECK AND UNPACK SOURCE
#================================================= #=================================================
ynh_script_progression --message="Setting up source files..." --weight=2 ynh_script_progression --message="Setting up source files..." --weight=2
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
mkdir -p "$final_path/live"
ynh_setup_source --source_id=app --dest_dir="$final_path/live" ynh_setup_source --source_id=app --dest_dir="$final_path/live"
cp "$YNH_APP_BASEDIR/sources/extra_files/cron.sh" "$final_path/cron.sh" cp "$YNH_APP_BASEDIR/sources/extra_files/cron.sh" "$final_path/cron.sh"
@ -124,14 +121,22 @@ chown -R $app:$app "$final_path"
#================================================= #=================================================
# NGINX CONFIGURATION # NGINX CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Configuring nginx web server..." --weight=3 ynh_script_progression --message="Configuring NGINX web server..." --weight=3
# Create a dedicated nginx config # Create a dedicated NGINX config
ynh_add_nginx_config ynh_add_nginx_config
#================================================= #=================================================
# SPECIFIC SETUP # SPECIFIC SETUP
#================================================= #=================================================
# ADD SWAP
#=================================================
ynh_script_progression --message="Adding swap..."
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 0 ]; then
ynh_add_swap --size=$swap_needed
fi
#================================================= #=================================================
# CREATE DATA DIRECTORY # CREATE DATA DIRECTORY
#================================================= #=================================================
@ -142,21 +147,14 @@ ynh_app_setting_set --app=$app --key=datadir --value=$datadir
mkdir -p $datadir/uploads mkdir -p $datadir/uploads
chmod -R 750 "$datadir" chmod 750 "$datadir"
chmod -R o-rwx "$datadir" chmod -R o-rwx "$datadir"
chown -R $app:$app "$datadir" chown -R $app:$app "$datadir"
#================================================= #=================================================
# ADD SWAP # ADD A CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Adding swap..." ynh_script_progression --message="Adding a configuration file..." --weight=2
ynh_add_swap --size=$swap_needed
#=================================================
# MODIFY A CONFIG FILE
#=================================================
ynh_script_progression --message="Modifying a config file..." --weight=2
config_api_gateway="$final_path/live/api-gateway.env" config_api_gateway="$final_path/live/api-gateway.env"
config_auth="$final_path/live/auth.env" config_auth="$final_path/live/auth.env"
@ -189,18 +187,18 @@ ynh_add_config --template="env_syncing-server-worker.env.sample" --destination="
#================================================= #=================================================
# INSTALLING Standard Notes - Syncing Server # INSTALLING Standard Notes - Syncing Server
#================================================= #=================================================
ynh_script_progression --message="Installing Standard Notes - Syncing Server..." --weight=93 ynh_script_progression --message="Installing Standard Notes - Syncing Server..." --weight=93
ynh_use_nodejs ynh_use_nodejs
pushd "$final_path/live" pushd "$final_path/live"
ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" PATH=$ynh_node_load_PATH yarn install --immutable ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" $ynh_node_load_PATH yarn install --immutable
ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" PATH=$ynh_node_load_PATH yarn build ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" $ynh_node_load_PATH yarn build
popd popd
#================================================= #=================================================
# SETUP SYSTEMD # SETUP SYSTEMD
#================================================= #=================================================
ynh_script_progression --message="Configuring a systemd service..." --weight=4 ynh_script_progression --message="Configuring a systemd service..." --weight=4
# Create a dedicated systemd config # Create a dedicated systemd config
ynh_add_systemd_config --service="$app-api-gateway" --template="systemd_api-gateway.service" ynh_add_systemd_config --service="$app-api-gateway" --template="systemd_api-gateway.service"
@ -211,26 +209,22 @@ ynh_add_systemd_config --service="$app-syncing-server" --template="systemd_synci
ynh_add_systemd_config --service="$app-syncing-server-worker" --template="systemd_syncing-server-worker.service" ynh_add_systemd_config --service="$app-syncing-server-worker" --template="systemd_syncing-server-worker.service"
#================================================= #=================================================
# STORE THE CONFIG FILE CHECKSUM # SETUP A CRON
#================================================= #=================================================
ynh_script_progression --message="Storing the config file checksum..." --weight=1 ynh_script_progression --message="Setup a cron..."
# Calculate and store the config file checksum into the app settings ynh_add_config --template="../conf/cron.env" --destination="$final_path/cron.env"
ynh_store_file_checksum --file="$config_api_gateway" ynh_add_config --template="../conf/cron" --destination="/etc/cron.d/$app"
ynh_store_file_checksum --file="$config_auth"
ynh_store_file_checksum --file="$config_auth_worker" chown root: "/etc/cron.d/$app"
ynh_store_file_checksum --file="$config_files" chmod 640 "/etc/cron.d/$app"
ynh_store_file_checksum --file="$config_syncing_server"
ynh_store_file_checksum --file="$config_syncing_server_worker"
ynh_store_file_checksum --file="/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
# GENERIC FINALIZATION # GENERIC FINALIZATION
#================================================= #=================================================
#=================================================
# SETUP LOGROTATE # SETUP LOGROTATE
#================================================= #=================================================
ynh_script_progression --message="Configuring log rotation..." --weight=1 ynh_script_progression --message="Configuring log rotation..." --weight=1
mkdir -p "/var/log/$app" mkdir -p "/var/log/$app"
chown -R "$app": "/var/log/$app" chown -R "$app": "/var/log/$app"
@ -246,7 +240,7 @@ ynh_use_logrotate --logfile="/var/log/$app/syncing-server-worker.log"
#================================================= #=================================================
# INTEGRATE SERVICE IN YUNOHOST # INTEGRATE SERVICE IN YUNOHOST
#================================================= #=================================================
ynh_script_progression --message="Integrate $app service in Yunohost..." --weight=1 ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
yunohost service add "$app-api-gateway" --description="Standard Notes - API Gateway" --log="/var/log/$app/api-gateway.log" yunohost service add "$app-api-gateway" --description="Standard Notes - API Gateway" --log="/var/log/$app/api-gateway.log"
yunohost service add "$app-auth" --description="Standard Notes - Auth" --log="/var/log/$app/auth.log" yunohost service add "$app-auth" --description="Standard Notes - Auth" --log="/var/log/$app/auth.log"
@ -258,63 +252,52 @@ yunohost service add "$app-syncing-server-worker" --description="Standard Notes
#================================================= #=================================================
# START SYSTEMD SERVICE # START SYSTEMD SERVICE
#================================================= #=================================================
ynh_script_progression --message="Starting a systemd service..." --weight=1 ynh_script_progression --message="Starting a systemd service..." --weight=1
# Start a systemd service # Start a systemd service
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-api-gateway" \ --service_name="$app-api-gateway" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/api-gateway.log" \ --log_path="/var/log/$app/api-gateway.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth" \ --service_name="$app-auth" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/auth.log" \ --log_path="/var/log/$app/auth.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth-worker" \ --service_name="$app-auth-worker" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/auth-worker.log" \ --log_path="/var/log/$app/auth-worker.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-files" \ --service_name="$app-files" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/files.log" \ --log_path="/var/log/$app/files.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-syncing-server" \ --service_name="$app-syncing-server" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/syncing-server.log" \ --log_path="/var/log/$app/syncing-server.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-syncing-server-worker" \ --service_name="$app-syncing-server-worker" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/syncing-server-worker.log" \ --log_path="/var/log/$app/syncing-server-worker.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
#=================================================
# SETUP A CRON
#=================================================
ynh_script_progression --message="Setup a cron..."
ynh_add_config --template="../conf/cron.env" --destination="$final_path/cron.env"
ynh_add_config --template="../conf/cron" --destination="/etc/cron.d/$app"
chown root: "/etc/cron.d/$app"
chmod 640 "/etc/cron.d/$app"
#================================================= #=================================================
# SETUP FAIL2BAN # SETUP FAIL2BAN
#================================================= #=================================================
ynh_script_progression --message="Configuring fail2ban..." --weight=1 ynh_script_progression --message="Configuring Fail2Ban..." --weight=1
# Create a dedicated fail2ban config # Create a dedicated Fail2Ban config
ynh_add_fail2ban_config --use_template ynh_add_fail2ban_config --use_template
#================================================= #=================================================
# SETUP SSOWAT # SETUP SSOWAT
#================================================= #=================================================
ynh_script_progression --message="Configuring SSOwat..." --weight=3 ynh_script_progression --message="Configuring permissions..." --weight=3
# Everyone can access the app. # Everyone can access the app.
# The "main" permission is automatically created before the install script. # The "main" permission is automatically created before the install script.
@ -323,7 +306,7 @@ ynh_permission_update --permission="main" --add="visitors" --show_tile="false"
#================================================= #=================================================
# RELOAD NGINX # RELOAD NGINX
#================================================= #=================================================
ynh_script_progression --message="Reloading nginx web server..." --weight=1 ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload ynh_systemd_action --service_name=nginx --action=reload
@ -331,4 +314,4 @@ ynh_systemd_action --service_name=nginx --action=reload
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================
ynh_script_progression --message="Installation of $app completed" --last ynh_script_progression --message="Installation of $app completed" --last

View file

@ -14,12 +14,11 @@ source /usr/share/yunohost/helpers
#================================================= #=================================================
# LOAD SETTINGS # LOAD SETTINGS
#================================================= #=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1 ynh_script_progression --message="Loading installation settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain) domain=$(ynh_app_setting_get --app=$app --key=domain)
port_api_gateway=$(ynh_app_setting_get --app=$app --key=port_api_gateway) port_api_gateway=$(ynh_app_setting_get --app=$app --key=port_api_gateway)
port_auth=$(ynh_app_setting_get --app=$app --key=port_auth) port_auth=$(ynh_app_setting_get --app=$app --key=port_auth)
port_auth_worker=$(ynh_app_setting_get --app=$app --key=port_auth_worker) port_auth_worker=$(ynh_app_setting_get --app=$app --key=port_auth_worker)
@ -37,42 +36,42 @@ datadir=$(ynh_app_setting_get --app=$app --key=datadir)
# REMOVE SERVICE INTEGRATION IN YUNOHOST # REMOVE SERVICE INTEGRATION IN YUNOHOST
#================================================= #=================================================
# Remove the service from the list of services known by Yunohost (added from `yunohost service add`) # 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-api-gateway" >/dev/null if ynh_exec_warn_less yunohost service status "$app-api-gateway" >/dev/null
then then
ynh_script_progression --message="Removing $app-api-gateway service..." --weight=1 ynh_script_progression --message="Removing $app-api-gateway service..." --weight=1
yunohost service remove "$app-api-gateway" yunohost service remove "$app-api-gateway"
fi fi
if ynh_exec_warn_less yunohost service status "$app-auth" >/dev/null if ynh_exec_warn_less yunohost service status "$app-auth" >/dev/null
then then
ynh_script_progression --message="Removing $app-auth service..." --weight=1 ynh_script_progression --message="Removing $app-auth service..." --weight=1
yunohost service remove "$app-auth" yunohost service remove "$app-auth"
fi fi
if ynh_exec_warn_less yunohost service status "$app-auth-worker" >/dev/null if ynh_exec_warn_less yunohost service status "$app-auth-worker" >/dev/null
then then
ynh_script_progression --message="Removing $app-auth-worker service..." --weight=1 ynh_script_progression --message="Removing $app-auth-worker service..." --weight=1
yunohost service remove "$app-auth-worker" yunohost service remove "$app-auth-worker"
fi fi
if ynh_exec_warn_less yunohost service status "$app-files" >/dev/null if ynh_exec_warn_less yunohost service status "$app-files" >/dev/null
then then
ynh_script_progression --message="Removing $app-files service..." --weight=1 ynh_script_progression --message="Removing $app-files service..." --weight=1
yunohost service remove "$app-files" yunohost service remove "$app-files"
fi fi
if ynh_exec_warn_less yunohost service status "$app-syncing-server" >/dev/null if ynh_exec_warn_less yunohost service status "$app-syncing-server" >/dev/null
then then
ynh_script_progression --message="Removing $app-syncing-server service..." --weight=1 ynh_script_progression --message="Removing $app-syncing-server service..." --weight=1
yunohost service remove "$app-syncing-server" yunohost service remove "$app-syncing-server"
fi fi
if ynh_exec_warn_less yunohost service status "$app-syncing-server-worker" >/dev/null if ynh_exec_warn_less yunohost service status "$app-syncing-server-worker" >/dev/null
then then
ynh_script_progression --message="Removing $app-syncing-server-worker service..." --weight=1 ynh_script_progression --message="Removing $app-syncing-server-worker service..." --weight=1
yunohost service remove "$app-syncing-server-worker" yunohost service remove "$app-syncing-server-worker"
fi fi
#================================================= #=================================================
# STOP AND REMOVE SERVICE # STOP AND REMOVE SERVICE
#================================================= #=================================================
ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1 ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1
# Remove the dedicated systemd config # Remove the dedicated systemd config
ynh_remove_systemd_config --service="$app-api-gateway" ynh_remove_systemd_config --service="$app-api-gateway"
@ -84,34 +83,33 @@ ynh_remove_systemd_config --service="$app-syncing-server-worker"
ynh_reset_systemd ynh_reset_systemd
#=================================================
# REMOVE LOGROTATE CONFIGURATION
#=================================================
ynh_script_progression --message="Removing logrotate configuration..." --weight=1
# Remove the app-specific logrotate config
ynh_remove_logrotate
#================================================= #=================================================
# REMOVE THE MYSQL DATABASE # REMOVE THE MYSQL DATABASE
#================================================= #=================================================
ynh_script_progression --message="Removing the MySQL database..." --weight=1 ynh_script_progression --message="Removing the MySQL database..." --weight=1
# Remove a database if it exists, along with the associated user # Remove a database if it exists, along with the associated user
ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name
##================================================= #=================================================
## REMOVE REDIS DB # REMOVE REDIS DB
##================================================= #=================================================
ynh_script_progression --message="Removing the Redis database..." --weight=1 ynh_script_progression --message="Removing the Redis database..." --weight=1
ynh_redis_remove_db ynh_redis_remove_db
#=================================================
# REMOVE DEPENDENCIES
#=================================================
ynh_script_progression --message="Removing dependencies..." --weight=10
# Remove metapackage and its dependencies
ynh_remove_app_dependencies
ynh_remove_nodejs
#================================================= #=================================================
# REMOVE APP MAIN DIR # REMOVE APP MAIN DIR
#================================================= #=================================================
ynh_script_progression --message="Removing app main directory..." --weight=1 ynh_script_progression --message="Removing app main directory..." --weight=1
# Remove the app directory securely # Remove the app directory securely
ynh_secure_remove --file="$final_path" ynh_secure_remove --file="$final_path"
@ -123,57 +121,63 @@ ynh_secure_remove --file="$final_path"
# Remove the data directory if --purge option is used # Remove the data directory if --purge option is used
if [ "${YNH_APP_PURGE:-0}" -eq 1 ] if [ "${YNH_APP_PURGE:-0}" -eq 1 ]
then then
ynh_script_progression --message="Removing app data directory..." --weight=1 ynh_script_progression --message="Removing app data directory..." --weight=1
ynh_secure_remove --file="$datadir" ynh_secure_remove --file="$datadir"
fi fi
#================================================= #=================================================
# REMOVE NGINX CONFIGURATION # REMOVE NGINX CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Removing nginx web server configuration..." --weight=1 ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1
# Remove the dedicated nginx config # Remove the dedicated NGINX config
ynh_remove_nginx_config ynh_remove_nginx_config
#================================================= #=================================================
# REMOVE LOGROTATE CONFIGURATION # REMOVE DEPENDENCIES
#================================================= #=================================================
ynh_script_progression --message="Removing logrotate configuration..." --weight=1 ynh_script_progression --message="Removing dependencies..." --weight=10
# Remove the app-specific logrotate config # Remove metapackage and its dependencies
ynh_remove_logrotate ynh_remove_app_dependencies
ynh_secure_remove --file="/var/log/$app" ynh_remove_nodejs
#================================================= #=================================================
# REMOVE FAIL2BAN CONFIGURATION # REMOVE FAIL2BAN CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Removing fail2ban configuration..." --weight=1 ynh_script_progression --message="Removing Fail2Ban configuration..." --weight=1
# Remove the dedicated fail2ban config # Remove the dedicated Fail2Ban config
ynh_remove_fail2ban_config ynh_remove_fail2ban_config
#================================================= #=================================================
# SPECIFIC REMOVE # SPECIFIC REMOVE
#================================================= #=================================================
# REMOVE CRON CONFIGURATION # REMOVE VARIOUS FILES
#================================================= #=================================================
ynh_script_progression --message="Removing cron configuration..." --weight=1 ynh_script_progression --message="Removing various files..." --weight=1
# Remove a cron file
ynh_secure_remove --file="/etc/cron.d/$app" ynh_secure_remove --file="/etc/cron.d/$app"
# Remove the log files
ynh_secure_remove --file="/var/log/$app"
#================================================= #=================================================
# REMOVE SWAP # REMOVE SWAP
#================================================= #=================================================
ynh_script_progression --message="Removing swap..." ynh_script_progression --message="Removing swap..."
ynh_del_swap if [ ${PACKAGE_CHECK_EXEC:-0} -eq 0 ]; then
ynh_del_swap
fi
#================================================= #=================================================
# GENERIC FINALIZATION # GENERIC FINALIZATION
#================================================= #=================================================
# REMOVE DEDICATED USER # REMOVE DEDICATED USER
#================================================= #=================================================
ynh_script_progression --message="Removing the dedicated system user..." --weight=1 ynh_script_progression --message="Removing the dedicated system user..." --weight=1
# Delete a system user # Delete a system user
ynh_system_user_delete --username=$app ynh_system_user_delete --username=$app
@ -182,4 +186,4 @@ ynh_system_user_delete --username=$app
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================
ynh_script_progression --message="Removal of $app completed" --last ynh_script_progression --message="Removal of $app completed" --last

View file

@ -6,7 +6,7 @@
# IMPORT GENERIC HELPERS # IMPORT GENERIC HELPERS
#================================================= #=================================================
#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts # Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
source ../settings/scripts/_common.sh source ../settings/scripts/_common.sh
source ../settings/scripts/ynh_add_swap source ../settings/scripts/ynh_add_swap
source ../settings/scripts/ynh_redis source ../settings/scripts/ynh_redis
@ -17,8 +17,7 @@ source /usr/share/yunohost/helpers
#================================================= #=================================================
ynh_clean_setup () { ynh_clean_setup () {
#### Remove this function if there's nothing to clean before calling the remove script. true
true
} }
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
@ -26,7 +25,7 @@ ynh_abort_if_errors
#================================================= #=================================================
# LOAD SETTINGS # LOAD SETTINGS
#================================================= #=================================================
ynh_script_progression --message="Loading settings..." --weight=2 ynh_script_progression --message="Loading installation settings..." --weight=2
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME
@ -35,7 +34,6 @@ path_url=$(ynh_app_setting_get --app=$app --key=path)
final_path=$(ynh_app_setting_get --app=$app --key=final_path) final_path=$(ynh_app_setting_get --app=$app --key=final_path)
db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_name=$(ynh_app_setting_get --app=$app --key=db_name)
db_user=$db_name db_user=$db_name
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
datadir=$(ynh_app_setting_get --app=$app --key=datadir) datadir=$(ynh_app_setting_get --app=$app --key=datadir)
redis_db=$(ynh_redis_get_free_db) redis_db=$(ynh_redis_get_free_db)
@ -54,14 +52,15 @@ config_nginx="/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
ynh_script_progression --message="Validating restoration parameters..." --weight=2 ynh_script_progression --message="Validating restoration parameters..." --weight=2
test ! -d $final_path || ynh_die --message="There is already a directory: $final_path " test ! -d $final_path \
|| ynh_die --message="There is already a directory: $final_path "
#================================================= #=================================================
# STANDARD RESTORATION STEPS # STANDARD RESTORATION STEPS
#================================================= #=================================================
# FIND AND OPEN A PORT # FIND AND OPEN A PORT
#================================================= #=================================================
ynh_script_progression --message="Finding an available port..." --weight=1 ynh_script_progression --message="Finding an available port..." --weight=1
# Find an available port # Find an available port
port_api_gateway=$(ynh_find_port --port=3000) port_api_gateway=$(ynh_find_port --port=3000)
@ -79,10 +78,12 @@ ynh_app_setting_set --app=$app --key=port_syncing_server --value=$port_syncing_s
ynh_app_setting_set --app=$app --key=port_syncing_server_worker --value=$port_syncing_server_worker ynh_app_setting_set --app=$app --key=port_syncing_server_worker --value=$port_syncing_server_worker
#================================================= #=================================================
# RESTORE THE NGINX CONFIGURATION # RECREATE THE DEDICATED USER
#================================================= #=================================================
ynh_script_progression --message="Recreating the dedicated system user..." --weight=1
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" # Create the dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#================================================= #=================================================
# RESTORE THE APP MAIN DIR # RESTORE THE APP MAIN DIR
@ -91,6 +92,10 @@ ynh_script_progression --message="Restoring the app main directory..." --weight=
ynh_restore_file --origin_path="$final_path" ynh_restore_file --origin_path="$final_path"
chmod 750 "$final_path"
chmod -R o-rwx "$final_path"
chown -R $app:$app "$final_path"
#================================================= #=================================================
# RESTORE THE DATA DIRECTORY # RESTORE THE DATA DIRECTORY
#================================================= #=================================================
@ -100,40 +105,21 @@ ynh_restore_file --origin_path="$datadir" --not_mandatory
mkdir -p "$datadir/uploads" mkdir -p "$datadir/uploads"
#=================================================
# RECREATE THE DEDICATED USER
#=================================================
ynh_script_progression --message="Recreating the dedicated system user..." --weight=1
# Create the dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir=$final_path
#=================================================
# RESTORE USER RIGHTS
#=================================================
# Restore permissions on app files
chmod 750 "$final_path"
chmod -R o-rwx "$final_path"
chown -R $app:$app "$final_path"
chmod 750 "$datadir" chmod 750 "$datadir"
chmod -R o-rwx "$datadir" chmod -R o-rwx "$datadir"
chown -R $app:$app "$datadir" chown -R $app:$app "$datadir"
mkdir -p "/var/log/$app" #=================================================
chown -R $app: "/var/log/$app" # RESTORE FAIL2BAN CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring the Fail2Ban configuration..." --weight=1
ynh_restore_file --origin_path="/etc/fail2ban/jail.d/$app.conf"
ynh_restore_file --origin_path="/etc/fail2ban/filter.d/$app.conf"
ynh_systemd_action --action=restart --service_name=fail2ban
#================================================= #=================================================
# SPECIFIC RESTORATION # SPECIFIC RESTORATION
#=================================================
#=================================================
# ADD SWAP
#=================================================
ynh_script_progression --message="Adding swap..."
ynh_add_swap --size=$swap_needed
#================================================= #=================================================
# REINSTALL DEPENDENCIES # REINSTALL DEPENDENCIES
#================================================= #=================================================
@ -141,14 +127,22 @@ ynh_script_progression --message="Reinstalling dependencies..." --weight=17
# Define and install dependencies # Define and install dependencies
ynh_install_app_dependencies $pkg_dependencies ynh_install_app_dependencies $pkg_dependencies
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg" ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
#=================================================
# RESTORE THE NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring the NGINX web server configuration..." --weight=1
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
# RESTORE THE MYSQL DATABASE # RESTORE THE MYSQL DATABASE
#================================================= #=================================================
ynh_script_progression --message="Restoring the MySQL database..." --weight=2 ynh_script_progression --message="Restoring the MySQL database..." --weight=2
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql
@ -185,6 +179,22 @@ ynh_replace_string_on_line --line="2" --match_string="proxy_pass.*$" --replace_s
ynh_replace_string --match_string="^PORT.*$" --replace_string="PORT=$port_files" --target_file="$config_files" ynh_replace_string --match_string="^PORT.*$" --replace_string="PORT=$port_files" --target_file="$config_files"
ynh_replace_string_on_line --line="17" --match_string="proxy_pass.*$" --replace_string="proxy_pass http://127.0.0.1:$port_files/;" --target_file="$config_nginx" ynh_replace_string_on_line --line="17" --match_string="proxy_pass.*$" --replace_string="proxy_pass http://127.0.0.1:$port_files/;" --target_file="$config_nginx"
#=================================================
# RESTORE VARIOUS FILES
#=================================================
ynh_script_progression --message="Restoring various files..." --weight=1
ynh_restore_file --origin_path="/etc/cron.d/$app"
#=================================================
# ADD SWAP
#=================================================
ynh_script_progression --message="Adding swap..."
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 0 ]; then
ynh_add_swap --size=$swap_needed
fi
#================================================= #=================================================
# RESTORE SYSTEMD # RESTORE SYSTEMD
#================================================= #=================================================
@ -204,10 +214,20 @@ systemctl enable $app-files.service --quiet
systemctl enable $app-syncing-server.service --quiet systemctl enable $app-syncing-server.service --quiet
systemctl enable $app-syncing-server-worker.service --quiet systemctl enable $app-syncing-server-worker.service --quiet
#=================================================
# RESTORE THE LOGROTATE CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1
mkdir -p "/var/log/$app"
chown -R $app: "/var/log/$app"
ynh_restore_file --origin_path="/etc/logrotate.d/$app"
#================================================= #=================================================
# INTEGRATE SERVICE IN YUNOHOST # INTEGRATE SERVICE IN YUNOHOST
#================================================= #=================================================
ynh_script_progression --message="Integrate $app service in Yunohost..." --weight=1 ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
yunohost service add "$app-api-gateway" --description="Standard Notes - API Gateway" --log="/var/log/$app/api-gateway.log" yunohost service add "$app-api-gateway" --description="Standard Notes - API Gateway" --log="/var/log/$app/api-gateway.log"
yunohost service add "$app-auth" --description="Standard Notes - Auth" --log="/var/log/$app/auth.log" yunohost service add "$app-auth" --description="Standard Notes - Auth" --log="/var/log/$app/auth.log"
@ -222,65 +242,42 @@ yunohost service add "$app-syncing-server-worker" --description="Standard Notes
ynh_script_progression --message="Starting a systemd service..." --weight=1 ynh_script_progression --message="Starting a systemd service..." --weight=1
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-api-gateway" \ --service_name="$app-api-gateway" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/api-gateway.log" \ --log_path="/var/log/$app/api-gateway.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth" \ --service_name="$app-auth" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/auth.log" \ --log_path="/var/log/$app/auth.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth-worker" \ --service_name="$app-auth-worker" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/auth-worker.log" \ --log_path="/var/log/$app/auth-worker.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-files" \ --service_name="$app-files" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/files.log" \ --log_path="/var/log/$app/files.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-syncing-server" \ --service_name="$app-syncing-server" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/syncing-server.log" \ --log_path="/var/log/$app/syncing-server.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-syncing-server-worker" \ --service_name="$app-syncing-server-worker" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/syncing-server-worker.log" \ --log_path="/var/log/$app/syncing-server-worker.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
#=================================================
# RESTORE THE CRON CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring cron configuration..." --weight=1
ynh_restore_file --origin_path="/etc/cron.d/$app"
#=================================================
# RESTORE THE LOGROTATE CONFIGURATION
#=================================================
ynh_script_progression --message="Configuring log rotation..." --weight=1
ynh_restore_file --origin_path="/etc/logrotate.d/$app"
#=================================================
# RESTORE FAIL2BAN CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring the fail2ban configuration..." --weight=1
ynh_restore_file "/etc/fail2ban/jail.d/$app.conf"
ynh_restore_file "/etc/fail2ban/filter.d/$app.conf"
ynh_systemd_action --action=restart --service_name=fail2ban
#================================================= #=================================================
# GENERIC FINALIZATION # GENERIC FINALIZATION
#================================================= #=================================================
# RELOAD NGINX # RELOAD NGINX
#================================================= #=================================================
ynh_script_progression --message="Reloading nginx web server..." --weight=2 ynh_script_progression --message="Reloading NGINX web server..." --weight=2
ynh_systemd_action --service_name=nginx --action=reload ynh_systemd_action --service_name=nginx --action=reload

View file

@ -20,10 +20,8 @@ app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain) domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path) path_url=$(ynh_app_setting_get --app=$app --key=path)
final_path=$(ynh_app_setting_get --app=$app --key=final_path) final_path=$(ynh_app_setting_get --app=$app --key=final_path)
datadir=$(ynh_app_setting_get --app=$app --key=datadir) datadir=$(ynh_app_setting_get --app=$app --key=datadir)
db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_name=$(ynh_app_setting_get --app=$app --key=db_name)
db_user=$db_name db_user=$db_name
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
@ -59,13 +57,8 @@ nodejs_version_installed=$(ynh_app_setting_get --app=$app --key=nodejs_version)
#================================================= #=================================================
# CHECK VERSION # CHECK VERSION
#================================================= #=================================================
ynh_script_progression --message="Checking version..."
### This helper will compare the version of the currently installed app and the version of the upstream package.
### $upgrade_type can have 2 different values
### - UPGRADE_APP if the upstream app version has changed
### - UPGRADE_PACKAGE if only the YunoHost package has changed
### ynh_check_app_version_changed will stop the upgrade if the app is up to date.
### UPGRADE_APP should be used to upgrade the core app only if there's an upgrade to do.
upgrade_type=$(ynh_check_app_version_changed) upgrade_type=$(ynh_check_app_version_changed)
#================================================= #=================================================
@ -76,8 +69,8 @@ ynh_script_progression --message="Backing up the app before upgrading (may take
# Backup the current version of the app # Backup the current version of the app
ynh_backup_before_upgrade ynh_backup_before_upgrade
ynh_clean_setup () { ynh_clean_setup () {
# restore it if the upgrade fails # Restore it if the upgrade fails
ynh_restore_upgradebackup ynh_restore_upgradebackup
} }
# Exit if an error occurs during the execution of the script # Exit if an error occurs during the execution of the script
ynh_abort_if_errors ynh_abort_if_errors
@ -90,29 +83,29 @@ ynh_abort_if_errors
ynh_script_progression --message="Stopping a systemd service..." --weight=1 ynh_script_progression --message="Stopping a systemd service..." --weight=1
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-api-gateway" \ --service_name="$app-api-gateway" \
--action="stop" \ --action="stop" \
--log_path="/var/log/$app/api-gateway.log" --log_path="/var/log/$app/api-gateway.log"
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth" \ --service_name="$app-auth" \
--action="stop" \ --action="stop" \
--log_path="/var/log/$app/auth.log" --log_path="/var/log/$app/auth.log"
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth-worker" \ --service_name="$app-auth-worker" \
--action="stop" \ --action="stop" \
--log_path="/var/log/$app/auth-worker.log" --log_path="/var/log/$app/auth-worker.log"
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-files" \ --service_name="$app-files" \
--action="stop" \ --action="stop" \
--log_path="/var/log/$app/files.log" --log_path="/var/log/$app/files.log"
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-syncing-server" \ --service_name="$app-syncing-server" \
--action="stop" \ --action="stop" \
--log_path="/var/log/$app/syncing-server.log" --log_path="/var/log/$app/syncing-server.log"
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-syncing-server-worker" \ --service_name="$app-syncing-server-worker" \
--action="stop" \ --action="stop" \
--log_path="/var/log/$app/syncing-server-worker.log" --log_path="/var/log/$app/syncing-server-worker.log"
#================================================= #=================================================
# ENSURE DOWNWARD COMPATIBILITY # ENSURE DOWNWARD COMPATIBILITY
@ -121,77 +114,77 @@ ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
# If final_path doesn't exist, create it # If final_path doesn't exist, create it
if [ -z "$final_path" ]; then if [ -z "$final_path" ]; then
final_path=/opt/yunohost/$app final_path=/opt/yunohost/$app
ynh_app_setting_set --app=$app --key=final_path --value=$final_path ynh_app_setting_set --app=$app --key=final_path --value=$final_path
fi fi
# If redis_db doesn't exist, create it # If redis_db doesn't exist, create it
if [ -z "$redis_db" ]; then if [ -z "$redis_db" ]; then
redis_db=$(ynh_redis_get_free_db) redis_db=$(ynh_redis_get_free_db)
ynh_app_setting_set --app=$app --key=redis_db --value="$redis_db" ynh_app_setting_set --app=$app --key=redis_db --value="$redis_db"
fi fi
# If one port_* doesn't exist, create all new # If one port_* doesn't exist, create all new
if [[ -z "$port_api_gateway" || \ if [[ -z "$port_api_gateway" || \
-z "$port_auth" || \ -z "$port_auth" || \
-z "$port_auth_worker" || \ -z "$port_auth_worker" || \
-z "$port_files" || \ -z "$port_files" || \
-z "$port_syncing_server" || \ -z "$port_syncing_server" || \
-z "$port_syncing_server_worker" ]]; then -z "$port_syncing_server_worker" ]]; then
port_api_gateway=$(ynh_find_port --port=3000) port_api_gateway=$(ynh_find_port --port=3000)
port_auth=$(ynh_find_port --port=$((port_api_gateway+1))) port_auth=$(ynh_find_port --port=$((port_api_gateway+1)))
port_auth_worker=$(ynh_find_port --port=$((port_auth+1))) port_auth_worker=$(ynh_find_port --port=$((port_auth+1)))
port_files=$(ynh_find_port --port=$((port_auth_worker+1))) port_files=$(ynh_find_port --port=$((port_auth_worker+1)))
port_syncing_server=$(ynh_find_port --port=$((port_files+1))) port_syncing_server=$(ynh_find_port --port=$((port_files+1)))
port_syncing_server_worker=$(ynh_find_port --port=$((port_syncing_server+1))) port_syncing_server_worker=$(ynh_find_port --port=$((port_syncing_server+1)))
ynh_app_setting_set --app=$app --key=port_api_gateway --value=$port_api_gateway ynh_app_setting_set --app=$app --key=port_api_gateway --value=$port_api_gateway
ynh_app_setting_set --app=$app --key=port_auth --value=$port_auth ynh_app_setting_set --app=$app --key=port_auth --value=$port_auth
ynh_app_setting_set --app=$app --key=port_auth_worker --value=$port_auth_worker ynh_app_setting_set --app=$app --key=port_auth_worker --value=$port_auth_worker
ynh_app_setting_set --app=$app --key=port_files --value=$port_files ynh_app_setting_set --app=$app --key=port_files --value=$port_files
ynh_app_setting_set --app=$app --key=port_syncing_server --value=$port_syncing_server ynh_app_setting_set --app=$app --key=port_syncing_server --value=$port_syncing_server
ynh_app_setting_set --app=$app --key=port_syncing_server_worker --value=$port_syncing_server_worker ynh_app_setting_set --app=$app --key=port_syncing_server_worker --value=$port_syncing_server_worker
fi fi
# If jwt_secret doesn't exist, create it # If jwt_secret doesn't exist, create it
if [ -z "$jwt_secret" ]; then if [ -z "$jwt_secret" ]; then
jwt_secret=$(ynh_string_random --length=48 | base64) jwt_secret=$(ynh_string_random --length=48 | base64)
ynh_app_setting_set --app=$app --key=jwt_secret --value=$jwt_secret ynh_app_setting_set --app=$app --key=jwt_secret --value=$jwt_secret
fi fi
# If legacy_jwt_secret doesn't exist, create it # If legacy_jwt_secret doesn't exist, create it
if [ -z "$legacy_jwt_secret" ]; then if [ -z "$legacy_jwt_secret" ]; then
legacy_jwt_secret=$(ynh_string_random --length=48 | base64) legacy_jwt_secret=$(ynh_string_random --length=48 | base64)
ynh_app_setting_set --app=$app --key=legacy_jwt_secret --value=$legacy_jwt_secret ynh_app_setting_set --app=$app --key=legacy_jwt_secret --value=$legacy_jwt_secret
fi fi
# If auth_jwt_secret doesn't exist, create it # If auth_jwt_secret doesn't exist, create it
if [ -z "$auth_jwt_secret" ]; then if [ -z "$auth_jwt_secret" ]; then
auth_jwt_secret=$(ynh_string_random --length=48 | base64) auth_jwt_secret=$(ynh_string_random --length=48 | base64)
ynh_app_setting_set --app=$app --key=auth_jwt_secret --value=$auth_jwt_secret ynh_app_setting_set --app=$app --key=auth_jwt_secret --value=$auth_jwt_secret
fi fi
# If pseudo_key_params_key doesn't exist, create it # If pseudo_key_params_key doesn't exist, create it
if [ -z "$pseudo_key_params_key" ]; then if [ -z "$pseudo_key_params_key" ]; then
pseudo_key_params_key=$(ynh_string_random --length=48 | base64) pseudo_key_params_key=$(ynh_string_random --length=48 | base64)
ynh_app_setting_set --app=$app --key=pseudo_key_params_key --value=$pseudo_key_params_key ynh_app_setting_set --app=$app --key=pseudo_key_params_key --value=$pseudo_key_params_key
fi fi
# If encryption_server_key doesn't exist, create it # If encryption_server_key doesn't exist, create it
if [ -z "$encryption_server_key" ]; then if [ -z "$encryption_server_key" ]; then
encryption_server_key=$(hexdump -n 32 -e '4/4 "%08X"' /dev/random) # 32bytes hex key is required encryption_server_key=$(hexdump -n 32 -e '4/4 "%08X"' /dev/random) # 32bytes hex key is required
ynh_app_setting_set --app=$app --key=encryption_server_key --value=$encryption_server_key ynh_app_setting_set --app=$app --key=encryption_server_key --value=$encryption_server_key
fi fi
# If valet_token_secret doesn't exist, create it # If valet_token_secret doesn't exist, create it
if [ -z "$valet_token_secret" ]; then if [ -z "$valet_token_secret" ]; then
valet_token_secret=$(ynh_string_random --length=48 | base64) valet_token_secret=$(ynh_string_random --length=48 | base64)
ynh_app_setting_set --app=$app --key=valet_token_secret --value=$valet_token_secret ynh_app_setting_set --app=$app --key=valet_token_secret --value=$valet_token_secret
fi fi
# If disable_user_registration doesn't exist, create it # If disable_user_registration doesn't exist, create it
if [ -z "$disable_user_registration" ]; then if [ -z "$disable_user_registration" ]; then
disable_user_registration=false disable_user_registration=false
ynh_app_setting_set --app=$app --key=DISABLE_USER_REGISTRATION --value=$disable_user_registration ynh_app_setting_set --app=$app --key=DISABLE_USER_REGISTRATION --value=$disable_user_registration
fi fi
# If files_zise doesn't exist, create it # If files_zise doesn't exist, create it
if [ -z "$files_size" ]; then if [ -z "$files_size" ]; then
files_size=100 files_size=100
ynh_app_setting_set --app=$app --key=FILES_SIZE --value=$files_size ynh_app_setting_set --app=$app --key=FILES_SIZE --value=$files_size
fi fi
# Remove old Settings, Services, Files, Dependencies # Remove old Settings, Services, Files, Dependencies
@ -202,60 +195,60 @@ syncing_server_version_installed=$(ynh_app_setting_get --app=$app --key=syncing_
final_path_www=$(ynh_app_setting_get --app=$app --key=final_path_www) final_path_www=$(ynh_app_setting_get --app=$app --key=final_path_www)
final_path_extensions=$(ynh_app_setting_get --app=$app --key=final_path_extensions) final_path_extensions=$(ynh_app_setting_get --app=$app --key=final_path_extensions)
if [ -n ${api_gateway_version_installed+x} ]; then if [ -n ${api_gateway_version_installed+x} ]; then
ynh_app_setting_delete --app=$app --key=api_gateway_version_installed ynh_app_setting_delete --app=$app --key=api_gateway_version_installed
fi fi
if [ -n ${auth_version_installed+x} ]; then if [ -n ${auth_version_installed+x} ]; then
ynh_app_setting_delete --app=$app --key=auth_version_installe ynh_app_setting_delete --app=$app --key=auth_version_installe
fi fi
if [ -n ${syncing_server_version_installed+x} ]; then if [ -n ${syncing_server_version_installed+x} ]; then
ynh_app_setting_delete --app=$app --key=syncing_server_version_installed ynh_app_setting_delete --app=$app --key=syncing_server_version_installed
fi fi
if [ -n ${final_path_www+x} ]; then if [ -n ${final_path_www+x} ]; then
ynh_app_setting_delete --app=$app --key=final_path_www ynh_app_setting_delete --app=$app --key=final_path_www
fi fi
# If final_path_extensions exist, delete it # If final_path_extensions exist, delete it
if [ -n ${final_path_extensions+x} ]; then if [ -n ${final_path_extensions+x} ]; then
ynh_app_setting_delete --app=$app --key=final_path_extensions ynh_app_setting_delete --app=$app --key=final_path_extensions
fi fi
# If permission help exists, delete it # If permission help exists, delete it
if ynh_permission_exists --permission="help" if ynh_permission_exists --permission="help"
then then
ynh_permission_delete --permission="help" ynh_permission_delete --permission="help"
fi fi
# If old service exsits; remove it # If old service exsits; remove it
if ynh_exec_warn_less yunohost service status "$app-syncing-server-js" >/dev/null if ynh_exec_warn_less yunohost service status "$app-syncing-server-js" >/dev/null
then then
ynh_script_progression --message="Removing old service..." --weight=1 ynh_script_progression --message="Removing old service..." --weight=1
yunohost service remove "$app-syncing-server-js" yunohost service remove "$app-syncing-server-js"
ynh_remove_systemd_config --service="$app-syncing-server-js" ynh_remove_systemd_config --service="$app-syncing-server-js"
ynh_reset_systemd ynh_reset_systemd
fi fi
if ynh_exec_warn_less yunohost service status "$app-syncing-server-js-worker" >/dev/null if ynh_exec_warn_less yunohost service status "$app-syncing-server-js-worker" >/dev/null
then then
ynh_script_progression --message="Removing old service..." --weight=1 ynh_script_progression --message="Removing old service..." --weight=1
yunohost service remove "$app-syncing-server-js-worker" yunohost service remove "$app-syncing-server-js-worker"
ynh_remove_systemd_config --service="$app-syncing-server-js-worker" ynh_remove_systemd_config --service="$app-syncing-server-js-worker"
ynh_reset_systemd ynh_reset_systemd
fi fi
# Remove unneeded data # Remove unneeded data
if [ -e "/var/www/$app" ]; then if [ -e "/var/www/$app" ]; then
ynh_secure_remove --file="/var/www/$app" ynh_secure_remove --file="/var/www/$app"
fi fi
# If datadir doesn't exist, create it # If datadir doesn't exist, create it
# CREATE DATA DIRECTORY # CREATE DATA DIRECTORY
if [ -z "$datadir" ]; then if [ -z "$datadir" ]; then
datadir=/home/yunohost.app/$app datadir=/home/yunohost.app/$app
ynh_app_setting_set --app=$app --key=datadir --value=$datadir ynh_app_setting_set --app=$app --key=datadir --value=$datadir
mkdir -p $datadir/uploads mkdir -p $datadir/uploads
chmod -R 750 "$datadir" chmod -R 750 "$datadir"
chmod -R o-rwx "$datadir" chmod -R o-rwx "$datadir"
chown -R $app:$app "$datadir" chown -R $app:$app "$datadir"
fi fi
#================================================= #=================================================
@ -264,63 +257,59 @@ fi
ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1
# Create a dedicated user (if not existing) # Create a dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir=$final_path ynh_system_user_create --username=$app --home_dir="$final_path"
#================================================= #=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE # DOWNLOAD, CHECK AND UNPACK SOURCE
#================================================= #=================================================
if [ "$upgrade_type" == "UPGRADE_APP" ] if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
ynh_script_progression --message="Upgrading source files..." --weight=1 ynh_script_progression --message="Upgrading source files..." --weight=1
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_secure_remove --file="$final_path/live" ynh_secure_remove --file="$final_path/live"
mkdir -p "$final_path/live" mkdir -p "$final_path/live"
ynh_setup_source --source_id=app --dest_dir="$final_path/live" ynh_setup_source --source_id=app --dest_dir="$final_path/live"
cp "$YNH_APP_BASEDIR/sources/extra_files/cron.sh" "$final_path/cron.sh" cp "$YNH_APP_BASEDIR/sources/extra_files/cron.sh" "$final_path/cron.sh"
chmod 750 "$final_path" chmod 750 "$final_path"
chmod -R o-rwx "$final_path" chmod -R o-rwx "$final_path"
chown -R $app:$app "$final_path" chown -R $app:$app "$final_path"
fi fi
#=================================================
# NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=1
# Create a dedicated nginx config
ynh_add_nginx_config
#================================================= #=================================================
# UPGRADE DEPENDENCIES # UPGRADE DEPENDENCIES
#================================================= #=================================================
ynh_script_progression --message="Upgrading dependencies..." --weight=1 ynh_script_progression --message="Upgrading dependencies..." --weight=1
# Remove old nodejs version
if [[ "$nodejs_version_installed" < "$NODEJS_VERSION" && -n "$nodejs_version_installed" ]]
then
ynh_remove_nodejs
fi
ynh_install_app_dependencies $pkg_dependencies ynh_install_app_dependencies $pkg_dependencies
ynh_install_nodejs --nodejs_version=$NODEJS_VERSION ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg" ynh_install_extra_app_dependencies --repo="deb https://dl.yarnpkg.com/debian/ stable main" --package="yarn" --key="https://dl.yarnpkg.com/debian/pubkey.gpg"
#================================================= #=================================================
# SPECIFIC UPGRADE # NGINX CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1
# Create a dedicated NGINX config
ynh_add_nginx_config
#=================================================
# SPECIFIC UPGRADE
#================================================= #=================================================
# ADD SWAP # ADD SWAP
#================================================= #=================================================
ynh_script_progression --message="Adding swap..." ynh_script_progression --message="Adding swap..."
ynh_add_swap --size=$swap_needed if [ ${PACKAGE_CHECK_EXEC:-0} -eq 0 ]; then
ynh_add_swap --size=$swap_needed
fi
#================================================= #=================================================
# MODIFY A CONFIG FILE # UPDATE A CONFIG FILE
#================================================= #=================================================
ynh_script_progression --message="Modify a config file..." --weight=2 ynh_script_progression --message="Updating a configuration file..." --weight=2
ynh_add_config --template="env_api-gateway.env.sample" --destination="$config_api_gateway" ynh_add_config --template="env_api-gateway.env.sample" --destination="$config_api_gateway"
ynh_add_config --template="env_auth.env.sample" --destination="$config_auth" ynh_add_config --template="env_auth.env.sample" --destination="$config_auth"
@ -334,12 +323,12 @@ ynh_add_config --template="env_syncing-server-worker.env.sample" --destination="
#================================================= #=================================================
if [ "$upgrade_type" == "UPGRADE_APP" ] if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
ynh_script_progression --message="Installing Standard Notes - Syncing Server..." --weight=93 ynh_script_progression --message="Installing Standard Notes - Syncing Server..." --weight=93
ynh_use_nodejs ynh_use_nodejs
pushd "$final_path/live" pushd "$final_path/live"
ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" PATH=$ynh_node_load_PATH yarn install --immutable ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" $ynh_node_load_PATH yarn install --immutable
ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" PATH=$ynh_node_load_PATH yarn build ynh_exec_warn_less ynh_exec_as $app env NODE_OPTIONS="--max-old-space-size=$node_max_old_space_size" $ynh_node_load_PATH yarn build
popd popd
fi fi
#================================================= #=================================================
@ -355,24 +344,9 @@ ynh_add_systemd_config --service="$app-files" --template="systemd_files.service"
ynh_add_systemd_config --service="$app-syncing-server" --template="systemd_syncing-server.service" ynh_add_systemd_config --service="$app-syncing-server" --template="systemd_syncing-server.service"
ynh_add_systemd_config --service="$app-syncing-server-worker" --template="systemd_syncing-server-worker.service" ynh_add_systemd_config --service="$app-syncing-server-worker" --template="systemd_syncing-server-worker.service"
#=================================================
# STORE THE CONFIG FILE CHECKSUM
#=================================================
ynh_script_progression --message="Storing the config file checksum..." --weight=1
# Calculate and store the config file checksum into the app settings
ynh_store_file_checksum --file="$config_api_gateway"
ynh_store_file_checksum --file="$config_auth"
ynh_store_file_checksum --file="$config_auth_worker"
ynh_store_file_checksum --file="$config_files"
ynh_store_file_checksum --file="$config_syncing_server"
ynh_store_file_checksum --file="$config_syncing_server_worker"
ynh_store_file_checksum --file="/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
# GENERIC FINALIZATION # GENERIC FINALIZATION
#================================================= #=================================================
#=================================================
# SETUP LOGROTATE # SETUP LOGROTATE
#================================================= #=================================================
ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1 ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1
@ -391,7 +365,7 @@ ynh_use_logrotate --logfile="/var/log/$app/syncing-server-worker.log"
#================================================= #=================================================
# INTEGRATE SERVICE IN YUNOHOST # INTEGRATE SERVICE IN YUNOHOST
#================================================= #=================================================
ynh_script_progression --message="Integrate $app service in Yunohost..." --weight=1 ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
yunohost service add "$app-api-gateway" --description="Standard Notes - API Gateway" --log="/var/log/$app/api-gateway.log" yunohost service add "$app-api-gateway" --description="Standard Notes - API Gateway" --log="/var/log/$app/api-gateway.log"
yunohost service add "$app-auth" --description="Standard Notes - Auth" --log="/var/log/$app/auth.log" yunohost service add "$app-auth" --description="Standard Notes - Auth" --log="/var/log/$app/auth.log"
@ -407,35 +381,35 @@ ynh_script_progression --message="Starting a systemd service..." --weight=1
# Start a systemd service # Start a systemd service
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-api-gateway" \ --service_name="$app-api-gateway" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/api-gateway.log" \ --log_path="/var/log/$app/api-gateway.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth" \ --service_name="$app-auth" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/auth.log" \ --log_path="/var/log/$app/auth.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-auth-worker" \ --service_name="$app-auth-worker" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/auth-worker.log" \ --log_path="/var/log/$app/auth-worker.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-files" \ --service_name="$app-files" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/files.log" \ --log_path="/var/log/$app/files.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-syncing-server" \ --service_name="$app-syncing-server" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/syncing-server.log" \ --log_path="/var/log/$app/syncing-server.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
ynh_systemd_action \ ynh_systemd_action \
--service_name="$app-syncing-server-worker" \ --service_name="$app-syncing-server-worker" \
--action="start" \ --action="start" \
--log_path="/var/log/$app/syncing-server-worker.log" \ --log_path="/var/log/$app/syncing-server-worker.log" \
--line_match='^.*Server started on port.*$|^.*Starting worker.*$' --line_match='^.*Server started on port.*$|^.*Starting worker.*$'
#================================================= #=================================================
# SETUP A CRON # SETUP A CRON
@ -449,25 +423,20 @@ chown root: "/etc/cron.d/$app"
chmod 640 "/etc/cron.d/$app" chmod 640 "/etc/cron.d/$app"
#================================================= #=================================================
# SETUP FAIL2BAN # UPGRADE FAIL2BAN
#================================================= #=================================================
ynh_script_progression --message="Reconfiguring fail2ban..." --weight=1 ynh_script_progression --message="Reconfiguring Fail2Ban..." --weight=1
# Create a dedicated fail2ban config # Create a dedicated Fail2Ban config
ynh_add_fail2ban_config --use_template ynh_add_fail2ban_config --use_template
#================================================= #=================================================
# RELOAD NGINX # RELOAD NGINX
#================================================= #=================================================
ynh_script_progression --message="Reloading nginx web server..." --weight=1 ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# STORE SETTINGS
#=================================================
ynh_app_setting_set --app=$app --key=standalone --value="true"
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================

View file

@ -91,4 +91,3 @@ ynh_is_main_device_a_sd_card () {
return 1 return 1
fi fi
} }

View file

@ -5,27 +5,27 @@
# usage: ynh_redis_get_free_db # usage: ynh_redis_get_free_db
# | returns: the database number to use # | returns: the database number to use
ynh_redis_get_free_db() { ynh_redis_get_free_db() {
local result max db local result max db
result=$(redis-cli INFO keyspace) result=$(redis-cli INFO keyspace)
# get the num # get the num
max=$(cat /etc/redis/redis.conf | grep ^databases | grep -Eow "[0-9]+") max=$(cat /etc/redis/redis.conf | grep ^databases | grep -Eow "[0-9]+")
db=0 db=0
# default Debian setting is 15 databases # default Debian setting is 15 databases
for i in $(seq 0 "$max") for i in $(seq 0 "$max")
do do
if ! echo "$result" | grep -q "db$i" if ! echo "$result" | grep -q "db$i"
then then
db=$i db=$i
break 1 break 1
fi fi
db=-1 db=-1
done done
test "$db" -eq -1 && ynh_die --message="No available Redis databases..." test "$db" -eq -1 && ynh_die --message="No available Redis databases..."
echo "$db" echo "$db"
} }
# Create a master password and set up global settings # Create a master password and set up global settings
@ -34,6 +34,6 @@ ynh_redis_get_free_db() {
# usage: ynh_redis_remove_db database # usage: ynh_redis_remove_db database
# | arg: database - the database to erase # | arg: database - the database to erase
ynh_redis_remove_db() { ynh_redis_remove_db() {
local db=$1 local db=$1
redis-cli -n "$db" flushall redis-cli -n "$db" flushall
} }

View file

@ -2,7 +2,7 @@
if [ ! -f .env ] if [ ! -f .env ]
then then
export $(cat cron.env | grep -v -E "^#" | xargs) export $(cat cron.env | grep -v -E "^#" | xargs)
fi fi
FILE_UPLOAD_BYTES_PER_MB=1048576 FILE_UPLOAD_BYTES_PER_MB=1048576
@ -10,28 +10,28 @@ FILE_UPLOAD_BYTES_LIMIT=$(($FILES_SIZE*$FILE_UPLOAD_BYTES_PER_MB))
# Searching for new users in the last 10 minutes without a Pro_Plan subscription. # Searching for new users in the last 10 minutes without a Pro_Plan subscription.
mysql --password=$DB_PASSWORD --database=$DB_DATABASE <<< " \ mysql --password=$DB_PASSWORD --database=$DB_DATABASE <<< " \
SELECT email FROM users WHERE created_at >= DATE_SUB( TIMESTAMP(NOW()), INTERVAL 10 MINUTE) AND NOT EXISTS( SELECT * FROM user_subscriptions WHERE user_subscriptions.plan_name = \"PRO_PLAN\" AND user_subscriptions.user_uuid = users.uuid ); \ SELECT email FROM users WHERE created_at >= DATE_SUB( TIMESTAMP(NOW()), INTERVAL 10 MINUTE) AND NOT EXISTS( SELECT * FROM user_subscriptions WHERE user_subscriptions.plan_name = \"PRO_PLAN\" AND user_subscriptions.user_uuid = users.uuid ); \
" 2>/dev/null | " 2>/dev/null |
# Read through the piped result until it's empty. # Read through the piped result until it's empty.
while IFS='\n' read email; do while IFS='\n' read email; do
if [[ $email = "0" ]]; then if [[ $email = "0" ]]; then
echo "No new users registered" echo "No new users registered"
fi fi
if [[ ${email} = "email" ]]; then if [[ ${email} = "email" ]]; then
echo "New users found:" echo "New users found:"
echo "----------------------------------------" echo "----------------------------------------"
else else
# ADD new user with Email $EMAIL a PRO_PLAN subscription # ADD new user with Email $EMAIL a PRO_PLAN subscription
echo "[$(date -Iseconds)] User: $email added to the PRO_PLAN subscription." echo "[$(date -Iseconds)] User: $email added to the PRO_PLAN subscription."
mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \ mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \
"INSERT INTO user_roles (role_uuid , user_uuid) VALUES ((SELECT uuid FROM roles WHERE name=\"PRO_USER\" ORDER BY version DESC limit 1) ,(SELECT uuid FROM users WHERE email=\"$email\")) ON DUPLICATE KEY UPDATE role_uuid = VALUES(role_uuid);" "INSERT INTO user_roles (role_uuid , user_uuid) VALUES ((SELECT uuid FROM roles WHERE name=\"PRO_USER\" ORDER BY version DESC limit 1) ,(SELECT uuid FROM users WHERE email=\"$email\")) ON DUPLICATE KEY UPDATE role_uuid = VALUES(role_uuid);"
mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \ mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \
"INSERT INTO user_subscriptions SET uuid=UUID(), plan_name=\"PRO_PLAN\", ends_at=8640000000000000, created_at=0, updated_at=0, user_uuid=(SELECT uuid FROM users WHERE email=\"$email\"), subscription_id=1, subscription_type=\"regular\";" "INSERT INTO user_subscriptions SET uuid=UUID(), plan_name=\"PRO_PLAN\", ends_at=8640000000000000, created_at=0, updated_at=0, user_uuid=(SELECT uuid FROM users WHERE email=\"$email\"), subscription_id=1, subscription_type=\"regular\";"
# Add new user Files space. Size is 1GB*$FILES_SIZE # Add new user Files space. Size is 1GB*$FILES_SIZE
echo "[$(date -Iseconds)] User: $email added $FILES_SIZE MB of file spcae." echo "[$(date -Iseconds)] User: $email added $FILES_SIZE MB of file spcae."
mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \ mysql --password=$DB_PASSWORD --database=$DB_DATABASE -e \
"INSERT INTO subscription_settings(uuid, name, value, created_at, updated_at, user_subscription_uuid) VALUES (UUID(), \"FILE_UPLOAD_BYTES_LIMIT\", \"$FILE_UPLOAD_BYTES_LIMIT\", FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), (SELECT us.uuid FROM user_subscriptions us INNER JOIN users u ON us.user_uuid=u.uuid WHERE u.email=\"$email\"));" "INSERT INTO subscription_settings(uuid, name, value, created_at, updated_at, user_subscription_uuid) VALUES (UUID(), \"FILE_UPLOAD_BYTES_LIMIT\", \"$FILE_UPLOAD_BYTES_LIMIT\", FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), (SELECT us.uuid FROM user_subscriptions us INNER JOIN users u ON us.user_uuid=u.uuid WHERE u.email=\"$email\"));"
fi fi
done done

View file

@ -1,2 +0,0 @@
*~
*.sw[op]