diff --git a/conf/.env.production b/conf/.env.production index 613fe47..462fb7b 100644 --- a/conf/.env.production +++ b/conf/.env.production @@ -17,7 +17,7 @@ DATABASE_URL=postgresql://__DB_USER__:__DB_PWD__@:5432/__DB_NAME__ # DATABASE_DISABLE_POOLING= # Redis (required for API rate limits and email sending) -REDIS_URL=redis:// +REDIS_URL=redis://127.0.0.1:6379/__REDIS_DB__ # API rate limits # API_RATE_LIMITS="300 per 5 minutes" diff --git a/scripts/_common.sh b/scripts/_common.sh index b1e329a..7a0450e 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -14,6 +14,44 @@ fittrackee_version="0.7.23" # EXPERIMENTAL 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 +} + #================================================= # FUTURE OFFICIAL HELPERS #================================================= diff --git a/scripts/change_url b/scripts/change_url index cb2a4b2..9304544 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -36,10 +36,10 @@ ynh_change_url_nginx_config #================================================= # MODIFY THE CONFIG FILE #================================================= -#ynh_script_progression --message="Modifying a config file..." --weight=1 +ynh_script_progression --message="Modifying a config file..." --weight=1 -#domain=$new_domain -#ynh_add_config --template="../conf/env.production" --destination="$install_dir/config/.env" +domain=$new_domain +ynh_add_config --template="../conf/env.production" --destination="$install_dir/config/.env" #================================================= # START SYSTEMD SERVICE diff --git a/scripts/install b/scripts/install index 2ad638f..b3fe050 100755 --- a/scripts/install +++ b/scripts/install @@ -30,6 +30,11 @@ chown -R $app:www-data /var/log/$app/ # CONFIGURE THE INSTALL SCRIPT #================================================= +# Configure redis +redis_db=$(ynh_redis_get_free_db) +ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db" + + # key for the .env __KEY__ key=$(ynh_string_random --length=45 | base64) ynh_app_setting_set --app=$app --key=key --value=$key diff --git a/scripts/remove b/scripts/remove index 4116866..469f9c3 100644 --- a/scripts/remove +++ b/scripts/remove @@ -9,6 +9,12 @@ source _common.sh source /usr/share/yunohost/helpers +#================================================= +# LOAD SETTINGS +#================================================= +ynh_script_progression --message="Loading installation settings..." + +redis_db=$(ynh_app_setting_get --app=$app --key=redis_db) #================================================= # STANDARD REMOVE @@ -47,6 +53,9 @@ ynh_remove_logrotate # Remove the log files ynh_secure_remove --file="/var/log/$app" +# Remove the redis database +ynh_redis_remove_db "$redis_db" + #================================================= # END OF SCRIPT diff --git a/scripts/upgrade b/scripts/upgrade index 747c3b2..2950d86 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -7,6 +7,7 @@ #================================================= source _common.sh +source ynh_redis source /usr/share/yunohost/helpers #================================================= @@ -22,6 +23,16 @@ admin_mail=$(ynh_user_get_info --username=$admin --key=mail) upgrade_type=$(ynh_check_app_version_changed) +#================================================= +# ENSURE DOWNWARD COMPATIBILITY +#================================================= + +# If redis_db doesn't exist, create it +if [ -z "$redis_db" ]; then + redis_db=$(ynh_redis_get_free_db) + ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db" +fi + #================================================= # STANDARD UPGRADE STEPS #=================================================