浏览代码

Add bludit app

Bob Mottram 7 年前
父节点
当前提交
7f89e7d87a
共有 2 个文件被更改,包括 489 次插入156 次删除
  1. 334
    0
      src/freedombone-app-bludit
  2. 155
    156
      src/freedombone-template

+ 334
- 0
src/freedombone-app-bludit 查看文件

1
+#!/bin/bash
2
+#
3
+# .---.                  .              .
4
+# |                      |              |
5
+# |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
6
+# |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
7
+# '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
8
+#
9
+#                    Freedom in the Cloud
10
+#
11
+# Databaseless blogging system
12
+#
13
+# License
14
+# =======
15
+#
16
+# Copyright (C) 2018 Bob Mottram <bob@freedombone.net>
17
+#
18
+# This program is free software: you can redistribute it and/or modify
19
+# it under the terms of the GNU Affero General Public License as published by
20
+# the Free Software Foundation, either version 3 of the License, or
21
+# (at your option) any later version.
22
+#
23
+# This program is distributed in the hope that it will be useful,
24
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
25
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26
+# GNU Affero General Public License for more details.
27
+#
28
+# You should have received a copy of the GNU Affero General Public License
29
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
30
+
31
+VARIANTS='full full-vim'
32
+
33
+IN_DEFAULT_INSTALL=0
34
+SHOW_ON_ABOUT=1
35
+
36
+BLUDIT_DOMAIN_NAME=
37
+BLUDIT_CODE=
38
+BLUDIT_ONION_PORT=9361
39
+BLUDIT_REPO="https://github.com/bludit/bludit"
40
+BLUDIT_COMMIT='0e27e31a84421b3e6bd000a77bc89c2dff3c446a'
41
+
42
+bludit=(ONION_ONLY
43
+             BLUDIT_DOMAIN_NAME
44
+             BLUDIT_CODE
45
+             DDNS_PROVIDER
46
+             MY_USERNAME)
47
+
48
+function logging_on_bludit {
49
+    echo -n ''
50
+}
51
+
52
+function logging_off_bludit {
53
+    echo -n ''
54
+}
55
+
56
+function remove_user_bludit {
57
+    remove_username="$1"
58
+
59
+    "${PROJECT_NAME}-pass" -u "$remove_username" --rmapp bludit
60
+}
61
+
62
+function add_user_bludit {
63
+    new_username="$1"
64
+    new_user_password="$2"
65
+
66
+    "${PROJECT_NAME}-pass" -u "$new_username" -a bludit -p "$new_user_password"
67
+    echo '0'
68
+}
69
+
70
+function install_interactive_bludit {
71
+    if [ ! "$ONION_ONLY" ]; then
72
+        ONION_ONLY='no'
73
+    fi
74
+
75
+    if [[ "$ONION_ONLY" != "no" ]]; then
76
+        BLUDIT_DOMAIN_NAME='bludit.local'
77
+        write_config_param "BLUDIT_DOMAIN_NAME" "$BLUDIT_DOMAIN_NAME"
78
+    else
79
+        interactive_site_details "bludit" "BLUDIT_DOMAIN_NAME" "bludit_CODE"
80
+    fi
81
+    APP_INSTALLED=1
82
+}
83
+
84
+function change_password_bludit {
85
+    curr_username="$1"
86
+    new_user_password="$2"
87
+
88
+    read_config_param 'BLUDIT_DOMAIN_NAME'
89
+
90
+    "${PROJECT_NAME}-pass" -u "$curr_username" -a bludit -p "$new_user_password"
91
+}
92
+
93
+function reconfigure_bludit {
94
+    # This is used if you need to switch identity. Dump old keys and generate new ones
95
+    echo -n ''
96
+}
97
+
98
+function upgrade_bludit {
99
+    CURR_BLUDIT_COMMIT=$(get_completion_param "bludit commit")
100
+    if [[ "$CURR_BLUDIT_COMMIT" == "$BLUDIT_COMMIT" ]]; then
101
+        return
102
+    fi
103
+
104
+    if grep -q "bludit domain" "$COMPLETION_FILE"; then
105
+        BLUDIT_DOMAIN_NAME=$(get_completion_param "bludit domain")
106
+    fi
107
+
108
+    # update to the next commit
109
+    set_repo_commit "/var/www/$BLUDIT_DOMAIN_NAME/htdocs" "bludit commit" "$BLUDIT_COMMIT" $BLUDIT_REPO
110
+    chown -R www-data:www-data "/var/www/${BLUDIT_DOMAIN_NAME}/htdocs"
111
+}
112
+
113
+function backup_local_bludit {
114
+    BLUDIT_DOMAIN_NAME='bludit'
115
+    if grep -q "bludit domain" "$COMPLETION_FILE"; then
116
+        BLUDIT_DOMAIN_NAME=$(get_completion_param "bludit domain")
117
+    fi
118
+
119
+    source_directory=/var/www/${BLUDIT_DOMAIN_NAME}/htdocs
120
+
121
+    suspend_site "${BLUDIT_DOMAIN_NAME}"
122
+
123
+    dest_directory=bludit
124
+    backup_directory_to_usb "$source_directory" $dest_directory
125
+
126
+    restart_site
127
+}
128
+
129
+function restore_local_bludit {
130
+    if ! grep -q "bludit domain" "$COMPLETION_FILE"; then
131
+        return
132
+    fi
133
+    BLUDIT_DOMAIN_NAME=$(get_completion_param "bludit domain")
134
+    if [ "$BLUDIT_DOMAIN_NAME" ]; then
135
+        temp_restore_dir=/root/tempbludit
136
+        bludit_dir=/var/www/${BLUDIT_DOMAIN_NAME}/htdocs
137
+
138
+        restore_directory_from_usb $temp_restore_dir bludit
139
+        if [ -d $temp_restore_dir ]; then
140
+            if [ -d "$temp_restore_dir$bludit_dir" ]; then
141
+                cp -rp "$temp_restore_dir$bludit_dir"/* "$bludit_dir"/
142
+            else
143
+                if [ ! -d "$bludit_dir" ]; then
144
+                    mkdir "$bludit_dir"
145
+                fi
146
+                cp -rp "$temp_restore_dir"/* "$bludit_dir"/
147
+            fi
148
+            chown -R www-data:www-data "$bludit_dir"
149
+            rm -rf $temp_restore_dir
150
+        fi
151
+    fi
152
+}
153
+
154
+function backup_remote_bludit {
155
+    BLUDIT_DOMAIN_NAME='bludit'
156
+    if grep -q "bludit domain" "$COMPLETION_FILE"; then
157
+        BLUDIT_DOMAIN_NAME=$(get_completion_param "bludit domain")
158
+    fi
159
+
160
+    source_directory=/var/www/${BLUDIT_DOMAIN_NAME}/htdocs
161
+
162
+    suspend_site "${BLUDIT_DOMAIN_NAME}"
163
+
164
+    dest_directory=bludit
165
+    backup_directory_to_friend "$source_directory" $dest_directory
166
+
167
+    restart_site
168
+}
169
+
170
+function restore_remote_bludit {
171
+    if ! grep -q "bludit domain" "$COMPLETION_FILE"; then
172
+        return
173
+    fi
174
+    BLUDIT_DOMAIN_NAME=$(get_completion_param "bludit domain")
175
+    if [ "$BLUDIT_DOMAIN_NAME" ]; then
176
+        temp_restore_dir=/root/tempbludit
177
+        bludit_dir=/var/www/${BLUDIT_DOMAIN_NAME}/htdocs
178
+
179
+        restore_directory_from_friend $temp_restore_dir bludit
180
+        if [ -d $temp_restore_dir ]; then
181
+            if [ -d "$temp_restore_dir$bludit_dir" ]; then
182
+                cp -rp "$temp_restore_dir$bludit_dir"/* "$bludit_dir"/
183
+            else
184
+                if [ ! -d "$bludit_dir" ]; then
185
+                    mkdir "$bludit_dir"
186
+                fi
187
+                cp -rp $temp_restore_dir/* "$bludit_dir"/
188
+            fi
189
+            chown -R www-data:www-data "$bludit_dir"
190
+            rm -rf $temp_restore_dir
191
+        fi
192
+    fi
193
+}
194
+
195
+function remove_bludit {
196
+    nginx_dissite "$BLUDIT_DOMAIN_NAME"
197
+    remove_certs "$BLUDIT_DOMAIN_NAME"
198
+
199
+    if [ -d "/var/www/$BLUDIT_DOMAIN_NAME" ]; then
200
+        rm -rf "/var/www/$BLUDIT_DOMAIN_NAME"
201
+    fi
202
+    if [ -f "/etc/nginx/sites-available/$BLUDIT_DOMAIN_NAME" ]; then
203
+        rm "/etc/nginx/sites-available/$BLUDIT_DOMAIN_NAME"
204
+    fi
205
+    remove_onion_service bludit ${BLUDIT_ONION_PORT}
206
+    if grep -q "bludit" /etc/crontab; then
207
+        sed -i "/bludit/d" /etc/crontab
208
+    fi
209
+    remove_app bludit
210
+    remove_completion_param install_bludit
211
+    sed -i '/bludit/d' "$COMPLETION_FILE"
212
+
213
+    remove_ddns_domain "$BLUDIT_DOMAIN_NAME"
214
+}
215
+
216
+function install_bludit {
217
+    apt-get -yq install php-gettext php-curl php-gd php-mysql git curl
218
+    apt-get -yq install memcached php-memcached php-intl exiftool libfcgi0ldbl
219
+
220
+    if [ ! -d "/var/www/$BLUDIT_DOMAIN_NAME" ]; then
221
+        mkdir "/var/www/$BLUDIT_DOMAIN_NAME"
222
+    fi
223
+    if [ ! -d "/var/www/$BLUDIT_DOMAIN_NAME/htdocs" ]; then
224
+        if [ -d /repos/bludit ]; then
225
+            mkdir "/var/www/$BLUDIT_DOMAIN_NAME/htdocs"
226
+            cp -r -p /repos/bludit/. "/var/www/$BLUDIT_DOMAIN_NAME/htdocs"
227
+            cd "/var/www/$BLUDIT_DOMAIN_NAME/htdocs" || exit 324687356
228
+            git pull
229
+        else
230
+            git_clone $BLUDIT_REPO "/var/www/$BLUDIT_DOMAIN_NAME/htdocs"
231
+        fi
232
+
233
+        if [ ! -d "/var/www/$BLUDIT_DOMAIN_NAME/htdocs" ]; then
234
+            echo $'Unable to clone bludit repo'
235
+            exit 87525
236
+        fi
237
+    fi
238
+
239
+    cd "/var/www/$BLUDIT_DOMAIN_NAME/htdocs" || exit 36587356
240
+    git checkout $BLUDIT_COMMIT -b $BLUDIT_COMMIT
241
+    set_completion_param "bludit commit" "$BLUDIT_COMMIT"
242
+
243
+    chmod g+w "/var/www/$BLUDIT_DOMAIN_NAME/htdocs"
244
+    chown -R www-data:www-data "/var/www/$BLUDIT_DOMAIN_NAME/htdocs"
245
+
246
+    add_ddns_domain "$BLUDIT_DOMAIN_NAME"
247
+
248
+    BLUDIT_ONION_HOSTNAME=$(add_onion_service bludit 80 ${BLUDIT_ONION_PORT})
249
+
250
+    bludit_nginx_site=/etc/nginx/sites-available/$BLUDIT_DOMAIN_NAME
251
+    if [[ "$ONION_ONLY" == "no" ]]; then
252
+        nginx_http_redirect "$BLUDIT_DOMAIN_NAME" "index index.php"
253
+        { echo 'server {';
254
+          echo '  listen 443 ssl;';
255
+          echo '  #listen [::]:443 ssl;';
256
+          echo "  server_name $BLUDIT_DOMAIN_NAME;";
257
+          echo ''; } >> "$bludit_nginx_site"
258
+        nginx_compress "$BLUDIT_DOMAIN_NAME"
259
+        echo '' >> "$bludit_nginx_site"
260
+        echo '  # Security' >> "$bludit_nginx_site"
261
+        nginx_ssl "$BLUDIT_DOMAIN_NAME"
262
+
263
+        nginx_security_options "$BLUDIT_DOMAIN_NAME"
264
+
265
+        { echo '  add_header Strict-Transport-Security max-age=15768000;';
266
+          echo '';
267
+          echo '  # Logs';
268
+          echo '  access_log /dev/null;';
269
+          echo '  error_log /dev/null;';
270
+          echo '';
271
+          echo '  # Root';
272
+          echo "  root /var/www/$BLUDIT_DOMAIN_NAME/htdocs;";
273
+          echo '';
274
+          echo '  index index.php;';
275
+          echo '  location ~ \.php {';
276
+          echo '    include snippets/fastcgi-php.conf;';
277
+          echo '    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;';
278
+          echo '    fastcgi_read_timeout 30;';
279
+          echo '  }';
280
+          echo '';
281
+          echo '  # Location';
282
+          echo '  location / {'; } >> "$bludit_nginx_site"
283
+        nginx_limits "$BLUDIT_DOMAIN_NAME" '15m'
284
+        { echo "    try_files \$uri \$uri/ /index.html;";
285
+          echo '  }';
286
+          echo '}'; } >> "$bludit_nginx_site"
287
+    else
288
+        echo -n '' > "$bludit_nginx_site"
289
+    fi
290
+    { echo 'server {';
291
+      echo "    listen 127.0.0.1:$BLUDIT_ONION_PORT default_server;";
292
+      echo "    server_name $BLUDIT_ONION_HOSTNAME;";
293
+      echo ''; } >> "$bludit_nginx_site"
294
+    nginx_compress "$BLUDIT_DOMAIN_NAME"
295
+    echo '' >> "$bludit_nginx_site"
296
+    nginx_security_options "$BLUDIT_DOMAIN_NAME"
297
+    { echo '';
298
+      echo '  # Logs';
299
+      echo '  access_log /dev/null;';
300
+      echo '  error_log /dev/null;';
301
+      echo '';
302
+      echo '  # Root';
303
+      echo "  root /var/www/$BLUDIT_DOMAIN_NAME/htdocs;";
304
+      echo '';
305
+      echo '  index index.php;';
306
+      echo '  location ~ \.php {';
307
+      echo '    include snippets/fastcgi-php.conf;';
308
+      echo '    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;';
309
+      echo '    fastcgi_read_timeout 30;';
310
+      echo '  }';
311
+      echo '';
312
+      echo '  # Location';
313
+      echo '  location / {'; } >> "$bludit_nginx_site"
314
+    nginx_limits "$BLUDIT_DOMAIN_NAME" '15m'
315
+    { echo "    try_files \$uri \$uri/ index.html;";
316
+      echo '  }';
317
+      echo '}'; } >> "$bludit_nginx_site"
318
+
319
+    configure_php
320
+
321
+    create_site_certificate "$BLUDIT_DOMAIN_NAME" 'yes'
322
+
323
+    nginx_ensite "$BLUDIT_DOMAIN_NAME"
324
+
325
+    systemctl restart php7.0-fpm
326
+    systemctl restart nginx
327
+
328
+    "${PROJECT_NAME}-pass" -u "$MY_USERNAME" -a bludit -p "$BLUDIT_ADMIN_PASSWORD"
329
+    set_completion_param "bludit domain" "$BLUDIT_DOMAIN_NAME"
330
+
331
+    APP_INSTALLED=1
332
+}
333
+
334
+# NOTE: deliberately there is no "exit 0"

+ 155
- 156
src/freedombone-template 查看文件

34
 app_name_lower=$(echo "${app_name}" | tr '[:upper:]' '[:lower:]')
34
 app_name_lower=$(echo "${app_name}" | tr '[:upper:]' '[:lower:]')
35
 app_name=$app_name_lower
35
 app_name=$app_name_lower
36
 app_name_upper=$(echo "${app_name}" | tr '[:lower:]' '[:upper:]')
36
 app_name_upper=$(echo "${app_name}" | tr '[:lower:]' '[:upper:]')
37
-echo "test: $app_name_upper"
38
 app_repo="TODO"
37
 app_repo="TODO"
39
 app_repo_commit='TODO'
38
 app_repo_commit='TODO'
40
 app_php=
39
 app_php=
257
 echo "function remove_user_${app_name} {"
256
 echo "function remove_user_${app_name} {"
258
 echo "    remove_username=\"\$1\""
257
 echo "    remove_username=\"\$1\""
259
 echo ''
258
 echo ''
260
-echo "    \${PROJECT_NAME}-pass -u \$remove_username --rmapp ${app_name}"
259
+echo "    \"\${PROJECT_NAME}-pass\" -u \"\$remove_username\" --rmapp ${app_name}"
261
 echo '}'
260
 echo '}'
262
 echo ''
261
 echo ''
263
 echo "function add_user_${app_name} {"
262
 echo "function add_user_${app_name} {"
264
 echo "    new_username=\"\$1\""
263
 echo "    new_username=\"\$1\""
265
 echo "    new_user_password=\"\$2\""
264
 echo "    new_user_password=\"\$2\""
266
 echo ''
265
 echo ''
267
-echo "    \${PROJECT_NAME}-pass -u \$new_username -a ${app_name} -p \"\$new_user_password\""
266
+echo "    \"\${PROJECT_NAME}-pass\" -u \"\$new_username\" -a ${app_name} -p \"\$new_user_password\""
268
 echo "    echo '0'"
267
 echo "    echo '0'"
269
 echo '}'
268
 echo '}'
270
 echo ''
269
 echo ''
271
 echo "function install_interactive_${app_name} {"
270
 echo "function install_interactive_${app_name} {"
272
 if [ ! $app_onion_only ]; then
271
 if [ ! $app_onion_only ]; then
273
-    echo "    if [ ! \$ONION_ONLY ]; then"
272
+    echo "    if [ ! \"\$ONION_ONLY\" ]; then"
274
     echo "        ONION_ONLY='no'"
273
     echo "        ONION_ONLY='no'"
275
     echo '    fi'
274
     echo '    fi'
276
     echo ''
275
     echo ''
277
-    echo "    if [[ \$ONION_ONLY != \"no\" ]]; then"
276
+    echo "    if [[ \"\$ONION_ONLY\" != \"no\" ]]; then"
278
     echo "        ${app_name_upper}_DOMAIN_NAME='${app_name}.local'"
277
     echo "        ${app_name_upper}_DOMAIN_NAME='${app_name}.local'"
279
     echo "        write_config_param \"${app_name_upper}_DOMAIN_NAME\" \"\$${app_name_upper}_DOMAIN_NAME\""
278
     echo "        write_config_param \"${app_name_upper}_DOMAIN_NAME\" \"\$${app_name_upper}_DOMAIN_NAME\""
280
     echo '    else'
279
     echo '    else'
292
 echo ''
291
 echo ''
293
 echo "    read_config_param '${app_name_upper}_DOMAIN_NAME'"
292
 echo "    read_config_param '${app_name_upper}_DOMAIN_NAME'"
294
 echo ''
293
 echo ''
295
-echo "    \${PROJECT_NAME}-pass -u \"\$curr_username\" -a ${app_name} -p \"\$new_user_password\""
294
+echo "    \"\${PROJECT_NAME}-pass\" -u \"\$curr_username\" -a ${app_name} -p \"\$new_user_password\""
296
 echo '}'
295
 echo '}'
297
 
296
 
298
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"* ]]; then
297
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"* ]]; then
361
 echo '        return'
360
 echo '        return'
362
 echo '    fi'
361
 echo '    fi'
363
 echo ''
362
 echo ''
364
-echo "    if grep -q \"${app_name} domain\" \$COMPLETION_FILE; then"
363
+echo "    if grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
365
 echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
364
 echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
366
 echo '    fi'
365
 echo '    fi'
367
 echo ''
366
 echo ''
368
 echo '    # update to the next commit'
367
 echo '    # update to the next commit'
369
 if [ ! "$app_dir" ]; then
368
 if [ ! "$app_dir" ]; then
370
-    echo "    set_repo_commit /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\" \$${app_name_upper}_REPO"
371
-    echo "    chown -R www-data:www-data /var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
369
+    echo "    set_repo_commit \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\" \$${app_name_upper}_REPO"
370
+    echo "    chown -R www-data:www-data \"/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs\""
372
 else
371
 else
373
-    echo "    set_repo_commit ${app_dir} \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\" \$${app_name_upper}_REPO"
374
-    echo "    chown -R ${app_name}:${app_name} ${app_dir}"
372
+    echo "    set_repo_commit \"${app_dir}\" \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\" \$${app_name_upper}_REPO"
373
+    echo "    chown -R ${app_name}:${app_name} \"${app_dir}\""
375
 fi
374
 fi
376
 echo '}'
375
 echo '}'
377
 echo ''
376
 echo ''
378
 echo "function backup_local_${app_name} {"
377
 echo "function backup_local_${app_name} {"
379
 echo "    ${app_name_upper}_DOMAIN_NAME='${app_name}'"
378
 echo "    ${app_name_upper}_DOMAIN_NAME='${app_name}'"
380
-echo "    if grep -q \"${app_name} domain\" \$COMPLETION_FILE; then"
379
+echo "    if grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
381
 echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
380
 echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
382
 echo '    fi'
381
 echo '    fi'
383
 echo ''
382
 echo ''
387
     echo "    source_directory=${app_dir}"
386
     echo "    source_directory=${app_dir}"
388
 fi
387
 fi
389
 echo ''
388
 echo ''
390
-echo "    suspend_site \${${app_name_upper}_DOMAIN_NAME}"
389
+echo "    suspend_site \"\${${app_name_upper}_DOMAIN_NAME}\""
391
 echo ''
390
 echo ''
392
 echo "    dest_directory=${app_name}"
391
 echo "    dest_directory=${app_name}"
393
-echo "    backup_directory_to_usb \$source_directory \$dest_directory"
392
+echo "    backup_directory_to_usb \"\$source_directory\" \$dest_directory"
394
 echo ''
393
 echo ''
395
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
394
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
396
     echo "    backup_database_to_usb ${app_name}"
395
     echo "    backup_database_to_usb ${app_name}"
405
 echo '}'
404
 echo '}'
406
 echo ''
405
 echo ''
407
 echo "function restore_local_${app_name} {"
406
 echo "function restore_local_${app_name} {"
408
-echo "    if ! grep -q \"${app_name} domain\" \$COMPLETION_FILE; then"
407
+echo "    if ! grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
409
 echo '        return'
408
 echo '        return'
410
 echo '    fi'
409
 echo '    fi'
411
 echo "    ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
410
 echo "    ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
412
-echo "    if [ \$${app_name_upper}_DOMAIN_NAME ]; then"
411
+echo "    if [ \"\$${app_name_upper}_DOMAIN_NAME\" ]; then"
413
 echo "        temp_restore_dir=/root/temp${app_name}"
412
 echo "        temp_restore_dir=/root/temp${app_name}"
414
 if [ ! "$app_dir" ]; then
413
 if [ ! "$app_dir" ]; then
415
     echo "        ${app_name}_dir=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
414
     echo "        ${app_name}_dir=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
438
 fi
437
 fi
439
 echo "        restore_directory_from_usb \$temp_restore_dir ${app_name}"
438
 echo "        restore_directory_from_usb \$temp_restore_dir ${app_name}"
440
 echo "        if [ -d \$temp_restore_dir ]; then"
439
 echo "        if [ -d \$temp_restore_dir ]; then"
441
-echo "            if [ -d cp \$temp_restore_dir\$${app_name}_dir ]; then"
442
-echo "                cp -rp \$temp_restore_dir\$${app_name}_dir/* \$${app_name}_dir/"
440
+echo "            if [ -d \"\$temp_restore_dir\$${app_name}_dir\" ]; then"
441
+echo "                cp -rp \"\$temp_restore_dir\$${app_name}_dir\"/* \"\$${app_name}_dir\"/"
443
 echo '            else'
442
 echo '            else'
444
-echo "                if [ ! -d \$${app_name}_dir ]; then"
445
-echo "                    mkdir \$${app_name}_dir"
443
+echo "                if [ ! -d \"\$${app_name}_dir\" ]; then"
444
+echo "                    mkdir \"\$${app_name}_dir\""
446
 echo '                fi'
445
 echo '                fi'
447
-echo "                cp -rp \$temp_restore_dir/* \$${app_name}_dir/"
446
+echo "                cp -rp \"\$temp_restore_dir\"/* \"\$${app_name}_dir\"/"
448
 echo '            fi'
447
 echo '            fi'
449
-echo "            chown -R www-data:www-data \$${app_name}_dir"
448
+echo "            chown -R www-data:www-data \"\$${app_name}_dir\""
450
 echo "            rm -rf \$temp_restore_dir"
449
 echo "            rm -rf \$temp_restore_dir"
451
 echo '        fi'
450
 echo '        fi'
452
 echo ''
451
 echo ''
455
 echo ''
454
 echo ''
456
 echo "function backup_remote_${app_name} {"
455
 echo "function backup_remote_${app_name} {"
457
 echo "    ${app_name_upper}_DOMAIN_NAME='${app_name}'"
456
 echo "    ${app_name_upper}_DOMAIN_NAME='${app_name}'"
458
-echo "    if grep -q \"${app_name} domain\" \$COMPLETION_FILE; then"
457
+echo "    if grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
459
 echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
458
 echo "        ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
460
 echo '    fi'
459
 echo '    fi'
461
 echo ''
460
 echo ''
465
     echo "    source_directory=${app_dir}"
464
     echo "    source_directory=${app_dir}"
466
 fi
465
 fi
467
 echo ''
466
 echo ''
468
-echo "    suspend_site \${${app_name_upper}_DOMAIN_NAME}"
467
+echo "    suspend_site \"\${${app_name_upper}_DOMAIN_NAME}\""
469
 echo ''
468
 echo ''
470
 echo "    dest_directory=${app_name}"
469
 echo "    dest_directory=${app_name}"
471
-echo "    backup_directory_to_friend \$source_directory \$dest_directory"
472
-echo ''
470
+echo "    backup_directory_to_friend \"\$source_directory\" \$dest_directory"
473
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
471
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
474
     echo "    backup_database_to_friend ${app_name}"
472
     echo "    backup_database_to_friend ${app_name}"
473
+    echo ''
475
 fi
474
 fi
476
 if [[ "$database_type" == "postgres"* ]]; then
475
 if [[ "$database_type" == "postgres"* ]]; then
477
     echo '    USE_POSTGRESQL=1'
476
     echo '    USE_POSTGRESQL=1'
483
 echo '}'
482
 echo '}'
484
 echo ''
483
 echo ''
485
 echo "function restore_remote_${app_name} {"
484
 echo "function restore_remote_${app_name} {"
486
-echo "    if ! grep -q \"${app_name} domain\" \$COMPLETION_FILE; then"
485
+echo "    if ! grep -q \"${app_name} domain\" \"\$COMPLETION_FILE\"; then"
487
 echo '        return'
486
 echo '        return'
488
 echo '    fi'
487
 echo '    fi'
489
 echo "    ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
488
 echo "    ${app_name_upper}_DOMAIN_NAME=\$(get_completion_param \"${app_name} domain\")"
490
-echo "    if [ \$${app_name_upper}_DOMAIN_NAME ]; then"
489
+echo "    if [ \"\$${app_name_upper}_DOMAIN_NAME\" ]; then"
491
 echo "        temp_restore_dir=/root/temp${app_name}"
490
 echo "        temp_restore_dir=/root/temp${app_name}"
492
 if [ ! "$app_dir" ]; then
491
 if [ ! "$app_dir" ]; then
493
     echo "        ${app_name}_dir=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
492
     echo "        ${app_name}_dir=/var/www/\${${app_name_upper}_DOMAIN_NAME}/htdocs"
499
     echo "        ${app_name}_create_database"
498
     echo "        ${app_name}_create_database"
500
     echo ''
499
     echo ''
501
     echo "        restore_database_from_friend ${app_name}"
500
     echo "        restore_database_from_friend ${app_name}"
502
-    echo "        if [ -d \$temp_restore_dir ]; then"
501
+    echo "        if [ -d \"\$temp_restore_dir\" ]; then"
503
     echo "            rm -rf \$temp_restore_dir"
502
     echo "            rm -rf \$temp_restore_dir"
504
     echo '        fi'
503
     echo '        fi'
505
     echo ''
504
     echo ''
509
     echo ''
508
     echo ''
510
     echo '        USE_POSTGRESQL=1'
509
     echo '        USE_POSTGRESQL=1'
511
     echo "        restore_database_from_friend ${app_name}"
510
     echo "        restore_database_from_friend ${app_name}"
512
-    echo "        if [ -d \$temp_restore_dir ]; then"
511
+    echo "        if [ -d \"\$temp_restore_dir\" ]; then"
513
     echo "            rm -rf \$temp_restore_dir"
512
     echo "            rm -rf \$temp_restore_dir"
514
     echo '        fi'
513
     echo '        fi'
515
     echo ''
514
     echo ''
516
 fi
515
 fi
517
 echo "        restore_directory_from_friend \$temp_restore_dir ${app_name}"
516
 echo "        restore_directory_from_friend \$temp_restore_dir ${app_name}"
518
 echo "        if [ -d \$temp_restore_dir ]; then"
517
 echo "        if [ -d \$temp_restore_dir ]; then"
519
-echo "            if [ -d cp \$temp_restore_dir\$${app_name}_dir ]; then"
520
-echo "                cp -rp \$temp_restore_dir\$${app_name}_dir/* \$${app_name}_dir/"
518
+echo "            if [ -d \"\$temp_restore_dir\$${app_name}_dir\" ]; then"
519
+echo "                cp -rp \"\$temp_restore_dir\$${app_name}_dir\"/* \"\$${app_name}_dir\"/"
521
 echo '            else'
520
 echo '            else'
522
-echo "                if [ ! -d \$${app_name}_dir ]; then"
523
-echo "                    mkdir \$${app_name}_dir"
521
+echo "                if [ ! -d \"\$${app_name}_dir\" ]; then"
522
+echo "                    mkdir \"\$${app_name}_dir\""
524
 echo '                fi'
523
 echo '                fi'
525
-echo "                cp -rp \$temp_restore_dir/* \$${app_name}_dir/"
524
+echo "                cp -rp \$temp_restore_dir/* \"\$${app_name}_dir\"/"
526
 echo '            fi'
525
 echo '            fi'
527
-echo "            chown -R www-data:www-data \$${app_name}_dir"
526
+echo "            chown -R www-data:www-data \"\$${app_name}_dir\""
528
 echo "            rm -rf \$temp_restore_dir"
527
 echo "            rm -rf \$temp_restore_dir"
529
 echo '        fi'
528
 echo '        fi'
530
 echo ''
529
 echo ''
536
     echo "    remove_nodejs ${app_name}"
535
     echo "    remove_nodejs ${app_name}"
537
     echo ''
536
     echo ''
538
 fi
537
 fi
539
-echo "    nginx_dissite \$${app_name_upper}_DOMAIN_NAME"
540
-echo "    remove_certs \$${app_name_upper}_DOMAIN_NAME"
538
+echo "    nginx_dissite \"\$${app_name_upper}_DOMAIN_NAME\""
539
+echo "    remove_certs \"\$${app_name_upper}_DOMAIN_NAME\""
541
 echo ''
540
 echo ''
542
 if [ $app_daemon ]; then
541
 if [ $app_daemon ]; then
543
     echo "    if [ -f /etc/systemd/system/${app_name}.service ]; then"
542
     echo "    if [ -f /etc/systemd/system/${app_name}.service ]; then"
548
     echo "    userdel -r ${app_name}"
547
     echo "    userdel -r ${app_name}"
549
 fi
548
 fi
550
 echo ''
549
 echo ''
551
-echo "    if [ -d /var/www/\$${app_name_upper}_DOMAIN_NAME ]; then"
552
-echo "        rm -rf /var/www/\$${app_name_upper}_DOMAIN_NAME"
550
+echo "    if [ -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME\" ]; then"
551
+echo "        rm -rf \"/var/www/\$${app_name_upper}_DOMAIN_NAME\""
553
 echo '    fi'
552
 echo '    fi'
554
-echo "    if [ -f /etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME ]; then"
555
-echo "        rm /etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME"
553
+echo "    if [ -f \"/etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME\" ]; then"
554
+echo "        rm \"/etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME\""
556
 echo '    fi'
555
 echo '    fi'
557
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
556
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
558
     echo "    drop_database ${app_name}"
557
     echo "    drop_database ${app_name}"
566
 echo '    fi'
565
 echo '    fi'
567
 echo "    remove_app ${app_name}"
566
 echo "    remove_app ${app_name}"
568
 echo "    remove_completion_param install_${app_name}"
567
 echo "    remove_completion_param install_${app_name}"
569
-echo "    sed -i '/${app_name}/d' \$COMPLETION_FILE"
568
+echo "    sed -i '/${app_name}/d' \"\$COMPLETION_FILE\""
570
 if [ "$app_port" ]; then
569
 if [ "$app_port" ]; then
571
     echo ''
570
     echo ''
572
     echo "    firewall_remove ${app_port} tcp"
571
     echo "    firewall_remove ${app_port} tcp"
573
 fi
572
 fi
574
 echo ''
573
 echo ''
575
-echo "    remove_ddns_domain \$${app_name_upper}_DOMAIN_NAME"
574
+echo "    remove_ddns_domain \"\$${app_name_upper}_DOMAIN_NAME\""
576
 echo '}'
575
 echo '}'
577
 echo ''
576
 echo ''
578
 echo "function install_${app_name} {"
577
 echo "function install_${app_name} {"
594
     echo '    apt-get -yq install memcached php-memcached php-intl exiftool libfcgi0ldbl'
593
     echo '    apt-get -yq install memcached php-memcached php-intl exiftool libfcgi0ldbl'
595
     echo ''
594
     echo ''
596
 fi
595
 fi
597
-echo "    if [ ! -d /var/www/\$${app_name_upper}_DOMAIN_NAME ]; then"
598
-echo "        mkdir /var/www/\$${app_name_upper}_DOMAIN_NAME"
596
+echo "    if [ ! -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME\" ]; then"
597
+echo "        mkdir \"/var/www/\$${app_name_upper}_DOMAIN_NAME\""
599
 echo '    fi'
598
 echo '    fi'
600
-echo "    if [ ! -d /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs ]; then"
599
+echo "    if [ ! -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" ]; then"
601
 echo "        if [ -d /repos/${app_name} ]; then"
600
 echo "        if [ -d /repos/${app_name} ]; then"
602
-echo "            mkdir /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs"
601
+echo "            mkdir \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
603
 if [ ! "$app_dir" ]; then
602
 if [ ! "$app_dir" ]; then
604
-    echo "            cp -r -p /repos/${app_name}/. /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs"
605
-    echo "            cd /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs"
603
+    echo "            cp -r -p /repos/${app_name}/. \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
604
+    echo "            cd \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" || exit 324687356"
606
 else
605
 else
607
-    echo "            cp -r -p /repos/${app_name}/. ${app_dir}"
608
-    echo "            cd ${app_dir}"
606
+    echo "            cp -r -p /repos/${app_name}/. \"${app_dir}\""
607
+    echo "            cd \"${app_dir}\" || exit 36487365"
609
 fi
608
 fi
610
 echo '            git pull'
609
 echo '            git pull'
611
 echo '        else'
610
 echo '        else'
612
 if [ ! "$app_dir" ]; then
611
 if [ ! "$app_dir" ]; then
613
-    echo "            git_clone \$${app_name_upper}_REPO /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs"
612
+    echo "            git_clone \$${app_name_upper}_REPO \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
614
 else
613
 else
615
-    echo "            git_clone \$${app_name_upper}_REPO ${app_dir}"
614
+    echo "            git_clone \$${app_name_upper}_REPO \"${app_dir}\""
616
 fi
615
 fi
617
 echo '        fi'
616
 echo '        fi'
618
 echo ''
617
 echo ''
619
 if [ ! "$app_dir" ]; then
618
 if [ ! "$app_dir" ]; then
620
-    echo "        if [ ! -d /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs ]; then"
619
+    echo "        if [ ! -d \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" ]; then"
621
 else
620
 else
622
-    echo "        if [ ! -d ${app_dir} ]; then"
621
+    echo "        if [ ! -d \"${app_dir}\" ]; then"
623
 fi
622
 fi
624
 echo "            echo \$'Unable to clone ${app_name} repo'"
623
 echo "            echo \$'Unable to clone ${app_name} repo'"
625
 echo '            exit 87525'
624
 echo '            exit 87525'
627
 echo '    fi'
626
 echo '    fi'
628
 echo ''
627
 echo ''
629
 if [ ! "$app_dir" ]; then
628
 if [ ! "$app_dir" ]; then
630
-    echo "    cd /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs"
629
+    echo "    cd \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\" || exit 36587356"
631
 else
630
 else
632
-    echo "    cd ${app_dir}"
631
+    echo "    cd \"${app_dir}\" || exit 3463754637"
633
 fi
632
 fi
634
 echo "    git checkout \$${app_name_upper}_COMMIT -b \$${app_name_upper}_COMMIT"
633
 echo "    git checkout \$${app_name_upper}_COMMIT -b \$${app_name_upper}_COMMIT"
635
 echo "    set_completion_param \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\""
634
 echo "    set_completion_param \"${app_name} commit\" \"\$${app_name_upper}_COMMIT\""
636
 echo ''
635
 echo ''
637
-echo "    chmod g+w /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs"
638
-echo "    chown -R www-data:www-data /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs"
636
+echo "    chmod g+w \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
637
+echo "    chown -R www-data:www-data \"/var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs\""
639
 
638
 
640
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"*  ]]; then
639
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" || "$database_type" == "postgres"*  ]]; then
641
     echo ''
640
     echo ''
642
     echo "    ${app_name}_create_database"
641
     echo "    ${app_name}_create_database"
643
 fi
642
 fi
644
 echo ''
643
 echo ''
645
-echo "    add_ddns_domain \$${app_name_upper}_DOMAIN_NAME"
644
+echo "    add_ddns_domain \"\$${app_name_upper}_DOMAIN_NAME\""
646
 echo ''
645
 echo ''
647
 echo "    ${app_name_upper}_ONION_HOSTNAME=\$(add_onion_service ${app_name} 80 \${${app_name_upper}_ONION_PORT})"
646
 echo "    ${app_name_upper}_ONION_HOSTNAME=\$(add_onion_service ${app_name} 80 \${${app_name_upper}_ONION_PORT})"
648
 echo ''
647
 echo ''
649
 echo "    ${app_name}_nginx_site=/etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME"
648
 echo "    ${app_name}_nginx_site=/etc/nginx/sites-available/\$${app_name_upper}_DOMAIN_NAME"
650
 
649
 
651
-if [ $app_onion_only ]; then
650
+if [ ! $app_onion_only ]; then
652
     echo "    if [[ \"\$ONION_ONLY\" == \"no\" ]]; then"
651
     echo "    if [[ \"\$ONION_ONLY\" == \"no\" ]]; then"
653
     if [[ "$app_php" == 'yes' ]]; then
652
     if [[ "$app_php" == 'yes' ]]; then
654
-        echo "        nginx_http_redirect \$${app_name_upper}_DOMAIN_NAME \"index index.php\""
653
+        echo "        nginx_http_redirect \"\$${app_name_upper}_DOMAIN_NAME\" \"index index.php\""
655
     else
654
     else
656
-        echo "        nginx_http_redirect \$${app_name_upper}_DOMAIN_NAME \"index index.html\""
655
+        echo "        nginx_http_redirect \"\$${app_name_upper}_DOMAIN_NAME\" \"index index.html\""
657
     fi
656
     fi
658
-    echo "        echo 'server {' >> \$${app_name}_nginx_site"
659
-    echo "        echo '  listen 443 ssl;' >> \$${app_name}_nginx_site"
660
-    echo "        echo '  #listen [::]:443 ssl;' >> \$${app_name}_nginx_site"
661
-    echo "        echo \"  server_name \$${app_name_upper}_DOMAIN_NAME;\" >> \$${app_name}_nginx_site"
662
-    echo "        echo '' >> \$${app_name}_nginx_site"
663
-    echo "        nginx_compress \$${app_name_upper}_DOMAIN_NAME"
664
-    echo "        echo '' >> \$${app_name}_nginx_site"
665
-    echo "        echo '  # Security' >> \$${app_name}_nginx_site"
666
-    echo "        nginx_ssl \$${app_name_upper}_DOMAIN_NAME"
667
-    echo ''
668
-    echo "        nginx_security_options \$${app_name_upper}_DOMAIN_NAME"
669
-    echo ''
670
-    echo "        echo '  add_header Strict-Transport-Security max-age=15768000;' >> \$${app_name}_nginx_site"
671
-    echo "        echo '' >> \$${app_name}_nginx_site"
672
-    echo "        echo '  # Logs' >> \$${app_name}_nginx_site"
673
-    echo "        echo '  access_log /dev/null;' >> \$${app_name}_nginx_site"
674
-    echo "        echo '  error_log /dev/null;' >> \$${app_name}_nginx_site"
675
-    echo "        echo '' >> \$${app_name}_nginx_site"
676
-    echo "        echo '  # Root' >> \$${app_name}_nginx_site"
677
-    echo "        echo \"  root /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs;\" >> \$${app_name}_nginx_site"
678
-    echo "        echo '' >> \$${app_name}_nginx_site"
657
+    echo "        { echo 'server {';"
658
+    echo "          echo '  listen 443 ssl;';"
659
+    echo "          echo '  #listen [::]:443 ssl;';"
660
+    echo "          echo \"  server_name \$${app_name_upper}_DOMAIN_NAME;\";"
661
+    echo "          echo ''; } >> \"\$${app_name}_nginx_site\""
662
+    echo "        nginx_compress \"\$${app_name_upper}_DOMAIN_NAME\""
663
+    echo "        echo '' >> \"\$${app_name}_nginx_site\""
664
+    echo "        echo '  # Security' >> \"\$${app_name}_nginx_site\""
665
+    echo "        nginx_ssl \"\$${app_name_upper}_DOMAIN_NAME\""
666
+    echo ''
667
+    echo "        nginx_security_options \"\$${app_name_upper}_DOMAIN_NAME\""
668
+    echo ''
669
+    echo "        { echo '  add_header Strict-Transport-Security max-age=15768000;';"
670
+    echo "          echo '';"
671
+    echo "          echo '  # Logs';"
672
+    echo "          echo '  access_log /dev/null;';"
673
+    echo "          echo '  error_log /dev/null;';"
674
+    echo "          echo '';"
675
+    echo "          echo '  # Root';"
676
+    echo "          echo \"  root /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs;\";"
677
+    echo "          echo '';"
679
     if [[ "$app_php" == 'yes' ]]; then
678
     if [[ "$app_php" == 'yes' ]]; then
680
-        echo "        echo '  index index.php;' >> \$${app_name}_nginx_site"
681
-        echo "        echo '  location ~ \\.php {' >> \$${app_name}_nginx_site"
682
-        echo "        echo '    include snippets/fastcgi-php.conf;' >> \$${app_name}_nginx_site"
683
-        echo "        echo '    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;' >> \$${app_name}_nginx_site"
684
-        echo "        echo '    fastcgi_read_timeout 30;' >> \$${app_name}_nginx_site"
685
-        echo "        echo '  }' >> \$${app_name}_nginx_site"
686
-        echo "        echo '' >> \$${app_name}_nginx_site"
679
+        echo "          echo '  index index.php;';"
680
+        echo "          echo '  location ~ \\.php {';"
681
+        echo "          echo '    include snippets/fastcgi-php.conf;';"
682
+        echo "          echo '    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;';"
683
+        echo "          echo '    fastcgi_read_timeout 30;';"
684
+        echo "          echo '  }';"
685
+        echo "          echo '';"
687
     else
686
     else
688
-        echo "        echo '  index index.html;' >> \$${app_name}_nginx_site"
687
+        echo "        echo '  index index.html;';"
689
     fi
688
     fi
690
-    echo "        echo '  # Location' >> \$${app_name}_nginx_site"
691
-    echo "        echo '  location / {' >> \$${app_name}_nginx_site"
692
-    echo "        nginx_limits \$${app_name_upper}_DOMAIN_NAME '15m'"
689
+    echo "          echo '  # Location';"
690
+    echo "          echo '  location / {'; } >> \"\$${app_name}_nginx_site\""
691
+    echo "        nginx_limits \"\$${app_name_upper}_DOMAIN_NAME\" '15m'"
693
     if [ ! $app_daemon ]; then
692
     if [ ! $app_daemon ]; then
694
-        echo "        echo '    try_files \$uri \$uri/ /index.html;' >> \$${app_name}_nginx_site"
693
+        echo "        { echo \"    try_files \\\$uri \\\$uri/ /index.html;\";"
695
     else
694
     else
696
-        echo "        echo \"    proxy_pass http://localhost:\$${app_name_upper}_PORT_INTERNAL;\" >> \$${app_name}_nginx_site"
695
+        echo "        { echo \"    proxy_pass http://localhost:\$${app_name_upper}_PORT_INTERNAL;\";"
697
     fi
696
     fi
698
-    echo "        echo '  }' >> \$${app_name}_nginx_site"
699
-    echo "        echo '}' >> \$${app_name}_nginx_site"
697
+    echo "          echo '  }';"
698
+    echo "          echo '}'; } >> \"\$${app_name}_nginx_site\""
700
     echo '    else'
699
     echo '    else'
701
-    echo "        echo -n '' > \$${app_name}_nginx_site"
700
+    echo "        echo -n '' > \"\$${app_name}_nginx_site\""
702
     echo '    fi'
701
     echo '    fi'
703
 else
702
 else
704
-    echo "    echo -n '' > \$${app_name}_nginx_site"
705
-fi
706
-echo "    echo 'server {' >> \$${app_name}_nginx_site"
707
-echo "    echo \"    listen 127.0.0.1:\$${app_name_upper}_ONION_PORT default_server;\" >> \$${app_name}_nginx_site"
708
-echo "    echo \"    server_name \$${app_name_upper}_ONION_HOSTNAME;\" >> \$${app_name}_nginx_site"
709
-echo "    echo '' >> \$${app_name}_nginx_site"
710
-echo "    nginx_compress \$${app_name_upper}_DOMAIN_NAME"
711
-echo "    echo '' >> \$${app_name}_nginx_site"
712
-echo "    nginx_security_options \$${app_name_upper}_DOMAIN_NAME"
713
-echo "    echo '' >> \$${app_name}_nginx_site"
714
-echo "    echo '  # Logs' >> \$${app_name}_nginx_site"
715
-echo "    echo '  access_log /dev/null;' >> \$${app_name}_nginx_site"
716
-echo "    echo '  error_log /dev/null;' >> \$${app_name}_nginx_site"
717
-echo "    echo '' >> \$${app_name}_nginx_site"
718
-echo "    echo '  # Root' >> \$${app_name}_nginx_site"
719
-echo "    echo \"  root /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs;\" >> \$${app_name}_nginx_site"
720
-echo "    echo '' >> \$${app_name}_nginx_site"
703
+    echo "    echo -n '' > \"\$${app_name}_nginx_site\""
704
+fi
705
+echo "    { echo 'server {';"
706
+echo "      echo \"    listen 127.0.0.1:\$${app_name_upper}_ONION_PORT default_server;\";"
707
+echo "      echo \"    server_name \$${app_name_upper}_ONION_HOSTNAME;\";"
708
+echo "      echo ''; } >> \"\$${app_name}_nginx_site\""
709
+echo "    nginx_compress \"\$${app_name_upper}_DOMAIN_NAME\""
710
+echo "    echo '' >> \"\$${app_name}_nginx_site\""
711
+echo "    nginx_security_options \"\$${app_name_upper}_DOMAIN_NAME\""
712
+echo "    { echo '';"
713
+echo "      echo '  # Logs';"
714
+echo "      echo '  access_log /dev/null;';"
715
+echo "      echo '  error_log /dev/null;';"
716
+echo "      echo '';"
717
+echo "      echo '  # Root';"
718
+echo "      echo \"  root /var/www/\$${app_name_upper}_DOMAIN_NAME/htdocs;\";"
719
+echo "      echo '';"
721
 if [[ "$app_php" == 'yes' ]]; then
720
 if [[ "$app_php" == 'yes' ]]; then
722
-    echo "    echo '  index index.php;' >> \$${app_name}_nginx_site"
723
-    echo "    echo '  location ~ \\.php {' >> \$${app_name}_nginx_site"
724
-    echo "    echo '    include snippets/fastcgi-php.conf;' >> \$${app_name}_nginx_site"
725
-    echo "    echo '    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;' >> \$${app_name}_nginx_site"
726
-    echo "    echo '    fastcgi_read_timeout 30;' >> \$${app_name}_nginx_site"
727
-    echo "    echo '  }' >> \$${app_name}_nginx_site"
728
-    echo "    echo '' >> \$${app_name}_nginx_site"
721
+    echo "      echo '  index index.php;';"
722
+    echo "      echo '  location ~ \\.php {';"
723
+    echo "      echo '    include snippets/fastcgi-php.conf;';"
724
+    echo "      echo '    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;';"
725
+    echo "      echo '    fastcgi_read_timeout 30;';"
726
+    echo "      echo '  }';"
727
+    echo "      echo '';"
729
 else
728
 else
730
-    echo "        echo '  index index.html;' >> \$${app_name}_nginx_site"
729
+    echo "        echo '  index index.html;';"
731
 fi
730
 fi
732
-echo "    echo '  # Location' >> \$${app_name}_nginx_site"
733
-echo "    echo '  location / {' >> \$${app_name}_nginx_site"
734
-echo "    nginx_limits \$${app_name_upper}_DOMAIN_NAME '15m'"
731
+echo "      echo '  # Location';"
732
+echo "      echo '  location / {'; } >> \"\$${app_name}_nginx_site\""
733
+echo "    nginx_limits \"\$${app_name_upper}_DOMAIN_NAME\" '15m'"
735
 if [ ! $app_daemon ]; then
734
 if [ ! $app_daemon ]; then
736
-    echo "    echo '    try_files \$uri \$uri/ index.html;' >> \$${app_name}_nginx_site"
735
+    echo "    { echo \"    try_files \\\$uri \\\$uri/ index.html;\";"
737
 else
736
 else
738
-    echo "    echo \"    proxy_pass http://localhost:\$${app_name_upper}_PORT_INTERNAL;\" >> \$${app_name}_nginx_site"
737
+    echo "      echo \"    proxy_pass http://localhost:\$${app_name_upper}_PORT_INTERNAL;\";"
739
 fi
738
 fi
740
-echo "    echo '  }' >> \$${app_name}_nginx_site"
741
-echo "    echo '}' >> \$${app_name}_nginx_site"
739
+echo "      echo '  }';"
740
+echo "      echo '}'; } >> \"\$${app_name}_nginx_site\""
742
 if [[ "$app_php" == 'yes' ]]; then
741
 if [[ "$app_php" == 'yes' ]]; then
743
     echo ''
742
     echo ''
744
     echo '    configure_php'
743
     echo '    configure_php'
745
 fi
744
 fi
746
 if [ $app_daemon ]; then
745
 if [ $app_daemon ]; then
747
     echo ''
746
     echo ''
748
-    echo "    useradd -d TODO_PATH_TO_INSTALL -s /bin/false ${app_name}"
749
-    echo ''
750
-    echo "    echo '[Unit]' > /etc/systemd/system/${app_name}.service"
751
-    echo "    echo 'Description=${app_name}' >> /etc/systemd/system/${app_name}.service"
752
-    echo "    echo 'After=syslog.target' >> /etc/systemd/system/${app_name}.service"
753
-    echo "    echo 'After=network.target' >> /etc/systemd/system/${app_name}.service"
754
-    echo "    echo '' >> /etc/systemd/system/${app_name}.service"
755
-    echo "    echo '[Service]' >> /etc/systemd/system/${app_name}.service"
756
-    echo "    echo 'Type=simple' >> /etc/systemd/system/${app_name}.service"
757
-    echo "    echo 'User=${app_name}' >> /etc/systemd/system/${app_name}.service"
758
-    echo "    echo 'Group=${app_name}' >> /etc/systemd/system/${app_name}.service"
747
+    echo "    useradd -d \"TODO_PATH_TO_INSTALL\" -s /bin/false ${app_name}"
748
+    echo ''
749
+    echo "    { echo '[Unit]';"
750
+    echo "      echo 'Description=${app_name}';"
751
+    echo "      echo 'After=syslog.target';"
752
+    echo "      echo 'After=network.target';"
753
+    echo "      echo '';"
754
+    echo "      echo '[Service]';"
755
+    echo "      echo 'Type=simple';"
756
+    echo "      echo 'User=${app_name}';"
757
+    echo "      echo 'Group=${app_name}'; } > \"/etc/systemd/system/${app_name}.service\""
759
     if [ ! "$app_dir" ]; then
758
     if [ ! "$app_dir" ]; then
760
-        echo "    echo 'WorkingDirectory=TODO' >> /etc/systemd/system/${app_name}.service"
759
+        echo "    echo 'WorkingDirectory=TODO' >> \"/etc/systemd/system/${app_name}.service\""
761
     else
760
     else
762
-        echo "    echo 'WorkingDirectory=${app_dir}' >> /etc/systemd/system/${app_name}.service"
761
+        echo "    echo 'WorkingDirectory=${app_dir}' >> \"/etc/systemd/system/${app_name}.service\""
763
     fi
762
     fi
764
-    echo "    echo 'ExecStart=TODO' >> /etc/systemd/system/${app_name}.service"
765
-    echo "    echo 'Restart=always' >> /etc/systemd/system/${app_name}.service"
766
-    echo "    echo 'Environment=\"USER=${app_name}\"' >> /etc/systemd/system/${app_name}.service"
767
-    echo "    echo '' >> /etc/systemd/system/${app_name}.service"
768
-    echo "    echo '[Install]' >> /etc/systemd/system/${app_name}.service"
769
-    echo "    echo 'WantedBy=multi-user.target' >> /etc/systemd/system/${app_name}.service"
763
+    echo "    { echo 'ExecStart=TODO';"
764
+    echo "      echo 'Restart=always';"
765
+    echo "      echo 'Environment=\"USER=${app_name}\"';"
766
+    echo "      echo '';"
767
+    echo "      echo '[Install]';"
768
+    echo "      echo 'WantedBy=multi-user.target'; } >> \"/etc/systemd/system/${app_name}.service\""
770
     echo "    systemctl enable ${app_name}"
769
     echo "    systemctl enable ${app_name}"
771
     if [ "$app_dir" ]; then
770
     if [ "$app_dir" ]; then
772
-        echo "    chown -R ${app_name}:${app_name} ${app_dir}"
771
+        echo "    chown -R ${app_name}:${app_name} \"${app_dir}\""
773
     fi
772
     fi
774
     echo "    systemctl start ${app_name}"
773
     echo "    systemctl start ${app_name}"
775
 fi
774
 fi
776
 echo ''
775
 echo ''
777
-echo "    create_site_certificate \$${app_name_upper}_DOMAIN_NAME 'yes'"
776
+echo "    create_site_certificate \"\$${app_name_upper}_DOMAIN_NAME\" 'yes'"
778
 echo ''
777
 echo ''
779
-echo "    nginx_ensite \$${app_name_upper}_DOMAIN_NAME"
778
+echo "    nginx_ensite \"\$${app_name_upper}_DOMAIN_NAME\""
780
 echo ''
779
 echo ''
781
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
780
 if [[ "$database_type" == "mariadb" || "$database_type" == "mysql" ]]; then
782
     echo '    systemctl restart mariadb'
781
     echo '    systemctl restart mariadb'
786
 fi
785
 fi
787
 echo '    systemctl restart nginx'
786
 echo '    systemctl restart nginx'
788
 echo ''
787
 echo ''
789
-echo "    \${PROJECT_NAME}-pass -u \$MY_USERNAME -a ${app_name} -p \"\$${app_name_upper}_ADMIN_PASSWORD\""
788
+echo "    \"\${PROJECT_NAME}-pass\" -u \"\$MY_USERNAME\" -a ${app_name} -p \"\$${app_name_upper}_ADMIN_PASSWORD\""
790
 echo "    set_completion_param \"${app_name} domain\" \"\$${app_name_upper}_DOMAIN_NAME\""
789
 echo "    set_completion_param \"${app_name} domain\" \"\$${app_name_upper}_DOMAIN_NAME\""
791
 if [ "$app_port" ]; then
790
 if [ "$app_port" ]; then
792
     echo ''
791
     echo ''