diff --git a/README.md b/README.md index 96a9dc2..9779bbb 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in Etherpad is a real-time collaborative editor scalable to thousands of simultaneous real time users. It provides full data export capabilities, and runs on your server, under your control. -**Shipped version:** 1.8.16~ynh1 +**Shipped version:** 1.8.17~ynh1 **Demo:** https://video.etherpad.com/ @@ -28,6 +28,13 @@ Etherpad is a real-time collaborative editor scalable to thousands of simultaneo ## Disclaimers / important information +## Etherpad Lite + +This version of Etherpad is installed without plugins and uses Redis as database. +Be aware, Redis database backup and restore is not fully implemented. + +If you want to install Etherpad with pugins and mysql database: https://github.com/YunoHost-Apps/etherpad_mypads_ynh", + ## Configuration You can access Etherpad's admin panel at `domain.tld/admin`. The configuration file for Etherpad is at the path `/var/www/etherpad/settings.json`. @@ -37,7 +44,7 @@ You can access Etherpad's admin panel at `domain.tld/admin`. The configuration f ## Documentation and resources * Official app website: https://etherpad.org/ -* Official admin documentation: http://etherpad.org/doc/v1.8.16 +* Official admin documentation: http://etherpad.org/doc/v1.8.17 * Upstream app code repository: https://github.com/ether/etherpad-lite * YunoHost documentation for this app: https://yunohost.org/app_etherpad * Report a bug: https://github.com/YunoHost-Apps/etherpad_ynh/issues diff --git a/README_fr.md b/README_fr.md index e241bee..7903fc4 100644 --- a/README_fr.md +++ b/README_fr.md @@ -13,7 +13,7 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour Etherpad est un éditeur collaboratif en temps réel évolutif pour des milliers d'utilisateurs simultanés en temps réel. Il fournit des capacités complètes d'exportation de données et s'exécute sur votre serveur, sous votre contrôle. -**Version incluse :** 1.8.16~ynh1 +**Version incluse :** 1.8.17~ynh1 **Démo :** https://video.etherpad.com/ @@ -32,7 +32,7 @@ Vous pouvez accéder au panneau d'administration d'Etherpad à l'adresse `domain ## Documentations et ressources * Site officiel de l'app : https://etherpad.org/ -* Documentation officielle de l'admin : http://etherpad.org/doc/v1.8.16 +* Documentation officielle de l'admin : http://etherpad.org/doc/v1.8.17 * Dépôt de code officiel de l'app : https://github.com/ether/etherpad-lite * Documentation YunoHost pour cette app : https://yunohost.org/app_etherpad * Signaler un bug : https://github.com/YunoHost-Apps/etherpad_ynh/issues diff --git a/check_process b/check_process index 76c5a8b..fdd1613 100644 --- a/check_process +++ b/check_process @@ -15,7 +15,7 @@ setup_private=1 setup_public=1 upgrade=1 - upgrade=1 from_commit=96653aee9379d579a655777ac274355f4afca61c + #upgrade=1 from_commit=96653aee9379d579a655777ac274355f4afca61c backup_restore=1 multi_instance=1 change_url=1 @@ -24,5 +24,5 @@ Email= Notification=none ;;; Upgrade options ; commit=96653aee9379d579a655777ac274355f4afca61c - name=Merge pull request #6 from YunoHost-Apps/testing + name=Merge pull request #6 manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=9001& diff --git a/conf/app.src b/conf/app.src index e7f957f..5919e11 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/ether/etherpad-lite/archive/1.8.16.tar.gz -SOURCE_SUM=dfdb60910aa9df85bde8cad8729ef6a33e36014739a3e8ce105f5e96a6b99d8c +SOURCE_URL=https://github.com/ether/etherpad-lite/archive/1.8.17.tar.gz +SOURCE_SUM=3b51eb0259764669dedfb4d13cdbe8d4a2dea37735fe32941aac39b5def9f99b SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/conf/credentials.json b/conf/credentials.json index 609603b..64ef848 100644 --- a/conf/credentials.json +++ b/conf/credentials.json @@ -20,14 +20,11 @@ * https://www.npmjs.com/package/ueberdb2 */ - /* An Example of MySQL Configuration */ - "dbType" : "postgres", + "dbType" : "redis", "dbSettings" : { - "user" : "__DB_NAME__", - "host" : "localhost", - "port" : 5432, - "password": "__DB_PWD__", - "database": "__DB_NAME__" + "host" : "127.0.0.1", + "port" : 6379, + "database": "__REDIS_DB__" }, /* diff --git a/conf/nginx.conf b/conf/nginx.conf index ecb5289..4b1646c 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -17,9 +17,6 @@ location __PATH__/ { # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; - - # Include SSOWAT user panel. - include conf.d/yunohost_panel.conf.inc; } location ~* __PATH__/p/[^/]*(_|%|\*)[^/]*/export/etherpad { diff --git a/conf/settings.json b/conf/settings.json index 7d81033..c82ad66 100644 --- a/conf/settings.json +++ b/conf/settings.json @@ -191,7 +191,7 @@ /* * The default text of a pad */ - "defaultPadText" : "Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at https:\/\/etherpad.org\n", + "defaultPadText" : "Welcome to Etherpad-lite!\n\nThis version of Etherpad is installed without plugins and uses Redis as database.\nBe aware, Redis database backup and restore is not fully implemented.\n\nIf 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_ynh", /* * Default Pad behavior. diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md index a373fcd..68d0c28 100644 --- a/doc/DISCLAIMER.md +++ b/doc/DISCLAIMER.md @@ -1,3 +1,10 @@ +## Etherpad Lite + +This version of Etherpad is installed without plugins and uses Redis as database. +Be aware, Redis database backup and restore is not fully implemented. + +If you want to install Etherpad with pugins and mysql database: https://github.com/YunoHost-Apps/etherpad_mypads_ynh", + ## Configuration You can access Etherpad's admin panel at `domain.tld/admin`. The configuration file for Etherpad is at the path `/var/www/etherpad/settings.json`. diff --git a/manifest.json b/manifest.json index 22c2a70..94e4746 100644 --- a/manifest.json +++ b/manifest.json @@ -6,13 +6,13 @@ "en": "Online editor providing collaborative editing in real-time", "fr": "Éditeur en ligne fournissant l'édition collaborative en temps réel" }, - "version": "1.8.16~ynh1", + "version": "1.8.17~ynh1", "url": "https://etherpad.org/", "upstream": { "license": "Apache-2.0", "website": "https://etherpad.org/", "demo": "https://video.etherpad.com/", - "admindoc": "http://etherpad.org/doc/v1.8.16", + "admindoc": "http://etherpad.org/doc/v1.8.17", "code": "https://github.com/ether/etherpad-lite" }, "license": "Apache-2.0", @@ -64,7 +64,18 @@ "en": "Choose the application language", "fr": "Choisissez la langue de l'application" }, - "choices": ["de", "en", "es", "fr", "it"], + "choices": [ + "ca", + "de", + "en", + "es", + "fr", + "gl", + "hu", + "it", + "nl", + "pt" + ], "default": "en" }, { diff --git a/scripts/_common.sh b/scripts/_common.sh index 599b8ce..839f144 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,9 +4,6 @@ # COMMON VARIABLES #================================================= -# dependencies used by the app -pkg_dependencies="postgresql postgresql-contrib" - nodejs_version=16 # Dependencies for AbiWord @@ -26,3 +23,42 @@ libreoffice_app_dependencies="unoconv libreoffice-writer" #================================================= # FUTURE OFFICIAL HELPERS #================================================= + +# get the first available redis database +# +# usage: ynh_redis_get_free_db +# | returns: the database number to use +ynh_redis_get_free_db() { + local result max db + result="$(redis-cli INFO keyspace)" + + # get the num + max=$(cat /etc/redis/redis.conf | grep ^databases | grep -Eow "[0-9]+") + + db=0 + # default Debian setting is 15 databases + for i in $(seq 0 "$max") + do + if ! echo "$result" | grep -q "db$i" + then + db=$i + break 1 + fi + db=-1 + done + + test "$db" -eq -1 && ynh_die --message="No available Redis databases..." + + echo "$db" +} + +# Create a master password and set up global settings +# Please always call this script in install and restore scripts +# +# usage: ynh_redis_remove_db database +# | arg: database - the database to erase +ynh_redis_remove_db() { + local db=$1 + redis-cli -n "$db" flushall +} + diff --git a/scripts/backup b/scripts/backup index 617ef5e..b66f2b1 100644 --- a/scripts/backup +++ b/scripts/backup @@ -24,7 +24,6 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP @@ -57,13 +56,6 @@ ynh_backup --src_path="/etc/logrotate.d/$app" ynh_backup --src_path="/etc/systemd/system/$app.service" -#================================================= -# BACKUP THE POSTQRESQL DATABASE -#================================================= -ynh_print_info --message="Backing up the PostgreSQL database..." - -ynh_psql_dump_db --database="$db_name" > db.sql - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/install b/scripts/install index b877d2d..19815d7 100644 --- a/scripts/install +++ b/scripts/install @@ -28,7 +28,7 @@ path_url=$YNH_APP_ARG_PATH admin=$YNH_APP_ARG_ADMIN is_public=$YNH_APP_ARG_IS_PUBLIC language=$YNH_APP_ARG_LANGUAGE -password=$YNH_APP_ARG_PASSWORD +password="$YNH_APP_ARG_PASSWORD" export=$YNH_APP_ARG_EXPORT app=$YNH_APP_INSTANCE_NAME @@ -53,7 +53,7 @@ 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=admin --value=$admin ynh_app_setting_set --app=$app --key=language --value=$language -ynh_app_setting_set --app=$app --key=password --value=$password +ynh_app_setting_set --app=$app --key=password --value="$password" ynh_app_setting_set --app=$app --key=export --value=$export #================================================= @@ -72,14 +72,12 @@ ynh_app_setting_set --app=$app --key=port --value=$port #================================================= ynh_script_progression --message="Installing dependencies..." --weight=6 -ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies - ynh_install_nodejs --nodejs_version=$nodejs_version 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 - ynh_install_app_dependencies $libreoffice_app_dependencies + ynh_exec_warn_less ynh_install_app_dependencies $libreoffice_app_dependencies fi #================================================= @@ -93,13 +91,11 @@ ynh_system_user_create --username=$app --home_dir=$final_path #================================================= # CREATE A POSTQRESQL DATABASE #================================================= -ynh_script_progression --message="Creating a PostgreSQL database..." --weight=5 +ynh_script_progression --message="Creating a Redis database..." --weight=5 -db_name=$(ynh_sanitize_dbid --db_name=$app) -db_user=$db_name -ynh_app_setting_set --app=$app --key=db_name --value=$db_name -ynh_psql_test_if_first_run -ynh_psql_setup_db --db_user=$db_name --db_name=$db_name +# Configure redis +redis_db=$(ynh_redis_get_free_db) +ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -128,8 +124,6 @@ ynh_add_nginx_config #================================================= ynh_script_progression --message="Installing Etherpad..." --weight=60 -chown -R $app $final_path - pushd $final_path ynh_use_nodejs ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH src/bin/installDeps.sh @@ -207,7 +201,7 @@ then ynh_permission_update --permission="main" --add="visitors" fi -ynh_permission_create --permission="admin" --url="/admin" --allowed=$admin --auth_header=false +ynh_permission_create --permission="admin" --url="/admin" --allowed="$admin" --auth_header="false" #================================================= # RELOAD NGINX diff --git a/scripts/remove b/scripts/remove index 1cdcc6a..ae39d91 100644 --- a/scripts/remove +++ b/scripts/remove @@ -19,9 +19,9 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) port=$(ynh_app_setting_get --app=$app --key=port) final_path=$(ynh_app_setting_get --app=$app --key=final_path) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$db_name +redis_db=$(ynh_app_setting_get --app=$app --key=redis_db) export=$(ynh_app_setting_get --app=$app --key=export) +redis_db=$(ynh_app_setting_get --app=$app --key=redis_db) #================================================= # STANDARD REMOVE @@ -71,12 +71,11 @@ ynh_script_progression --message="Removing NodeJS version for Etherpad..." --wei ynh_remove_nodejs #================================================= -# REMOVE THE POSTQRESQL DATABASE +# REMOVE THE REDIS DATABASE #================================================= -ynh_script_progression --message="Removing the PostgreSQL database..." --weight=2 +ynh_script_progression --message="Removing the redis database..." -# Remove a database if it exists, along with the associated user -ynh_psql_remove_db --db_user=$db_user --db_name=$db_name +ynh_redis_remove_db "$redis_db" #================================================= # REMOVE ETHERPAD MAIN DIR diff --git a/scripts/restore b/scripts/restore index 4b25222..163aebc 100644 --- a/scripts/restore +++ b/scripts/restore @@ -29,9 +29,7 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$db_name -db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) +export=$(ynh_app_setting_get --app=$app --key=export) #================================================= # CHECK IF ETHERPAD CAN BE RESTORED @@ -74,21 +72,9 @@ chmod 400 $final_path/credentials.json #================================================= ynh_script_progression --message="Reinstalling dependencies..." --weight=7 -# Define and install dependencies -ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies - # Install Nodejs ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version -#================================================= -# RESTORE THE POSTQRESQL DATABASE -#================================================= -ynh_script_progression --message="Restoring the PostgreSQL database..." --weight=2 - -ynh_psql_test_if_first_run -ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd -ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name - #================================================= # RESTORE SYSTEMD #================================================= @@ -104,6 +90,17 @@ ynh_script_progression --message="Restoring the logrotate configuration..." --we ynh_restore_file --origin_path="/etc/logrotate.d/$app" +#================================================= +# INSTALL DEPENDENCIES +#================================================= +ynh_script_progression --message="Reinstalling dependencies..." --weight=10 + +if [ "$export" = "abiword" ]; then + ynh_exec_warn_less ynh_install_app_dependencies $abiword_app_depencencies +elif [ "$export" = "libreoffice" ]; then + ynh_exec_warn_less ynh_install_app_dependencies $libreoffice_app_dependencies +fi + #================================================= # INTEGRATE SERVICE IN YUNOHOST #================================================= @@ -117,7 +114,7 @@ yunohost service add $app --description="Collaborative editor" --log="/var/log/$ ynh_script_progression --message="Starting a systemd service..." --weight=8 ynh_systemd_action --service_name=$app --action=restart --log_path=systemd --line_match="Your Etherpad version is" -sleep 120 +sleep 60 #================================================= # GENERIC FINALIZATION diff --git a/scripts/upgrade b/scripts/upgrade index 01a2322..2d40202 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -23,9 +23,8 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) language=$(ynh_app_setting_get --app=$app --key=language) port=$(ynh_app_setting_get --app=$app --key=port) password=$(ynh_app_setting_get --app=$app --key=password) +redis_db=$(ynh_app_setting_get --app=$app --key=redis_db) export=$(ynh_app_setting_get --app=$app --key=export) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) #================================================= # CHECK VERSION @@ -52,18 +51,18 @@ ynh_abort_if_errors #================================================= ynh_script_progression --message="Ensuring downward compatibility..." --weight=2 -# If db_name doesn't exist, create it -if [ -z "$db_name" ]; then - db_name=$(ynh_sanitize_dbid --db_name=$app) - ynh_app_setting_set --app=$app --key=db_name --value=$db_name -fi - # If final_path doesn't exist, create it if [ -z "$final_path" ]; then final_path=/var/www/$app ynh_app_setting_set --app=$app --key=final_path --value=$final_path fi +# If redis_db doesn't exist, create it +if [ -z "$redis_db" ]; then + redis_db=$(ynh_redis_get_free_db) + ynh_app_setting_get --app=$app --key=redis_db --value=$redis_db +fi + # Cleaning legacy permissions if ynh_legacy_permissions_exists; then ynh_legacy_permissions_delete_all @@ -73,7 +72,7 @@ fi if ! ynh_permission_exists --permission="admin"; then # Create the required permissions - ynh_permission_create --permission="admin" --url="/admin" --allowed=$admin --auth_header=false + ynh_permission_create --permission="admin" --url="/admin" --allowed="$admin" --auth_header="false" fi #================================================= @@ -134,19 +133,8 @@ ynh_add_nginx_config #================================================= ynh_script_progression --message="Installing dependencies..." --weight=12 -ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies - ynh_install_nodejs --nodejs_version=$nodejs_version -#================================================= -# MODIFY A CONFIG FILE -#================================================= -# ynh_script_progression --message="Reconfiguring Etherpad..." --weight=6 - -# ynh_add_config --template="../conf/settings.json" --destination="$final_path/settings.json" -# ynh_add_config --template="../conf/credentials.json" --destination="$final_path/credentials.json" -# chmod 400 "$final_path/credentials.json" - #================================================= # INSTALL ETHERPAD #=================================================