diff --git a/conf/monitorix.conf b/conf/monitorix.conf index aef3c07..ee6869c 100644 --- a/conf/monitorix.conf +++ b/conf/monitorix.conf @@ -538,7 +538,7 @@ secure_log_date_format = %b %e 0 = /var/spool/mail, /var/lib, /var/log, /etc, /tmp 1 = /var/www, /opt/yunohost 2 = /home/yunohost.backup{% for dir in app_data_dirs.split(' ') %}, {{ dir }}{% endfor %} - 3 = {% for dir in home_user_dirs.split(' ') %}{% if loop.index > 1 %}, {% endif %}{{ dir }}{% endfor %} + 3 = {% for dir in home_user_dirs.splitlines() %}{% if loop.index > 1 %}, {% endif %}{{ dir }}{% endfor %} 0 = size diff --git a/manifest.toml b/manifest.toml index 529e70a..f2ef009 100644 --- a/manifest.toml +++ b/manifest.toml @@ -20,7 +20,7 @@ code = "https://github.com/mikaku/Monitorix" cpe = "cpe:2.3:a:fibranet:monitorix" [integration] -yunohost = ">= 11.2.11" +yunohost = ">= 11.2.13" architectures = "all" multi_instance = false ldap = "not_relevant" diff --git a/scripts/_common.sh b/scripts/_common.sh index e59c7f7..fafb434 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -182,7 +182,7 @@ config_php_fpm() { pool_version=$(echo "$pool_dir_by_version" | cut -d/ -f4) pool_file="/etc/php/$pool_version/fpm/pool.d/${app}_status.conf" if ynh_package_is_installed --package="php$pool_version-fpm"; then - ynh_add_jinja_config --template=_php_status.conf --destination="$pool_file" + ynh_add_config --jinja --template=_php_status.conf --destination="$pool_file" chown root:root "$pool_file" chmod 444 "$pool_file" diff --git a/scripts/change_url b/scripts/change_url index 5048134..7c4c525 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -31,7 +31,7 @@ ynh_change_url_nginx_config # SPECIFIC MODIFICATIONS #================================================= ynh_script_progression --message="Updating a configuration file..." --weight=1 -ynh_add_jinja_config --template=monitorix.conf --destination=/etc/monitorix/monitorix.conf +ynh_add_config --jinja --template=monitorix.conf --destination=/etc/monitorix/monitorix.conf #================================================= # GENERIC FINALISATION diff --git a/scripts/config b/scripts/config index de6aa35..7efcc34 100644 --- a/scripts/config +++ b/scripts/config @@ -14,7 +14,7 @@ ynh_abort_if_errors ynh_app_config_apply() { _ynh_app_config_apply load_vars - ynh_add_jinja_config --template=monitorix.conf --destination="/etc/monitorix/monitorix.conf" + ynh_add_config --jinja --template=monitorix.conf --destination="/etc/monitorix/monitorix.conf" save_vars_current_value } diff --git a/scripts/experimental_helper.sh b/scripts/experimental_helper.sh index bfdd78d..e69de29 100644 --- a/scripts/experimental_helper.sh +++ b/scripts/experimental_helper.sh @@ -1,135 +0,0 @@ -# Create a dedicated config file from a jinja template -# -# usage: ynh_add_jinja_config --template="template" --destination="destination" -# | arg: -t, --template= - Template config file to use -# | arg: -d, --destination= - Destination of the config file -# | arg: -i, --ignore_vars= - List separated by space of script variables to ignore and don't pass in the jinja context. -# | This could be useful mainly for special share which can't be retried by reference name (like the array). -# -# examples: -# ynh_add_jinja_config --template="app.conf" --destination="$install_dir/app.conf" -# ynh_add_jinja_config --template="app-env" --destination="$install_dir/app-env" --ignore_vars="complex_array yolo" -# -# The template can be by default the name of a file in the conf directory -# -# The helper will verify the checksum and backup the destination file -# if it's different before applying the new template. -# -# And it will calculate and store the destination file checksum -# into the app settings when configuration is done. -# -## -## About the variables passed to the template: -## -# -# All variable defined in the script are available into the template (as string) except someone described below. -# If a variable make crash the helper for some reason (by example if the variable is of type array) -# or you just want to don't pass a specific variable for some other reason you can add it in the '--ignore_vars=' parameter as described above. -# Here are the list of ignored variable and so there won't never be available in the template: -# - All system environment variable like (TERM, USER, PATH, LANG, etc). -# If you need someone you just need to declare an other variable with the same value. -# Note that all Yunohost variable whose name begins by 'YNH_' are available and can be used in the template. -# - This following list: -# legacy_args args_array template destination ignore_vars template_path python_env_var ignore_var_regex -# progress_scale progress_string0 progress_string1 progress_string2 -# old changed binds types file_hash formats -# -## -## Usage in templates: -## -# -# For a full documentation of the template you can refer to: https://jinja.palletsprojects.com/en/3.1.x/templates/ -# In Yunohost context there are no really some specificity except that all variable passed are of type string. -# So here are some example of recommended usage: -# -# If you need a conditional block -# -# {% if should_my_block_be_shown == 'true' %} -# ... -# {% endif %} -# -# or -# -# {% if should_my_block_be_shown == '1' %} -# ... -# {% endif %} -# -# If you need to iterate with loop: -# -# {% for yolo in var_with_multiline_value.splitlines() %} -# ... -# {% endfor %} -# -# or -# -# {% for jail in my_var_with_coma.split(',') %} -# ... -# {% endfor %} -# -ynh_add_jinja_config() { - # Declare an array to define the options of this helper. - local legacy_args=tdi - local -A args_array=([t]=template= [d]=destination= [i]=ignore_vars= ) - local template - local destination - local ignore_vars - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - local template_path - - # - ## List of all vars ignored and not passed to the template - # WARNING Update the list on the helper documentation at the top of the helper, if you change this list - # - - # local vars used in the helper - ignore_vars+=" legacy_args args_array template destination ignore_vars template_path python_env_var ignore_var_regex" - # yunohost helpers - ignore_vars+=" progress_scale progress_string0 progress_string1 progress_string2" - # Arrays used in config panel - ignore_vars+=" old changed binds types file_hash formats" - - if [ -f "$YNH_APP_BASEDIR/conf/$template" ]; then - template_path="$YNH_APP_BASEDIR/conf/$template" - elif [ -f "$template" ]; then - template_path=$template - else - ynh_die --message="The provided template $template doesn't exist" - fi - - ynh_backup_if_checksum_is_different --file="$destination" - - # Make sure to set the permissions before we copy the file - # This is to cover a case where an attacker could have - # created a file beforehand to have control over it - # (cp won't overwrite ownership / modes by default...) - touch "$destination" - chown root:root "$destination" - chmod 640 "$destination" - - local python_env_var='' - local ignore_var_regex - ignore_var_regex="$(echo "$ignore_vars" | sed -E 's@^\s*(.*\w)\s*$@\1@g' | sed -E 's@(\s+)@|@g')" - while read -r one_var; do - # Blacklist of var to not pass to template - if { [[ "$one_var" =~ ^[A-Z0-9_]+$ ]] && [[ "$one_var" != YNH_* ]]; } \ - || [[ "$one_var" =~ ^($ignore_var_regex)$ ]]; then - continue - fi - # Well python is very bad for the last character on raw string - # https://stackoverflow.com/questions/647769/why-cant-pythons-raw-string-literals-end-with-a-single-backslash - # So the solution here is to add one last char '-' so we know what it is - # and we are sure that it not \ or ' or something else which will be problematic with python - # And then we remove it while we are processing - python_env_var+="$one_var=r'''${!one_var}-'''[:-1]," - done <<< "$(compgen -v)" - - _ynh_apply_default_permissions "$destination" - ( - python3 -c 'import os, sys, jinja2; sys.stdout.write( - jinja2.Template(source=sys.stdin.read(), - undefined=jinja2.StrictUndefined, - ).render('"$python_env_var"'));' <"$template_path" >"$destination" - ) - ynh_store_file_checksum --file="$destination" -} diff --git a/scripts/install b/scripts/install index 603c236..76f334e 100755 --- a/scripts/install +++ b/scripts/install @@ -7,8 +7,8 @@ #================================================= source _common.sh -source experimental_helper.sh source /usr/share/yunohost/helpers +source experimental_helper.sh load_vars ensure_vars_set @@ -34,8 +34,8 @@ ynh_systemd_action --service_name="$app" --action=stop --log_path=systemd --time ynh_script_progression --message="Adding configurations related to $app..." --weight=1 mkdir -p /etc/monitorix -ynh_add_jinja_config --template=monitorix.conf --destination="/etc/monitorix/monitorix.conf" -ynh_add_jinja_config --template=nginx_status.conf --destination="$nginx_status_conf" +ynh_add_config --jinja --template=monitorix.conf --destination="/etc/monitorix/monitorix.conf" +ynh_add_config --jinja --template=nginx_status.conf --destination="$nginx_status_conf" ynh_add_nginx_config ynh_add_systemd_config diff --git a/scripts/upgrade b/scripts/upgrade index 5984372..6fec73a 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -7,8 +7,8 @@ #================================================= source _common.sh -source experimental_helper.sh source /usr/share/yunohost/helpers +source experimental_helper.sh load_vars upgrade_type="$(ynh_check_app_version_changed)" @@ -76,8 +76,8 @@ fi #================================================= ynh_script_progression --message="Upgrading configurations related to $app..." --weight=1 -ynh_add_jinja_config --template=monitorix.conf --destination=/etc/monitorix/monitorix.conf -ynh_add_jinja_config --template=nginx_status.conf --destination="$nginx_status_conf" +ynh_add_config --jinja --template=monitorix.conf --destination=/etc/monitorix/monitorix.conf +ynh_add_config --jinja --template=nginx_status.conf --destination="$nginx_status_conf" if "$phpfpm_installed"; then config_php_fpm fi diff --git a/sources/update_config_if_needed.sh b/sources/update_config_if_needed.sh index a4846d3..30164d8 100644 --- a/sources/update_config_if_needed.sh +++ b/sources/update_config_if_needed.sh @@ -75,8 +75,8 @@ if "$status_dirty"; then emailreports_yearly_graphs="$(ynh_app_setting_get --app="$app" --key=emailreports_yearly_graphs)" emailreports_yearly_to="$(ynh_app_setting_get --app="$app" --key=emailreports_yearly_to)" - ynh_add_jinja_config --template=monitorix.conf --destination="/etc/monitorix/monitorix.conf" - ynh_add_jinja_config --template=nginx_status.conf --destination="$nginx_status_conf" + ynh_add_config --jinja --template=monitorix.conf --destination="/etc/monitorix/monitorix.conf" + ynh_add_config --jinja --template=nginx_status.conf --destination="$nginx_status_conf" configure_db if "$phpfpm_installed"; then