diff --git a/src/freedombone-app-xmpp b/src/freedombone-app-xmpp index 0e1f3528fa4be235e3324eddb43d4fd442cde895..f5d63dc8094f2215c23da852d9bd319ff9a7591d 100755 --- a/src/freedombone-app-xmpp +++ b/src/freedombone-app-xmpp @@ -500,6 +500,7 @@ function upgrade_xmpp { xmpp_onion_addresses /etc/prosody/prosody.cfg.lua xmpp_contact_info /etc/prosody/prosody.cfg.lua xmpp_broadcast /etc/prosody/prosody.cfg.lua + xmpp_server_blacklist /etc/prosody/prosody.cfg.lua if grep -q "/etc/ssl/certs/xmpp.dhparam" /etc/prosody/prosody.cfg.lua; then cp /etc/ssl/certs/xmpp.dhparam /etc/prosody/xmpp.dhparam @@ -775,10 +776,10 @@ function xmpp_modules { echo ' "pep"; -- Personal Eventing Protocol (to support OMEMO)'; echo ' "omemo_all_access"; -- Fix for PEP with OMEMO'; echo ' "vcard"; -- Personal Eventing Protocol (to support OMEMO)'; - echo ' "vcard_muc"; -- Avatars for chat rooms'; echo ' "e2e_policy"; -- To support OMEMO'; echo ' "pep_vcard_avatar"; -- Personal Eventing Protocol (to support OMEMO)'; echo ' "blocklist"; -- Privacy lists'; + echo ' "s2s_blacklist"; -- Blacklist particular servers'; echo ' "privacy_lists"; -- Privacy lists'; echo ' "blocking"; -- Blocking command'; echo ' "block_strangers"; -- Dont allow messages from strangers'; @@ -850,6 +851,30 @@ function xmpp_broadcast { fi } +function xmpp_server_blacklist { + filename="$1" + + blacklisted_domains= + + while read -r blocked; do + if [[ "$blocked" == *"."* && "$blocked" != *"@"* ]]; then + if [ ${#blocked} -gt 4 ]; then + if [ "$blacklisted_domains" ]; then + blacklisted_domains="${blacklisted_domains}, \"$blocked\"" + else + blacklisted_domains="\"$blocked\"" + fi + fi + fi + done <"$FIREWALL_DOMAINS" + + if ! grep -q "s2s_blacklist" "$filename"; then + echo "s2s_blacklist = { $blacklisted_domains }" >> "$filename" + else + sed -i "s|s2s_blacklist =.*|s2s_blacklist = { $blacklisted_domains }|g" "$filename" + fi +} + function xmpp_create_config { echo "admins = { \"$MY_USERNAME@$DEFAULT_DOMAIN_NAME\", \"notification@$DEFAULT_DOMAIN_NAME\" }" > /etc/prosody/prosody.cfg.lua echo 'plugin_paths = { "/var/lib/prosody/prosody-modules" }' >> /etc/prosody/prosody.cfg.lua @@ -858,7 +883,8 @@ function xmpp_create_config { echo '' >> /etc/prosody/prosody.cfg.lua xmpp_onion_addresses /etc/prosody/prosody.cfg.lua xmpp_contact_info /etc/prosody/prosody.cfg.lua - xmpp_broadcast /etc/prosody/prosody.cfg.lua + xmpp_broadcast /etc/prosody/prosody.cfg.lua + xmpp_server_blacklist /etc/prosody/prosody.cfg.lua { echo ''; echo 'allow_registration = false;'; echo ''; @@ -967,6 +993,7 @@ function xmpp_create_config { echo ' "muc_log";'; echo ' "mam_muc";'; echo ' "vcard_muc";'; + echo ' "s2s_blacklist";'; echo ' "muc_log_http";'; echo ' }'; echo 'storage = { muc_log = "sql"; }'; diff --git a/src/freedombone-controlpanel b/src/freedombone-controlpanel index 95295b613001181a89a92deb4f8dc96ed005268c..5f6efcab9ff1e2033fea4a3d3232fb8648451e4f 100755 --- a/src/freedombone-controlpanel +++ b/src/freedombone-controlpanel @@ -1665,6 +1665,10 @@ function domain_blocking_add { if [ ${#blocked_domain} -gt 2 ]; then if [[ "${blocked_domain}" == *'.'* ]]; then firewall_block_domain "$blocked_domain" + if [ -d /etc/prosody ]; then + xmpp_server_blacklist /etc/prosody/prosody.cfg.lua + systemctl restart prosody + fi if [[ "${blocked_domain}" != *'@'* ]]; then dialog --title $"Block a domain" \ --msgbox $"The domain $blocked_domain has been blocked" 6 40 @@ -1714,6 +1718,10 @@ function domain_blocking_remove { if [ ${#unblocked_domain} -gt 2 ]; then if [[ "${unblocked_domain}" == *'.'* ]]; then firewall_unblock_domain "$unblocked_domain" + if [ -d /etc/prosody ]; then + xmpp_server_blacklist /etc/prosody/prosody.cfg.lua + systemctl restart prosody + fi if [[ "${unblocked_domain}" != *'@'* ]]; then dialog --title $"Unblock a domain" \ --msgbox $"The domain $unblocked_domain has been unblocked" 6 40