Browse Source

Populate upgrade functions for apps

Bob Mottram 8 years ago
parent
commit
3d83d1636b

+ 5
- 5
src/freedombone-app-blog View File

@@ -37,7 +37,11 @@ MY_BLOG_TITLE="My Blog"
37 37
 MY_BLOG_SUBTITLE="Another ${PROJECT_NAME} Blog"
38 38
 
39 39
 function upgrade_blog {
40
-    echo ''
40
+	if ! grep -Fxq "install_blog" $COMPLETION_FILE; then
41
+		return
42
+	fi
43
+	function_check set_repo_commit
44
+	set_repo_commit /var/www/$FULLBLOG_DOMAIN_NAME/htdocs "Blog commit" "$FULLBLOG_COMMIT" $FULLBLOG_REPO
41 45
 }
42 46
 
43 47
 function backup_local_blog {
@@ -88,10 +92,6 @@ function install_blog {
88 92
 		exit 5062
89 93
 	fi
90 94
 
91
-	# update to the next commit
92
-	function_check set_repo_commit
93
-	set_repo_commit /var/www/$FULLBLOG_DOMAIN_NAME/htdocs "Blog commit" "$FULLBLOG_COMMIT" $FULLBLOG_REPO
94
-
95 95
 	if grep -Fxq "install_blog" $COMPLETION_FILE; then
96 96
 		return
97 97
 	fi

+ 5
- 5
src/freedombone-app-cjdns View File

@@ -41,7 +41,11 @@ CJDCMD_REPO="https://github.com/inhies/cjdcmd"
41 41
 CJDCMD_COMMIT='973cca6ed0eecf9041c3403a40193c0b1291b808'
42 42
 
43 43
 function upgrade_cjdns {
44
-    echo ''
44
+	if ! grep -Fxq "install_cjdns" $COMPLETION_FILE; then
45
+		return
46
+	fi
47
+	function_check set_repo_commit
48
+	set_repo_commit /etc/cjdns "cjdns commit" "$CJDNS_COMMIT" $CJDNS_REPO
45 49
 }
46 50
 
47 51
 function configure_firewall_for_cjdns {
@@ -142,10 +146,6 @@ function install_cjdns_main {
142 146
 		return
143 147
 	fi
144 148
 
145
-	# update to the next commit
146
-	function_check set_repo_commit
147
-	set_repo_commit /etc/cjdns "cjdns commit" "$CJDNS_COMMIT" $CJDNS_REPO
148
-
149 149
 	if grep -Fxq "install_cjdns_main" $COMPLETION_FILE; then
150 150
 		return
151 151
 	fi

+ 33
- 18
src/freedombone-app-gnusocial View File

@@ -47,10 +47,39 @@ SHARINGS_COMMIT='d5c6c7f855d9afff9086c09ea706f38c859bc0d4'
47 47
 SHARINGS_THEME_REPO="http://git.lasindias.club/manuel/SharingsTheme"
48 48
 SHARINGS_THEME_COMMIT='7106c7ef03'
49 49
 
50
+function gnusocial_running_script {
51
+	if ! grep -Fxq "install_gnusocial" $COMPLETION_FILE; then
52
+		return
53
+	fi
54
+
55
+	# check that the daemon is running
56
+	echo '#!/bin/bash' > /etc/cron.hourly/gnusocial-daemons
57
+	echo 'daemon_lines=$(ps aux | grep "scripts/queuedaemon.php" | grep "/var/www")' >> /etc/cron.hourly/gnusocial-daemons
58
+	echo 'if [[ $daemon_lines != *"/var/www/"* ]]; then' >> /etc/cron.hourly/gnusocial-daemons
59
+
60
+	echo "    ADMIN_USER=\$(cat $COMPLETION_FILE | grep 'Admin user' | awk -F ':' '{print \$2}')" >> /etc/cron.hourly/gnusocial-daemons
61
+	echo '    MY_EMAIL_ADDRESS=$ADMIN_USER@$HOSTNAME' >> /etc/cron.hourly/gnusocial-daemons
62
+	echo '    echo "Restarting GNU Social daemons" | mail -s "GNU Social daemons not found" $MY_EMAIL_ADDRESS' >> /etc/cron.hourly/gnusocial-daemons
63
+	echo "    cd /var/www/${MICROBLOG_DOMAIN_NAME}/htdocs" >> /etc/cron.hourly/gnusocial-daemons
64
+	echo '    scripts/startdaemons.sh' >> /etc/cron.hourly/gnusocial-daemons
65
+	echo 'fi' >> /etc/cron.hourly/gnusocial-daemons
66
+	chmod +x /etc/cron.hourly/gnusocial-daemons
67
+}
68
+
50 69
 function upgrade_gnusocial {
51
-    echo ''
70
+	if ! grep -Fxq "install_gnusocial_main" $COMPLETION_FILE; then
71
+		return
72
+	fi
73
+
74
+	# update to the next commit
75
+	function_check set_repo_commit
76
+	set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs "GNU Social commit" "$MICROBLOG_COMMIT" $MICROBLOG_REPO
77
+
78
+	function_check gnusocial_running_script
79
+	gnusocial_running_script
52 80
 }
53 81
 
82
+
54 83
 function backup_local_gnusocial {
55 84
 	echo ''
56 85
 }
@@ -87,27 +116,13 @@ function install_gnusocial_main {
87 116
 		exit 7359
88 117
 	fi
89 118
 
90
-	# update to the next commit
91
-	function_check set_repo_commit
92
-	set_repo_commit /var/www/$MICROBLOG_DOMAIN_NAME/htdocs "GNU Social commit" "$MICROBLOG_COMMIT" $MICROBLOG_REPO
93
-
94
-	# add a script to check that the daemon is running
95
-	echo '#!/bin/bash' > /etc/cron.hourly/gnusocial-daemons
96
-	echo 'daemon_lines=$(ps aux | grep "scripts/queuedaemon.php" | grep "/var/www")' >> /etc/cron.hourly/gnusocial-daemons
97
-	echo 'if [[ $daemon_lines != *"/var/www/"* ]]; then' >> /etc/cron.hourly/gnusocial-daemons
98
-
99
-	echo "    ADMIN_USER=\$(cat $COMPLETION_FILE | grep 'Admin user' | awk -F ':' '{print \$2}')" >> /etc/cron.hourly/gnusocial-daemons
100
-	echo '    MY_EMAIL_ADDRESS=$ADMIN_USER@$HOSTNAME' >> /etc/cron.hourly/gnusocial-daemons
101
-	echo '    echo "Restarting GNU Social daemons" | mail -s "GNU Social daemons not found" $MY_EMAIL_ADDRESS' >> /etc/cron.hourly/gnusocial-daemons
102
-	echo "    cd /var/www/${MICROBLOG_DOMAIN_NAME}/htdocs" >> /etc/cron.hourly/gnusocial-daemons
103
-	echo '    scripts/startdaemons.sh' >> /etc/cron.hourly/gnusocial-daemons
104
-	echo 'fi' >> /etc/cron.hourly/gnusocial-daemons
105
-	chmod +x /etc/cron.hourly/gnusocial-daemons
106
-
107 119
 	if grep -Fxq "install_gnusocial_main" $COMPLETION_FILE; then
108 120
 		return
109 121
 	fi
110 122
 
123
+	function_check gnusocial_running_script
124
+	gnusocial_running_script
125
+
111 126
 	function_check install_mariadb
112 127
 	install_mariadb
113 128
 

+ 14
- 10
src/freedombone-app-gogs View File

@@ -36,15 +36,23 @@ GIT_ADMIN_PASSWORD=
36 36
 GOGS_COMMIT='3fb4f7f4980b4339fd9ef6a3ba5b0acab83d264d'
37 37
 
38 38
 function upgrade_gogs {
39
-    echo ''
39
+	if ! grep -Fxq "install_gogs" $COMPLETION_FILE; then
40
+		return
41
+	fi
42
+
43
+	function_check select_go_version
44
+	select_go_version
45
+
46
+	function_check set_repo_commit
47
+	set_repo_commit $GOPATH/src/github.com/gogits/gogs "Gogs commit" "$GOGS_COMMIT" $GIT_DOMAIN_REPO
40 48
 }
41 49
 
42 50
 function backup_local_gogs {
43
-    echo ''
51
+	echo ''
44 52
 }
45 53
 
46 54
 function backup_remote_gogs {
47
-    echo ''
55
+	echo ''
48 56
 }
49 57
 
50 58
 function remove_gogs {
@@ -80,17 +88,13 @@ function install_gogs {
80 88
 		return
81 89
 	fi
82 90
 
83
-	function_check select_go_version
84
-	select_go_version
85
-
86
-	# update to the next commit
87
-	function_check
88
-	set_repo_commit $GOPATH/src/github.com/gogits/gogs "Gogs commit" "$GOGS_COMMIT" $GIT_DOMAIN_REPO
89
-
90 91
 	if grep -Fxq "install_gogs" $COMPLETION_FILE; then
91 92
 		return
92 93
 	fi
93 94
 
95
+	function_check select_go_version
96
+	select_go_version
97
+
94 98
 	if [ -d $GOPATH/src/github.com/gogits ]; then
95 99
 		rm -rf $GOPATH/src/github.com/gogits
96 100
 	fi

+ 19
- 17
src/freedombone-app-hubzilla View File

@@ -39,15 +39,29 @@ HUBZILLA_COMMIT='2d79e75788aa71664a379c4cea0b6bfe3ab87ad0'
39 39
 HUBZILLA_ADDONS_COMMIT='67b40c7a40f328a93ee030eb15e9e1261f3cba64'
40 40
 
41 41
 function upgrade_hubzilla {
42
-    echo ''
42
+	if ! grep -Fxq "install_hubzilla" $COMPLETION_FILE; then
43
+		return
44
+	fi
45
+	HUBZILLA_PATH=/var/www/$HUBZILLA_DOMAIN_NAME/htdocs
46
+
47
+	function_check set_repo_commit
48
+	set_repo_commit $HUBZILLA_PATH "Hubzilla commit" "$HUBZILLA_COMMIT" $HUBZILLA_REPO
49
+	set_repo_commit $HUBZILLA_PATH/addon "Hubzilla addons commit" "$HUBZILLA_ADDONS_COMMIT" $HUBZILLA_ADDONS_REPO
50
+	if [ -d $HUBZILLA_PATH/redmatrix-themes1 ]; then
51
+		cd $HUBZILLA_PATH/redmatrix-themes1
52
+		git stash
53
+		git pull
54
+		cp -r $HUBZILLA_PATH/redmatrix-themes1/* $HUBZILLA_PATH/view/theme/
55
+		chown -R www-data:www-data $HUBZILLA_PATH
56
+	fi
43 57
 }
44 58
 
45 59
 function backup_local_hubzilla {
46
-    echo ''
60
+	echo ''
47 61
 }
48 62
 
49 63
 function backup_remote_hubzilla {
50
-    echo ''
64
+	echo ''
51 65
 }
52 66
 
53 67
 function remove_hubzilla {
@@ -77,24 +91,12 @@ function install_hubzilla {
77 91
 		return
78 92
 	fi
79 93
 
80
-	HUBZILLA_PATH=/var/www/$HUBZILLA_DOMAIN_NAME/htdocs
81
-
82
-	# update to a new commit if needed
83
-	function_check set_repo_commit
84
-	set_repo_commit $HUBZILLA_PATH "Hubzilla commit" "$HUBZILLA_COMMIT" $HUBZILLA_REPO
85
-	set_repo_commit $HUBZILLA_PATH/addon "Hubzilla addons commit" "$HUBZILLA_ADDONS_COMMIT" $HUBZILLA_ADDONS_REPO
86
-	if [ -d $HUBZILLA_PATH/redmatrix-themes1 ]; then
87
-		cd $HUBZILLA_PATH/redmatrix-themes1
88
-		git stash
89
-		git pull
90
-		cp -r $HUBZILLA_PATH/redmatrix-themes1/* $HUBZILLA_PATH/view/theme/
91
-		chown -R www-data:www-data $HUBZILLA_PATH
92
-	fi
93
-
94 94
 	if grep -Fxq "install_hubzilla" $COMPLETION_FILE; then
95 95
 		return
96 96
 	fi
97 97
 
98
+	HUBZILLA_PATH=/var/www/$HUBZILLA_DOMAIN_NAME/htdocs
99
+
98 100
 	function_check install_mariadb
99 101
 	install_mariadb
100 102
 

+ 12
- 8
src/freedombone-app-ipfs View File

@@ -33,7 +33,15 @@ IPFS_COMMIT='20b06a4cbce8884f5b194da6e98cb11f2c77f166'
33 33
 IPFS_PORT=4001
34 34
 
35 35
 function upgrade_ipfs {
36
-    echo ''
36
+	if ! grep -Fxq "install_ipfs" $COMPLETION_FILE; then
37
+		return
38
+	fi
39
+
40
+	function_check select_go_version
41
+	select_go_version
42
+
43
+	function_check set_repo_commit
44
+	set_repo_commit $GOPATH/src/github.com/ipfs/go-ipfs "ipfs commit" "$IPFS_COMMIT" $IPFS_REPO
37 45
 }
38 46
 
39 47
 function backup_local_ipfs {
@@ -86,17 +94,13 @@ function install_ipfs {
86 94
 		return
87 95
 	fi
88 96
 
89
-	function_check select_go_version
90
-	select_go_version
91
-
92
-	# update to the next commit
93
-	function_check set_repo_commit
94
-	set_repo_commit $GOPATH/src/github.com/ipfs/go-ipfs "ipfs commit" "$IPFS_COMMIT" $IPFS_REPO
95
-
96 97
 	if grep -Fxq "install_ipfs" $COMPLETION_FILE; then
97 98
 		return
98 99
 	fi
99 100
 
101
+	function_check select_go_version
102
+	select_go_version
103
+
100 104
 	apt-get -y install golang libpam0g-dev fuse
101 105
 
102 106
 	if [ ! -d /home/git ]; then

+ 30
- 9
src/freedombone-app-rss View File

@@ -41,7 +41,36 @@ RSS_READER_GNUSOCIAL_REPO="https://github.com/bashrc/ttrss-gnusocial"
41 41
 RSS_READER_GNUSOCIAL_COMMIT='8b92b8f5db7b0d12459c7bd86a50f48815efe642'
42 42
 
43 43
 function upgrade_rss {
44
-    echo ''
44
+	if grep -Fxq "install_rss" $COMPLETION_FILE; then
45
+		function_check set_repo_commit
46
+		set_repo_commit $RSS_READER_PATH "RSS reader commit" "$RSS_READER_COMMIT" $RSS_READER_REPO
47
+	fi
48
+
49
+	if grep -Fxq "install_rss_mobile_reader" $COMPLETION_FILE; then
50
+		if [ ! $RSS_READER_PATH ]; then
51
+			RSS_READER_PATH=/etc/share/tt-rss
52
+		fi
53
+
54
+		if [ ! -d $RSS_READER_PATH ]; then
55
+			echo $'tt-rss is not installed, so the mobile version cannot be installed'
56
+			exit 63452
57
+		fi
58
+
59
+		RSS_MOBILE_READER_PATH=/etc/share/ttrss-mobile
60
+
61
+		# remove any previous install
62
+		if [ -d $RSS_READER_PATH/g2ttree-mobile ]; then
63
+			if grep -Fxq "install_rss_mobile_reader" $COMPLETION_FILE; then
64
+				sed -i '/install_rss_mobile_reader/d' $COMPLETION_FILE
65
+				sed -i '/RSS mobile reader commit/d' $COMPLETION_FILE
66
+				rm -rf $RSS_READER_PATH/g2ttree-mobile
67
+			fi
68
+		fi
69
+
70
+		# update to the next commit
71
+		function_check set_repo_commit
72
+		set_repo_commit $RSS_MOBILE_READER_PATH "RSS mobile reader commit" "$RSS_MOBILE_READER_COMMIT" $RSS_MOBILE_READER_REPO
73
+	fi
45 74
 }
46 75
 
47 76
 function backup_local_rss {
@@ -93,10 +122,6 @@ function install_rss_main {
93 122
 		return
94 123
 	fi
95 124
 
96
-	# update to the next commit
97
-	function_check set_repo_commit
98
-	set_repo_commit $RSS_READER_PATH "RSS reader commit" "$RSS_READER_COMMIT" $RSS_READER_REPO
99
-
100 125
 	if grep -Fxq "install_rss_main" $COMPLETION_FILE; then
101 126
 		return
102 127
 	fi
@@ -415,10 +440,6 @@ function install_rss_mobile_reader {
415 440
 		fi
416 441
 	fi
417 442
 
418
-	# update to the next commit
419
-	function_check set_repo_commit
420
-	set_repo_commit $RSS_MOBILE_READER_PATH "RSS mobile reader commit" "$RSS_MOBILE_READER_COMMIT" $RSS_MOBILE_READER_REPO
421
-
422 443
 	if grep -Fxq "install_rss_mobile_reader" $COMPLETION_FILE; then
423 444
 		return
424 445
 	fi

+ 22
- 21
src/freedombone-app-searx View File

@@ -37,7 +37,28 @@ SEARX_LOGIN_TEXT=$"Search engine login"
37 37
 SEARX_PASSWORD=
38 38
 
39 39
 function upgrade_searx {
40
-    echo ''
40
+	if ! grep -Fxq "install_searx" $COMPLETION_FILE; then
41
+		return
42
+	fi
43
+
44
+	set_repo_commit $SEARX_PATH/searx "Search engine commit" "$SEARX_COMMIT" $SEARX_REPO
45
+	if grep "Search engine key" $COMPLETION_FILE; then
46
+		if [ -f ${SEARX_PATH}/searx/searx/settings.yml ]; then
47
+			# note: this might change to a --tor option in a later version
48
+			if ! grep 'socks5://127.0.0.1:9050' ${SEARX_PATH}/searx/searx/settings.yml; then
49
+				echo 'outgoing: # communication with search engines' >> ${SEARX_PATH}/searx/searx/settings.yml
50
+				echo '    proxies:' >> ${SEARX_PATH}/searx/searx/settings.yml
51
+				echo '        http : socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
52
+				echo '        https: socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
53
+			fi
54
+			SEARX_SECRET_KEY=$(cat $COMPLETION_FILE | grep "Search engine key" | awk -F ':' '{print $2}')
55
+			sed -i "s|secret_key.*|secret_key : \"${SEARX_SECRET_KEY}\"|g" ${SEARX_PATH}/searx/searx/settings.yml
56
+			if [ -f /var/lib/tor/hidden_service_searx/hostname ]; then
57
+				SEARX_ONION_HOSTNAME=$(echo /var/lib/tor/hidden_service_searx/hostname)
58
+				sed -i '0,/RE/s/base_url.*/base_url : \"http://${SEARX_ONION_HOSTNAME}\/' ${SEARX_PATH}/searx/searx/settings.yml
59
+			fi
60
+		fi
61
+	fi
41 62
 }
42 63
 
43 64
 function backup_local_searx {
@@ -79,26 +100,6 @@ function install_searx {
79 100
 		exit 62429
80 101
 	fi
81 102
 
82
-	# update to a new commit if needed
83
-	set_repo_commit $SEARX_PATH/searx "Search engine commit" "$SEARX_COMMIT" $SEARX_REPO
84
-	if grep "Search engine key" $COMPLETION_FILE; then
85
-		if [ -f ${SEARX_PATH}/searx/searx/settings.yml ]; then
86
-			# note: this might change to a --tor option in a later version
87
-			if ! grep 'socks5://127.0.0.1:9050' ${SEARX_PATH}/searx/searx/settings.yml; then
88
-				echo 'outgoing: # communication with search engines' >> ${SEARX_PATH}/searx/searx/settings.yml
89
-				echo '    proxies:' >> ${SEARX_PATH}/searx/searx/settings.yml
90
-				echo '        http : socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
91
-				echo '        https: socks5://127.0.0.1:9050' >> ${SEARX_PATH}/searx/searx/settings.yml
92
-			fi
93
-			SEARX_SECRET_KEY=$(cat $COMPLETION_FILE | grep "Search engine key" | awk -F ':' '{print $2}')
94
-			sed -i "s|secret_key.*|secret_key : \"${SEARX_SECRET_KEY}\"|g" ${SEARX_PATH}/searx/searx/settings.yml
95
-			if [ -f /var/lib/tor/hidden_service_searx/hostname ]; then
96
-				SEARX_ONION_HOSTNAME=$(echo /var/lib/tor/hidden_service_searx/hostname)
97
-				sed -i '0,/RE/s/base_url.*/base_url : \"http://${SEARX_ONION_HOSTNAME}\/' ${SEARX_PATH}/searx/searx/settings.yml
98
-			fi
99
-		fi
100
-	fi
101
-
102 103
 	if grep -Fxq "install_searx" $COMPLETION_FILE; then
103 104
 		return
104 105
 	fi

+ 9
- 10
src/freedombone-app-tox View File

@@ -45,7 +45,14 @@ TOXIC_COMMIT='cf16849b374e484a33a4dffa3dfb937b59d537f2'
45 45
 TOXIC_FILE=/usr/local/bin/toxic
46 46
 
47 47
 function upgrade_tox {
48
-    echo ''
48
+	if ! grep -Fxq "install_tox" $COMPLETION_FILE; then
49
+		return
50
+	fi
51
+	function_check set_repo_commit
52
+	set_repo_commit $INSTALL_DIR/toxcore "toxcore commit" "$TOXCORE_COMMIT" $TOXCORE_REPO
53
+
54
+	function_check set_repo_commit
55
+	set_repo_commit $INSTALL_DIR/toxic "Toxic commit" "$TOXIC_COMMIT" $TOXIC_REPO
49 56
 }
50 57
 
51 58
 function backup_local_tox {
@@ -172,10 +179,6 @@ function install_tox_node {
172 179
 		return
173 180
 	fi
174 181
 
175
-	# update to the next commit
176
-	function_check set_repo_commit
177
-	set_repo_commit $INSTALL_DIR/toxcore "toxcore commit" "$TOXCORE_COMMIT" $TOXCORE_REPO
178
-
179 182
 	if grep -Fxq "install_tox_node" $COMPLETION_FILE; then
180 183
 		return
181 184
 	fi
@@ -231,10 +234,6 @@ function install_tox_client {
231 234
 		return
232 235
 	fi
233 236
 
234
-	# update to the next commit
235
-	function_check set_repo_commit
236
-	set_repo_commit $INSTALL_DIR/toxic "Toxic commit" "$TOXIC_COMMIT" $TOXIC_REPO
237
-
238 237
 	if grep -Fxq "install_tox_client" $COMPLETION_FILE; then
239 238
 		return
240 239
 	fi
@@ -255,7 +254,7 @@ function install_tox_client {
255 254
 }
256 255
 
257 256
 function install_tox {
258
-	if ! grep -Fxq "install_tox" $COMPLETION_FILE; then
257
+	if grep -Fxq "install_tox" $COMPLETION_FILE; then
259 258
 		return
260 259
 	fi
261 260
 	configure_firewall_for_tox

+ 7
- 7
src/freedombone-app-webmail View File

@@ -37,15 +37,19 @@ WEB_PATH=/var/www
37 37
 WEBMAIL_PATH=$WEB_PATH/webmail
38 38
 
39 39
 function upgrade_webmail {
40
-    echo ''
40
+	if ! grep -Fxq "install_webmail" $COMPLETION_FILE; then
41
+		return
42
+	fi
43
+	function_check set_repo_commit
44
+	set_repo_commit $WEBMAIL_PATH "Webmail commit" "$WEBMAIL_COMMIT" $WEBMAIL_REPO
41 45
 }
42 46
 
43 47
 function backup_local_webmail {
44
-    echo ''
48
+	echo ''
45 49
 }
46 50
 
47 51
 function backup_remote_webmail {
48
-    echo ''
52
+	echo ''
49 53
 }
50 54
 
51 55
 function remove_webmail {
@@ -72,10 +76,6 @@ function install_webmail {
72 76
 		return
73 77
 	fi
74 78
 
75
-	# update to a new commit if needed
76
-	function_check set_repo_commit
77
-	set_repo_commit $WEBMAIL_PATH "Webmail commit" "$WEBMAIL_COMMIT" $WEBMAIL_REPO
78
-
79 79
 	if grep -Fxq "install_webmail" $COMPLETION_FILE; then
80 80
 		return
81 81
 	fi

+ 366
- 362
src/freedombone-app-xmpp View File

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

+ 8
- 15
src/freedombone-app-zeronet View File

@@ -46,7 +46,14 @@ ZERONET_ID_REPO="https://github.com/HelloZeroNet/ZeroID"
46 46
 ZERONET_ID_COMMIT='ccf14fdc96fa9cdb2ddd8a7ab283a8e17a4f234b'
47 47
 
48 48
 function upgrade_zeronet {
49
-    echo ''
49
+	if ! grep -Fxq "install_zeronet" $COMPLETION_FILE; then
50
+		return
51
+	fi
52
+	function_check set_repo_commit
53
+	set_repo_commit $MESH_INSTALL_DIR/zeronet "ZeroNet commit" "$ZERONET_COMMIT" $ZERONET_REPO
54
+	set_repo_commit $MESH_INSTALL_DIR/zeronet/ZeroBlog "ZeroNet Blog commit" "$ZERONET_BLOG_COMMIT" $ZERONET_BLOG_REPO
55
+	set_repo_commit $MESH_INSTALL_DIR/zeronet/ZeroMail "ZeroNet Mail commit" "$ZERONET_MAIL_COMMIT" $ZERONET_MAIL_REPO
56
+	set_repo_commit $MESH_INSTALL_DIR/zeronet/ZeroTalk "ZeroNet Forum commit" "$ZERONET_FORUM_COMMIT" $ZERONET_FORUM_REPO
50 57
 }
51 58
 
52 59
 function backup_local_zeronet {
@@ -135,9 +142,6 @@ function install_zeronet_blog {
135 142
 		return
136 143
 	fi
137 144
 
138
-	function_check set_repo_commit
139
-	set_repo_commit $MESH_INSTALL_DIR/zeronet/ZeroBlog "ZeroNet Blog commit" "$ZERONET_BLOG_COMMIT" $ZERONET_BLOG_REPO
140
-
141 145
 	if grep -Fxq "install_zeronet_blog" $COMPLETION_FILE; then
142 146
 		return
143 147
 	fi
@@ -241,9 +245,6 @@ function install_zeronet_mail {
241 245
 		return
242 246
 	fi
243 247
 
244
-	function_check set_repo_commit
245
-	set_repo_commit $MESH_INSTALL_DIR/zeronet/ZeroMail "ZeroNet Mail commit" "$ZERONET_MAIL_COMMIT" $ZERONET_MAIL_REPO
246
-
247 248
 	if grep -Fxq "install_zeronet_mail" $COMPLETION_FILE; then
248 249
 		return
249 250
 	fi
@@ -347,10 +348,6 @@ function install_zeronet_forum {
347 348
 		return
348 349
 	fi
349 350
 
350
-	# update to the next commit
351
-	function_check set_repo_commit
352
-	set_repo_commit $MESH_INSTALL_DIR/zeronet/ZeroTalk "ZeroNet Forum commit" "$ZERONET_FORUM_COMMIT" $ZERONET_FORUM_REPO
353
-
354 351
 	if grep -Fxq "install_zeronet_forum" $COMPLETION_FILE; then
355 352
 		return
356 353
 	fi
@@ -448,10 +445,6 @@ function install_zeronet_main {
448 445
 		return
449 446
 	fi
450 447
 
451
-	# update to the next commit
452
-	function_check set_repo_commit
453
-	set_repo_commit $MESH_INSTALL_DIR/zeronet "ZeroNet commit" "$ZERONET_COMMIT" $ZERONET_REPO
454
-
455 448
 	if grep -Fxq "install_zeronet_main" $COMPLETION_FILE; then
456 449
 		return
457 450
 	fi