Browse Source

Enable xmpp via tor

Bob Mottram 9 years ago
parent
commit
ae79acb02b
1 changed files with 42 additions and 2 deletions
  1. 42
    2
      src/freedombone

+ 42
- 2
src/freedombone View File

@@ -281,6 +281,9 @@ MARIADB_PASSWORD=
281 281
 # Directory where XMPP settings are stored
282 282
 XMPP_DIRECTORY="/var/lib/prosody"
283 283
 
284
+# port used for xmpp as an onion service
285
+XMPP_ONION_PORT=8091
286
+
284 287
 # file containing a list of remote locations to backup to
285 288
 # Format: [username@friendsdomain//home/username] [ssh_password]
286 289
 # With the only space character being between the server and the password
@@ -6722,13 +6725,29 @@ function install_xmpp {
6722 6725
         return
6723 6726
     fi
6724 6727
     apt-get -y install lua-sec
6725
-    apt-get -y install prosody
6728
+    apt-get -y install prosody prosody-modules mercurial
6726 6729
 
6727 6730
     if [ ! -d /etc/prosody ]; then
6728 6731
         echo $"ERROR: prosody does not appear to have installed. $CHECK_MESSAGE"
6729 6732
         exit 52
6730 6733
     fi
6731 6734
 
6735
+    # obtain the prosody modules
6736
+    cd $INSTALL_DIR
6737
+    hg clone https://hg.prosody.im/prosody-modules/ prosody-modules
6738
+    if [ ! -d $INSTALL_DIR/prosody-modules/mod_onions ]; then
6739
+        echo $'mod_onions prosody module could not be found'
6740
+        exit 73254
6741
+    fi
6742
+
6743
+    # install the onions module
6744
+    cp $INSTALL_DIR/prosody-modules/mod_onions/mod_onions.lua /usr/lib/prosody/modules/mod_onions.lua
6745
+    if [ ! -f /usr/lib/prosody/modules/mod_onions.lua ]; then
6746
+        echo $'mod_onions.lua could not be copied to the prosody modules directory'
6747
+        exit 63952
6748
+    fi
6749
+
6750
+    # create a certificate
6732 6751
     if [ ! -f /etc/ssl/certs/xmpp.dhparam ]; then
6733 6752
         ${PROJECT_NAME}-addcert -h xmpp --dhkey $DH_KEYLENGTH
6734 6753
         check_certificates xmpp
@@ -6764,6 +6783,7 @@ function install_xmpp {
6764 6783
         echo '  "bosh"; -- Enable mod_bosh' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6765 6784
         echo '  "tls"; -- Enable mod_tls' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6766 6785
         echo '  "saslauth"; -- Enable mod_saslauth' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6786
+        echo '  "onions"; -- Enable chat via onion service' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6767 6787
         echo '}' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6768 6788
         echo '' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6769 6789
         echo 'c2s_require_encryption = true' >> /etc/prosody/conf.avail/xmpp.cfg.lua
@@ -6803,9 +6823,28 @@ function install_xmpp {
6803 6823
     sed -i 's|certificate = "/etc/prosody/certs/example.com.crt"|certificate = "/etc/ssl/certs/xmpp.crt"|g' /etc/prosody/prosody.cfg.lua
6804 6824
     sed -i "s/example.com/$DEFAULT_DOMAIN_NAME/g" /etc/prosody/prosody.cfg.lua
6805 6825
 
6806
-    service prosody restart
6826
+    systemctl restart prosody
6807 6827
     touch /home/$MY_USERNAME/README
6808 6828
 
6829
+    if [ ! -d /var/lib/tor ]; then
6830
+        echo $'No Tor installation found. XMPP onion site cannot be configured.'
6831
+        exit 877367
6832
+    fi
6833
+    if ! grep -q "hidden_service_xmpp" /etc/tor/torrc; then
6834
+        echo 'HiddenServiceDir /var/lib/tor/hidden_service_xmpp/' >> /etc/tor/torrc
6835
+        echo "HiddenServicePort 5222 127.0.0.1:${XMPP_ONION_PORT}" >> /etc/tor/torrc
6836
+        echo $'Added onion site for XMPP chat'
6837
+    fi
6838
+
6839
+    systemctl restart tor
6840
+
6841
+    if [ ! -f /var/lib/tor/hidden_service_owncloud/hostname ]; then
6842
+        echo $'XMPP onion site hostname not found'
6843
+        exit 65349
6844
+    fi
6845
+    XMPP_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_xmpp/hostname)
6846
+    echo "XMPP onion domain:${XMPP_ONION_HOSTNAME}" >> $COMPLETION_FILE
6847
+
6809 6848
     if ! grep -q "Your XMPP password is" /home/$MY_USERNAME/README; then
6810 6849
         if [ -f $IMAGE_PASSWORD_FILE ]; then
6811 6850
             XMPP_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
@@ -6817,6 +6856,7 @@ function install_xmpp {
6817 6856
         echo '' >> /home/$MY_USERNAME/README
6818 6857
         echo $'XMPP' >> /home/$MY_USERNAME/README
6819 6858
         echo '====' >> /home/$MY_USERNAME/README
6859
+        echo $"XMPP onion domain: ${XMPP_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
6820 6860
         echo $"Your XMPP password is: $XMPP_PASSWORD" >> /home/$MY_USERNAME/README
6821 6861
         echo $'You can change it with: ' >> /home/$MY_USERNAME/README
6822 6862
         echo '' >> /home/$MY_USERNAME/README