#!/bin/bash set -e source="/usr/src/prosody-modules" target="/usr/local/lib/prosody/custom-modules" config="/usr/local/etc/prosody/conf.d/01-modules.cfg.lua" cd ${source} usage() { echo "usage: $0 ext-name [ext-name ...]" echo " ie: $0 carbons e2e_policy proxy65" echo echo 'Possible values for ext-name:' find . -mindepth 1 -maxdepth 1 -type d | sort | sed s/\.\\/mod_//g | xargs } exts= for ext; do if [ -z "mod_$ext" ]; then continue fi if [ ! -d "mod_$ext" ]; then echo >&2 "error: $PWD/mod_$ext does not exist" echo >&2 usage >&2 exit 1 fi exts="$exts $ext" done if [ -z "$exts" ]; then usage >&2 exit 1 fi for ext in $exts; do echo "Installing mod_${ext}" echo " - copying to ${target}" cp -r "${source}/mod_${ext}" "${target}/" # Skip this if the modules should not be added to modules_enabled. if [ "$ext" != "http_upload" ] && [ "$ext" != "vcard_muc" ] ; then echo " - enabling within ${config}" new_config=$(cat "${config}" | module="${ext}" perl -0pe 's/(modules_enabled[ ]*=[ ]*{[^}]*)};/$1\n\t"$ENV{module}";\n};/') echo "${new_config}" > "${config}" fi # firewall module configuration if [ "$ext" == "firewall" ] ; then echo " - setting up mod_${ext}" new_config=$(cat "${config}" | echo -e "\nlocal spam_blocklist = os.getenv(\"SPAM_BLOCKLIST\") and \"/usr/local/etc/prosody/firewall/\" .. os.getenv(\"SPAM_BLOCKLIST\") or \"module:scripts/spam-blocklists.pfw\"\n\nfirewall_scripts = {\n\tspam_blocklist;\n};") echo "${new_config}" >> "${config}" fi done