瀏覽代碼

Local backups

Bob Mottram 8 年之前
父節點
當前提交
783d66fdf3

+ 6
- 6
src/freedombone-app-mumble 查看文件

@@ -46,13 +46,13 @@ function upgrade_mumble {
46 46
 function backup_local_mumble {
47 47
 	if [ -f /etc/mumble-server.ini ]; then
48 48
 		echo $"Backing up Mumble settings"
49
-		if [ ! -d /root/tempvoipbackup ]; then
50
-			mkdir -p /root/tempvoipbackup
49
+		temp_backup_dir=/root/tempvoipbackup
50
+		if [ ! -d $temp_backup_dir ]; then
51
+			mkdir -p $temp_backup_dir
51 52
 		fi
52
-		cp -f /etc/mumble-server.ini /root/tempvoipbackup
53
-		cp -f /var/lib/mumble-server/mumble-server.sqlite /root/tempvoipbackup
54
-		cp -f /etc/sipwitch.conf /root/tempvoipbackup
55
-		backup_directory_to_usb /root/tempvoipbackup voip
53
+		cp -f /etc/mumble-server.ini $temp_backup_dir
54
+		cp -f /var/lib/mumble-server/mumble-server.sqlite $temp_backup_dir
55
+		backup_directory_to_usb $temp_backup_dir voip
56 56
 		echo $"Mumble settings backup complete"
57 57
 	fi
58 58
 }

+ 11
- 2
src/freedombone-app-sip 查看文件

@@ -38,11 +38,20 @@ VOIP_TURN_TLS_PORT=5349
38 38
 VOIP_TURN_NONCE=
39 39
 
40 40
 function upgrade_sip {
41
-    echo -n ''
41
+	echo -n ''
42 42
 }
43 43
 
44 44
 function backup_local_sip {
45
-	echo -n ''
45
+	if [ -f /etc/sipwitch.conf ]; then
46
+		echo $"Backing up SIP settings"
47
+		temp_backup_dir=/root/tempsipbackup
48
+		if [ ! -d $temp_backup_dir ]; then
49
+			mkdir -p $temp_backup_dir
50
+		fi
51
+		cp -f /etc/sipwitch.conf $temp_backup_dir
52
+		backup_directory_to_usb $temp_backup_dir sip
53
+		echo $"SIP settings backup complete"
54
+	fi
46 55
 }
47 56
 
48 57
 function backup_remote_sip {

+ 11
- 3
src/freedombone-app-syncthing 查看文件

@@ -40,15 +40,23 @@ SYNCTHING_SHARED_DATA=/var/lib/syncthing/SyncShared
40 40
 SYNCTHING_USER_IDS_FILE='.syncthingids'
41 41
 
42 42
 function upgrade_syncthing {
43
-    echo -n ''
43
+	echo -n ''
44 44
 }
45 45
 
46 46
 function backup_local_syncthing {
47
-    echo -n ''
47
+	if [ -d /var/lib/syncthing/SyncShared ]; then
48
+		echo $"Backing up syncthing"
49
+
50
+		function_check backup_directory_to_usb
51
+		backup_directory_to_usb /var/lib/syncthing/SyncShared syncthingshared
52
+		backup_directory_to_usb /root/.config/syncthing syncthingconfig
53
+
54
+		echo $"Backup to syncthing complete"
55
+	fi
48 56
 }
49 57
 
50 58
 function backup_remote_syncthing {
51
-    echo -n ''
59
+	echo -n ''
52 60
 }
53 61
 
54 62
 function remove_syncthing {

+ 15
- 1
src/freedombone-app-tox 查看文件

@@ -58,7 +58,21 @@ function upgrade_tox {
58 58
 }
59 59
 
60 60
 function backup_local_tox {
61
-	echo ''
61
+	if [ -d /var/lib/tox-bootstrapd ]; then
62
+		echo $"Backing up Tox"
63
+
64
+		if [ -d /var/lib/tox-bootstrapd ]; then
65
+			cp /etc/tox-bootstrapd.conf /var/lib/tox-bootstrapd
66
+			if [ -d /var/lib/tox-bootstrapd/Maildir ]; then
67
+				rm -rf /var/lib/tox-bootstrapd/Maildir
68
+			fi
69
+		fi
70
+
71
+		function_check backup_directory_to_usb
72
+		backup_directory_to_usb /var/lib/tox-bootstrapd tox
73
+
74
+		echo $"Backup of Tox complete"
75
+	fi
62 76
 }
63 77
 
64 78
 function backup_remote_tox {

+ 3
- 3
src/freedombone-app-vpn 查看文件

@@ -31,15 +31,15 @@
31 31
 VARIANTS=''
32 32
 
33 33
 function upgrade_vpn {
34
-    echo ''
34
+    echo -n ''
35 35
 }
36 36
 
37 37
 function backup_local_vpn {
38
-	echo ''
38
+	echo -n ''
39 39
 }
40 40
 
41 41
 function backup_remote_vpn {
42
-	echo ''
42
+	echo -n ''
43 43
 }
44 44
 
45 45
 function remove_vpn {

+ 8
- 3
src/freedombone-app-webmail 查看文件

@@ -47,11 +47,16 @@ function upgrade_webmail {
47 47
 }
48 48
 
49 49
 function backup_local_webmail {
50
-	echo ''
50
+	echo $"Backing up webmail"
51
+
52
+	function_check backup_database_to_usb
53
+	backup_database_to_usb webmail
54
+
55
+	echo $"Backing up webmail complete"
51 56
 }
52 57
 
53 58
 function backup_remote_webmail {
54
-	echo ''
59
+	echo -n ''
55 60
 }
56 61
 
57 62
 function remove_webmail {
@@ -65,7 +70,7 @@ function remove_webmail {
65 70
 	function_check remove_onion_service
66 71
 	remove_onion_service webmail ${WEBMAIL_ONION_PORT}
67 72
 	function_check drop_database
68
-	drop_database webmain
73
+	drop_database webmail
69 74
 	if [ -d $WEB_PATH/webmail ]; then
70 75
 		rm -rf $WEB_PATH/webmail
71 76
 	fi

+ 13
- 3
src/freedombone-app-wiki 查看文件

@@ -37,15 +37,25 @@ WIKI_CODE=
37 37
 WIKI_ONION_PORT=8089
38 38
 
39 39
 function upgrade_wiki {
40
-    echo ''
40
+	echo -n ''
41 41
 }
42 42
 
43 43
 function backup_local_wiki {
44
-    echo ''
44
+	source_directory=/var/lib/dokuwiki
45
+	if [ -d $source_directory ]; then
46
+		dest_directory=wiki
47
+		echo $"Backing up $source_directory to $dest_directory"
48
+
49
+		function_check backup_directory_to_usb
50
+		backup_directory_to_usb $source_directory $dest_directory
51
+		backup_directory_to_usb /etc/dokuwiki wiki2
52
+
53
+		echo $"Backup to $dest_directory complete"
54
+	fi
45 55
 }
46 56
 
47 57
 function backup_remote_wiki {
48
-    echo ''
58
+	echo -n ''
49 59
 }
50 60
 
51 61
 function remove_wiki {

+ 365
- 356
src/freedombone-app-xmpp 查看文件

@@ -38,389 +38,398 @@ XMPP_CIPHERS='"EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+
38 38
 XMPP_ECC_CURVE='"secp384r1"'
39 39
 
40 40
 function update_prosody_modules {
41
-    if [ ! -d $INSTALL_DIR/prosody-modules ]; then
42
-        return
43
-    fi
44
-    if [ ! -d /usr/lib/prosody ]; then
45
-        return
46
-    fi
47
-
48
-    cd $INSTALL_DIR/prosody-modules
49
-    hg pull
50
-    hg update
51
-
52
-    # support onion addresses
53
-    if [ -f $INSTALL_DIR/prosody-modules/mod_onions/mod_onions.lua ]; then
54
-        cp $INSTALL_DIR/prosody-modules/mod_onions/mod_onions.lua /usr/lib/prosody/modules/mod_onions.lua
55
-    fi
56
-
57
-    # XEP-0313 message archive management
58
-    # https://modules.prosody.im/mod_mam.html
59
-    # Allows you to download your previous messages onto a new client
60
-    # This only applies if you are not using forward secret crypto
61
-    # such as OTR or OMEMO (eg. OpenPGP)
62
-    if [ -d $INSTALL_DIR/prosody-modules/mod_mam ]; then
63
-        cp $INSTALL_DIR/prosody-modules/mod_mam/*.lua /usr/lib/prosody/modules
64
-    fi
65
-
66
-    # XEP-0352 Client State Indication
67
-    # Notifies the server if the app is in the background or not
68
-    if [ -d $INSTALL_DIR/prosody-modules/mod_csi ]; then
69
-        cp $INSTALL_DIR/prosody-modules/mod_csi/*.lua /usr/lib/prosody/modules
70
-    fi
71
-
72
-    # XEP-0280 Message Carbons
73
-    # Ensures all messages get delivered to all clients (if you have a mobile and desktop client)
74
-    if [ -d $INSTALL_DIR/prosody-modules/mod_carbons ]; then
75
-        cp $INSTALL_DIR/prosody-modules/mod_carbons/*.lua /usr/lib/prosody/modules
76
-    fi
77
-
78
-    # XEP-0198 Stream management
79
-    # Helps mobile apps recover when a device switches networks.
80
-    if [ -d $INSTALL_DIR/prosody-modules/mod_smacks ]; then
81
-        cp $INSTALL_DIR/prosody-modules/mod_smacks/*.lua /usr/lib/prosody/modules
82
-    fi
83
-    if [ -d $INSTALL_DIR/prosody-modules/mod_smacks_offline ]; then
84
-        cp $INSTALL_DIR/prosody-modules/mod_smacks_offline/*.lua /usr/lib/prosody/modules
85
-    fi
86
-
87
-    # XEP-0191: blocking
88
-    if [ -d $INSTALL_DIR/prosody-modules/mod_blocking ]; then
89
-        cp $INSTALL_DIR/prosody-modules/mod_blocking/*.lua /usr/lib/prosody/modules
90
-    fi
91
-
92
-    # XEP-0016 Privacy lists
93
-    if [ -d $INSTALL_DIR/prosody-modules/mod_privacy_lists ]; then
94
-        cp $INSTALL_DIR/prosody-modules/mod_privacy_lists/*.lua /usr/lib/prosody/modules
95
-    fi
41
+	if [ ! -d $INSTALL_DIR/prosody-modules ]; then
42
+		return
43
+	fi
44
+	if [ ! -d /usr/lib/prosody ]; then
45
+		return
46
+	fi
47
+
48
+	cd $INSTALL_DIR/prosody-modules
49
+	hg pull
50
+	hg update
51
+
52
+	# support onion addresses
53
+	if [ -f $INSTALL_DIR/prosody-modules/mod_onions/mod_onions.lua ]; then
54
+		cp $INSTALL_DIR/prosody-modules/mod_onions/mod_onions.lua /usr/lib/prosody/modules/mod_onions.lua
55
+	fi
56
+
57
+	# XEP-0313 message archive management
58
+	# https://modules.prosody.im/mod_mam.html
59
+	# Allows you to download your previous messages onto a new client
60
+	# This only applies if you are not using forward secret crypto
61
+	# such as OTR or OMEMO (eg. OpenPGP)
62
+	if [ -d $INSTALL_DIR/prosody-modules/mod_mam ]; then
63
+		cp $INSTALL_DIR/prosody-modules/mod_mam/*.lua /usr/lib/prosody/modules
64
+	fi
65
+
66
+	# XEP-0352 Client State Indication
67
+	# Notifies the server if the app is in the background or not
68
+	if [ -d $INSTALL_DIR/prosody-modules/mod_csi ]; then
69
+		cp $INSTALL_DIR/prosody-modules/mod_csi/*.lua /usr/lib/prosody/modules
70
+	fi
71
+
72
+	# XEP-0280 Message Carbons
73
+	# Ensures all messages get delivered to all clients (if you have a mobile and desktop client)
74
+	if [ -d $INSTALL_DIR/prosody-modules/mod_carbons ]; then
75
+		cp $INSTALL_DIR/prosody-modules/mod_carbons/*.lua /usr/lib/prosody/modules
76
+	fi
77
+
78
+	# XEP-0198 Stream management
79
+	# Helps mobile apps recover when a device switches networks.
80
+	if [ -d $INSTALL_DIR/prosody-modules/mod_smacks ]; then
81
+		cp $INSTALL_DIR/prosody-modules/mod_smacks/*.lua /usr/lib/prosody/modules
82
+	fi
83
+	if [ -d $INSTALL_DIR/prosody-modules/mod_smacks_offline ]; then
84
+		cp $INSTALL_DIR/prosody-modules/mod_smacks_offline/*.lua /usr/lib/prosody/modules
85
+	fi
86
+
87
+	# XEP-0191: blocking
88
+	if [ -d $INSTALL_DIR/prosody-modules/mod_blocking ]; then
89
+		cp $INSTALL_DIR/prosody-modules/mod_blocking/*.lua /usr/lib/prosody/modules
90
+	fi
91
+
92
+	# XEP-0016 Privacy lists
93
+	if [ -d $INSTALL_DIR/prosody-modules/mod_privacy_lists ]; then
94
+		cp $INSTALL_DIR/prosody-modules/mod_privacy_lists/*.lua /usr/lib/prosody/modules
95
+	fi
96 96
 }
97 97
 
98 98
 function upgrade_xmpp {
99
-    if ! grep -Fxq "install_xmpp_main" $COMPLETION_FILE; then
100
-        return
101
-    fi
102
-    function_check update_prosody_modules
103
-    update_prosody_modules
99
+	if ! grep -Fxq "install_xmpp_main" $COMPLETION_FILE; then
100
+		return
101
+	fi
102
+	function_check update_prosody_modules
103
+	update_prosody_modules
104 104
 }
105 105
 
106 106
 function backup_local_xmpp {
107
-    echo ''
107
+	source_directory=/var/lib/prosody xmpp
108
+	if [ -d $source_directory ]; then
109
+		dest_directory=xmpp
110
+		echo $"Backing up $source_directory to $dest_directory"
111
+
112
+		function_check backup_directory_to_usb
113
+		backup_directory_to_usb $source_directory $dest_directory
114
+
115
+		echo $"Backup to $dest_directory complete"
116
+	fi
108 117
 }
109 118
 
110 119
 function backup_remote_xmpp {
111
-    echo ''
120
+	echo -n ''
112 121
 }
113 122
 
114 123
 function configure_firewall_for_xmpp {
115
-    if [ ! -d /etc/prosody ]; then
116
-        return
117
-    fi
118
-    if grep -Fxq "configure_firewall_for_xmpp" $COMPLETION_FILE; then
119
-        return
120
-    fi
121
-    if [[ $INSTALLED_WITHIN_DOCKER == "yes" ]]; then
122
-        # docker does its own firewalling
123
-        return
124
-    fi
125
-    if [[ $ONION_ONLY != "no" ]]; then
126
-        return
127
-    fi
128
-    iptables -A INPUT -p tcp --dport 5222:5223 -j ACCEPT
129
-    iptables -A INPUT -p tcp --dport 5269 -j ACCEPT
130
-    iptables -A INPUT -p tcp --dport 5280:5281 -j ACCEPT
131
-    function_check save_firewall_settings
132
-    save_firewall_settings
133
-
134
-    OPEN_PORTS+=('XMPP     5222-5223')
135
-    OPEN_PORTS+=('XMPP     5269')
136
-    OPEN_PORTS+=('XMPP     5280-5281')
137
-    echo 'configure_firewall_for_xmpp' >> $COMPLETION_FILE
124
+	if [ ! -d /etc/prosody ]; then
125
+		return
126
+	fi
127
+	if grep -Fxq "configure_firewall_for_xmpp" $COMPLETION_FILE; then
128
+		return
129
+	fi
130
+	if [[ $INSTALLED_WITHIN_DOCKER == "yes" ]]; then
131
+		# docker does its own firewalling
132
+		return
133
+	fi
134
+	if [[ $ONION_ONLY != "no" ]]; then
135
+		return
136
+	fi
137
+	iptables -A INPUT -p tcp --dport 5222:5223 -j ACCEPT
138
+	iptables -A INPUT -p tcp --dport 5269 -j ACCEPT
139
+	iptables -A INPUT -p tcp --dport 5280:5281 -j ACCEPT
140
+	function_check save_firewall_settings
141
+	save_firewall_settings
142
+
143
+	OPEN_PORTS+=('XMPP     5222-5223')
144
+	OPEN_PORTS+=('XMPP     5269')
145
+	OPEN_PORTS+=('XMPP     5280-5281')
146
+	echo 'configure_firewall_for_xmpp' >> $COMPLETION_FILE
138 147
 }
139 148
 
140 149
 function remove_xmpp_client {
141
-    if ! grep -Fxq "install_xmpp_client" $COMPLETION_FILE; then
142
-        return
143
-    fi
144
-    apt-get -y remove --purge profanity
145
-    sed '/install_xmpp_client/d' $COMPLETION_FILE
150
+	if ! grep -Fxq "install_xmpp_client" $COMPLETION_FILE; then
151
+		return
152
+	fi
153
+	apt-get -y remove --purge profanity
154
+	sed '/install_xmpp_client/d' $COMPLETION_FILE
146 155
 }
147 156
 
148 157
 function remove_xmpp {
149
-    remove_xmpp_client
150
-    if ! grep -Fxq "install_xmpp" $COMPLETION_FILE; then
151
-        return
152
-    fi
153
-    iptables -D INPUT -p tcp --dport 5222:5223 -j ACCEPT
154
-    iptables -D INPUT -p tcp --dport 5269 -j ACCEPT
155
-    iptables -D INPUT -p tcp --dport 5280:5281 -j ACCEPT
156
-    function_check save_firewall_settings
157
-    save_firewall_settings
158
-
159
-    function_check remove_onion_service
160
-    remove_onion_service xmpp 5222 5223 5269
161
-
162
-    apt-get -y remove --purge prosody prosody-modules
163
-    if [ -d $INSTALL_DIR/prosody-modules ]; then
164
-        rm -rf $INSTALL_DIR/prosody-modules
165
-    fi
166
-    if [ -d /etc/prosody ]; then
167
-        rm -rf /etc/prosody
168
-    fi
169
-
170
-    sed '/install_xmpp/d' $COMPLETION_FILE
171
-    sed '/XMPP /d' $COMPLETION_FILE
158
+	remove_xmpp_client
159
+	if ! grep -Fxq "install_xmpp" $COMPLETION_FILE; then
160
+		return
161
+	fi
162
+	iptables -D INPUT -p tcp --dport 5222:5223 -j ACCEPT
163
+	iptables -D INPUT -p tcp --dport 5269 -j ACCEPT
164
+	iptables -D INPUT -p tcp --dport 5280:5281 -j ACCEPT
165
+	function_check save_firewall_settings
166
+	save_firewall_settings
167
+
168
+	function_check remove_onion_service
169
+	remove_onion_service xmpp 5222 5223 5269
170
+
171
+	apt-get -y remove --purge prosody prosody-modules
172
+	if [ -d $INSTALL_DIR/prosody-modules ]; then
173
+		rm -rf $INSTALL_DIR/prosody-modules
174
+	fi
175
+	if [ -d /etc/prosody ]; then
176
+		rm -rf /etc/prosody
177
+	fi
178
+
179
+	sed '/install_xmpp/d' $COMPLETION_FILE
180
+	sed '/XMPP /d' $COMPLETION_FILE
172 181
 }
173 182
 
174 183
 function install_xmpp_main {
175
-    update_prosody_modules
176
-
177
-    if grep -Fxq "install_xmpp_main" $COMPLETION_FILE; then
178
-        return
179
-    fi
180
-    apt-get -y install lua-sec lua-bitop
181
-    apt-get -y install prosody prosody-modules mercurial
182
-
183
-    if [ ! -d /etc/prosody ]; then
184
-        echo $"ERROR: prosody does not appear to have installed. $CHECK_MESSAGE"
185
-        exit 52
186
-    fi
187
-
188
-    # obtain the prosody modules
189
-    cd $INSTALL_DIR
190
-    hg clone https://hg.prosody.im/prosody-modules/ prosody-modules
191
-    if [ ! -d $INSTALL_DIR/prosody-modules/mod_onions ]; then
192
-        echo $'mod_onions prosody module could not be found'
193
-        exit 73254
194
-    fi
195
-
196
-    # install the onions module
197
-    update_prosody_modules
198
-    if [ ! -f /usr/lib/prosody/modules/mod_onions.lua ]; then
199
-        echo $'mod_onions.lua could not be copied to the prosody modules directory'
200
-        exit 63952
201
-    fi
202
-
203
-    # create a certificate
204
-    if [ ! -f /etc/ssl/certs/xmpp.dhparam ]; then
205
-        ${PROJECT_NAME}-addcert -h xmpp --dhkey $DH_KEYLENGTH
206
-        check_certificates xmpp
207
-    fi
208
-    chown prosody:prosody /etc/ssl/private/xmpp.key
209
-    chown prosody:prosody /etc/ssl/certs/xmpp.*
210
-    cp -a /etc/prosody/conf.avail/example.com.cfg.lua /etc/prosody/conf.avail/xmpp.cfg.lua
211
-
212
-    sed -i 's|/etc/prosody/certs/example.com.key|/etc/ssl/private/xmpp.key|g' /etc/prosody/conf.avail/xmpp.cfg.lua
213
-    sed -i 's|/etc/prosody/certs/example.com.crt|/etc/ssl/certs/xmpp.crt|g' /etc/prosody/conf.avail/xmpp.cfg.lua
214
-    if ! grep -q "xmpp.dhparam" /etc/prosody/conf.avail/xmpp.cfg.lua; then
215
-        sed -i '/certificate =/a\        dhparam = "/etc/ssl/certs/xmpp.dhparam";' /etc/prosody/conf.avail/xmpp.cfg.lua
216
-    fi
217
-    if ! grep -q 'options = {"no_sslv2", "no_sslv3" }' /etc/prosody/conf.avail/xmpp.cfg.lua; then
218
-        sed -i '/certificate =/a\        options = {"no_sslv2", "no_sslv3" };' /etc/prosody/conf.avail/xmpp.cfg.lua
219
-    fi
220
-    if ! grep -q 'ciphers =' /etc/prosody/conf.avail/xmpp.cfg.lua; then
221
-        sed -i "/certificate =/a\        ciphers = $XMPP_CIPHERS;" /etc/prosody/conf.avail/xmpp.cfg.lua
222
-    fi
223
-    if ! grep -q 'depth = "1";' /etc/prosody/conf.avail/xmpp.cfg.lua; then
224
-        sed -i '/certificate =/a\        depth = "1";' /etc/prosody/conf.avail/xmpp.cfg.lua
225
-    fi
226
-    if ! grep -q 'curve =' /etc/prosody/conf.avail/xmpp.cfg.lua; then
227
-        sed -i "/certificate =/a\        curve = $XMPP_ECC_CURVE;" /etc/prosody/conf.avail/xmpp.cfg.lua
228
-    fi
229
-
230
-    sed -i "s/example.com/$DEFAULT_DOMAIN_NAME/g" /etc/prosody/conf.avail/xmpp.cfg.lua
231
-    sed -i 's/enabled = false -- Remove this line to enable this host//g' /etc/prosody/conf.avail/xmpp.cfg.lua
232
-
233
-    if ! grep -q "modules_enabled" /etc/prosody/conf.avail/xmpp.cfg.lua; then
234
-        echo '' >> /etc/prosody/conf.avail/xmpp.cfg.lua
235
-        echo 'modules_enabled = {' >> /etc/prosody/conf.avail/xmpp.cfg.lua
236
-        echo '  "bosh"; -- Enable mod_bosh' >> /etc/prosody/conf.avail/xmpp.cfg.lua
237
-        echo '  "tls"; -- Enable mod_tls' >> /etc/prosody/conf.avail/xmpp.cfg.lua
238
-        echo '  "saslauth"; -- Enable mod_saslauth' >> /etc/prosody/conf.avail/xmpp.cfg.lua
239
-        echo '  "onions"; -- Enable chat via onion service' >> /etc/prosody/conf.avail/xmpp.cfg.lua
240
-        echo '  "mam"; -- Message archive management' >> /etc/prosody/conf.avail/xmpp.cfg.lua
241
-        echo '  "csi"; -- Client state indication' >> /etc/prosody/conf.avail/xmpp.cfg.lua
242
-        echo '  "carbons"; -- Message carbons' >> /etc/prosody/conf.avail/xmpp.cfg.lua
243
-        echo '  "smacks"; -- Stream management' >> /etc/prosody/conf.avail/xmpp.cfg.lua
244
-        echo '  "smacks_offline"; -- Stream management' >> /etc/prosody/conf.avail/xmpp.cfg.lua
245
-        echo '  "pep"; -- Personal Eventing Protocol (to support OMEMO)' >> /etc/prosody/conf.avail/xmpp.cfg.lua
246
-        echo '  "privacy"; -- Privacy lists' >> /etc/prosody/conf.avail/xmpp.cfg.lua
247
-        echo '  "privacy_lists"; -- Privacy lists' >> /etc/prosody/conf.avail/xmpp.cfg.lua
248
-        echo '  "blocking"; -- Blocking command' >> /etc/prosody/conf.avail/xmpp.cfg.lua
249
-        echo '  "roster"; -- Roster versioning' >> /etc/prosody/conf.avail/xmpp.cfg.lua
250
-        echo '}' >> /etc/prosody/conf.avail/xmpp.cfg.lua
251
-        echo '' >> /etc/prosody/conf.avail/xmpp.cfg.lua
252
-        echo 'c2s_require_encryption = true' >> /etc/prosody/conf.avail/xmpp.cfg.lua
253
-        echo 's2s_require_encryption = true' >> /etc/prosody/conf.avail/xmpp.cfg.lua
254
-        echo 'allow_unencrypted_plain_auth = false' >> /etc/prosody/conf.avail/xmpp.cfg.lua
255
-    fi
256
-    ln -sf /etc/prosody/conf.avail/xmpp.cfg.lua /etc/prosody/conf.d/xmpp.cfg.lua
257
-
258
-    sed -i 's|/etc/prosody/certs/localhost.key|/etc/ssl/private/xmpp.key|g' /etc/prosody/prosody.cfg.lua
259
-    sed -i 's|/etc/prosody/certs/localhost.crt|/etc/ssl/certs/xmpp.crt|g' /etc/prosody/prosody.cfg.lua
260
-    if ! grep -q "xmpp.dhparam" /etc/prosody/prosody.cfg.lua; then
261
-        sed -i '/certificate =/a\    dhparam = "/etc/ssl/certs/xmpp.dhparam";' /etc/prosody/prosody.cfg.lua
262
-    fi
263
-    if ! grep -q 'options = {"no_sslv2", "no_sslv3" }' /etc/prosody/prosody.cfg.lua; then
264
-        sed -i '/certificate =/a\    options = {"no_sslv2", "no_sslv3" };' /etc/prosody/prosody.cfg.lua
265
-    fi
266
-    if ! grep -q 'ciphers =' /etc/prosody/prosody.cfg.lua; then
267
-        sed -i "/certificate =/a\    ciphers = $XMPP_CIPHERS;" /etc/prosody/prosody.cfg.lua
268
-    fi
269
-    if ! grep -q 'depth = "1";' /etc/prosody/prosody.cfg.lua; then
270
-        sed -i '/certificate =/a\    depth = "1";' /etc/prosody/prosody.cfg.lua
271
-    fi
272
-    if ! grep -q 'curve =' /etc/prosody/prosody.cfg.lua; then
273
-        sed -i "/certificate =/a\    curve = $XMPP_ECC_CURVE;" /etc/prosody/prosody.cfg.lua
274
-    fi
275
-    sed -i 's/c2s_require_encryption = false/c2s_require_encryption = true/g' /etc/prosody/prosody.cfg.lua
276
-    if ! grep -q "s2s_require_encryption" /etc/prosody/prosody.cfg.lua; then
277
-        sed -i '/c2s_require_encryption/a\s2s_require_encryption = true' /etc/prosody/prosody.cfg.lua
278
-    fi
279
-    if ! grep -q "allow_unencrypted_plain_auth" /etc/prosody/prosody.cfg.lua; then
280
-        echo 'allow_unencrypted_plain_auth = false' >> /etc/prosody/conf.avail/xmpp.cfg.lua
281
-    fi
282
-    sed -i 's/--"bosh";/"bosh";/g' /etc/prosody/prosody.cfg.lua
283
-    sed -i 's/authentication = "internal_plain"/authentication = "internal_hashed"/g' /etc/prosody/prosody.cfg.lua
284
-    sed -i 's/enabled = false -- Remove this line to enable this host//g' /etc/prosody/prosody.cfg.lua
285
-    sed -i 's|key = "/etc/prosody/certs/example.com.key"|key = "/etc/ssl/private/xmpp.key"|g' /etc/prosody/prosody.cfg.lua
286
-    sed -i 's|certificate = "/etc/prosody/certs/example.com.crt"|certificate = "/etc/ssl/certs/xmpp.crt"|g' /etc/prosody/prosody.cfg.lua
287
-    sed -i "s/example.com/$DEFAULT_DOMAIN_NAME/g" /etc/prosody/prosody.cfg.lua
288
-
289
-    systemctl restart prosody
290
-    touch /home/$MY_USERNAME/README
291
-
292
-    if [ ! -d /var/lib/tor ]; then
293
-        echo $'No Tor installation found. XMPP onion site cannot be configured.'
294
-        exit 877367
295
-    fi
296
-    if ! grep -q "hidden_service_xmpp" /etc/tor/torrc; then
297
-        echo 'HiddenServiceDir /var/lib/tor/hidden_service_xmpp/' >> /etc/tor/torrc
298
-        echo "HiddenServicePort 5222 127.0.0.1:5222" >> /etc/tor/torrc
299
-        echo "HiddenServicePort 5269 127.0.0.1:5269" >> /etc/tor/torrc
300
-        echo $'Added onion site for XMPP chat'
301
-    fi
302
-
303
-    systemctl restart tor
304
-    wait_for_onion_service 'xmpp'
305
-
306
-    if [ ! -f /var/lib/tor/hidden_service_xmpp/hostname ]; then
307
-        echo $'XMPP onion site hostname not found'
308
-        exit 65349
309
-    fi
310
-    XMPP_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_xmpp/hostname)
311
-    if ! grep -q "${XMPP_ONION_HOSTNAME}" /etc/prosody/conf.avail/xmpp.cfg.lua; then
312
-        echo '' >> /etc/prosody/conf.avail/xmpp.cfg.lua
313
-        echo "VirtualHost \"${XMPP_ONION_HOSTNAME}\"" >> /etc/prosody/conf.avail/xmpp.cfg.lua
314
-        echo '    modules_enabled = { "onions" };' >> /etc/prosody/conf.avail/xmpp.cfg.lua
315
-    fi
316
-    if ! grep -q "XMPP onion domain" $COMPLETION_FILE; then
317
-        echo "XMPP onion domain:${XMPP_ONION_HOSTNAME}" >> $COMPLETION_FILE
318
-    else
319
-        sed -i "s|XMPP onion domain.*|XMPP onion domain:${XMPP_ONION_HOSTNAME}|g" $COMPLETION_FILE
320
-    fi
321
-
322
-    if ! grep -q "Your XMPP password is" /home/$MY_USERNAME/README; then
323
-        if [ ${#XMPP_PASSWORD} -lt 8 ]; then
324
-            if [ -f $IMAGE_PASSWORD_FILE ]; then
325
-                XMPP_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
326
-            else
327
-                XMPP_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
328
-            fi
329
-        fi
330
-        prosodyctl register $MY_USERNAME $DEFAULT_DOMAIN_NAME $XMPP_PASSWORD
331
-        echo '' >> /home/$MY_USERNAME/README
332
-        echo '' >> /home/$MY_USERNAME/README
333
-        echo $'XMPP' >> /home/$MY_USERNAME/README
334
-        echo '====' >> /home/$MY_USERNAME/README
335
-        echo $"XMPP onion domain: ${XMPP_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
336
-        echo $"Your XMPP password is: $XMPP_PASSWORD" >> /home/$MY_USERNAME/README
337
-        echo $'You can change it with: ' >> /home/$MY_USERNAME/README
338
-        echo '' >> /home/$MY_USERNAME/README
339
-        echo "    prosodyctl passwd $MY_EMAIL_ADDRESS" >> /home/$MY_USERNAME/README
340
-        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
341
-        chmod 600 /home/$MY_USERNAME/README
342
-    fi
343
-
344
-    function_check configure_firewall_for_xmpp
345
-    configure_firewall_for_xmpp
346
-
347
-    echo 'install_xmpp_main' >> $COMPLETION_FILE
184
+	update_prosody_modules
185
+
186
+	if grep -Fxq "install_xmpp_main" $COMPLETION_FILE; then
187
+		return
188
+	fi
189
+	apt-get -y install lua-sec lua-bitop
190
+	apt-get -y install prosody prosody-modules mercurial
191
+
192
+	if [ ! -d /etc/prosody ]; then
193
+		echo $"ERROR: prosody does not appear to have installed. $CHECK_MESSAGE"
194
+		exit 52
195
+	fi
196
+
197
+	# obtain the prosody modules
198
+	cd $INSTALL_DIR
199
+	hg clone https://hg.prosody.im/prosody-modules/ prosody-modules
200
+	if [ ! -d $INSTALL_DIR/prosody-modules/mod_onions ]; then
201
+		echo $'mod_onions prosody module could not be found'
202
+		exit 73254
203
+	fi
204
+
205
+	# install the onions module
206
+	update_prosody_modules
207
+	if [ ! -f /usr/lib/prosody/modules/mod_onions.lua ]; then
208
+		echo $'mod_onions.lua could not be copied to the prosody modules directory'
209
+		exit 63952
210
+	fi
211
+
212
+	# create a certificate
213
+	if [ ! -f /etc/ssl/certs/xmpp.dhparam ]; then
214
+		${PROJECT_NAME}-addcert -h xmpp --dhkey $DH_KEYLENGTH
215
+		check_certificates xmpp
216
+	fi
217
+	chown prosody:prosody /etc/ssl/private/xmpp.key
218
+	chown prosody:prosody /etc/ssl/certs/xmpp.*
219
+	cp -a /etc/prosody/conf.avail/example.com.cfg.lua /etc/prosody/conf.avail/xmpp.cfg.lua
220
+
221
+	sed -i 's|/etc/prosody/certs/example.com.key|/etc/ssl/private/xmpp.key|g' /etc/prosody/conf.avail/xmpp.cfg.lua
222
+	sed -i 's|/etc/prosody/certs/example.com.crt|/etc/ssl/certs/xmpp.crt|g' /etc/prosody/conf.avail/xmpp.cfg.lua
223
+	if ! grep -q "xmpp.dhparam" /etc/prosody/conf.avail/xmpp.cfg.lua; then
224
+		sed -i '/certificate =/a\        dhparam = "/etc/ssl/certs/xmpp.dhparam";' /etc/prosody/conf.avail/xmpp.cfg.lua
225
+	fi
226
+	if ! grep -q 'options = {"no_sslv2", "no_sslv3" }' /etc/prosody/conf.avail/xmpp.cfg.lua; then
227
+		sed -i '/certificate =/a\        options = {"no_sslv2", "no_sslv3" };' /etc/prosody/conf.avail/xmpp.cfg.lua
228
+	fi
229
+	if ! grep -q 'ciphers =' /etc/prosody/conf.avail/xmpp.cfg.lua; then
230
+		sed -i "/certificate =/a\        ciphers = $XMPP_CIPHERS;" /etc/prosody/conf.avail/xmpp.cfg.lua
231
+	fi
232
+	if ! grep -q 'depth = "1";' /etc/prosody/conf.avail/xmpp.cfg.lua; then
233
+		sed -i '/certificate =/a\        depth = "1";' /etc/prosody/conf.avail/xmpp.cfg.lua
234
+	fi
235
+	if ! grep -q 'curve =' /etc/prosody/conf.avail/xmpp.cfg.lua; then
236
+		sed -i "/certificate =/a\        curve = $XMPP_ECC_CURVE;" /etc/prosody/conf.avail/xmpp.cfg.lua
237
+	fi
238
+
239
+	sed -i "s/example.com/$DEFAULT_DOMAIN_NAME/g" /etc/prosody/conf.avail/xmpp.cfg.lua
240
+	sed -i 's/enabled = false -- Remove this line to enable this host//g' /etc/prosody/conf.avail/xmpp.cfg.lua
241
+
242
+	if ! grep -q "modules_enabled" /etc/prosody/conf.avail/xmpp.cfg.lua; then
243
+		echo '' >> /etc/prosody/conf.avail/xmpp.cfg.lua
244
+		echo 'modules_enabled = {' >> /etc/prosody/conf.avail/xmpp.cfg.lua
245
+		echo '  "bosh"; -- Enable mod_bosh' >> /etc/prosody/conf.avail/xmpp.cfg.lua
246
+		echo '  "tls"; -- Enable mod_tls' >> /etc/prosody/conf.avail/xmpp.cfg.lua
247
+		echo '  "saslauth"; -- Enable mod_saslauth' >> /etc/prosody/conf.avail/xmpp.cfg.lua
248
+		echo '  "onions"; -- Enable chat via onion service' >> /etc/prosody/conf.avail/xmpp.cfg.lua
249
+		echo '  "mam"; -- Message archive management' >> /etc/prosody/conf.avail/xmpp.cfg.lua
250
+		echo '  "csi"; -- Client state indication' >> /etc/prosody/conf.avail/xmpp.cfg.lua
251
+		echo '  "carbons"; -- Message carbons' >> /etc/prosody/conf.avail/xmpp.cfg.lua
252
+		echo '  "smacks"; -- Stream management' >> /etc/prosody/conf.avail/xmpp.cfg.lua
253
+		echo '  "smacks_offline"; -- Stream management' >> /etc/prosody/conf.avail/xmpp.cfg.lua
254
+		echo '  "pep"; -- Personal Eventing Protocol (to support OMEMO)' >> /etc/prosody/conf.avail/xmpp.cfg.lua
255
+		echo '  "privacy"; -- Privacy lists' >> /etc/prosody/conf.avail/xmpp.cfg.lua
256
+		echo '  "privacy_lists"; -- Privacy lists' >> /etc/prosody/conf.avail/xmpp.cfg.lua
257
+		echo '  "blocking"; -- Blocking command' >> /etc/prosody/conf.avail/xmpp.cfg.lua
258
+		echo '  "roster"; -- Roster versioning' >> /etc/prosody/conf.avail/xmpp.cfg.lua
259
+		echo '}' >> /etc/prosody/conf.avail/xmpp.cfg.lua
260
+		echo '' >> /etc/prosody/conf.avail/xmpp.cfg.lua
261
+		echo 'c2s_require_encryption = true' >> /etc/prosody/conf.avail/xmpp.cfg.lua
262
+		echo 's2s_require_encryption = true' >> /etc/prosody/conf.avail/xmpp.cfg.lua
263
+		echo 'allow_unencrypted_plain_auth = false' >> /etc/prosody/conf.avail/xmpp.cfg.lua
264
+	fi
265
+	ln -sf /etc/prosody/conf.avail/xmpp.cfg.lua /etc/prosody/conf.d/xmpp.cfg.lua
266
+
267
+	sed -i 's|/etc/prosody/certs/localhost.key|/etc/ssl/private/xmpp.key|g' /etc/prosody/prosody.cfg.lua
268
+	sed -i 's|/etc/prosody/certs/localhost.crt|/etc/ssl/certs/xmpp.crt|g' /etc/prosody/prosody.cfg.lua
269
+	if ! grep -q "xmpp.dhparam" /etc/prosody/prosody.cfg.lua; then
270
+		sed -i '/certificate =/a\    dhparam = "/etc/ssl/certs/xmpp.dhparam";' /etc/prosody/prosody.cfg.lua
271
+	fi
272
+	if ! grep -q 'options = {"no_sslv2", "no_sslv3" }' /etc/prosody/prosody.cfg.lua; then
273
+		sed -i '/certificate =/a\    options = {"no_sslv2", "no_sslv3" };' /etc/prosody/prosody.cfg.lua
274
+	fi
275
+	if ! grep -q 'ciphers =' /etc/prosody/prosody.cfg.lua; then
276
+		sed -i "/certificate =/a\    ciphers = $XMPP_CIPHERS;" /etc/prosody/prosody.cfg.lua
277
+	fi
278
+	if ! grep -q 'depth = "1";' /etc/prosody/prosody.cfg.lua; then
279
+		sed -i '/certificate =/a\    depth = "1";' /etc/prosody/prosody.cfg.lua
280
+	fi
281
+	if ! grep -q 'curve =' /etc/prosody/prosody.cfg.lua; then
282
+		sed -i "/certificate =/a\    curve = $XMPP_ECC_CURVE;" /etc/prosody/prosody.cfg.lua
283
+	fi
284
+	sed -i 's/c2s_require_encryption = false/c2s_require_encryption = true/g' /etc/prosody/prosody.cfg.lua
285
+	if ! grep -q "s2s_require_encryption" /etc/prosody/prosody.cfg.lua; then
286
+		sed -i '/c2s_require_encryption/a\s2s_require_encryption = true' /etc/prosody/prosody.cfg.lua
287
+	fi
288
+	if ! grep -q "allow_unencrypted_plain_auth" /etc/prosody/prosody.cfg.lua; then
289
+		echo 'allow_unencrypted_plain_auth = false' >> /etc/prosody/conf.avail/xmpp.cfg.lua
290
+	fi
291
+	sed -i 's/--"bosh";/"bosh";/g' /etc/prosody/prosody.cfg.lua
292
+	sed -i 's/authentication = "internal_plain"/authentication = "internal_hashed"/g' /etc/prosody/prosody.cfg.lua
293
+	sed -i 's/enabled = false -- Remove this line to enable this host//g' /etc/prosody/prosody.cfg.lua
294
+	sed -i 's|key = "/etc/prosody/certs/example.com.key"|key = "/etc/ssl/private/xmpp.key"|g' /etc/prosody/prosody.cfg.lua
295
+	sed -i 's|certificate = "/etc/prosody/certs/example.com.crt"|certificate = "/etc/ssl/certs/xmpp.crt"|g' /etc/prosody/prosody.cfg.lua
296
+	sed -i "s/example.com/$DEFAULT_DOMAIN_NAME/g" /etc/prosody/prosody.cfg.lua
297
+
298
+	systemctl restart prosody
299
+	touch /home/$MY_USERNAME/README
300
+
301
+	if [ ! -d /var/lib/tor ]; then
302
+		echo $'No Tor installation found. XMPP onion site cannot be configured.'
303
+		exit 877367
304
+	fi
305
+	if ! grep -q "hidden_service_xmpp" /etc/tor/torrc; then
306
+		echo 'HiddenServiceDir /var/lib/tor/hidden_service_xmpp/' >> /etc/tor/torrc
307
+		echo "HiddenServicePort 5222 127.0.0.1:5222" >> /etc/tor/torrc
308
+		echo "HiddenServicePort 5269 127.0.0.1:5269" >> /etc/tor/torrc
309
+		echo $'Added onion site for XMPP chat'
310
+	fi
311
+
312
+	systemctl restart tor
313
+	wait_for_onion_service 'xmpp'
314
+
315
+	if [ ! -f /var/lib/tor/hidden_service_xmpp/hostname ]; then
316
+		echo $'XMPP onion site hostname not found'
317
+		exit 65349
318
+	fi
319
+	XMPP_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_xmpp/hostname)
320
+	if ! grep -q "${XMPP_ONION_HOSTNAME}" /etc/prosody/conf.avail/xmpp.cfg.lua; then
321
+		echo '' >> /etc/prosody/conf.avail/xmpp.cfg.lua
322
+		echo "VirtualHost \"${XMPP_ONION_HOSTNAME}\"" >> /etc/prosody/conf.avail/xmpp.cfg.lua
323
+		echo '    modules_enabled = { "onions" };' >> /etc/prosody/conf.avail/xmpp.cfg.lua
324
+	fi
325
+	if ! grep -q "XMPP onion domain" $COMPLETION_FILE; then
326
+		echo "XMPP onion domain:${XMPP_ONION_HOSTNAME}" >> $COMPLETION_FILE
327
+	else
328
+		sed -i "s|XMPP onion domain.*|XMPP onion domain:${XMPP_ONION_HOSTNAME}|g" $COMPLETION_FILE
329
+	fi
330
+
331
+	if ! grep -q "Your XMPP password is" /home/$MY_USERNAME/README; then
332
+		if [ ${#XMPP_PASSWORD} -lt 8 ]; then
333
+			if [ -f $IMAGE_PASSWORD_FILE ]; then
334
+				XMPP_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
335
+			else
336
+				XMPP_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
337
+			fi
338
+		fi
339
+		prosodyctl register $MY_USERNAME $DEFAULT_DOMAIN_NAME $XMPP_PASSWORD
340
+		echo '' >> /home/$MY_USERNAME/README
341
+		echo '' >> /home/$MY_USERNAME/README
342
+		echo $'XMPP' >> /home/$MY_USERNAME/README
343
+		echo '====' >> /home/$MY_USERNAME/README
344
+		echo $"XMPP onion domain: ${XMPP_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
345
+		echo $"Your XMPP password is: $XMPP_PASSWORD" >> /home/$MY_USERNAME/README
346
+		echo $'You can change it with: ' >> /home/$MY_USERNAME/README
347
+		echo '' >> /home/$MY_USERNAME/README
348
+		echo "    prosodyctl passwd $MY_EMAIL_ADDRESS" >> /home/$MY_USERNAME/README
349
+		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
350
+		chmod 600 /home/$MY_USERNAME/README
351
+	fi
352
+
353
+	function_check configure_firewall_for_xmpp
354
+	configure_firewall_for_xmpp
355
+
356
+	echo 'install_xmpp_main' >> $COMPLETION_FILE
348 357
 }
349 358
 
350 359
 function install_xmpp_client {
351
-    if grep -Fxq "install_xmpp_client" $COMPLETION_FILE; then
352
-        return
353
-    fi
354
-    apt-get -y install profanity
355
-
356
-    XMPP_CLIENT_DIR=/home/$MY_USERNAME/.local/share/profanity
357
-    XMPP_CLIENT_ACCOUNTS=$XMPP_CLIENT_DIR/accounts
358
-    if [ ! -d $XMPP_CLIENT_DIR ]; then
359
-        mkdir -p $XMPP_CLIENT_DIR
360
-    fi
361
-
362
-    if [[ $ONION_ONLY == 'no' ]]; then
363
-        echo "[${MY_USERNAME}@${DEFAULT_DOMAIN_NAME}]" > $XMPP_CLIENT_ACCOUNTS
364
-        echo 'enabled=true' >> $XMPP_CLIENT_ACCOUNTS
365
-        echo "jid=${MY_USERNAME}@${DEFAULT_DOMAIN_NAME}" >> $XMPP_CLIENT_ACCOUNTS
366
-        echo 'resource=profanity' >> $XMPP_CLIENT_ACCOUNTS
367
-        echo "muc.service=conference.${DEFAULT_DOMAIN_NAME}" >> $XMPP_CLIENT_ACCOUNTS
368
-        echo "muc.nick=${MY_USERNAME}" >> $XMPP_CLIENT_ACCOUNTS
369
-        echo 'presence.last=online' >> $XMPP_CLIENT_ACCOUNTS
370
-        echo 'presence.login=online' >> $XMPP_CLIENT_ACCOUNTS
371
-        echo 'priority.online=0' >> $XMPP_CLIENT_ACCOUNTS
372
-        echo 'priority.chat=0' >> $XMPP_CLIENT_ACCOUNTS
373
-        echo 'priority.away=0' >> $XMPP_CLIENT_ACCOUNTS
374
-        echo 'priority.xa=0' >> $XMPP_CLIENT_ACCOUNTS
375
-        echo 'priority.dnd=0' >> $XMPP_CLIENT_ACCOUNTS
376
-        if [ ${#XMPP_PASSWORD} -gt 2 ]; then
377
-            echo "password=$XMPP_PASSWORD" >> $XMPP_CLIENT_ACCOUNTS
378
-        fi
379
-    fi
380
-
381
-    if [ -f /var/lib/tor/hidden_service_xmpp/hostname ]; then
382
-        XMPP_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_xmpp/hostname)
383
-        echo "[${MY_USERNAME}@${XMPP_ONION_HOSTNAME}]" >> $XMPP_CLIENT_ACCOUNTS
384
-        if [[ $ONION_ONLY == 'no' ]]; then
385
-            echo 'enabled=false' >> $XMPP_CLIENT_ACCOUNTS
386
-        else
387
-            echo 'enabled=true' >> $XMPP_CLIENT_ACCOUNTS
388
-        fi
389
-        echo "jid=${MY_USERNAME}@${XMPP_ONION_HOSTNAME}" >> $XMPP_CLIENT_ACCOUNTS
390
-        echo 'resource=profanity' >> $XMPP_CLIENT_ACCOUNTS
391
-        echo "muc.service=conference.${XMPP_ONION_HOSTNAME}" >> $XMPP_CLIENT_ACCOUNTS
392
-        echo "muc.nick=${MY_USERNAME}" >> $XMPP_CLIENT_ACCOUNTS
393
-        echo 'presence.last=online' >> $XMPP_CLIENT_ACCOUNTS
394
-        echo 'presence.login=online' >> $XMPP_CLIENT_ACCOUNTS
395
-        echo 'priority.online=0' >> $XMPP_CLIENT_ACCOUNTS
396
-        echo 'priority.chat=0' >> $XMPP_CLIENT_ACCOUNTS
397
-        echo 'priority.away=0' >> $XMPP_CLIENT_ACCOUNTS
398
-        echo 'priority.xa=0' >> $XMPP_CLIENT_ACCOUNTS
399
-        echo 'priority.dnd=0' >> $XMPP_CLIENT_ACCOUNTS
400
-        if [ ${#XMPP_PASSWORD} -gt 2 ]; then
401
-            echo "password=$XMPP_PASSWORD" >> $XMPP_CLIENT_ACCOUNTS
402
-        fi
403
-    fi
404
-
405
-    if [ ! -d /home/$MY_USERNAME/.config/profanity ]; then
406
-        mkdir /home/$MY_USERNAME/.config/profanity
407
-    fi
408
-    echo '[connection]' > /home/$MY_USERNAME/.config/profanity/profrc
409
-    echo "account=${MY_USERNAME}@${DEFAULT_DOMAIN_NAME}" >> /home/$MY_USERNAME/.config/profanity/profrc
410
-
411
-    chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.local
412
-    chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
413
-
414
-    echo 'install_xmpp_client' >> $COMPLETION_FILE
360
+	if grep -Fxq "install_xmpp_client" $COMPLETION_FILE; then
361
+		return
362
+	fi
363
+	apt-get -y install profanity
364
+
365
+	XMPP_CLIENT_DIR=/home/$MY_USERNAME/.local/share/profanity
366
+	XMPP_CLIENT_ACCOUNTS=$XMPP_CLIENT_DIR/accounts
367
+	if [ ! -d $XMPP_CLIENT_DIR ]; then
368
+		mkdir -p $XMPP_CLIENT_DIR
369
+	fi
370
+
371
+	if [[ $ONION_ONLY == 'no' ]]; then
372
+		echo "[${MY_USERNAME}@${DEFAULT_DOMAIN_NAME}]" > $XMPP_CLIENT_ACCOUNTS
373
+		echo 'enabled=true' >> $XMPP_CLIENT_ACCOUNTS
374
+		echo "jid=${MY_USERNAME}@${DEFAULT_DOMAIN_NAME}" >> $XMPP_CLIENT_ACCOUNTS
375
+		echo 'resource=profanity' >> $XMPP_CLIENT_ACCOUNTS
376
+		echo "muc.service=conference.${DEFAULT_DOMAIN_NAME}" >> $XMPP_CLIENT_ACCOUNTS
377
+		echo "muc.nick=${MY_USERNAME}" >> $XMPP_CLIENT_ACCOUNTS
378
+		echo 'presence.last=online' >> $XMPP_CLIENT_ACCOUNTS
379
+		echo 'presence.login=online' >> $XMPP_CLIENT_ACCOUNTS
380
+		echo 'priority.online=0' >> $XMPP_CLIENT_ACCOUNTS
381
+		echo 'priority.chat=0' >> $XMPP_CLIENT_ACCOUNTS
382
+		echo 'priority.away=0' >> $XMPP_CLIENT_ACCOUNTS
383
+		echo 'priority.xa=0' >> $XMPP_CLIENT_ACCOUNTS
384
+		echo 'priority.dnd=0' >> $XMPP_CLIENT_ACCOUNTS
385
+		if [ ${#XMPP_PASSWORD} -gt 2 ]; then
386
+			echo "password=$XMPP_PASSWORD" >> $XMPP_CLIENT_ACCOUNTS
387
+		fi
388
+	fi
389
+
390
+	if [ -f /var/lib/tor/hidden_service_xmpp/hostname ]; then
391
+		XMPP_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_xmpp/hostname)
392
+		echo "[${MY_USERNAME}@${XMPP_ONION_HOSTNAME}]" >> $XMPP_CLIENT_ACCOUNTS
393
+		if [[ $ONION_ONLY == 'no' ]]; then
394
+			echo 'enabled=false' >> $XMPP_CLIENT_ACCOUNTS
395
+		else
396
+			echo 'enabled=true' >> $XMPP_CLIENT_ACCOUNTS
397
+		fi
398
+		echo "jid=${MY_USERNAME}@${XMPP_ONION_HOSTNAME}" >> $XMPP_CLIENT_ACCOUNTS
399
+		echo 'resource=profanity' >> $XMPP_CLIENT_ACCOUNTS
400
+		echo "muc.service=conference.${XMPP_ONION_HOSTNAME}" >> $XMPP_CLIENT_ACCOUNTS
401
+		echo "muc.nick=${MY_USERNAME}" >> $XMPP_CLIENT_ACCOUNTS
402
+		echo 'presence.last=online' >> $XMPP_CLIENT_ACCOUNTS
403
+		echo 'presence.login=online' >> $XMPP_CLIENT_ACCOUNTS
404
+		echo 'priority.online=0' >> $XMPP_CLIENT_ACCOUNTS
405
+		echo 'priority.chat=0' >> $XMPP_CLIENT_ACCOUNTS
406
+		echo 'priority.away=0' >> $XMPP_CLIENT_ACCOUNTS
407
+		echo 'priority.xa=0' >> $XMPP_CLIENT_ACCOUNTS
408
+		echo 'priority.dnd=0' >> $XMPP_CLIENT_ACCOUNTS
409
+		if [ ${#XMPP_PASSWORD} -gt 2 ]; then
410
+			echo "password=$XMPP_PASSWORD" >> $XMPP_CLIENT_ACCOUNTS
411
+		fi
412
+	fi
413
+
414
+	if [ ! -d /home/$MY_USERNAME/.config/profanity ]; then
415
+		mkdir /home/$MY_USERNAME/.config/profanity
416
+	fi
417
+	echo '[connection]' > /home/$MY_USERNAME/.config/profanity/profrc
418
+	echo "account=${MY_USERNAME}@${DEFAULT_DOMAIN_NAME}" >> /home/$MY_USERNAME/.config/profanity/profrc
419
+
420
+	chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.local
421
+	chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
422
+
423
+	echo 'install_xmpp_client' >> $COMPLETION_FILE
415 424
 }
416 425
 
417 426
 function install_xmpp {
418
-    if grep -Fxq "install_xmpp" $COMPLETION_FILE; then
419
-        return
420
-    fi
421
-    install_xmpp_main
422
-    install_xmpp_client
423
-    echo 'install_xmpp' >> $COMPLETION_FILE
427
+	if grep -Fxq "install_xmpp" $COMPLETION_FILE; then
428
+		return
429
+	fi
430
+	install_xmpp_main
431
+	install_xmpp_client
432
+	echo 'install_xmpp' >> $COMPLETION_FILE
424 433
 }
425 434
 
426 435
 # NOTE: deliberately no exit 0