diff --git a/README.md b/README.md index 96a9dc2..f0bb26f 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/ @@ -37,7 +37,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..73922e8 100644 --- a/check_process +++ b/check_process @@ -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..6d46a97 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=077df9a46046f579644d26525c42008d8b758796ba447ddbd99fe1d975156f31 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/conf/credentials.json b/conf/credentials.json index 609603b..925c908 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__" + "port" : 6379, + "database": "__REDIS_DB__" }, /* 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/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..7ba7f31 100644 --- a/scripts/install +++ b/scripts/install @@ -72,8 +72,6 @@ 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 @@ -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 @@ -207,7 +203,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..53b531e 100644 --- a/scripts/restore +++ b/scripts/restore @@ -29,9 +29,6 @@ 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) #================================================= # CHECK IF ETHERPAD CAN BE RESTORED @@ -74,21 +71,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 #================================================= @@ -117,7 +102,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..460bb7e 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -23,9 +23,7 @@ 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) -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) +redis_db=$(ynh_app_setting_get --app=$app --key=redis_db) #================================================= # CHECK VERSION @@ -52,18 +50,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 +71,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 +132,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 #=================================================