浏览代码

Enable xmpp via tor

Bob Mottram 9 年前
父节点
当前提交
ae79acb02b
共有 1 个文件被更改,包括 42 次插入2 次删除
  1. 42
    2
      src/freedombone

+ 42
- 2
src/freedombone 查看文件

281
 # Directory where XMPP settings are stored
281
 # Directory where XMPP settings are stored
282
 XMPP_DIRECTORY="/var/lib/prosody"
282
 XMPP_DIRECTORY="/var/lib/prosody"
283
 
283
 
284
+# port used for xmpp as an onion service
285
+XMPP_ONION_PORT=8091
286
+
284
 # file containing a list of remote locations to backup to
287
 # file containing a list of remote locations to backup to
285
 # Format: [username@friendsdomain//home/username] [ssh_password]
288
 # Format: [username@friendsdomain//home/username] [ssh_password]
286
 # With the only space character being between the server and the password
289
 # With the only space character being between the server and the password
6722
         return
6725
         return
6723
     fi
6726
     fi
6724
     apt-get -y install lua-sec
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
     if [ ! -d /etc/prosody ]; then
6730
     if [ ! -d /etc/prosody ]; then
6728
         echo $"ERROR: prosody does not appear to have installed. $CHECK_MESSAGE"
6731
         echo $"ERROR: prosody does not appear to have installed. $CHECK_MESSAGE"
6729
         exit 52
6732
         exit 52
6730
     fi
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
     if [ ! -f /etc/ssl/certs/xmpp.dhparam ]; then
6751
     if [ ! -f /etc/ssl/certs/xmpp.dhparam ]; then
6733
         ${PROJECT_NAME}-addcert -h xmpp --dhkey $DH_KEYLENGTH
6752
         ${PROJECT_NAME}-addcert -h xmpp --dhkey $DH_KEYLENGTH
6734
         check_certificates xmpp
6753
         check_certificates xmpp
6764
         echo '  "bosh"; -- Enable mod_bosh' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6783
         echo '  "bosh"; -- Enable mod_bosh' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6765
         echo '  "tls"; -- Enable mod_tls' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6784
         echo '  "tls"; -- Enable mod_tls' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6766
         echo '  "saslauth"; -- Enable mod_saslauth' >> /etc/prosody/conf.avail/xmpp.cfg.lua
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
         echo '}' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6787
         echo '}' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6768
         echo '' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6788
         echo '' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6769
         echo 'c2s_require_encryption = true' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6789
         echo 'c2s_require_encryption = true' >> /etc/prosody/conf.avail/xmpp.cfg.lua
6803
     sed -i 's|certificate = "/etc/prosody/certs/example.com.crt"|certificate = "/etc/ssl/certs/xmpp.crt"|g' /etc/prosody/prosody.cfg.lua
6823
     sed -i 's|certificate = "/etc/prosody/certs/example.com.crt"|certificate = "/etc/ssl/certs/xmpp.crt"|g' /etc/prosody/prosody.cfg.lua
6804
     sed -i "s/example.com/$DEFAULT_DOMAIN_NAME/g" /etc/prosody/prosody.cfg.lua
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
     touch /home/$MY_USERNAME/README
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
     if ! grep -q "Your XMPP password is" /home/$MY_USERNAME/README; then
6848
     if ! grep -q "Your XMPP password is" /home/$MY_USERNAME/README; then
6810
         if [ -f $IMAGE_PASSWORD_FILE ]; then
6849
         if [ -f $IMAGE_PASSWORD_FILE ]; then
6811
             XMPP_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
6850
             XMPP_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
6817
         echo '' >> /home/$MY_USERNAME/README
6856
         echo '' >> /home/$MY_USERNAME/README
6818
         echo $'XMPP' >> /home/$MY_USERNAME/README
6857
         echo $'XMPP' >> /home/$MY_USERNAME/README
6819
         echo '====' >> /home/$MY_USERNAME/README
6858
         echo '====' >> /home/$MY_USERNAME/README
6859
+        echo $"XMPP onion domain: ${XMPP_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
6820
         echo $"Your XMPP password is: $XMPP_PASSWORD" >> /home/$MY_USERNAME/README
6860
         echo $"Your XMPP password is: $XMPP_PASSWORD" >> /home/$MY_USERNAME/README
6821
         echo $'You can change it with: ' >> /home/$MY_USERNAME/README
6861
         echo $'You can change it with: ' >> /home/$MY_USERNAME/README
6822
         echo '' >> /home/$MY_USERNAME/README
6862
         echo '' >> /home/$MY_USERNAME/README