Selaa lähdekoodia

Merge branch 'stretch' of https://github.com/bashrc/freedombone

Bob Mottram 7 vuotta sitten
vanhempi
commit
6791362368

+ 2
- 2
src/freedombone-app-gogs Näytä tiedosto

@@ -655,11 +655,11 @@ function install_gogs {
655 655
         echo $'No Tor installation found. Gogs onion site cannot be configured.'
656 656
         exit 877367
657 657
     fi
658
-    if ! grep -q "hidden_service_gogs" $ONION_SERVICES_FILE; then
658
+    if ! grep -q "hidden_service_gogs" "$ONION_SERVICES_FILE"; then
659 659
         { echo 'HiddenServiceDir /var/lib/tor/hidden_service_gogs/';
660 660
           echo 'HiddenServiceVersion 3';
661 661
           echo "HiddenServicePort 80 127.0.0.1:${GIT_ONION_PORT}";
662
-          echo "HiddenServicePort 9418 127.0.0.1:9418"; } >> $ONION_SERVICES_FILE
662
+          echo "HiddenServicePort 9418 127.0.0.1:9418"; } >> "$ONION_SERVICES_FILE"
663 663
         echo $'Added onion site for Gogs'
664 664
     fi
665 665
 

+ 2
- 2
src/freedombone-app-keyserver Näytä tiedosto

@@ -656,12 +656,12 @@ function install_keyserver {
656 656
 
657 657
     chown debian-sks: $sksconf_file
658 658
 
659
-    if ! grep -q "hidden_service_sks" $ONION_SERVICES_FILE; then
659
+    if ! grep -q "hidden_service_sks" "$ONION_SERVICES_FILE"; then
660 660
         { echo 'HiddenServiceDir /var/lib/tor/hidden_service_sks/';
661 661
           echo 'HiddenServiceVersion 3';
662 662
           echo "HiddenServicePort 11370 127.0.0.1:11370";
663 663
           echo "HiddenServicePort 11373 127.0.0.1:11371";
664
-          echo "HiddenServicePort 11372 127.0.0.1:11372"; } >> $ONION_SERVICES_FILE
664
+          echo "HiddenServicePort 11372 127.0.0.1:11372"; } >> "$ONION_SERVICES_FILE"
665 665
         echo $'Added onion site for sks'
666 666
     fi
667 667
 

+ 1
- 1
src/freedombone-app-matrix Näytä tiedosto

@@ -702,7 +702,7 @@ function install_home_server {
702 702
 
703 703
     #MATRIX_ONION_HOSTNAME=$(add_onion_service matrix ${MATRIX_PORT} ${MATRIX_ONION_PORT})
704 704
     add_onion_service matrix ${MATRIX_PORT} ${MATRIX_ONION_PORT}
705
-    echo "HiddenServicePort ${MATRIX_HTTP_PORT} 127.0.0.1:${MATRIX_FEDERATION_ONION_PORT}" >> $ONION_SERVICES_FILE
705
+    echo "HiddenServicePort ${MATRIX_HTTP_PORT} 127.0.0.1:${MATRIX_FEDERATION_ONION_PORT}" >> "$ONION_SERVICES_FILE"
706 706
     systemctl restart tor
707 707
 
708 708
     if [ ! "${MATRIX_PASSWORD}" ]; then

+ 44
- 1
src/freedombone-app-pleroma Näytä tiedosto

@@ -36,7 +36,7 @@ PLEROMA_CODE=
36 36
 PLEROMA_PORT=4000
37 37
 PLEROMA_ONION_PORT=8011
38 38
 PLEROMA_REPO="https://git.pleroma.social/pleroma/pleroma.git"
39
-PLEROMA_COMMIT='fc6f5bcad3ad94eefbfcb24ca361e818ed0319d6'
39
+PLEROMA_COMMIT='5b6d6d7f2d9363c494642bfda4d6e4d12daa53c7'
40 40
 PLEROMA_ADMIN_PASSWORD=
41 41
 PLEROMA_DIR=/etc/pleroma
42 42
 PLEROMA_SECRET_KEY=""
@@ -62,6 +62,24 @@ pleroma_variables=(ONION_ONLY
62 62
                    MY_EMAIL_ADDRESS
63 63
                    MY_USERNAME)
64 64
 
65
+function pleroma_add_filtering {
66
+    if grep -q "# begin filtering" $pleroma_secret; then
67
+        return
68
+    fi
69
+    sed -i '/pbkdf2_rounds/a reject: []' $pleroma_secret
70
+    sed -i '/pbkdf2_rounds/a federated_timeline_removal: [],' $pleroma_secret
71
+    sed -i '/pbkdf2_rounds/a media_nsfw: [],' $pleroma_secret
72
+    sed -i '/pbkdf2_rounds/a media_removal: [],' $pleroma_secret
73
+    sed -i '/pbkdf2_rounds/a config :pleroma, :mrf_simple,' $pleroma_secret
74
+    sed -i '/pbkdf2_rounds/a # begin filtering' $pleroma_secret
75
+
76
+    sed -i 's|reject: |  reject: |g' $pleroma_secret
77
+    sed -i 's|federated_timeline_removal: |  federated_timeline_removal: |g' $pleroma_secret
78
+    sed -i 's|media_nsfw: |  media_nsfw: |g' $pleroma_secret
79
+    sed -i 's|media_removal: |  media_removal: |g' $pleroma_secret
80
+    create_pleroma_blocklist
81
+}
82
+
65 83
 function pleroma_enable_chat {
66 84
     if [[ "$1" == 't'* || "$1" == 'y'* || "$1" == 'T'* || "$1" == 'Y'* ]]; then
67 85
         sed -i 's|"chatDisabled":.*|"chatDisabled": false,|g' $PLEROMA_DIR/priv/static/static/config.json
@@ -91,6 +109,7 @@ function create_pleroma_blocklist {
91 109
       echo 'users_query="DELETE FROM users WHERE"';
92 110
       echo 'websub_server_subscriptions_query="DELETE FROM websub_server_subscriptions WHERE"';
93 111
       echo 'websub_server_subscriptions_updated=';
112
+      echo 'filter_str=';
94 113
       echo 'while read blocked; do';
95 114
       echo "    if [[ \"\$blocked\" == *\".\"* || \"\$blocked\" == *\"@\"* ]]; then";
96 115
       echo "        if [ \${#blocked} -gt 4 ]; then";
@@ -102,6 +121,13 @@ function create_pleroma_blocklist {
102 121
       echo "            users_query=\"\${users_query} nickname ilike '%\${blocked}%'\"";
103 122
       echo '            objects_updated=1';
104 123
       echo "            if [[ \"\$blocked\" != *\"@\"* ]]; then";
124
+      echo '                # Create a filter string for the pleroma configuration';
125
+      echo "                if [ \"\$filter_str\" ]; then";
126
+      echo "                    filter_str=\"\${filter_str}, \\\"\$blocked\\\"\"";
127
+      echo '                else';
128
+      echo "                    filter_str=\"\\\"\${blocked}\\\"\"";
129
+      echo '                fi';
130
+      echo '';
105 131
       echo "                if ! grep -q \"127.0.0.1  \$blocked\" /etc/hosts; then";
106 132
       echo "                    echo \"127.0.0.1  \$blocked\" >> /etc/hosts";
107 133
       echo '                fi';
@@ -115,6 +141,19 @@ function create_pleroma_blocklist {
115 141
       echo '    fi';
116 142
       echo 'done </root/freedombone-firewall-domains.cfg';
117 143
       echo '';
144
+      echo "if [ \"\$filter_str\" ]; then";
145
+      echo "    if ! grep -q \" \$filter_str \" $pleroma_secret; then";
146
+      echo "        sed -i \"s| media_removal:.*| media_removal: [ \$filter_str ],|g\" $pleroma_secret";
147
+      echo "        sed -i \"s| federated_timeline_removal:.*| federated_timeline_removal: [ \$filter_str ],|g\" $pleroma_secret";
148
+      echo "        sed -i \"s| reject:.*| reject: [ \$filter_str ]|g\" $pleroma_secret";
149
+      echo "        chown -R pleroma:pleroma $PLEROMA_DIR";
150
+      echo '        sudo -u pleroma mix clean';
151
+      echo '        sudo -u pleroma mix deps.compile';
152
+      echo '        sudo -u pleroma mix compile';
153
+      echo '        systemctl restart pleroma';
154
+      echo '    fi';
155
+      echo 'fi';
156
+      echo '';
118 157
       echo 'cd /etc/postgresql';
119 158
       echo "if [ \$objects_updated ]; then";
120 159
       echo "    sudo -u postgres psql -d pleroma -c \"\$objects_query\"";
@@ -755,6 +794,8 @@ function upgrade_pleroma {
755 794
     read_config_param PLEROMA_DOMAIN_NAME
756 795
     read_config_param PLEROMA_EXPIRE_MONTHS
757 796
 
797
+    pleroma_add_filtering
798
+
758 799
     if ! grep -q "/media/" /etc/cron.daily/pleroma-expire; then
759 800
         rm $pleroma_expire_posts_script
760 801
     fi
@@ -1308,6 +1349,8 @@ function install_pleroma {
1308 1349
     fi
1309 1350
     sed -i 's|"chatDisabled":.*|"chatDisabled": true,|g' $PLEROMA_DIR/priv/static/static/config.json
1310 1351
 
1352
+    pleroma_add_filtering
1353
+
1311 1354
     systemctl daemon-reload
1312 1355
     systemctl enable pleroma
1313 1356
     systemctl start pleroma

+ 1
- 0
src/freedombone-app-scuttlebot Näytä tiedosto

@@ -376,6 +376,7 @@ function install_dat {
376 376
 }
377 377
 
378 378
 function mesh_install_scuttlebot {
379
+    #shellcheck disable=SC2153
379 380
     if [[ "$VARIANT" != "meshclient" && "$VARIANT" != "meshusb" ]]; then
380 381
         return
381 382
     fi

+ 55
- 3
src/freedombone-app-xmpp Näytä tiedosto

@@ -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
 

+ 16
- 16
src/freedombone-utils-onion Näytä tiedosto

@@ -34,7 +34,7 @@ HIDDEN_SERVICE_PATH='/var/lib/tor/hidden_service_'
34 34
 ONION_SERVICES_FILE=/etc/torrc.d/${PROJECT_NAME}
35 35
 
36 36
 function torrc_migrate {
37
-    if [ -f $ONION_SERVICES_FILE ]; then
37
+    if [ -f "$ONION_SERVICES_FILE" ]; then
38 38
         if grep -q "#%include /etc/torrc.d" /etc/tor/torrc; then
39 39
             sed -i 's|#%include /etc/torrc.d|%include /etc/torrc.d|g' /etc/tor/torrc
40 40
             systemctl restart tor
@@ -45,9 +45,9 @@ function torrc_migrate {
45 45
 
46 46
     mkdir /etc/torrc.d
47 47
 
48
-    grep "HiddenServiceDir\\|HiddenServiceVersion\\|HiddenServicePort" /etc/tor/torrc | grep -v "#HiddenServiceDir" >> $ONION_SERVICES_FILE
48
+    grep "HiddenServiceDir\\|HiddenServiceVersion\\|HiddenServicePort" /etc/tor/torrc | grep -v "#HiddenServiceDir" >> "$ONION_SERVICES_FILE"
49 49
 
50
-    if ! grep "HiddenServiceVersion" $ONION_SERVICES_FILE; then
50
+    if ! grep "HiddenServiceVersion" "$ONION_SERVICES_FILE"; then
51 51
         systemctl restart tor
52 52
         return
53 53
     fi
@@ -121,17 +121,17 @@ function remove_onion_service {
121 121
     nick="$3"
122 122
 
123 123
     if [ ${#nick} -gt 0 ]; then
124
-        sed -i "/stealth ${nick}/d" $ONION_SERVICES_FILE
124
+        sed -i "/stealth ${nick}/d" "$ONION_SERVICES_FILE"
125 125
     fi
126
-    sed -i "/hidden_service_${onion_service_name}/,+1 d" $ONION_SERVICES_FILE
127
-    sed -i "/hidden_service_${onion_service_name}_mobile/,+1 d" $ONION_SERVICES_FILE
128
-    sed -i "/127.0.0.1:${onion_service_port_to}/d" $ONION_SERVICES_FILE
126
+    sed -i "/hidden_service_${onion_service_name}/,+1 d" "$ONION_SERVICES_FILE"
127
+    sed -i "/hidden_service_${onion_service_name}_mobile/,+1 d" "$ONION_SERVICES_FILE"
128
+    sed -i "/127.0.0.1:${onion_service_port_to}/d" "$ONION_SERVICES_FILE"
129 129
     if [ "$3" ]; then
130
-        sed -i "/127.0.0.1:${3}/d" $ONION_SERVICES_FILE
130
+        sed -i "/127.0.0.1:${3}/d" "$ONION_SERVICES_FILE"
131 131
         if [ "$4" ]; then
132
-            sed -i "/127.0.0.1:${4}/d" $ONION_SERVICES_FILE
132
+            sed -i "/127.0.0.1:${4}/d" "$ONION_SERVICES_FILE"
133 133
             if [ "$5" ]; then
134
-                sed -i "/127.0.0.1:${5}/d" $ONION_SERVICES_FILE
134
+                sed -i "/127.0.0.1:${5}/d" "$ONION_SERVICES_FILE"
135 135
             fi
136 136
         fi
137 137
     fi
@@ -164,16 +164,16 @@ function add_onion_service {
164 164
         USE_V2_ONION_ADDRESS=
165 165
         exit 877367
166 166
     fi
167
-    if ! grep -q "hidden_service_${onion_service_name}" $ONION_SERVICES_FILE; then
168
-        echo "HiddenServiceDir ${HIDDEN_SERVICE_PATH}${onion_service_name}/" >> $ONION_SERVICES_FILE
167
+    if ! grep -q "hidden_service_${onion_service_name}" "$ONION_SERVICES_FILE"; then
168
+        echo "HiddenServiceDir ${HIDDEN_SERVICE_PATH}${onion_service_name}/" >> "$ONION_SERVICES_FILE"
169 169
         if [ ! $USE_V2_ONION_ADDRESS ]; then
170
-            echo 'HiddenServiceVersion 3' >> $ONION_SERVICES_FILE
170
+            echo 'HiddenServiceVersion 3' >> "$ONION_SERVICES_FILE"
171 171
         else
172
-            echo 'HiddenServiceVersion 2' >> $ONION_SERVICES_FILE
172
+            echo 'HiddenServiceVersion 2' >> "$ONION_SERVICES_FILE"
173 173
         fi
174
-        echo "HiddenServicePort ${onion_service_port_from} 127.0.0.1:${onion_service_port_to}" >> $ONION_SERVICES_FILE
174
+        echo "HiddenServicePort ${onion_service_port_from} 127.0.0.1:${onion_service_port_to}" >> "$ONION_SERVICES_FILE"
175 175
         if [ ${#onion_stealth_name} -gt 0 ]; then
176
-            echo "HiddenServiceAuthorizeClient stealth ${onion_stealth_name}" >> $ONION_SERVICES_FILE
176
+            echo "HiddenServiceAuthorizeClient stealth ${onion_stealth_name}" >> "$ONION_SERVICES_FILE"
177 177
         fi
178 178
     fi
179 179