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

Merge pull request #18 from YunoHost-Apps/redis

Redis
This commit is contained in:
Éric Gaspar 2022-02-24 09:40:06 +01:00 committed by GitHub
commit 137bdf03b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 83 additions and 80 deletions

View file

@ -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

View file

@ -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

View file

@ -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&

View file

@ -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

View file

@ -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__"
},
/*

View file

@ -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.

View file

@ -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"
},
{

View file

@ -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
}

View file

@ -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
#=================================================

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
#=================================================