|
@@ -51,6 +51,7 @@ prosody_nightly_url="https://prosody.im/nightly/${prosody_latest_version}/latest
|
51
|
51
|
# From https://hg.prosody.im/prosody-modules
|
52
|
52
|
prosody_modules_filename='prosody-modules-20180322.tar.gz'
|
53
|
53
|
prosody_modules_hash='982d0dfcef98e9cb9cee4cc3801b8ce9a503a32e44c32b99df6fe94545b90072'
|
|
54
|
+xmpp_encryption_warning=$"For security reasons, OMEMO or PGP encryption is required for conversations on this server."
|
54
|
55
|
|
55
|
56
|
xmpp_variables=(ONION_ONLY
|
56
|
57
|
INSTALLED_WITHIN_DOCKER
|
|
@@ -62,6 +63,37 @@ xmpp_variables=(ONION_ONLY
|
62
|
63
|
DEFAULT_DOMAIN_NAME
|
63
|
64
|
XMPP_DOMAIN_CODE)
|
64
|
65
|
|
|
66
|
+function xmpp_update_e2e_policy {
|
|
67
|
+ filename="$1"
|
|
68
|
+
|
|
69
|
+ read_config_param DEFAULT_DOMAIN_NAME
|
|
70
|
+ read_config_param ONION_ONLY
|
|
71
|
+
|
|
72
|
+ if ! grep -q "e2e_policy_muc" "$filename"; then
|
|
73
|
+ echo "e2e_policy_muc = \"none\"" >> "$filename"
|
|
74
|
+ else
|
|
75
|
+ sed -i 's|e2e_policy_muc.*|e2e_policy_muc = "none"|g' "$filename"
|
|
76
|
+ fi
|
|
77
|
+ if ! grep -q "e2e_policy_chat" "$filename"; then
|
|
78
|
+ echo "e2e_policy_chat = \"required\"" >> "$filename"
|
|
79
|
+ else
|
|
80
|
+ sed -i 's|e2e_policy_chat.*|e2e_policy_chat = "required"|g' "$filename"
|
|
81
|
+ fi
|
|
82
|
+ if ! grep -q "e2e_policy_message_required_chat" "$filename"; then
|
|
83
|
+ echo "e2e_policy_message_required_chat = \"$xmpp_encryption_warning\"" >> "$filename"
|
|
84
|
+ else
|
|
85
|
+ sed -i "s|e2e_policy_message_required_chat.*|e2e_policy_message_required_chat = \"$xmpp_encryption_warning\"|g" "$filename"
|
|
86
|
+ fi
|
|
87
|
+
|
|
88
|
+ if [[ "$ONION_ONLY" != 'no' ]]; then
|
|
89
|
+ XMPP_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_xmpp/hostname)
|
|
90
|
+ sed -i "s|VirtualHost \".*.onion.*|VirtualHost \"${XMPP_ONION_HOSTNAME}\"|g" "$filename"
|
|
91
|
+ # TLS is not strictly needed for onion transport security
|
|
92
|
+ sed -i 's|c2s_require_encryption =.*|c2s_require_encryption = false|g' "$filename"
|
|
93
|
+ sed -i 's|s2s_require_encryption =.*|s2s_require_encryption = false|g' "$filename"
|
|
94
|
+ fi
|
|
95
|
+}
|
|
96
|
+
|
65
|
97
|
function logging_on_xmpp {
|
66
|
98
|
if [ -d /etc/prosody ]; then
|
67
|
99
|
if [ ! -d /var/log/prosody ]; then
|
|
@@ -425,6 +457,10 @@ function upgrade_xmpp {
|
425
|
457
|
usermod -a -G ssl-cert prosody
|
426
|
458
|
fi
|
427
|
459
|
fi
|
|
460
|
+
|
|
461
|
+ xmpp_update_e2e_policy /etc/prosody/conf.avail/xmpp.cfg.lua
|
|
462
|
+ xmpp_update_e2e_policy /etc/prosody/prosody.cfg.lua
|
|
463
|
+
|
428
|
464
|
prosody_daemon_restart_script
|
429
|
465
|
function_check update_prosody_modules
|
430
|
466
|
update_prosody_modules
|
|
@@ -608,7 +644,7 @@ function remove_xmpp {
|
608
|
644
|
|
609
|
645
|
function_check remove_onion_service
|
610
|
646
|
remove_onion_service xmpp 5222 5223 5269
|
611
|
|
- sed -i '/HiddenServiceVersion 2/d' $ONION_SERVICES_FILE
|
|
647
|
+ sed -i '/HiddenServiceVersion 2/d' "$ONION_SERVICES_FILE"
|
612
|
648
|
|
613
|
649
|
apt-mark -q unhold prosody
|
614
|
650
|
apt-get -yq remove --purge prosody
|
|
@@ -818,11 +854,16 @@ function xmpp_create_config {
|
818
|
854
|
else
|
819
|
855
|
echo " dhparam = \"/etc/ssl/certs/xmpp.dhparam\";" >> /etc/prosody/prosody.cfg.lua
|
820
|
856
|
fi
|
|
857
|
+
|
821
|
858
|
{ echo '}';
|
822
|
859
|
echo '';
|
823
|
860
|
echo 'c2s_require_encryption = true';
|
824
|
861
|
echo 's2s_require_encryption = true';
|
825
|
862
|
echo '';
|
|
863
|
+ echo 'e2e_policy_muc = "none"';
|
|
864
|
+ echo 'e2e_policy_chat = "required"';
|
|
865
|
+ echo "e2e_policy_message_required_chat = \"$xmpp_encryption_warning\"";
|
|
866
|
+ echo '';
|
826
|
867
|
echo 's2s_secure_auth = false';
|
827
|
868
|
echo '';
|
828
|
869
|
echo 'authentication = "internal_hashed"';
|
|
@@ -838,6 +879,9 @@ function xmpp_create_config {
|
838
|
879
|
echo ''; } >> /etc/prosody/prosody.cfg.lua
|
839
|
880
|
if [[ "$ONION_ONLY" != 'no' ]]; then
|
840
|
881
|
echo "VirtualHost \"${XMPP_ONION_HOSTNAME}\"" >> /etc/prosody/prosody.cfg.lua
|
|
882
|
+ # TLS is not needed for onion transport security
|
|
883
|
+ sed -i 's|s2s_require_encryption =.*|s2s_require_encryption = false|g' /etc/prosody/prosody.cfg.lua
|
|
884
|
+ sed -i 's|c2s_require_encryption =.*|c2s_require_encryption = false|g' /etc/prosody/prosody.cfg.lua
|
841
|
885
|
else
|
842
|
886
|
echo "VirtualHost \"${DEFAULT_DOMAIN_NAME}\"" >> /etc/prosody/prosody.cfg.lua
|
843
|
887
|
fi
|
|
@@ -1068,6 +1112,14 @@ function install_xmpp {
|
1068
|
1112
|
else
|
1069
|
1113
|
sed -i 's|s2s_require_encryption.*|s2s_require_encryption = true|g' /etc/prosody/conf.avail/xmpp.cfg.lua
|
1070
|
1114
|
fi
|
|
1115
|
+
|
|
1116
|
+ if [[ "$ONION_ONLY" != 'no' ]]; then
|
|
1117
|
+ sed -i 's|c2s_require_encryption.*|c2s_require_encryption = false|g' /etc/prosody/conf.avail/xmpp.cfg.lua
|
|
1118
|
+ sed -i 's|s2s_require_encryption.*|s2s_require_encryption = false|g' /etc/prosody/conf.avail/xmpp.cfg.lua
|
|
1119
|
+ fi
|
|
1120
|
+
|
|
1121
|
+ xmpp_update_e2e_policy /etc/prosody/conf.avail/xmpp.cfg.lua
|
|
1122
|
+
|
1071
|
1123
|
if ! grep -q "allow_unencrypted_plain_auth" /etc/prosody/conf.avail/xmpp.cfg.lua; then
|
1072
|
1124
|
echo 'allow_unencrypted_plain_auth = false' >> /etc/prosody/conf.avail/xmpp.cfg.lua
|
1073
|
1125
|
else
|
|
@@ -1079,11 +1131,11 @@ function install_xmpp {
|
1079
|
1131
|
echo $'No Tor installation found. xmpp onion site cannot be configured.'
|
1080
|
1132
|
exit 877367
|
1081
|
1133
|
fi
|
1082
|
|
- if ! grep -q "hidden_service_xmpp" $ONION_SERVICES_FILE; then
|
|
1134
|
+ if ! grep -q "hidden_service_xmpp" "$ONION_SERVICES_FILE"; then
|
1083
|
1135
|
{ echo 'HiddenServiceDir /var/lib/tor/hidden_service_xmpp/';
|
1084
|
1136
|
echo 'HiddenServiceVersion 2';
|
1085
|
1137
|
echo "HiddenServicePort 5222 127.0.0.1:5222";
|
1086
|
|
- echo "HiddenServicePort 5269 127.0.0.1:5269"; } >> $ONION_SERVICES_FILE
|
|
1138
|
+ echo "HiddenServicePort 5269 127.0.0.1:5269"; } >> "$ONION_SERVICES_FILE"
|
1087
|
1139
|
echo $'Added onion site for xmpp chat'
|
1088
|
1140
|
fi
|
1089
|
1141
|
|