Browse Source

Improve hubzilla backup

Bob Mottram 8 years ago
parent
commit
b92b5c0e9f
1 changed files with 427 additions and 428 deletions
  1. 427
    428
      src/freedombone-app-hubzilla

+ 427
- 428
src/freedombone-app-hubzilla View File

@@ -41,455 +41,454 @@ HUBZILLA_COMMIT='2d79e75788aa71664a379c4cea0b6bfe3ab87ad0'
41 41
 HUBZILLA_ADDONS_COMMIT='67b40c7a40f328a93ee030eb15e9e1261f3cba64'
42 42
 
43 43
 function reconfigure_hubzilla {
44
-	echo -n ''
44
+    echo -n ''
45 45
 }
46 46
 
47 47
 function upgrade_hubzilla {
48
-	if ! grep -Fxq "install_hubzilla" $COMPLETION_FILE; then
49
-		return
50
-	fi
51
-	HUBZILLA_PATH=/var/www/$HUBZILLA_DOMAIN_NAME/htdocs
52
-
53
-	function_check set_repo_commit
54
-	set_repo_commit $HUBZILLA_PATH "Hubzilla commit" "$HUBZILLA_COMMIT" $HUBZILLA_REPO
55
-	set_repo_commit $HUBZILLA_PATH/addon "Hubzilla addons commit" "$HUBZILLA_ADDONS_COMMIT" $HUBZILLA_ADDONS_REPO
56
-	if [ -d $HUBZILLA_PATH/redmatrix-themes1 ]; then
57
-		cd $HUBZILLA_PATH/redmatrix-themes1
58
-		git stash
59
-		git pull
60
-		cp -r $HUBZILLA_PATH/redmatrix-themes1/* $HUBZILLA_PATH/view/theme/
61
-		chown -R www-data:www-data $HUBZILLA_PATH
62
-	fi
48
+    if ! grep -Fxq "install_hubzilla" $COMPLETION_FILE; then
49
+        return
50
+    fi
51
+    HUBZILLA_PATH=/var/www/$HUBZILLA_DOMAIN_NAME/htdocs
52
+
53
+    function_check set_repo_commit
54
+    set_repo_commit $HUBZILLA_PATH "Hubzilla commit" "$HUBZILLA_COMMIT" $HUBZILLA_REPO
55
+    set_repo_commit $HUBZILLA_PATH/addon "Hubzilla addons commit" "$HUBZILLA_ADDONS_COMMIT" $HUBZILLA_ADDONS_REPO
56
+    if [ -d $HUBZILLA_PATH/redmatrix-themes1 ]; then
57
+        cd $HUBZILLA_PATH/redmatrix-themes1
58
+        git stash
59
+        git pull
60
+        cp -r $HUBZILLA_PATH/redmatrix-themes1/* $HUBZILLA_PATH/view/theme/
61
+        chown -R www-data:www-data $HUBZILLA_PATH
62
+    fi
63 63
 }
64 64
 
65 65
 function backup_local_hubzilla {
66
-	if grep -q "Hubzilla domain" $COMPLETION_FILE; then
67
-		if [ -d /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs ]; then
68
-			echo $"Backing up Hubzilla"
69
-
70
-			HUBZILLA_DOMAIN_NAME='hubzilla'
71
-			HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
72
-
73
-			function_check backup_database_to_usb
74
-			backup_database_to_usb hubzilla
75
-
76
-			backup_directory_to_usb /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs hubzilla
77
-
78
-			echo $"Hubzilla backup complete"
79
-		fi
80
-	fi
66
+    if grep -q "Hubzilla domain" $COMPLETION_FILE; then
67
+        HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
68
+        hubzilla_path=/var/www/${HUBZILLA_DOMAIN_NAME}/htdocs
69
+        if [ -d $hubzilla_path ]; then
70
+            echo $"Backing up Hubzilla"
71
+            function_check backup_database_to_usb
72
+            backup_database_to_usb hubzilla
73
+
74
+            backup_directory_to_usb $hubzilla_path hubzilla
75
+
76
+            echo $"Hubzilla backup complete"
77
+        fi
78
+    fi
81 79
 }
82 80
 
83 81
 function restore_local_hubzilla {
84
-	if ! grep -q "Hubzilla domain" $COMPLETION_FILE; then
85
-		return
86
-	fi
87
-	HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
88
-	if [ $HUBZILLA_DOMAIN_NAME ]; then
89
-		echo $"Restoring Hubzilla"
90
-		temp_restore_dir=/root/temphubzilla
91
-		hubzilla_dir=/var/www/${HUBZILLA_DOMAIN_NAME}/htdocs
92
-		restore_database hubzilla ${HUBZILLA_DOMAIN_NAME}
93
-		if [ -d $USB_MOUNT/backup/hubzilla ]; then
94
-			if [ ! -d $hubzilla_dir/store/[data]/smarty3 ]; then
95
-				mkdir -p $hubzilla_dir/store/[data]/smarty3
96
-			fi
97
-			chmod 777 $hubzilla_dir/store/[data]/smarty3
98
-			chown -R www-data:www-data $hubzilla_dir/*
99
-			if [ -d $temp_restore_dir ]; then
100
-				rm -rf $temp_restore_dir
101
-			fi
102
-		fi
103
-		echo $"Restore of Hubzilla complete"
104
-	fi
82
+    if ! grep -q "Hubzilla domain" $COMPLETION_FILE; then
83
+        return
84
+    fi
85
+    HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
86
+    if [ $HUBZILLA_DOMAIN_NAME ]; then
87
+        echo $"Restoring Hubzilla"
88
+        temp_restore_dir=/root/temphubzilla
89
+        hubzilla_dir=/var/www/${HUBZILLA_DOMAIN_NAME}/htdocs
90
+        restore_database hubzilla ${HUBZILLA_DOMAIN_NAME}
91
+        if [ -d $USB_MOUNT/backup/hubzilla ]; then
92
+            if [ ! -d $hubzilla_dir/store/[data]/smarty3 ]; then
93
+                mkdir -p $hubzilla_dir/store/[data]/smarty3
94
+            fi
95
+            chmod 777 $hubzilla_dir/store/[data]/smarty3
96
+            chown -R www-data:www-data $hubzilla_dir/*
97
+            if [ -d $temp_restore_dir ]; then
98
+                rm -rf $temp_restore_dir
99
+            fi
100
+        fi
101
+        echo $"Restore of Hubzilla complete"
102
+    fi
105 103
 }
106 104
 
107 105
 function backup_remote_hubzilla {
108
-	if grep -q "Hubzilla domain" $COMPLETION_FILE; then
109
-		HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
110
-		temp_backup_dir=/var/www/${HUBZILLA_DOMAIN_NAME}/htdocs
111
-		if [ -d $temp_backup_dir ]; then
112
-			suspend_site ${HUBZILLA_DOMAIN_NAME}
113
-			backup_database_to_friend hubzilla
114
-			echo "Backing up Hubzilla installation"
115
-			backup_directory_to_friend $temp_backup_dir hubzilla
116
-			restart_site
117
-		else
118
-			echo $"Hubzilla domain specified but not found in /var/www/${HUBZILLA_DOMAIN_NAME}"
119
-			exit 2578
120
-		fi
121
-	fi
106
+    if grep -q "Hubzilla domain" $COMPLETION_FILE; then
107
+        HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
108
+        temp_backup_dir=/var/www/${HUBZILLA_DOMAIN_NAME}/htdocs
109
+        if [ -d $temp_backup_dir ]; then
110
+            suspend_site ${HUBZILLA_DOMAIN_NAME}
111
+            backup_database_to_friend hubzilla
112
+            echo "Backing up Hubzilla installation"
113
+            backup_directory_to_friend $temp_backup_dir hubzilla
114
+            restart_site
115
+            echo "Backup of Hubzilla complete"
116
+        else
117
+            echo $"Hubzilla domain specified but not found in /var/www/${HUBZILLA_DOMAIN_NAME}"
118
+            exit 2578
119
+        fi
120
+    fi
122 121
 }
123 122
 
124 123
 function restore_remote_hubzilla {
125
-	if grep -q "Hubzilla domain" $COMPLETION_FILE; then
126
-		echo $"Restoring Hubzilla"
127
-		HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
128
-		function_check restore_database_from_friend
129
-		restore_database_from_friend hubzilla ${HUBZILLA_DOMAIN_NAME}
130
-		if [ -d $SERVER_DIRECTORY/backup/hubzilla ]; then
131
-			if [ ! -d /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/store/[data]/smarty3 ]; then
132
-				mkdir -p /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/store/[data]/smarty3
133
-			fi
134
-			chmod 777 /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/store/[data]/smarty3
135
-			chown -R www-data:www-data /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/*
136
-		fi
137
-		if [ -d /root/temphubzilla ]; then
138
-			rm -rf /root/temphubzilla
139
-		fi
140
-		echo $"Restore of Hubzilla complete"
141
-	fi
124
+    if grep -q "Hubzilla domain" $COMPLETION_FILE; then
125
+        echo $"Restoring Hubzilla"
126
+        HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
127
+        function_check restore_database_from_friend
128
+        restore_database_from_friend hubzilla ${HUBZILLA_DOMAIN_NAME}
129
+        if [ -d $SERVER_DIRECTORY/backup/hubzilla ]; then
130
+            if [ ! -d /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/store/[data]/smarty3 ]; then
131
+                mkdir -p /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/store/[data]/smarty3
132
+            fi
133
+            chmod 777 /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/store/[data]/smarty3
134
+            chown -R www-data:www-data /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/*
135
+        fi
136
+        if [ -d /root/temphubzilla ]; then
137
+            rm -rf /root/temphubzilla
138
+        fi
139
+        echo $"Restore of Hubzilla complete"
140
+    fi
142 141
 }
143 142
 
144 143
 function remove_hubzilla {
145
-	if ! grep -Fxq "install_hubzilla" $COMPLETION_FILE; then
146
-		return
147
-	fi
148
-	nginx_dissite $HUBZILLA_DOMAIN_NAME
149
-	if [ -d /var/www/$HUBZILLA_DOMAIN_NAME ]; then
150
-		rm -rf /var/www/$HUBZILLA_DOMAIN_NAME
151
-	fi
152
-	if [ -f /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME ]; then
153
-		rm /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
154
-	fi
155
-	function_check drop_database
156
-	drop_database hubzilla
157
-	function_check remove_onion_service
158
-	remove_onion_service hubzilla ${HUBZILLA_ONION_PORT}
159
-	sed -i '/install_hubzilla/d' $COMPLETION_FILE
160
-	sed -i '/Hubzilla /d' $COMPLETION_FILE
144
+    if ! grep -Fxq "install_hubzilla" $COMPLETION_FILE; then
145
+        return
146
+    fi
147
+    nginx_dissite $HUBZILLA_DOMAIN_NAME
148
+    if [ -d /var/www/$HUBZILLA_DOMAIN_NAME ]; then
149
+        rm -rf /var/www/$HUBZILLA_DOMAIN_NAME
150
+    fi
151
+    if [ -f /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME ]; then
152
+        rm /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
153
+    fi
154
+    function_check drop_database
155
+    drop_database hubzilla
156
+    function_check remove_onion_service
157
+    remove_onion_service hubzilla ${HUBZILLA_ONION_PORT}
158
+    sed -i '/install_hubzilla/d' $COMPLETION_FILE
159
+    sed -i '/Hubzilla /d' $COMPLETION_FILE
161 160
 }
162 161
 
163 162
 function install_hubzilla {
164
-	if [ ! $HUBZILLA_DOMAIN_NAME ]; then
165
-		return
166
-	fi
167
-
168
-	if grep -Fxq "install_hubzilla" $COMPLETION_FILE; then
169
-		return
170
-	fi
171
-
172
-	HUBZILLA_PATH=/var/www/$HUBZILLA_DOMAIN_NAME/htdocs
173
-
174
-	function_check install_mariadb
175
-	install_mariadb
176
-
177
-	function_check get_mariadb_password
178
-	get_mariadb_password
179
-
180
-	function_check repair_databases_script
181
-	repair_databases_script
182
-
183
-	apt-get -y install php5-common php5-cli php5-curl php5-gd php5-mysql php5-mcrypt git
184
-	apt-get -y install php5-dev imagemagick php5-imagick
185
-	apt-get -y install php5-memcached
186
-
187
-	if [ ! -d /var/www/$HUBZILLA_DOMAIN_NAME ]; then
188
-		mkdir /var/www/$HUBZILLA_DOMAIN_NAME
189
-	fi
190
-	if [ ! -d $HUBZILLA_PATH ]; then
191
-		mkdir $HUBZILLA_PATH
192
-	fi
193
-
194
-	if [ ! -f $HUBZILLA_PATH/index.php ]; then
195
-		cd $INSTALL_DIR
196
-		function_check git_clone
197
-		git_clone $HUBZILLA_REPO hubzilla
198
-		git checkout $HUBZILLA_COMMIT -b $HUBZILLA_COMMIT
199
-		if ! grep -q "Hubzilla commit" $COMPLETION_FILE; then
200
-			echo "Hubzilla commit:$HUBZILLA_COMMIT" >> $COMPLETION_FILE
201
-		else
202
-			sed -i "s/Hubzilla commit.*/Hubzilla commit:$HUBZILLA_COMMIT/g" $COMPLETION_FILE
203
-		fi
204
-
205
-		rm -rf $HUBZILLA_PATH
206
-		mv hubzilla $HUBZILLA_PATH
207
-
208
-		git_clone $HUBZILLA_ADDONS_REPO $HUBZILLA_PATH/addon
209
-		cd $HUBZILLA_PATH/addon
210
-		git checkout $HUBZILLA_ADDONS_COMMIT -b $HUBZILLA_ADDONS_COMMIT
211
-		if ! grep -q "Hubzilla addons commit" $COMPLETION_FILE; then
212
-			echo "Hubzilla addons commit:$HUBZILLA_ADDONS_COMMIT" >> $COMPLETION_FILE
213
-		else
214
-			sed -i "s/Hubzilla addons commit.*/Hubzilla addons commit:$HUBZILLA_ADDONS_COMMIT/g" $COMPLETION_FILE
215
-		fi
216
-
217
-		# some extra themes
218
-		git_clone $HUBZILLA_THEMES_REPO $HUBZILLA_PATH/redmatrix-themes1
219
-		cp -r $HUBZILLA_PATH/redmatrix-themes1/* $HUBZILLA_PATH/view/theme/
220
-
221
-		chown -R www-data:www-data $HUBZILLA_PATH
222
-	fi
223
-
224
-	HUBZILLA_ONION_HOSTNAME=
225
-	if [[ $ONION_ONLY != "no" ]]; then
226
-		HUBZILLA_ONION_HOSTNAME=$(add_onion_service hubzilla 80 ${HUBZILLA_ONION_PORT})
227
-		echo "Hubzilla onion domain:${HUBZILLA_ONION_HOSTNAME}" >> $COMPLETION_FILE
228
-	fi
229
-
230
-	function_check get_mariadb_hubzilla_admin_password
231
-	get_mariadb_hubzilla_admin_password
232
-	if [ ! $HUBZILLA_ADMIN_PASSWORD ]; then
233
-		if [ -f $IMAGE_PASSWORD_FILE ]; then
234
-			HUBZILLA_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
235
-		else
236
-			HUBZILLA_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
237
-		fi
238
-		echo '' >> /home/$MY_USERNAME/README
239
-		echo '' >> /home/$MY_USERNAME/README
240
-		echo 'Hubzilla' >> /home/$MY_USERNAME/README
241
-		echo '========' >> /home/$MY_USERNAME/README
242
-		if [[ $ONION_ONLY == 'no' ]]; then
243
-			echo $"Open https://$HUBZILLA_DOMAIN_NAME and register a new user" >> /home/$MY_USERNAME/README
244
-		else
245
-			echo $"Open http://$HUBZILLA_ONION_HOSTNAME and register a new user" >> /home/$MY_USERNAME/README
246
-		fi
247
-		echo $"Your MariaDB Hubzilla admin password is: $HUBZILLA_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
248
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
249
-		chmod 600 /home/$MY_USERNAME/README
250
-	fi
251
-
252
-	function_check create_database
253
-	create_database hubzilla "$HUBZILLA_ADMIN_PASSWORD"
254
-
255
-	if ! grep -q "$HUBZILLA_PATH" /etc/crontab; then
256
-		echo "12,22,32,42,52 * *   *   *   root cd $HUBZILLA_PATH; /usr/bin/timeout 500 /usr/bin/php include/poller.php" >> /etc/crontab
257
-	fi
258
-
259
-	function check add_ddns_domain
260
-	add_ddns_domain $HUBZILLA_DOMAIN_NAME
261
-
262
-	if [[ $ONION_ONLY == "no" ]]; then
263
-		function_check nginx_http_redirect
264
-		nginx_http_redirect $HUBZILLA_DOMAIN_NAME
265
-		echo 'server {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
266
-		echo '    listen 443 ssl;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
267
-		echo "    root $HUBZILLA_PATH;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
268
-		echo "    server_name $HUBZILLA_DOMAIN_NAME;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
269
-		echo "    error_log /var/log/nginx/${HUBZILLA_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
270
-		echo '    index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
271
-		echo '    charset utf-8;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
272
-		echo '    access_log off;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
273
-		function_check nginx_limits
274
-		nginx_limits $HUBZILLA_DOMAIN_NAME
275
-		function_check nginx_ssl
276
-		nginx_ssl $HUBZILLA_DOMAIN_NAME
277
-		function_check nginx_disable_sniffing
278
-		nginx_disable_sniffing $HUBZILLA_DOMAIN_NAME
279
-		echo '    add_header Strict-Transport-Security max-age=15768000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
280
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
281
-		echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
282
-		echo '    location / {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
283
-		echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
284
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
285
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
286
-		echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
287
-		echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
288
-		echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
289
-		echo '        allow all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
290
-		echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
291
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
292
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
293
-		echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
294
-		echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
295
-		echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
296
-		echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
297
-		echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
298
-		echo '        expires 30d;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
299
-		echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
300
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
301
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
302
-		echo '    # block these file types' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
303
-		echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
304
-		echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
305
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
306
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
307
-		echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
308
-		echo '    # or a unix socket' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
309
-		echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
310
-		echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
311
-		echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
312
-		echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
313
-		echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
314
-		echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
315
-		echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
316
-		echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
317
-		echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
318
-		echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
319
-		echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
320
-		echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
321
-		echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
322
-		echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
323
-		echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
324
-		echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
325
-		echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
326
-		echo '        fastcgi_read_timeout 300;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
327
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
328
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
329
-		echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
330
-		echo '    location ~ /\. {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
331
-		echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
332
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
333
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
334
-		echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
335
-		echo '      deny  all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
336
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
337
-		echo '}' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
338
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
339
-	else
340
-		echo 'server {' > /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
341
-		echo "    listen 127.0.0.1:${HUBZILLA_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
342
-		echo "    root $HUBZILLA_PATH;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
343
-		echo "    server_name $HUBZILLA_ONION_HOSTNAME;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
344
-		echo "    error_log /var/log/nginx/${HUBZILLA_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
345
-		echo '    index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
346
-		echo '    charset utf-8;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
347
-		echo '    access_log off;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
348
-		nginx_limits $HUBZILLA_DOMAIN_NAME
349
-		nginx_disable_sniffing $HUBZILLA_DOMAIN_NAME
350
-		echo '    add_header Strict-Transport-Security max-age=15768000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
351
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
352
-		echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
353
-		echo '    location / {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
354
-		echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
355
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
356
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
357
-		echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
358
-		echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
359
-		echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
360
-		echo '        allow all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
361
-		echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
362
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
363
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
364
-		echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
365
-		echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
366
-		echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
367
-		echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
368
-		echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
369
-		echo '        expires 30d;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
370
-		echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
371
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
372
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
373
-		echo '    # block these file types' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
374
-		echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
375
-		echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
376
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
377
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
378
-		echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
379
-		echo '    # or a unix socket' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
380
-		echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
381
-		echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
382
-		echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
383
-		echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
384
-		echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
385
-		echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
386
-		echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
387
-		echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
388
-		echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
389
-		echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
390
-		echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
391
-		echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
392
-		echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
393
-		echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
394
-		echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
395
-		echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
396
-		echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
397
-		echo '        fastcgi_read_timeout 300;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
398
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
399
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
400
-		echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
401
-		echo '    location ~ /\. {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
402
-		echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
403
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
404
-		echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
405
-		echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
406
-		echo '      deny  all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
407
-		echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
408
-		echo '}' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
409
-	fi
410
-
411
-	function_check configure_php
412
-	configure_php
413
-
414
-	function_check create_site_certificate
415
-	create_site_certificate $HUBZILLA_DOMAIN_NAME 'yes'
416
-
417
-	if [ ! -d $HUBZILLA_PATH/view/tpl/smarty3 ]; then
418
-		mkdir $HUBZILLA_PATH/view/tpl/smarty3
419
-	fi
420
-	if [ ! -d "$HUBZILLA_PATH/store" ]; then
421
-		mkdir "$HUBZILLA_PATH/store"
422
-	fi
423
-	if [ ! -d "$HUBZILLA_PATH/store/[data]" ]; then
424
-		mkdir "$HUBZILLA_PATH/store/[data]"
425
-	fi
426
-	if [ ! -d "$HUBZILLA_PATH/store/[data]/smarty3" ]; then
427
-		mkdir "$HUBZILLA_PATH/store/[data]/smarty3"
428
-		chmod 777 "$HUBZILLA_PATH/store/[data]/smarty3"
429
-	fi
430
-	chmod 777 $HUBZILLA_PATH/view/tpl
431
-	chown -R www-data:www-data "$HUBZILLA_PATH/store"
432
-	chmod 777 $HUBZILLA_PATH/view/tpl/smarty3
433
-
434
-	# Ensure that the database gets backed up locally, if remote
435
-	# backups are not being used
436
-	function_check backup_databases_script_header
437
-	backup_databases_script_header
438
-
439
-	function_check backup_database_local
440
-	backup_database_local hubzilla
441
-
442
-	chown -R www-data:www-data $HUBZILLA_PATH
443
-
444
-	function_check nginx_ensite
445
-	nginx_ensite $HUBZILLA_DOMAIN_NAME
446
-
447
-	# initialize the database
448
-	if [ ! -f $HUBZILLA_PATH/install/schema_mysql.sql ]; then
449
-		echo $'No database schema found for hubzilla'
450
-		exit 252782
451
-	fi
452
-	function_check initialise_database
453
-	initialise_database hubzilla $HUBZILLA_PATH/install/schema_mysql.sql
454
-
455
-	# create the config file
456
-	echo '<?php' > $HUBZILLA_PATH/.htconfig.php
457
-	echo "\$db_host = 'localhost';" >> $HUBZILLA_PATH/.htconfig.php
458
-	echo "\$db_port = '0';" >> $HUBZILLA_PATH/.htconfig.php
459
-	echo "\$db_user = 'root';" >> $HUBZILLA_PATH/.htconfig.php
460
-	echo "\$db_pass = '${MARIADB_PASSWORD}';" >> $HUBZILLA_PATH/.htconfig.php
461
-	echo "\$db_data = 'hubzilla';" >> $HUBZILLA_PATH/.htconfig.php
462
-	echo "\$db_type = '0';" >> $HUBZILLA_PATH/.htconfig.php
463
-	echo "\$default_timezone = 'Europe/London';" >> $HUBZILLA_PATH/.htconfig.php
464
-	if [[ $ONION_ONLY == 'no' ]]; then
465
-		echo "\$a->config['system']['baseurl'] = 'https://${HUBZILLA_DOMAIN_NAME}';" >> $HUBZILLA_PATH/.htconfig.php
466
-	else
467
-		echo "\$a->config['system']['baseurl'] = 'http://${HUBZILLA_ONION_HOSTNAME}';" >> $HUBZILLA_PATH/.htconfig.php
468
-	fi
469
-	echo "\$a->config['system']['sitename'] = \"Hubzilla\";" >> $HUBZILLA_PATH/.htconfig.php
470
-	HUBZILLA_LOCATION_HASH="$(create_password 30)"
471
-	echo "\$a->config['system']['location_hash'] = '${HUBZILLA_LOCATION_HASH}';" >> $HUBZILLA_PATH/.htconfig.php
472
-	echo "\$a->config['system']['register_policy'] = REGISTER_OPEN;" >> $HUBZILLA_PATH/.htconfig.php
473
-	echo "\$a->config['system']['register_text'] = '';" >> $HUBZILLA_PATH/.htconfig.php
474
-	echo "\$a->config['system']['admin_email'] = '${MY_EMAIL_ADDRESS}';" >> $HUBZILLA_PATH/.htconfig.php
475
-	echo "\$a->config['system']['verify_email'] = 1;" >> $HUBZILLA_PATH/.htconfig.php
476
-	echo "\$a->config['system']['access_policy'] = ACCESS_PRIVATE;" >> $HUBZILLA_PATH/.htconfig.php
477
-	echo "\$a->config['system']['sellpage'] = '';" >> $HUBZILLA_PATH/.htconfig.php
478
-	echo "\$a->config['system']['max_import_size'] = 200000;" >> $HUBZILLA_PATH/.htconfig.php
479
-	echo "\$a->config['system']['php_path'] = '/usr/bin/php';" >> $HUBZILLA_PATH/.htconfig.php
480
-	echo "\$a->config['system']['directory_mode']  = DIRECTORY_MODE_NORMAL;" >> $HUBZILLA_PATH/.htconfig.php
481
-	echo "\$a->config['system']['theme'] = 'redbasic';" >> $HUBZILLA_PATH/.htconfig.php
482
-	chown www-data:www-data $HUBZILLA_PATH/.htconfig.php
483
-	chmod 755 $HUBZILLA_PATH/.htconfig.php
484
-
485
-	systemctl restart php5-fpm
486
-	systemctl restart nginx
487
-	systemctl restart cron
488
-
489
-	${PROJECT_NAME}-addemail -u $MY_USERNAME -e "noreply@$HUBZILLA_DOMAIN_NAME" -g hubzilla --public no
490
-
491
-	echo "Hubzilla domain:${HUBZILLA_DOMAIN_NAME}" >> $COMPLETION_FILE
492
-	echo 'install_hubzilla' >> $COMPLETION_FILE
163
+    if [ ! $HUBZILLA_DOMAIN_NAME ]; then
164
+        return
165
+    fi
166
+
167
+    if grep -Fxq "install_hubzilla" $COMPLETION_FILE; then
168
+        return
169
+    fi
170
+
171
+    HUBZILLA_PATH=/var/www/$HUBZILLA_DOMAIN_NAME/htdocs
172
+
173
+    function_check install_mariadb
174
+    install_mariadb
175
+
176
+    function_check get_mariadb_password
177
+    get_mariadb_password
178
+
179
+    function_check repair_databases_script
180
+    repair_databases_script
181
+
182
+    apt-get -y install php5-common php5-cli php5-curl php5-gd php5-mysql php5-mcrypt git
183
+    apt-get -y install php5-dev imagemagick php5-imagick
184
+    apt-get -y install php5-memcached
185
+
186
+    if [ ! -d /var/www/$HUBZILLA_DOMAIN_NAME ]; then
187
+        mkdir /var/www/$HUBZILLA_DOMAIN_NAME
188
+    fi
189
+    if [ ! -d $HUBZILLA_PATH ]; then
190
+        mkdir $HUBZILLA_PATH
191
+    fi
192
+
193
+    if [ ! -f $HUBZILLA_PATH/index.php ]; then
194
+        cd $INSTALL_DIR
195
+        function_check git_clone
196
+        git_clone $HUBZILLA_REPO hubzilla
197
+        git checkout $HUBZILLA_COMMIT -b $HUBZILLA_COMMIT
198
+        if ! grep -q "Hubzilla commit" $COMPLETION_FILE; then
199
+            echo "Hubzilla commit:$HUBZILLA_COMMIT" >> $COMPLETION_FILE
200
+        else
201
+            sed -i "s/Hubzilla commit.*/Hubzilla commit:$HUBZILLA_COMMIT/g" $COMPLETION_FILE
202
+        fi
203
+
204
+        rm -rf $HUBZILLA_PATH
205
+        mv hubzilla $HUBZILLA_PATH
206
+
207
+        git_clone $HUBZILLA_ADDONS_REPO $HUBZILLA_PATH/addon
208
+        cd $HUBZILLA_PATH/addon
209
+        git checkout $HUBZILLA_ADDONS_COMMIT -b $HUBZILLA_ADDONS_COMMIT
210
+        if ! grep -q "Hubzilla addons commit" $COMPLETION_FILE; then
211
+            echo "Hubzilla addons commit:$HUBZILLA_ADDONS_COMMIT" >> $COMPLETION_FILE
212
+        else
213
+            sed -i "s/Hubzilla addons commit.*/Hubzilla addons commit:$HUBZILLA_ADDONS_COMMIT/g" $COMPLETION_FILE
214
+        fi
215
+
216
+        # some extra themes
217
+        git_clone $HUBZILLA_THEMES_REPO $HUBZILLA_PATH/redmatrix-themes1
218
+        cp -r $HUBZILLA_PATH/redmatrix-themes1/* $HUBZILLA_PATH/view/theme/
219
+
220
+        chown -R www-data:www-data $HUBZILLA_PATH
221
+    fi
222
+
223
+    HUBZILLA_ONION_HOSTNAME=
224
+    if [[ $ONION_ONLY != "no" ]]; then
225
+        HUBZILLA_ONION_HOSTNAME=$(add_onion_service hubzilla 80 ${HUBZILLA_ONION_PORT})
226
+        echo "Hubzilla onion domain:${HUBZILLA_ONION_HOSTNAME}" >> $COMPLETION_FILE
227
+    fi
228
+
229
+    function_check get_mariadb_hubzilla_admin_password
230
+    get_mariadb_hubzilla_admin_password
231
+    if [ ! $HUBZILLA_ADMIN_PASSWORD ]; then
232
+        if [ -f $IMAGE_PASSWORD_FILE ]; then
233
+            HUBZILLA_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
234
+        else
235
+            HUBZILLA_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
236
+        fi
237
+        echo '' >> /home/$MY_USERNAME/README
238
+        echo '' >> /home/$MY_USERNAME/README
239
+        echo 'Hubzilla' >> /home/$MY_USERNAME/README
240
+        echo '========' >> /home/$MY_USERNAME/README
241
+        if [[ $ONION_ONLY == 'no' ]]; then
242
+            echo $"Open https://$HUBZILLA_DOMAIN_NAME and register a new user" >> /home/$MY_USERNAME/README
243
+        else
244
+            echo $"Open http://$HUBZILLA_ONION_HOSTNAME and register a new user" >> /home/$MY_USERNAME/README
245
+        fi
246
+        echo $"Your MariaDB Hubzilla admin password is: $HUBZILLA_ADMIN_PASSWORD" >> /home/$MY_USERNAME/README
247
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
248
+        chmod 600 /home/$MY_USERNAME/README
249
+    fi
250
+
251
+    function_check create_database
252
+    create_database hubzilla "$HUBZILLA_ADMIN_PASSWORD"
253
+
254
+    if ! grep -q "$HUBZILLA_PATH" /etc/crontab; then
255
+        echo "12,22,32,42,52 * *   *   *   root cd $HUBZILLA_PATH; /usr/bin/timeout 500 /usr/bin/php include/poller.php" >> /etc/crontab
256
+    fi
257
+
258
+    function check add_ddns_domain
259
+    add_ddns_domain $HUBZILLA_DOMAIN_NAME
260
+
261
+    if [[ $ONION_ONLY == "no" ]]; then
262
+        function_check nginx_http_redirect
263
+        nginx_http_redirect $HUBZILLA_DOMAIN_NAME
264
+        echo 'server {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
265
+        echo '    listen 443 ssl;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
266
+        echo "    root $HUBZILLA_PATH;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
267
+        echo "    server_name $HUBZILLA_DOMAIN_NAME;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
268
+        echo "    error_log /var/log/nginx/${HUBZILLA_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
269
+        echo '    index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
270
+        echo '    charset utf-8;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
271
+        echo '    access_log off;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
272
+        function_check nginx_limits
273
+        nginx_limits $HUBZILLA_DOMAIN_NAME
274
+        function_check nginx_ssl
275
+        nginx_ssl $HUBZILLA_DOMAIN_NAME
276
+        function_check nginx_disable_sniffing
277
+        nginx_disable_sniffing $HUBZILLA_DOMAIN_NAME
278
+        echo '    add_header Strict-Transport-Security max-age=15768000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
279
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
280
+        echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
281
+        echo '    location / {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
282
+        echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
283
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
284
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
285
+        echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
286
+        echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
287
+        echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
288
+        echo '        allow all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
289
+        echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
290
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
291
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
292
+        echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
293
+        echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
294
+        echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
295
+        echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
296
+        echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
297
+        echo '        expires 30d;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
298
+        echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
299
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
300
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
301
+        echo '    # block these file types' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
302
+        echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
303
+        echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
304
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
305
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
306
+        echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
307
+        echo '    # or a unix socket' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
308
+        echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
309
+        echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
310
+        echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
311
+        echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
312
+        echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
313
+        echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
314
+        echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
315
+        echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
316
+        echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
317
+        echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
318
+        echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
319
+        echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
320
+        echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
321
+        echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
322
+        echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
323
+        echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
324
+        echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
325
+        echo '        fastcgi_read_timeout 300;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
326
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
327
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
328
+        echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
329
+        echo '    location ~ /\. {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
330
+        echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
331
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
332
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
333
+        echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
334
+        echo '      deny  all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
335
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
336
+        echo '}' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
337
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
338
+    else
339
+        echo 'server {' > /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
340
+        echo "    listen 127.0.0.1:${HUBZILLA_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
341
+        echo "    root $HUBZILLA_PATH;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
342
+        echo "    server_name $HUBZILLA_ONION_HOSTNAME;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
343
+        echo "    error_log /var/log/nginx/${HUBZILLA_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
344
+        echo '    index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
345
+        echo '    charset utf-8;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
346
+        echo '    access_log off;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
347
+        nginx_limits $HUBZILLA_DOMAIN_NAME
348
+        nginx_disable_sniffing $HUBZILLA_DOMAIN_NAME
349
+        echo '    add_header Strict-Transport-Security max-age=15768000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
350
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
351
+        echo '    # rewrite to front controller as default rule' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
352
+        echo '    location / {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
353
+        echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
354
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
355
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
356
+        echo "    # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
357
+        echo '    # by denying dot files and rewrite request to the front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
358
+        echo '    location ^~ /.well-known/ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
359
+        echo '        allow all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
360
+        echo '        rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
361
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
362
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
363
+        echo '    # statically serve these file types when possible' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
364
+        echo '    # otherwise fall back to front controller' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
365
+        echo '    # allow browser to cache them' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
366
+        echo '    # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
367
+        echo '    location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
368
+        echo '        expires 30d;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
369
+        echo '        try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
370
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
371
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
372
+        echo '    # block these file types' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
373
+        echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
374
+        echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
375
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
376
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
377
+        echo '    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
378
+        echo '    # or a unix socket' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
379
+        echo '    location ~* \.php$ {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
380
+        echo '        # Zero-day exploit defense.' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
381
+        echo '        # http://forum.nginx.org/read.php?2,88845,page=3' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
382
+        echo "        # Won't work properly (404 error) if the file is not stored on this" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
383
+        echo "        # server, which is entirely possible with php-fpm/php-fcgi." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
384
+        echo "        # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on" >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
385
+        echo "        # another machine. And then cross your fingers that you won't get hacked." >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
386
+        echo '        try_files $uri $uri/ /index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
387
+        echo '        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
388
+        echo '        fastcgi_split_path_info ^(.+\.php)(/.+)$;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
389
+        echo '        # With php5-cgi alone:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
390
+        echo '        # fastcgi_pass 127.0.0.1:9000;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
391
+        echo '        # With php5-fpm:' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
392
+        echo '        fastcgi_pass unix:/var/run/php5-fpm.sock;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
393
+        echo '        include fastcgi_params;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
394
+        echo '        fastcgi_index index.php;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
395
+        echo '        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
396
+        echo '        fastcgi_read_timeout 300;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
397
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
398
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
399
+        echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
400
+        echo '    location ~ /\. {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
401
+        echo '        deny all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
402
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
403
+        echo '' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
404
+        echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
405
+        echo '      deny  all;' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
406
+        echo '    }' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
407
+        echo '}' >> /etc/nginx/sites-available/$HUBZILLA_DOMAIN_NAME
408
+    fi
409
+
410
+    function_check configure_php
411
+    configure_php
412
+
413
+    function_check create_site_certificate
414
+    create_site_certificate $HUBZILLA_DOMAIN_NAME 'yes'
415
+
416
+    if [ ! -d $HUBZILLA_PATH/view/tpl/smarty3 ]; then
417
+        mkdir $HUBZILLA_PATH/view/tpl/smarty3
418
+    fi
419
+    if [ ! -d "$HUBZILLA_PATH/store" ]; then
420
+        mkdir "$HUBZILLA_PATH/store"
421
+    fi
422
+    if [ ! -d "$HUBZILLA_PATH/store/[data]" ]; then
423
+        mkdir "$HUBZILLA_PATH/store/[data]"
424
+    fi
425
+    if [ ! -d "$HUBZILLA_PATH/store/[data]/smarty3" ]; then
426
+        mkdir "$HUBZILLA_PATH/store/[data]/smarty3"
427
+        chmod 777 "$HUBZILLA_PATH/store/[data]/smarty3"
428
+    fi
429
+    chmod 777 $HUBZILLA_PATH/view/tpl
430
+    chown -R www-data:www-data "$HUBZILLA_PATH/store"
431
+    chmod 777 $HUBZILLA_PATH/view/tpl/smarty3
432
+
433
+    # Ensure that the database gets backed up locally, if remote
434
+    # backups are not being used
435
+    function_check backup_databases_script_header
436
+    backup_databases_script_header
437
+
438
+    function_check backup_database_local
439
+    backup_database_local hubzilla
440
+
441
+    chown -R www-data:www-data $HUBZILLA_PATH
442
+
443
+    function_check nginx_ensite
444
+    nginx_ensite $HUBZILLA_DOMAIN_NAME
445
+
446
+    # initialize the database
447
+    if [ ! -f $HUBZILLA_PATH/install/schema_mysql.sql ]; then
448
+        echo $'No database schema found for hubzilla'
449
+        exit 252782
450
+    fi
451
+    function_check initialise_database
452
+    initialise_database hubzilla $HUBZILLA_PATH/install/schema_mysql.sql
453
+
454
+    # create the config file
455
+    echo '<?php' > $HUBZILLA_PATH/.htconfig.php
456
+    echo "\$db_host = 'localhost';" >> $HUBZILLA_PATH/.htconfig.php
457
+    echo "\$db_port = '0';" >> $HUBZILLA_PATH/.htconfig.php
458
+    echo "\$db_user = 'root';" >> $HUBZILLA_PATH/.htconfig.php
459
+    echo "\$db_pass = '${MARIADB_PASSWORD}';" >> $HUBZILLA_PATH/.htconfig.php
460
+    echo "\$db_data = 'hubzilla';" >> $HUBZILLA_PATH/.htconfig.php
461
+    echo "\$db_type = '0';" >> $HUBZILLA_PATH/.htconfig.php
462
+    echo "\$default_timezone = 'Europe/London';" >> $HUBZILLA_PATH/.htconfig.php
463
+    if [[ $ONION_ONLY == 'no' ]]; then
464
+        echo "\$a->config['system']['baseurl'] = 'https://${HUBZILLA_DOMAIN_NAME}';" >> $HUBZILLA_PATH/.htconfig.php
465
+    else
466
+        echo "\$a->config['system']['baseurl'] = 'http://${HUBZILLA_ONION_HOSTNAME}';" >> $HUBZILLA_PATH/.htconfig.php
467
+    fi
468
+    echo "\$a->config['system']['sitename'] = \"Hubzilla\";" >> $HUBZILLA_PATH/.htconfig.php
469
+    HUBZILLA_LOCATION_HASH="$(create_password 30)"
470
+    echo "\$a->config['system']['location_hash'] = '${HUBZILLA_LOCATION_HASH}';" >> $HUBZILLA_PATH/.htconfig.php
471
+    echo "\$a->config['system']['register_policy'] = REGISTER_OPEN;" >> $HUBZILLA_PATH/.htconfig.php
472
+    echo "\$a->config['system']['register_text'] = '';" >> $HUBZILLA_PATH/.htconfig.php
473
+    echo "\$a->config['system']['admin_email'] = '${MY_EMAIL_ADDRESS}';" >> $HUBZILLA_PATH/.htconfig.php
474
+    echo "\$a->config['system']['verify_email'] = 1;" >> $HUBZILLA_PATH/.htconfig.php
475
+    echo "\$a->config['system']['access_policy'] = ACCESS_PRIVATE;" >> $HUBZILLA_PATH/.htconfig.php
476
+    echo "\$a->config['system']['sellpage'] = '';" >> $HUBZILLA_PATH/.htconfig.php
477
+    echo "\$a->config['system']['max_import_size'] = 200000;" >> $HUBZILLA_PATH/.htconfig.php
478
+    echo "\$a->config['system']['php_path'] = '/usr/bin/php';" >> $HUBZILLA_PATH/.htconfig.php
479
+    echo "\$a->config['system']['directory_mode']  = DIRECTORY_MODE_NORMAL;" >> $HUBZILLA_PATH/.htconfig.php
480
+    echo "\$a->config['system']['theme'] = 'redbasic';" >> $HUBZILLA_PATH/.htconfig.php
481
+    chown www-data:www-data $HUBZILLA_PATH/.htconfig.php
482
+    chmod 755 $HUBZILLA_PATH/.htconfig.php
483
+
484
+    systemctl restart php5-fpm
485
+    systemctl restart nginx
486
+    systemctl restart cron
487
+
488
+    ${PROJECT_NAME}-addemail -u $MY_USERNAME -e "noreply@$HUBZILLA_DOMAIN_NAME" -g hubzilla --public no
489
+
490
+    echo "Hubzilla domain:${HUBZILLA_DOMAIN_NAME}" >> $COMPLETION_FILE
491
+    echo 'install_hubzilla' >> $COMPLETION_FILE
493 492
 }
494 493
 
495 494
 # NOTE: deliberately there is no "exit 0"