diff --git a/data/hooks/conf_regen-old/12-metronome b/data/hooks/conf_regen-old/12-metronome deleted file mode 100644 index abcf0d25d..000000000 --- a/data/hooks/conf_regen-old/12-metronome +++ /dev/null @@ -1,66 +0,0 @@ -set -e - -force=$1 - -function safe_copy () { - if [[ "$force" == "True" ]]; then - sudo yunohost service safecopy \ - -s metronome \ - $1 $2 \ - --force - else - sudo yunohost service safecopy \ - -s metronome \ - $1 $2 - fi -} - -cd /usr/share/yunohost/templates/metronome - -# Copy configuration files -main_domain=$(cat /etc/yunohost/current_host) -cat metronome.cfg.lua.sed \ - | sed "s/{{ main_domain }}/$main_domain/g" \ - | sudo tee metronome.cfg.lua -safe_copy metronome.cfg.lua /etc/metronome/metronome.cfg.lua - -need_restart=False -sudo mkdir -p /etc/metronome/conf.d - -domain_list=$(sudo yunohost domain list --output-as plain) - -# Copy a configuration file for each YunoHost domain -for domain in $domain_list; do - sanitzed_domain="$(echo $domain | sed 's/\./%2e/g')" - sudo mkdir -p /var/lib/metronome/$sanitzed_domain/pep - - cat domain.cfg.lua.sed \ - | sed "s/{{ domain }}/$domain/g" \ - | sudo tee $domain.cfg.lua - if [[ $(safe_copy $domain.cfg.lua /etc/metronome/conf.d/$domain.cfg.lua | tail -n1) == "True" ]]; then - need_restart=True - fi -done - -# Remove old domains files -for file in /etc/metronome/conf.d/*; do - domain=$(echo $file \ - | sed 's|/etc/metronome/conf.d/||' \ - | sed 's|.cfg.lua||') - sanitzed_domain="$(echo $domain | sed 's/\./%2e/g')" - [[ $domain_list =~ $domain ]] \ - || ([[ $(sudo yunohost service saferemove -s metronome $file | tail -n1) == "True" ]] \ - && sudo rm -rf /var/lib/metronome/$sanitzed_domain) -done - -# Create domain directory -sudo chown -R metronome: /var/lib/metronome/ -sudo chown -R metronome: /etc/metronome/conf.d/ - -# Restart if need be -if [[ "$need_restart" == "True" ]]; then - sudo service metronome restart -else - sudo service metronome reload \ - || sudo service metronome restart -fi diff --git a/data/hooks/conf_regen/12-metronome b/data/hooks/conf_regen/12-metronome new file mode 100755 index 000000000..ff753547b --- /dev/null +++ b/data/hooks/conf_regen/12-metronome @@ -0,0 +1,74 @@ +#!/bin/bash + +set -e + +do_pre_regen() { + pending_dir=$1 + + cd /usr/share/yunohost/templates/metronome + + # create directories for pending conf + metronome_dir="${pending_dir}/etc/metronome" + metronome_conf_dir="${metronome_dir}/conf.d" + mkdir -p "$metronome_dir" "$metronome_conf_dir" + + # retrieve variables + main_domain=$(cat /etc/yunohost/current_host) + domain_list=$(sudo yunohost domain list --output-as plain --quiet) + + # install main conf file + cat metronome.cfg.lua \ + | sed "s/{{ main_domain }}/${main_domain}/g" \ + > "${metronome_dir}/metronome.cfg.lua" + + # add domain conf files + for domain in $domain_list; do + cat domain.cfg.lua.sed \ + | sed "s/{{ domain }}/${domain}/g" \ + > "${metronome_conf_dir}/${domain}.cfg.lua" + done + + # remove old domain conf files + conf_files=$(ls -1 /etc/metronome/conf.d \ + | awk '/^[a-z].*\.cfg\.lua$/ { print $1 }') + for file in $conf_files; do + domain=${file%.cfg.lua} + [[ $domain_list =~ $domain ]] \ + || touch "${metronome_conf_dir}/${file}" + done +} + +do_post_regen() { + # retrieve variables + # TODO: retrieve only changed/new domains + domain_list=$(sudo yunohost domain list --output-as plain --quiet) + + # create metronome directories for domains + for domain in $domain_list; do + sudo mkdir -p "/var/lib/metronome/${domain//./%2e}/pep" + done + + # fix permissions + sudo chown -R metronome: /var/lib/metronome/ + sudo chown -R metronome: /etc/metronome/conf.d/ + + # TODO: only restart if conf changed + sudo service metronome restart +} + +FORCE=$2 + +case "$1" in + pre) + do_pre_regen $3 + ;; + post) + do_post_regen + ;; + *) + echo "hook called with unknown argument \`$status'" >&2 + exit 1 + ;; +esac + +exit 0