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

Merge pull request #136 from YunoHost-Apps/testing

Testing
This commit is contained in:
Éric Gaspar 2021-05-08 18:51:36 +02:00 committed by GitHub
commit 81c1e49e2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 242 additions and 350 deletions

View file

@ -1,6 +1,17 @@
Changelog Changelog
========= =========
## [1.8.13~ynh1]() - 2021-03-23
#### Changed
* [Upgrade to 1.8.13](https://github.com/YunoHost-Apps/etherpad_mypads_ynh/commit/9684b59824b18ea781efb8a26df5d7c3d51a8264)
* [Upgrade NodeJS to 14](https://github.com/YunoHost-Apps/etherpad_mypads_ynh/commit/5d3ce9996e3f4d0812b000467e5ae2d9ee5416e0)
* [Update to MyPads 1.7.20]()
* [Upgrade plugins to upstream](https://github.com/YunoHost-Apps/etherpad_mypads_ynh/commit/943ec31536dabe4f2146253f3e478598cdafe4bf)
#### Added
* [ep_countable plugin (working again)](https://github.com/YunoHost-Apps/etherpad_mypads_ynh/commit/5d3ce9996e3f4d0812b000467e5ae2d9ee5416e0)
## [1.8.4~ynh3](https://github.com/YunoHost-Apps/etherpad_mypads_ynh/pull/133) - 2021-04-23 ## [1.8.4~ynh3](https://github.com/YunoHost-Apps/etherpad_mypads_ynh/pull/133) - 2021-04-23
#### Changed #### Changed

View file

@ -12,7 +12,7 @@ If you don't have YunoHost, please see [here](https://yunohost.org/install) to k
Etherpad is a highly customizable Open Source online editor providing collaborative editing in really real-time. Etherpad is a highly customizable Open Source online editor providing collaborative editing in really real-time.
This package will install the same plugins than [Framapad](https://framapad.org/). This package will install the same plugins than [Framapad](https://framapad.org/).
**Shipped version:** 1.8.4 **Shipped version:** 1.8.13
## Screenshots ## Screenshots
@ -31,7 +31,7 @@ You can also find a configuration file for Etherpad at this path `/var/www/ether
## Documentation ## Documentation
* Official documentation: http://etherpad.org/doc/v1.8.4 * Official documentation: http://etherpad.org/doc/v1.8.13
* YunoHost documentation: https://yunohost.org/en/app_etherpad_mypads * YunoHost documentation: https://yunohost.org/en/app_etherpad_mypads
## YunoHost specific features ## YunoHost specific features

View file

@ -12,7 +12,7 @@ Si vous n'avez pas YunoHost, merci de regarder [ici](https://yunohost.org/instal
Etherpad est un éditeur en ligne Open Source hautement personnalisable qui permet l'édition collaborative en temps réel. Etherpad est un éditeur en ligne Open Source hautement personnalisable qui permet l'édition collaborative en temps réel.
Ce paquet installera les mêmes plugins que [Framapad](https://framapad.org/). Ce paquet installera les mêmes plugins que [Framapad](https://framapad.org/).
**Version embarquée :** 1.8.4 **Version embarquée :** 1.8.13
## Captures d'écran ## Captures d'écran
@ -30,7 +30,7 @@ Vous pouvez accéder à deux panneaux d'administration différents, pour Etherpa
## Documentation ## Documentation
* Documentation officielle : http://etherpad.org/doc/v1.8.4 * Documentation officielle : http://etherpad.org/doc/v1.8.13
* Documentation YunoHost : https://yunohost.org/fr/app_etherpad_mypads * Documentation YunoHost : https://yunohost.org/fr/app_etherpad_mypads
## Fonctionnalités spécifiques à YunoHost ## Fonctionnalités spécifiques à YunoHost

View file

@ -33,18 +33,3 @@ command = "/bin/bash scripts/actions/reset_default_config \"settings.json\""
# accepted_return_codes = [0, 1, 2, 3] # optional # accepted_return_codes = [0, 1, 2, 3] # optional
accepted_return_codes = [0] accepted_return_codes = [0]
description = "Reset the config file settings.json." description = "Reset the config file settings.json."
[public_private]
name = "Move to public or private"
command = "/bin/bash scripts/actions/public_private"
# user = "root" # optional
# cwd = "/" # optional
# accepted_return_codes = [0, 1, 2, 3] # optional
accepted_return_codes = [0]
description = "Change the public access of the app."
[public_private.arguments]
[public_private.arguments.is_public]
type = "boolean"
ask = "Is it a public app?"
default = true

View file

@ -19,10 +19,8 @@
main.pad_configuration.pad_config_alwaysshowchat=1|0 main.pad_configuration.pad_config_alwaysshowchat=1|0
main.pad_configuration.pad_config_show_markdown=1|0 main.pad_configuration.pad_config_show_markdown=1|0
main.pad_configuration.pad_config_automatic_logout=0|1 main.pad_configuration.pad_config_automatic_logout=0|1
main.pad_configuration.pad_config_skinname=noskin|colibris|noskin
main.mypads_configuration.mypads=0|1 main.mypads_configuration.mypads=0|1
main.mypads_configuration.useldap=0|1 main.mypads_configuration.useldap=0|1
main.is_public.is_public=1|0
main.overwrite_files.overwrite_settings=0|1 main.overwrite_files.overwrite_settings=0|1
main.overwrite_files.overwrite_credentials=0|1 main.overwrite_files.overwrite_credentials=0|1
main.overwrite_files.overwrite_nginx=0|1 main.overwrite_files.overwrite_nginx=0|1

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/ether/etherpad-lite/archive/1.8.4.tar.gz SOURCE_URL=https://github.com/ether/etherpad-lite/archive/1.8.13.tar.gz
SOURCE_SUM=b6ad9734a058d3b471cf15c060e609e978797e32559818e9f0a80e0a253c7ba8 SOURCE_SUM=c83052daf3b0af8aa3c19a8308e21fcbcfecca99aeb3e8047383875f855443f1
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum
ARCH_FORMAT=tar.gz ARCH_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true SOURCE_IN_SUBDIR=true

View file

@ -44,7 +44,7 @@
"__ADMIN__": { "__ADMIN__": {
// 1) "password" can be replaced with "hash" if you install ep_hash_auth // 1) "password" can be replaced with "hash" if you install ep_hash_auth
// 2) please note that if password is null, the user will not be created // 2) please note that if password is null, the user will not be created
"password": "__PASSWD__", "password": "__PASSWORD__",
"is_admin": true "is_admin": true
} }
}, },

View file

@ -113,7 +113,7 @@
* "full-width-editor" variant (by default editor is rendered as a page, with * "full-width-editor" variant (by default editor is rendered as a page, with
* a max-width of 900px). * a max-width of 900px).
*/ */
"skinVariants": "super-light-toolbar super-light-editor light-background", "skinVariants": "light-toolbar super-light-editor dark-background",
/* /*
* IP and port which Etherpad should bind at. * IP and port which Etherpad should bind at.

View file

@ -6,10 +6,19 @@ After=syslog.target network.target
Type=simple Type=simple
User=__APP__ User=__APP__
Group=__APP__ Group=__APP__
Environment="PATH=__ENV_PATH__" WorkingDirectory=__FINALPATH__
Environment=NODE_ENV=production Environment=NODE_ENV=production
ExecStart=__FINALPATH__/bin/safeRun.sh /var/log/__APP__/etherpad.log Environment="__YNH_NODE_LOAD_PATH__"
ExecStart=__FINALPATH__/src/bin/run.sh
StandardOutput=append:/var/log/__APP__/etherpad.log
StandardError=inherit
Restart=always Restart=always
#PrivateDevices=true
#ProtectControlGroups=true
#ProtectHome=true
#ProtectKernelTunables=true
#ProtectSystem=full
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

View file

@ -46,16 +46,10 @@ name = "Etherpad configuration"
ask = "Automatic logout" ask = "Automatic logout"
type = "boolean" type = "boolean"
default = true default = true
[main.pad_configuration.pad_config_skinname]
ask = "Theme Name"
choices = ["noskin", "colibris"]
default = "noskin"
help = "noskin is the traditional Etherpad theme. colibris is the new theme."
[main.mypads_configuration] [main.mypads_configuration]
name = "Mypads configuration" name = "MyPads configuration"
[main.mypads_configuration.mypads] [main.mypads_configuration.mypads]
ask = "Enable MyPads plugin?" ask = "Enable MyPads plugin?"
@ -68,16 +62,6 @@ name = "Etherpad configuration"
default = true default = true
[main.is_public]
name = "Public access"
[main.is_public.is_public]
ask = "Is it a public website?"
type = "boolean"
default = true
help = "If your Etherpad instance is public, everyone will be able to create a pad or see an existing one."
[main.overwrite_files] [main.overwrite_files]
name = "Overwriting config files during an upgrade" name = "Overwriting config files during an upgrade"

View file

@ -6,7 +6,7 @@
"en": "Online editor providing collaborative editing in real-time.", "en": "Online editor providing collaborative editing in real-time.",
"fr": "Éditeur en ligne fournissant l'édition collaborative en temps réel." "fr": "Éditeur en ligne fournissant l'édition collaborative en temps réel."
}, },
"version": "1.8.4~ynh3", "version": "1.8.13~ynh1",
"url": "https://framapad.org", "url": "https://framapad.org",
"license": "Apache-2.0", "license": "Apache-2.0",
"maintainer": { "maintainer": {

View file

@ -7,24 +7,24 @@ abiword_app_depencencies="abiword"
libreoffice_app_dependencies="unoconv libreoffice-writer" libreoffice_app_dependencies="unoconv libreoffice-writer"
# NodeJS version # NodeJS version
nodejs_version=12 nodejs_version=14
# MyPads version # MyPads version
# This variable is mostly used to force an upgrade of the package in case of new versions of MyPads. # This variable is mostly used to force an upgrade of the package in case of new versions of MyPads.
mypads_version=1.7.17 mypads_version=1.7.20
# Plugin versions # Plugin versions
ep_align_version=0.2.5 ep_align_version=0.3.34
ep_author_hover_version=0.3.0 ep_author_hover_version=0.3.19
ep_automatic_logut_version=1.0.8 ep_automatic_logut_version=1.0.8
ep_comments_page_version=0.1.5 ep_comments_page_version=0.1.60
ep_countable_version=0.0.11 ep_countable_version=0.0.11
ep_delete_empty_pads_version=0.0.6 ep_delete_empty_pads_version=0.0.7
ep_font_color_version=0.0.15 ep_font_color_version=0.0.42
ep_headings2_version=0.1.3 ep_headings2_version=0.2.28
ep_markdown_version=0.1.7 ep_markdown_version=0.1.32
ep_page_view_version=0.5.24 ep_page_view_version=0.5.24
ep_spellcheck_version=0.0.7 ep_spellcheck_version=0.0.27
ep_subscript_and_superscript_version=0.1.2 ep_subscript_and_superscript_version=0.2.26
ep_table_of_contents_version=0.2.3 ep_table_of_contents_version=0.3.20
ep_font_size_version=0.3.8 ep_font_size_version=0.4.22

View file

@ -84,7 +84,7 @@ fi
# Rebuild the meta package and install the new dependencies # Rebuild the meta package and install the new dependencies
( cd scripts # Move to scripts directory to allow the helper to find the manifest where it expects to find it. ( cd scripts # Move to scripts directory to allow the helper to find the manifest where it expects to find it.
ynh_install_app_dependencies $dependencies) ynh_exec_warn_less ynh_install_app_dependencies $dependencies)
# Remove all unused dependencies # Remove all unused dependencies
ynh_package_autopurge ynh_package_autopurge

View file

@ -67,24 +67,24 @@ fi
ynh_script_progression --message="$action2 LibreOffice..." --weight=3 ynh_script_progression --message="$action2 LibreOffice..." --weight=3
# Load common variables, and especially libreoffice dependencies. # Load common variables, and especially LibreOffice dependencies.
source scripts/_variables source scripts/_variables
dependencies="" dependencies=""
if [ $libreoffice -eq 1 ] if [ $libreoffice -eq 1 ]
then then
# Add libreoffice dependencies if libreoffice has to be installed # Add LibreOffice dependencies if libreoffice has to be installed
dependencies="$dependencies $libreoffice_app_dependencies" dependencies="$dependencies $libreoffice_app_dependencies"
fi fi
if [ $abiword -eq 1 ] if [ $abiword -eq 1 ]
then then
# Add abiword dependencies if abiword is already installed to keep it as a dependence. # Add Abiword dependencies if abiword is already installed to keep it as a dependence.
dependencies="$dependencies $abiword_app_depencencies" dependencies="$dependencies $abiword_app_depencencies"
fi fi
# Rebuild the meta package and install the new dependencies # Rebuild the meta package and install the new dependencies
( cd scripts # Move to scripts directory to allow the helper to find the manifest where it expects to find it. ( cd scripts # Move to scripts directory to allow the helper to find the manifest where it expects to find it.
ynh_install_app_dependencies $dependencies) ynh_exec_warn_less ynh_install_app_dependencies $dependencies)
# Remove all unused dependencies # Remove all unused dependencies
ynh_package_autopurge ynh_package_autopurge
@ -95,11 +95,11 @@ ynh_package_autopurge
if [ $libreoffice -eq 1 ] if [ $libreoffice -eq 1 ]
then then
# Set libreoffice as default export app # Set LibreOffice as default export app
yunohost app config apply $app -a "YNH_CONFIG_MAIN_EXPORT_EXPORT=libreoffice" yunohost app config apply $app -a "YNH_CONFIG_MAIN_EXPORT_EXPORT=libreoffice"
elif [ $abiword -eq 1 ] elif [ $abiword -eq 1 ]
then then
# Set abiword as default export app # Set Abiword as default export app
yunohost app config apply $app -a "YNH_CONFIG_MAIN_EXPORT_EXPORT=abiword" yunohost app config apply $app -a "YNH_CONFIG_MAIN_EXPORT_EXPORT=abiword"
else else
# Remove any export app # Remove any export app

View file

@ -1,80 +0,0 @@
#!/bin/bash
#=================================================
# GENERIC STARTING
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# RETRIEVE ARGUMENTS
#=================================================
# Get is_public
is_public=${YNH_ACTION_IS_PUBLIC}
app=$YNH_APP_INSTANCE_NAME
#=================================================
# CHECK IF ARGUMENTS ARE CORRECT
#=================================================
#=================================================
# CHECK IF AN ACTION HAS TO BE DONE
#=================================================
is_public_old=$(ynh_app_setting_get --app=$app --key=is_public)
if [ $is_public -eq $is_public_old ]
then
ynh_die --message="is_public is already set as $is_public." --ret_code=0
fi
#=================================================
# SPECIFIC ACTION
#=================================================
# MOVE TO PUBLIC OR PRIVATE
#=================================================
if [ $is_public -eq 0 ]; then
public_private="private"
else
public_private="public"
fi
ynh_script_progression --message="Moving the application to $public_private..." --weight=3
if [ $is_public -eq 0 ]
then
ynh_app_setting_set --app=$app --key=skipped_uris --value="/admin" # etherpad admin page doesn't support SSO...
else
ynh_app_setting_set --app=$app --key=skipped_uris --value="/"
fi
ynh_script_progression --message="Upgrading SSOwat configuration..."
# Regen ssowat configuration
yunohost app ssowatconf
# Update the config of the app
ynh_app_setting_set --app=$app --key=is_public --value=$is_public
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..."
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Execution completed" --last

View file

@ -78,17 +78,7 @@ else
fi fi
pad_config_automatic_logout="${YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_AUTOMATIC_LOGOUT:-$old_pad_config_automatic_logout}" pad_config_automatic_logout="${YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_AUTOMATIC_LOGOUT:-$old_pad_config_automatic_logout}"
# Etherpad skin # MyPads
old_pad_config_skinname="$(get_config_value skinName)"
if [ "$old_pad_config_skinname" = "no-skin" ]; then
old_pad_config_skinname=noskin
fi
pad_config_skinname="${YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_SKINNAME:-$old_pad_config_skinname}"
if [ "$pad_config_skinname" = "no-skin" ]; then
pad_config_skinname=noskin
fi
# Mypads
if [ -d $final_path/node_modules/ep_mypads ] if [ -d $final_path/node_modules/ep_mypads ]
then then
# Enable # Enable
@ -99,7 +89,7 @@ else
fi fi
mypads="${YNH_CONFIG_MAIN_MYPADS_CONFIGURATION_MYPADS:-$old_mypads}" mypads="${YNH_CONFIG_MAIN_MYPADS_CONFIGURATION_MYPADS:-$old_mypads}"
# Ldap for Mypads # LDAP for MyPads
if grep -q "//noldap" $config_file if grep -q "//noldap" $config_file
then then
# Disable # Disable
@ -110,10 +100,6 @@ else
fi fi
useldap="${YNH_CONFIG_MAIN_MYPADS_CONFIGURATION_USELDAP:-$old_useldap}" useldap="${YNH_CONFIG_MAIN_MYPADS_CONFIGURATION_USELDAP:-$old_useldap}"
# is_public
old_is_public="$(ynh_app_setting_get --app=$app --key=is_public)"
is_public="${YNH_CONFIG_MAIN_IS_PUBLIC_IS_PUBLIC:-$old_is_public}"
# Overwrite settings.json file # Overwrite settings.json file
old_overwrite_settings="$(ynh_app_setting_get --app=$app --key=overwrite_settings)" old_overwrite_settings="$(ynh_app_setting_get --app=$app --key=overwrite_settings)"
overwrite_settings="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_SETTINGS:-$old_overwrite_settings}" overwrite_settings="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_SETTINGS:-$old_overwrite_settings}"
@ -146,13 +132,8 @@ show_config() {
ynh_return "YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_ALWAYSSHOWCHAT=$pad_config_alwaysshowchat" ynh_return "YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_ALWAYSSHOWCHAT=$pad_config_alwaysshowchat"
ynh_return "YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_SHOW_MARKDOWN=$pad_config_show_markdown" ynh_return "YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_SHOW_MARKDOWN=$pad_config_show_markdown"
ynh_return "YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_AUTOMATIC_LOGOUT=$pad_config_automatic_logout" ynh_return "YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_AUTOMATIC_LOGOUT=$pad_config_automatic_logout"
ynh_return "YNH_CONFIG_MAIN_PAD_CONFIGURATION_PAD_CONFIG_SKINNAME=$pad_config_skinname"
ynh_return "YNH_CONFIG_MAIN_MYPADS_CONFIGURATION_MYPADS=$mypads" ynh_return "YNH_CONFIG_MAIN_MYPADS_CONFIGURATION_MYPADS=$mypads"
ynh_return "YNH_CONFIG_MAIN_MYPADS_CONFIGURATION_USELDAP=$useldap" ynh_return "YNH_CONFIG_MAIN_MYPADS_CONFIGURATION_USELDAP=$useldap"
ynh_return "YNH_CONFIG_MAIN_IS_PUBLIC_IS_PUBLIC=$is_public"
ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_SETTINGS=$overwrite_settings" ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_SETTINGS=$overwrite_settings"
ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_CREDENTIALS=$overwrite_credentials" ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_CREDENTIALS=$overwrite_credentials"
ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX=$overwrite_nginx" ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX=$overwrite_nginx"
@ -216,37 +197,27 @@ apply_config() {
if [ "$pad_config_automatic_logout" != "$old_pad_config_automatic_logout" ] if [ "$pad_config_automatic_logout" != "$old_pad_config_automatic_logout" ]
then then
ynh_use_nodejs ynh_use_nodejs
pushd "$final_path" #pushd "$final_path/src"
#ynh_secure_remove --file="$final_path/src/package-lock.json" #added to fix saveError ENOENT: no such file or directory
if [ "$pad_config_automatic_logout" = "0" ] if [ "$pad_config_automatic_logout" = "0" ]
then then
ynh_replace_string --match_string="^\(.*\"automatic_logut.*$\)" --replace_string="\/\/\1" --target_file="$config_file" ynh_replace_string --match_string="^\(.*\"automatic_logut.*$\)" --replace_string="\/\/\1" --target_file="$config_file"
npm uninstall ep_automatic_logut ynh_exec_as $app env "$ynh_node_load_PATH" npm uninstall ep_automatic_logut
else else
ynh_replace_string --match_string="^\/\/\(.*\"automatic_logut.*$\)" --replace_string="\1" --target_file="$config_file" ynh_replace_string --match_string="^\/\/\(.*\"automatic_logut.*$\)" --replace_string="\1" --target_file="$config_file"
npm install ep_automatic_logut@${ep_automatic_logut_version} ynh_exec_as $app env "$ynh_node_load_PATH" npm install ep_automatic_logut@${ep_automatic_logut_version}
fi fi
popd popd
chown -R $app: $final_path/node_modules chown -R $app: $final_path/node_modules
restart_etherpad=1 restart_etherpad=1
fi fi
# Plugin option ep_page_view_default
if [ "$pad_config_skinname" != "$old_pad_config_skinname" ]
then
if [ "$pad_config_skinname" = "noskin" ]; then
pad_config_skinname="no-skin"
fi
ynh_replace_string --match_string="\( *\"skinName\" *: \).*," --replace_string="\1\"$pad_config_skinname\"," --target_file="$config_file"
ynh_app_setting_set --app=$app --key=pad_config_skinname --value="$pad_config_skinname"
restart_etherpad=1
fi
# Export # Export
if [ "$export" != "$old_export" ] if [ "$export" != "$old_export" ]
then then
if [ "$export" = "abiword" ] if [ "$export" = "abiword" ]
then then
# if abiword isn't installed, call the action add_remove_abiword. # if Abiword isn't installed, call the action add_remove_abiword.
if ! which abiword > /dev/null if ! which abiword > /dev/null
then then
yunohost app action run $app add_remove_abiword yunohost app action run $app add_remove_abiword
@ -255,7 +226,7 @@ apply_config() {
ynh_replace_string --match_string="\(\"soffice\" *: \).*," --replace_string="\1null," --target_file="$config_file" ynh_replace_string --match_string="\(\"soffice\" *: \).*," --replace_string="\1null," --target_file="$config_file"
elif [ "$export" = "libreoffice" ] elif [ "$export" = "libreoffice" ]
then then
# if libreoffice isn't installed, call the action add_remove_libreoffice. # if LibreOffice isn't installed, call the action add_remove_libreoffice.
if ! which soffice > /dev/null if ! which soffice > /dev/null
then then
yunohost app action run $app add_remove_libreoffice yunohost app action run $app add_remove_libreoffice
@ -272,16 +243,17 @@ apply_config() {
restart_etherpad=1 restart_etherpad=1
fi fi
# Mypads # MyPads
if [ "$mypads" != "$old_mypads" ] if [ "$mypads" != "$old_mypads" ]
then then
ynh_use_nodejs ynh_use_nodejs
pushd "$final_path" #pushd "$final_path/src"
#ynh_secure_remove --file="$final_path/src/package-lock.json" #added to fix saveError ENOENT: no such file or directory
if [ "$mypads" = "1" ] if [ "$mypads" = "1" ]
then then
npm install ep_mypads@${mypads_version} ynh_exec_as $app env "$ynh_node_load_PATH" npm install ep_mypads@${mypads_version}
else else
npm uninstall ep_mypads ynh_exec_as $app env "$ynh_node_load_PATH" npm uninstall ep_mypads
fi fi
popd popd
chown -R $app: $final_path/node_modules chown -R $app: $final_path/node_modules
@ -291,8 +263,8 @@ apply_config() {
restart_etherpad=1 restart_etherpad=1
fi fi
# Ldap for Mypads # LDAP for MyPads
if [ "$useldap" != "$old_useldap" ] if [ "$useldap" != "$old_useldap" ]
then then
if [ "$useldap" = "1" ] if [ "$useldap" = "1" ]
then then
@ -313,21 +285,6 @@ apply_config() {
ynh_systemd_action --action=restart --line_match="You can access your Etherpad instance at" --log_path="/var/log/$app/etherpad.log" --timeout="120" ynh_systemd_action --action=restart --line_match="You can access your Etherpad instance at" --log_path="/var/log/$app/etherpad.log" --timeout="120"
fi fi
#=================================================
# MODIFY PUBLIC ACCESSIBILITY
#=================================================
# Change public accessibility
if [ "$is_public" != "$old_is_public" ]
then
if [ "$is_public" = "1" ]
then
yunohost app action run $app public_private --args is_public=1
else
yunohost app action run $app public_private --args is_public=0
fi
fi
#================================================= #=================================================
# MODIFY OVERWRITTING SETTINGS # MODIFY OVERWRITTING SETTINGS
#================================================= #=================================================

View file

@ -6,9 +6,12 @@
# IMPORT GENERIC HELPERS # IMPORT GENERIC HELPERS
#================================================= #=================================================
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
sleep 60
fi
# Load common variables for all scripts. # Load common variables for all scripts.
source _variables source _variables
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
@ -92,9 +95,9 @@ ynh_app_setting_set --app=$app --key=port --value=$port
ynh_script_progression --message="Installing dependencies..." --weight=120 ynh_script_progression --message="Installing dependencies..." --weight=120
if [ "$export" = "abiword" ]; then if [ "$export" = "abiword" ]; then
ynh_install_app_dependencies $abiword_app_depencencies ynh_exec_warn_less ynh_install_app_dependencies $abiword_app_depencencies
elif [ "$export" = "libreoffice" ]; then elif [ "$export" = "libreoffice" ]; then
ynh_install_app_dependencies $libreoffice_app_dependencies ynh_exec_warn_less ynh_install_app_dependencies $libreoffice_app_dependencies
fi fi
#================================================= #=================================================
@ -110,9 +113,18 @@ ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_script_progression --message="Creating a MySQL database..." ynh_script_progression --message="Creating a MySQL database..."
db_name=$(ynh_sanitize_dbid --db_name=$app) db_name=$(ynh_sanitize_dbid --db_name=$app)
db_user=$db_name
ynh_app_setting_set --app=$app --key=db_name --value=$db_name ynh_app_setting_set --app=$app --key=db_name --value=$db_name
ynh_mysql_setup_db --db_user=$db_name --db_name=$db_name ynh_mysql_setup_db --db_user=$db_name --db_name=$db_name
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Configuring system user..." --weight=3
# Create a dedicated system user
ynh_system_user_create --username=$app --home_dir=$final_path
#================================================= #=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE # DOWNLOAD, CHECK AND UNPACK SOURCE
#================================================= #=================================================
@ -130,14 +142,6 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=2
# Create a dedicated nginx config # Create a dedicated nginx config
ynh_add_nginx_config ynh_add_nginx_config
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Configuring system user..." --weight=3
# Create a dedicated system user
ynh_system_user_create --username=$app --home_dir=$final_path
#================================================= #=================================================
# SPECIFIC SETUP # SPECIFIC SETUP
#================================================= #=================================================
@ -160,17 +164,11 @@ ynh_use_logrotate --specific_user=$app/$app
#================================================= #=================================================
ynh_script_progression --message="Installing Etherpad..." --weight=90 ynh_script_progression --message="Installing Etherpad..." --weight=90
# Install dependencies and proceed to the installation chown -R $app: $final_path
ynh_use_nodejs pushd $final_path
( ynh_use_nodejs
cd "$final_path" ynh_exec_as $app env "$ynh_node_load_PATH" bin/installDeps.sh
mkdir -p node_modules popd
cd node_modules
[ -e ep_etherpad-lite ] || ln -s ../src ep_etherpad-lite
cd ep_etherpad-lite
chown -R $app: $final_path
ynh_exec_as $app PATH="$nodejs_path:$PATH" "$nodejs_path/npm" install --save --loglevel warn
)
#================================================= #=================================================
# CONFIGURE ETHERPAD # CONFIGURE ETHERPAD
@ -178,12 +176,8 @@ ynh_use_nodejs
ynh_script_progression --message="Configuring Etherpad..." --weight=6 ynh_script_progression --message="Configuring Etherpad..." --weight=6
cp ../conf/settings.json "$final_path/settings.json" cp ../conf/settings.json "$final_path/settings.json"
cp ../conf/credentials.json "$final_path/credentials.json"
ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/settings.json" ynh_replace_string --match_string="__PORT__" --replace_string="$port" --target_file="$final_path/settings.json"
ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_name" --target_file="$final_path/credentials.json"
ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$final_path/credentials.json"
ynh_replace_string --match_string="__ADMIN__" --replace_string="$admin" --target_file="$final_path/credentials.json"
ynh_print_OFF; ynh_replace_special_string --match_string="__PASSWD__" --replace_string="$password" --target_file="$final_path/credentials.json"; ynh_print_ON
if [ "$export" = "abiword" ] if [ "$export" = "abiword" ]
then then
# Get abiword binary path # Get abiword binary path
@ -207,15 +201,16 @@ fi
# Calculate and store the config file checksum into the app settings # Calculate and store the config file checksum into the app settings
ynh_store_file_checksum --file="$final_path/settings.json" ynh_store_file_checksum --file="$final_path/settings.json"
# Calculate and store the config file checksum into the app settings
ynh_store_file_checksum --file="$final_path/credentials.json" ynh_add_config --template="../conf/credentials.json" --destination="$final_path/credentials.json"
#================================================= #=================================================
# SECURING FILES AND DIRECTORIES # SECURING FILES AND DIRECTORIES
#================================================= #=================================================
# Set files ownership to etherpad # Set files ownership to etherpad
chown -R $app: $final_path chown -R $app:$app $final_path
chmod o-rwx $final_path
# Restrict access to credentials.json # Restrict access to credentials.json
chmod 600 $final_path/credentials.json chmod 600 $final_path/credentials.json
@ -224,15 +219,14 @@ chmod 600 $final_path/credentials.json
#================================================= #=================================================
ynh_script_progression --message="Configuring a systemd service..." --weight=4 ynh_script_progression --message="Configuring a systemd service..." --weight=4
ynh_replace_string --match_string="__ENV_PATH__" --replace_string="$PATH" --target_file="../conf/systemd.service"
# Create a dedicated systemd config # Create a dedicated systemd config
ynh_add_systemd_config ynh_add_systemd_config --others_var="ynh_node_load_PATH"
#================================================= #=================================================
# ADVERTISE SERVICE IN ADMIN PANEL # ADVERTISE SERVICE IN ADMIN PANEL
#================================================= #=================================================
yunohost service add $app --description="Collaborative editor" --log="/var/log/$app/etherpad.log" yunohost service add $app --description="Collaborative editor" --log="/var/log/$app/etherpad.log"
#================================================= #=================================================
# INSTALL FRAMAPAD'S PLUGINS # INSTALL FRAMAPAD'S PLUGINS
@ -241,35 +235,35 @@ ynh_script_progression --message="Installing Etherpad plugins..." --weight=90
pushd "$final_path" pushd "$final_path"
# Add Left/Center/Right/Justify to lines of text in a pad # Add Left/Center/Right/Justify to lines of text in a pad
npm install ep_align@${ep_align_version} >> $install_log 2>&1 ynh_npm install ep_align@${ep_align_version} >> $install_log 2>&1
# Framapad - Adds author names to span titles # Framapad - Adds author names to span titles
npm install ep_author_hover@${ep_author_hover_version} >> $install_log 2>&1 ynh_npm install ep_author_hover@${ep_author_hover_version} >> $install_log 2>&1
# Automatically disconnects user after some period of time (Prevent server overload) # Automatically disconnects user after some period of time (Prevent server overload)
npm install ep_automatic_logut@${ep_automatic_logut_version} >> $install_log 2>&1 ynh_npm install ep_automatic_logut@${ep_automatic_logut_version} >> $install_log 2>&1
# Framapad - Adds comments on sidebar and link it to the text. # Framapad - Adds comments on sidebar and link it to the text.
npm install ep_comments_page@${ep_comments_page_version} >> $install_log 2>&1 ynh_npm install ep_comments_page@${ep_comments_page_version} >> $install_log 2>&1
# Framapad - Displays paragraphs, sentences, words and characters counts. # Framapad - Displays paragraphs, sentences, words and characters counts.
#npm install ep_countable@${ep_countable_version} >> $install_log 2>&1 ynh_npm install ep_countable@${ep_countable_version} >> $install_log 2>&1
# Framapad - Delete pads which were never edited # Framapad - Delete pads which were never edited
npm install ep_delete_empty_pads@${ep_delete_empty_pads_version} >> $install_log 2>&1 ynh_npm install ep_delete_empty_pads@${ep_delete_empty_pads_version} >> $install_log 2>&1
# Framapad - Apply colors to fonts # Framapad - Apply colors to fonts
npm install ep_font_color@${ep_font_color_version} >> $install_log 2>&1 ynh_npm install ep_font_color@${ep_font_color_version} >> $install_log 2>&1
# Framapad - Adds heading support to Etherpad Lite. # Framapad - Adds heading support to Etherpad Lite.
npm install ep_headings2@${ep_headings2_version} >> $install_log 2>&1 ynh_npm install ep_headings2@${ep_headings2_version} >> $install_log 2>&1
# Framapad - Edit and Export as Markdown in Etherpad # Framapad - Edit and Export as Markdown in Etherpad
npm install ep_markdown@${ep_markdown_version} >> $install_log 2>&1 ynh_npm install ep_markdown@${ep_markdown_version} >> $install_log 2>&1
if [ $mypads -eq 1 ]; then if [ $mypads -eq 1 ]; then
# Framapad - Groups and private pads for etherpad # Framapad - Groups and private pads for etherpad
npm install ep_mypads@${mypads_version} >> $install_log 2>&1 ynh_npm install ep_mypads@${mypads_version} >> $install_log 2>&1
fi fi
# Framapad - Add support to do 'Spell checking' # Framapad - Add support to do 'Spell checking'
npm install ep_spellcheck@${ep_spellcheck_version} >> $install_log 2>&1 ynh_npm install ep_spellcheck@${ep_spellcheck_version} >> $install_log 2>&1
# Framapad - Add support for Subscript and Superscript # Framapad - Add support for Subscript and Superscript
npm install ep_subscript_and_superscript@${ep_subscript_and_superscript_version} >> $install_log 2>&1 ynh_npm install ep_subscript_and_superscript@${ep_subscript_and_superscript_version} >> $install_log 2>&1
# Framapad - View a table of contents for your pad # Framapad - View a table of contents for your pad
npm install ep_table_of_contents@${ep_table_of_contents_version} >> $install_log 2>&1 ynh_npm install ep_table_of_contents@${ep_table_of_contents_version} >> $install_log 2>&1
# Framapad - User Pad Contents font size can be set in settings, this does not effect other peoples views # Framapad - User Pad Contents font size can be set in settings, this does not effect other peoples views
npm install ep_font_size@${ep_font_size_version} >> $install_log 2>&1 ynh_npm install ep_font_size@${ep_font_size_version} >> $install_log 2>&1
popd popd
chown -R $app: $final_path/node_modules chown -R $app: $final_path/node_modules
@ -279,25 +273,26 @@ chown -R $app: $final_path/node_modules
if [ $mypads -eq 1 ] if [ $mypads -eq 1 ]
then then
# Add a link to etherpad to allow anonymous pads creation from Mypads. # Add a link to Etherpad to allow anonymous pads creation from MyPads.
ynh_replace_string --match_string="^ *\"DESCRIPTION\": .*</ul>" --replace_string="&<a href=../>Pads anonymes</a>" --target_file=$final_path/node_modules/ep_mypads/static/l10n/fr.json ynh_replace_string --match_string="^ *\"DESCRIPTION\": .*</ul>" --replace_string="&<a href=../>Pads anonymes</a>" --target_file=$final_path/node_modules/ep_mypads/static/l10n/fr.json
ynh_replace_string --match_string="^ *\"DESCRIPTION\": .*</ul>" --replace_string="&<a href=../>Anonymous pads</a>" --target_file=$final_path/node_modules/ep_mypads/static/l10n/en.json ynh_replace_string --match_string="^ *\"DESCRIPTION\": .*</ul>" --replace_string="&<a href=../>Anonymous pads</a>" --target_file=$final_path/node_modules/ep_mypads/static/l10n/en.json
# And a link to etherpad admin from Mypads. # And a link to etherpad admin from Mypads.
ynh_replace_string --match_string="^ *\"FOOTER\": .*2.0" --replace_string="& | <a href='../admin'>Etherpad admin</a>" --target_file=$final_path/node_modules/ep_mypads/static/l10n/en.json ynh_replace_string --match_string="^ *\"FOOTER\": .*2.0" --replace_string="& | <a href='../admin'>Etherpad admin</a>" --target_file=$final_path/node_modules/ep_mypads/static/l10n/en.json
ynh_replace_string --match_string="^ *\"FOOTER\": .*2.0" --replace_string="& | <a href='../admin'>Etherpad admin</a>" --target_file=$final_path/node_modules/ep_mypads/static/l10n/fr.json ynh_replace_string --match_string="^ *\"FOOTER\": .*2.0" --replace_string="& | <a href='../admin'>Etherpad admin</a>" --target_file=$final_path/node_modules/ep_mypads/static/l10n/fr.json
# Find the /div just after the field to open a pad ## Find the /div just after the field to open a pad
mod_line=$(grep -nA5 "index.createOpenPad" $final_path/src/templates/index.html | grep "</div>" | cut -d '-' -f 1) #mod_line=$(grep -nA5 "index.createOpenPad" $final_path/src/templates/index.html | grep "</div>" | cut -d '-' -f 1)
# In order to add a link to mypads plugin. ## In order to add a link to MyPads plugin.
sed -i "$mod_line s@div>@&\n\t<center><br><font size="5"><a href="./mypads/">MyPads</a></font></center>@" $final_path/src/templates/index.html #sed -i "$mod_line s@div>@&\n\t<center><br><font size="5"><a href="./mypads/">MyPads</a></font></center>@" $final_path/src/templates/index.html
sed -i '157i<center><br><font size="4"><a href="./mypads/" style="text-decoration: none; color: #555">MyPads</a></font></center>' $final_path/src/templates/index.html
fi fi
#================================================= #=================================================
# SETUP FAIL2BAN # SETUP FAIL2BAN
#================================================= #=================================================
ynh_script_progression --message="Configuring Fail2ban..." --weight=13 ynh_script_progression --message="Configuring Fail2Ban..." --weight=13
# Create a dedicated fail2ban config # Create a dedicated Fail2Ban config
ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-access.log" --failregex="<HOST> .* .POST /mypads/api/auth/login HTTP/1.1. 400" --max_retry=5 ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-access.log" --failregex="<HOST> .* .POST /mypads/api/auth/login HTTP/1.1. 400" --max_retry=5
#================================================= #=================================================
@ -345,7 +340,7 @@ admin_panel="https://$(grep portal_domain /etc/ssowat/conf.json | cut -d'"' -f4)
if [ $mypads -eq 1 ] if [ $mypads -eq 1 ]
then then
Informations="You can access 2 different admin panels, for Etherpad by accessing https://$domain${path_url%/}/admin and for MyPads by accessing https://$domain${path_url%/}/mypads/?/admin." Informations="You can access two different admin panels, for Etherpad by accessing https://$domain${path_url%/}/admin and for MyPads by accessing https://$domain${path_url%/}/mypads/?/admin."
else else
Informations="You can access the admin panel by accessing https://$domain${path_url%/}/admin." Informations="You can access the admin panel by accessing https://$domain${path_url%/}/admin."
fi fi
@ -354,10 +349,6 @@ ynh_print_OFF
echo "$Informations echo "$Informations
You can also find a config file for Etherpad at this path /var/www/etherpad_mypads/settings.json. You can also find a config file for Etherpad at this path /var/www/etherpad_mypads/settings.json.
Your credentials for the admin panel are:
- login : $admin
- password : $password
You can configure this app easily by using the experimental config-panel feature $admin_panel/config-panel. You can configure this app easily by using the experimental config-panel feature $admin_panel/config-panel.
You can also find some specific actions for this app by using the experimental action feature $admin_panel/actions. You can also find some specific actions for this app by using the experimental action feature $admin_panel/actions.

View file

@ -50,7 +50,7 @@ if [ "$export" != "none" ]
then then
ynh_script_progression --message="Removing dependencies..." --weight=60 ynh_script_progression --message="Removing dependencies..." --weight=60
# Remove metapackage and its dependencies # Remove metapackage and its dependencies
ynh_remove_app_dependencies ynh_exec_warn_less ynh_remove_app_dependencies
fi fi
#================================================= #=================================================
@ -97,7 +97,7 @@ ynh_remove_logrotate
#================================================= #=================================================
ynh_script_progression --message="Removing Fail2Ban configuration..." --weight=7 ynh_script_progression --message="Removing Fail2Ban configuration..." --weight=7
# Remove the dedicated fail2ban config # Remove the dedicated Fail2Ban config
ynh_remove_fail2ban_config ynh_remove_fail2ban_config
#================================================= #=================================================

View file

@ -110,9 +110,9 @@ ynh_restore_file --origin_path="/etc/logrotate.d/$app"
ynh_script_progression --message="Reinstalling dependencies..." --weight=60 ynh_script_progression --message="Reinstalling dependencies..." --weight=60
if [ "$export" = "abiword" ]; then if [ "$export" = "abiword" ]; then
ynh_install_app_dependencies $abiword_app_depencencies ynh_exec_warn_less ynh_install_app_dependencies $abiword_app_depencencies
elif [ "$export" = "libreoffice" ]; then elif [ "$export" = "libreoffice" ]; then
ynh_install_app_dependencies $libreoffice_app_dependencies ynh_exec_warn_less ynh_install_app_dependencies $libreoffice_app_dependencies
fi fi
#================================================= #=================================================
@ -136,6 +136,7 @@ ynh_exec_warn_less npm cache clean --force
# Restore permissions on app files # Restore permissions on app files
chown -R $app: $final_path chown -R $app: $final_path
chmod o-rwx $final_path
#================================================= #=================================================
# ADVERTISE SERVICE IN ADMIN PANEL # ADVERTISE SERVICE IN ADMIN PANEL
@ -154,7 +155,7 @@ systemctl enable $app.service --quiet
#================================================= #=================================================
# RESTORE FAIL2BAN CONFIGURATION # RESTORE FAIL2BAN CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Restoring the Fail2ban configuration..." --weight=6 ynh_script_progression --message="Restoring the Fail2Ban configuration..." --weight=6
ynh_restore_file "/etc/fail2ban/jail.d/$app.conf" ynh_restore_file "/etc/fail2ban/jail.d/$app.conf"
ynh_restore_file "/etc/fail2ban/filter.d/$app.conf" ynh_restore_file "/etc/fail2ban/filter.d/$app.conf"
@ -197,10 +198,6 @@ ynh_print_OFF
echo "$Informations echo "$Informations
You can also find a config file for Etherpad at this path /var/www/etherpad_mypads/settings.json. You can also find a config file for Etherpad at this path /var/www/etherpad_mypads/settings.json.
Your credentials for the admin panel are:
- login : $admin
- password : $password
If you are facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/etherpad_mypads_ynh" > mail_to_send If you are facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/etherpad_mypads_ynh" > mail_to_send
ynh_send_readme_to_admin --app_message="mail_to_send" --recipients="$admin" --type=restore ynh_send_readme_to_admin --app_message="mail_to_send" --recipients="$admin" --type=restore

View file

@ -8,7 +8,6 @@
# Load common variables for all scripts. # Load common variables for all scripts.
source _variables source _variables
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
@ -27,6 +26,9 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path)
port=$(ynh_app_setting_get --app=$app --key=port) port=$(ynh_app_setting_get --app=$app --key=port)
export=$(ynh_app_setting_get --app=$app --key=export) export=$(ynh_app_setting_get --app=$app --key=export)
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_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
ynh_print_OFF; password=$(ynh_app_setting_get --app=$app --key=password); ynh_print_ON
mypads=$(ynh_app_setting_get --app=$app --key=mypads) mypads=$(ynh_app_setting_get --app=$app --key=mypads)
useldap=$(ynh_app_setting_get --app=$app --key=useldap) useldap=$(ynh_app_setting_get --app=$app --key=useldap)
overwrite_settings=$(ynh_app_setting_get --app=$app --key=overwrite_settings) overwrite_settings=$(ynh_app_setting_get --app=$app --key=overwrite_settings)
@ -40,7 +42,6 @@ pad_config_showlinenumbers=$(ynh_app_setting_get --app=$app --key=pad_config_sho
pad_config_chatandusers=$(ynh_app_setting_get --app=$app --key=pad_config_chatandusers) pad_config_chatandusers=$(ynh_app_setting_get --app=$app --key=pad_config_chatandusers)
pad_config_alwaysshowchat=$(ynh_app_setting_get --app=$app --key=pad_config_alwaysshowchat) pad_config_alwaysshowchat=$(ynh_app_setting_get --app=$app --key=pad_config_alwaysshowchat)
pad_config_show_markdown=$(ynh_app_setting_get --app=$app --key=pad_config_show_markdown) pad_config_show_markdown=$(ynh_app_setting_get --app=$app --key=pad_config_show_markdown)
pad_config_skinname=$(ynh_app_setting_get --app=$app --key=pad_config_skinname)
#================================================= #=================================================
# CHECK VERSION # CHECK VERSION
@ -168,6 +169,14 @@ ynh_script_progression --message="Stopping Etherpad service..." --weight=3
ynh_systemd_action --action=stop ynh_systemd_action --action=stop
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Making sure dedicated system user exists..."
# Create a dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir=$final_path
#================================================= #=================================================
# STANDARD UPGRADE STEPS # STANDARD UPGRADE STEPS
#================================================= #=================================================
@ -178,8 +187,22 @@ if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
ynh_script_progression --message="Upgrading source files..." --weight=4 ynh_script_progression --message="Upgrading source files..." --weight=4
# # Create a temporary directory
# tmpdir="$(mktemp -d)"
# # Backup the config file in the temp dir
# cp -a "$final_path/settings.json" "$tmpdir/settings.json"
ynh_secure_remove --file="$final_path"
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$final_path" ynh_setup_source --dest_dir="$final_path"
# # Copy the admin saved settings from tmp directory to final config path
# cp -a "$tmpdir/settings.json" "$final_path/settings.json"
# # Remove the tmp directory securely
# ynh_secure_remove --file="$tmpdir"
fi fi
#================================================= #=================================================
@ -188,9 +211,9 @@ fi
ynh_script_progression --message="Upgrading dependencies..." --weight=5 ynh_script_progression --message="Upgrading dependencies..." --weight=5
if [ "$export" = "abiword" ]; then if [ "$export" = "abiword" ]; then
ynh_install_app_dependencies $abiword_app_depencencies ynh_exec_warn_less ynh_install_app_dependencies $abiword_app_depencencies
elif [ "$export" = "libreoffice" ]; then elif [ "$export" = "libreoffice" ]; then
ynh_install_app_dependencies $libreoffice_app_dependencies ynh_exec_warn_less ynh_install_app_dependencies $libreoffice_app_dependencies
fi fi
#================================================= #=================================================
@ -209,50 +232,90 @@ fi
#================================================= #=================================================
ynh_script_progression --message="Upgrading NodeJS..." --weight=4 ynh_script_progression --message="Upgrading NodeJS..." --weight=4
# Remove the old nvm helper.
if [ -d /opt/nvm ]
then
ynh_secure_remove --file="/opt/nvm"
sed --in-place "/NVM_DIR/d" /root/.bashrc
fi
ynh_install_nodejs --nodejs_version=$nodejs_version ynh_install_nodejs --nodejs_version=$nodejs_version
#=================================================
# HANDLE LOG FILES AND LOGROTATE
#=================================================
ynh_script_progression --message="Configuring log rotation..."
# Create log directory
install_log=/var/log/$app/installation.log
touch $install_log
chown $app -R /var/log/$app
#================================================= #=================================================
# UPGRADE NPM MODULES # UPGRADE NPM MODULES
#================================================= #=================================================
ynh_script_progression --message="Upgrading Etherpad npm modules..." --weight=60 ynh_script_progression --message="Upgrading Etherpad..." --weight=60
# Update the main modules of etherpad
chown -R $app: $final_path
(cd "$final_path/src"
ynh_exec_warn_less npm cache clean --force
# Remove package-lock.json to prevent any shit during npm update...
ynh_secure_remove --file="$final_path/src/package-lock.json"
ynh_exec_warn_less ynh_exec_as $app PATH="$nodejs_path:$PATH" "$nodejs_path/npm" update)
# Then update the additionnal modules # Then update the additionnal modules
(cd "$final_path" chown -R $app: $final_path
ynh_exec_warn_less npm cache clean --force
while read node_module pushd $final_path
do ynh_use_nodejs
# Ignore ep_etherpad-lite, this part is updated before in this script. ynh_exec_as $app env "$ynh_node_load_PATH" src/bin/installDeps.sh
if [ "$node_module" = "ep_etherpad-lite" ]; then # ynh_exec_warn_less npm cache clean --force
continue # ynh_exec_warn_less ynh_exec_as $app env "$ynh_node_load_PATH" npm cache clean --force
fi # while read node_module
echo "Update $node_module" # do
# Build the name of the variable with the version. # # Ignore ep_etherpad-lite, this part is updated before in this script.
module_version=${node_module}_version # if [ "$node_module" = "ep_etherpad-lite" ]; then
# Get the content of the variable (from the file _variables) # continue
module_version=${!module_version:-} # fi
# If the module has no version stored in a variable into the file, keep it empty. # echo "Update $node_module"
# That way, the upgrade will not be specific to a version. # # Build the name of the variable with the version.
## Otherwise, add @ before the version number to force the upgrade to this version. # module_version=${node_module}_version
if [ -n "${module_version}" ]; then # # Get the content of the variable (from the file _variables)
module_version=@${module_version} # module_version=${!module_version:-}
fi # # If the module has no version stored in a variable into the file, keep it empty.
ynh_exec_warn_less ynh_exec_as $app PATH="$nodejs_path:$PATH" "$nodejs_path/npm" install --upgrade ${node_module}${module_version} || true # # That way, the upgrade will not be specific to a version.
done <<< "$(ls -1 "$final_path/node_modules" | grep "^ep_")") # ## Otherwise, add @ before the version number to force the upgrade to this version.
# if [ -n "${module_version}" ]; then
# module_version=@${module_version}
# fi
# ynh_exec_warn_less ynh_exec_as $app env "$ynh_node_load_PATH" npm install --upgrade ${node_module}${module_version} || true
# done <<< "$(ls -1 "$final_path/node_modules" | grep "^ep_")"
popd
#=================================================
# INSTALL FRAMAPAD'S PLUGINS
#=================================================
ynh_script_progression --message="Installing Etherpad plugins..." --weight=90
pushd "$final_path"
# Add Left/Center/Right/Justify to lines of text in a pad
ynh_npm install ep_align@${ep_align_version} >> $install_log 2>&1
# Framapad - Adds author names to span titles
ynh_npm install ep_author_hover@${ep_author_hover_version} >> $install_log 2>&1
# Automatically disconnects user after some period of time (Prevent server overload)
ynh_npm install ep_automatic_logut@${ep_automatic_logut_version} >> $install_log 2>&1
# Framapad - Adds comments on sidebar and link it to the text.
ynh_npm install ep_comments_page@${ep_comments_page_version} >> $install_log 2>&1
# Framapad - Displays paragraphs, sentences, words and characters counts.
ynh_npm install ep_countable@${ep_countable_version} >> $install_log 2>&1
# Framapad - Delete pads which were never edited
ynh_npm install ep_delete_empty_pads@${ep_delete_empty_pads_version} >> $install_log 2>&1
# Framapad - Apply colors to fonts
ynh_npm install ep_font_color@${ep_font_color_version} >> $install_log 2>&1
# Framapad - Adds heading support to Etherpad Lite.
ynh_npm install ep_headings2@${ep_headings2_version} >> $install_log 2>&1
# Framapad - Edit and Export as Markdown in Etherpad
ynh_npm install ep_markdown@${ep_markdown_version} >> $install_log 2>&1
if [ $mypads -eq 1 ]; then
# Framapad - Groups and private pads for etherpad
ynh_npm install ep_mypads@${mypads_version} >> $install_log 2>&1
fi
# Framapad - Add support to do 'Spell checking'
ynh_npm install ep_spellcheck@${ep_spellcheck_version} >> $install_log 2>&1
# Framapad - Add support for Subscript and Superscript
ynh_npm install ep_subscript_and_superscript@${ep_subscript_and_superscript_version} >> $install_log 2>&1
# Framapad - View a table of contents for your pad
ynh_npm install ep_table_of_contents@${ep_table_of_contents_version} >> $install_log 2>&1
# Framapad - User Pad Contents font size can be set in settings, this does not effect other peoples views
ynh_npm install ep_font_size@${ep_font_size_version} >> $install_log 2>&1
popd
chown -R $app: $final_path/node_modules
#================================================= #=================================================
# SPECIFIC UPGRADE # SPECIFIC UPGRADE
@ -276,13 +339,13 @@ then
then then
# Get abiword binary path # Get abiword binary path
abiword_path=`which abiword` abiword_path=`which abiword`
# Set the path of abiword into etherpad config # Set the path of Abiword into Etherpad config
ynh_replace_string --match_string="\"abiword\" : null" --replace_string="\"abiword\" : \"$abiword_path\"" --target_file="$final_path/settings.json" ynh_replace_string --match_string="\"abiword\" : null" --replace_string="\"abiword\" : \"$abiword_path\"" --target_file="$final_path/settings.json"
elif [ "$export" = "libreoffice" ] elif [ "$export" = "libreoffice" ]
then then
# Get soffice binary path # Get soffice binary path
soffice_path=`which soffice` soffice_path=`which soffice`
# Set the path of soffice into etherpad config # Set the path of soffice into Etherpad config
ynh_replace_string --match_string="\"soffice\" : null" --replace_string="\"soffice\" : \"$soffice_path\"" --target_file="$final_path/settings.json" ynh_replace_string --match_string="\"soffice\" : null" --replace_string="\"soffice\" : \"$soffice_path\"" --target_file="$final_path/settings.json"
fi fi
@ -293,7 +356,7 @@ then
fi fi
ynh_replace_string --match_string="__LANGUAGE__" --replace_string="$language" --target_file="$final_path/settings.json" ynh_replace_string --match_string="__LANGUAGE__" --replace_string="$language" --target_file="$final_path/settings.json"
# Use ldap for mypads # Use LDAP for MyPads
if [ $mypads -eq 1 ] && [ $useldap -eq 1 ] if [ $mypads -eq 1 ] && [ $useldap -eq 1 ]
then then
ynh_replace_string --match_string="//noldap" --replace_string="" --target_file="$final_path/settings.json" ynh_replace_string --match_string="//noldap" --replace_string="" --target_file="$final_path/settings.json"
@ -315,9 +378,6 @@ then
if [ -n "$pad_config_show_markdown" ]; then if [ -n "$pad_config_show_markdown" ]; then
ynh_replace_string --match_string="\(\"ep_markdown_default\" *: \).*," --replace_string="\1$pad_config_show_markdown," --target_file="$final_path/settings.json" ynh_replace_string --match_string="\(\"ep_markdown_default\" *: \).*," --replace_string="\1$pad_config_show_markdown," --target_file="$final_path/settings.json"
fi fi
if [ -n "$pad_config_skinname" ]; then
ynh_replace_string --match_string="\(\"skinName\" *: \).*," --replace_string="\1\"$pad_config_skinname\"," --target_file="$final_path/settings.json"
fi
# Recalculate and store the checksum of the file for the next upgrade. # Recalculate and store the checksum of the file for the next upgrade.
ynh_store_file_checksum --file="$final_path/settings.json" ynh_store_file_checksum --file="$final_path/settings.json"
@ -326,39 +386,19 @@ then
# Overwrite the credentials config file only if it's allowed # Overwrite the credentials config file only if it's allowed
if [ $overwrite_credentials -eq 1 ] if [ $overwrite_credentials -eq 1 ]
then then
# Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script. ynh_add_config --template="../conf/credentials.json" --destination="$final_path/credentials.json"
ynh_backup_if_checksum_is_different --file="$final_path/credentials.json"
cp ../conf/credentials.json "$final_path/credentials.json"
ynh_replace_string --match_string="__DB_USER__" --replace_string="$app" --target_file="$final_path/credentials.json"
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
ynh_print_OFF; password=$(ynh_app_setting_get --app=$app --key=password); ynh_print_ON
ynh_replace_string --match_string="__DB_PWD__" --replace_string="$db_pwd" --target_file="$final_path/credentials.json"
ynh_replace_string --match_string="__ADMIN__" --replace_string="$admin" --target_file="$final_path/credentials.json"
ynh_print_OFF; ynh_replace_special_string --match_string="__PASSWD__" --replace_string="$password" --target_file="$final_path/credentials.json"; ynh_print_ON
# Recalculate and store the checksum of the file for the next upgrade.
ynh_store_file_checksum --file="$final_path/credentials.json"
fi fi
fi fi
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Making sure dedicated system user exists..."
# Create a dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir=$final_path
#================================================= #=================================================
# SECURING FILES AND DIRECTORIES # SECURING FILES AND DIRECTORIES
#================================================= #=================================================
# Set files ownership to etherpad # Set files ownership to etherpad
chown -R $app: $final_path chown -R $app: $final_path
chmod o-rwx $final_path
chmod 600 "$final_path/credentials.json"
# Restrict access to credentials.json # Restrict access to credentials.json
chmod 600 "$final_path/credentials.json"
chown $app -R /var/log/$app/etherpad.log chown $app -R /var/log/$app/etherpad.log
#================================================= #=================================================
@ -370,9 +410,9 @@ yunohost service add $app --description="Collaborative editor" --log="/var/log/$
#================================================= #=================================================
# UPGRADE FAIL2BAN # UPGRADE FAIL2BAN
#================================================= #=================================================
ynh_script_progression --message="Reconfiguring Fail2ban..." --weight=8 ynh_script_progression --message="Reconfiguring Fail2Ban..." --weight=8
# Create a dedicated fail2ban config # Create a dedicated Fail2Ban config
ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-access.log" --failregex="<HOST> .* .POST /mypads/api/auth/login HTTP/1.1. 400" --max_retry=5 ynh_add_fail2ban_config --logpath="/var/log/nginx/$domain-access.log" --failregex="<HOST> .* .POST /mypads/api/auth/login HTTP/1.1. 400" --max_retry=5
#================================================= #=================================================
@ -391,8 +431,7 @@ ynh_script_progression --message="Upgrading systemd configuration..." --weight=2
# Overwrite the systemd configuration only if it's allowed # Overwrite the systemd configuration only if it's allowed
if [ $overwrite_systemd -eq 1 ] if [ $overwrite_systemd -eq 1 ]
then then
ynh_replace_string --match_string="__ENV_PATH__" --replace_string="$PATH" --target_file="../conf/systemd.service" ynh_add_systemd_config --others_var="ynh_node_load_PATH"
ynh_add_systemd_config
fi fi
#================================================= #=================================================
@ -401,10 +440,11 @@ fi
if [ "$upgrade_type" == "UPGRADE_APP" ] && [ $mypads -eq 1 ] if [ "$upgrade_type" == "UPGRADE_APP" ] && [ $mypads -eq 1 ]
then then
# Find the /div just after the field to open a pad # # Find the /div just after the field to open a pad
mod_line=$(grep -nA5 "index.createOpenPad" $final_path/src/templates/index.html | grep "</div>" | cut -d '-' -f 1) # mod_line=$(grep -nA5 "index.createOpenPad" $final_path/src/templates/index.html | grep "</div>" | cut -d '-' -f 1)
# In order to add a link to mypads plugin. # # In order to add a link to mypads plugin.
sed -i "$mod_line s@div>@&\n\t<center><br><font size="5"><a href="./mypads/">MyPads</a></font></center>@" $final_path/src/templates/index.html # sed -i "$mod_line s@div>@&\n\t<center><br><font size="5"><a href="./mypads/">MyPads</a></font></center>@" $final_path/src/templates/index.html
sed -i '157i<center><br><font size="4"><a href="./mypads/" style="text-decoration: none; color: #555">MyPads</a></font></center>' $final_path/src/templates/index.html
fi fi
#================================================= #=================================================