diff --git a/conf/config.js b/conf/config.js index d97654d..f1e57bc 100644 --- a/conf/config.js +++ b/conf/config.js @@ -106,7 +106,7 @@ const conf = convict({ }, redis_db: { format: String, - default: '', + default: '__REDIS_DB__', env: 'REDIS_DB' }, redis_event_expire: { diff --git a/scripts/_common.sh b/scripts/_common.sh index 247f831..deddb9c 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -12,7 +12,6 @@ nodejs_version=15 # dependencies used by the app #pkg_dependencies="redis-server" - #================================================= # PERSONAL HELPERS #================================================= @@ -24,3 +23,43 @@ nodejs_version=15 #================================================= # FUTURE OFFICIAL HELPERS #================================================= + +#!/bin/bash + +# 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/install b/scripts/install index dcc7542..732d3a1 100644 --- a/scripts/install +++ b/scripts/install @@ -69,6 +69,15 @@ ynh_script_progression --message="Installing dependencies..." --weight=20 # Install Nodejs ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version +#================================================= +# CREATE A REDIS DATABASE +#================================================= +ynh_script_progression --message="Creating a Redis database..." --weight=5 + +# Configure redis +redis_db=$(ynh_redis_get_free_db) +ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db" + #================================================= # CREATE DEDICATED USER #================================================= diff --git a/scripts/remove b/scripts/remove index dc4d988..268fe1e 100644 --- a/scripts/remove +++ b/scripts/remove @@ -51,6 +51,13 @@ ynh_script_progression --message="Removing dependencies..." --weight=1 ynh_remove_nodejs +#================================================= +# REMOVE THE REDIS DATABASE +#================================================= +ynh_script_progression --message="Removing the Redis database..." --weight=1 + +ynh_redis_remove_db "$redis_db" + #================================================= # REMOVE APP MAIN DIR #=================================================