Bläddra i källkod

Separate api and app

Bob Mottram 8 år sedan
förälder
incheckning
c610e588d2
1 ändrade filer med 122 tillägg och 28 borttagningar
  1. 122
    28
      src/freedombone-app-turtl

+ 122
- 28
src/freedombone-app-turtl Visa fil

@@ -39,9 +39,12 @@ SHOW_ON_ABOUT=1
39 39
 TURTL_DOMAIN_NAME=
40 40
 TURTL_CODE=
41 41
 TURTL_ONION_PORT=8107
42
+TURTL_API_ONION_PORT=8108
42 43
 TURTL_PORT=8181
43
-TURTL_REPO="https://github.com/turtl/api.git"
44
-TURTL_COMMIT='53e00a5583f52de8f86ef380fe11c176b5738dcf'
44
+TURTL_API_REPO="https://github.com/turtl/api.git"
45
+TURTL_API_COMMIT='53e00a5583f52de8f86ef380fe11c176b5738dcf'
46
+TURTL_REPO="https://github.com/turtl/js.git"
47
+TURTL_COMMIT='61923ffb47d95d172f80d14c76aa032a4d5f5d6d'
45 48
 TURTL_ADMIN_PASSWORD=
46 49
 TURTL_STORAGE_LIMIT_MB=100
47 50
 
@@ -99,7 +102,7 @@ function configure_interactive_turtl {
99 102
             STORAGE=$(<$data)
100 103
             if [ ${#STORAGE} -gt 0 ]; then
101 104
                 TURTL_STORAGE_LIMIT_MB=$STORAGE
102
-                sed -i "s|defparameter *default-storage-limit*.*|defparameter *default-storage-limit* $TURTL_STORAGE_LIMIT_MB|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
105
+                sed -i "s|defparameter *default-storage-limit*.*|defparameter *default-storage-limit* $TURTL_STORAGE_LIMIT_MB|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
103 106
                 systemctl restart turtl
104 107
                 dialog --title $"Change storage limit" \
105 108
                        --msgbox $"Storage limit changed to ${TURTL_STORAGE_LIMIT_MB}M" 6 50
@@ -122,6 +125,7 @@ function upgrade_turtl {
122 125
 
123 126
     function_check set_repo_commit
124 127
     set_repo_commit /var/www/$TURTL_DOMAIN_NAME/htdocs "turtl commit" "$TURTL_COMMIT" $TURTL_REPO
128
+    set_repo_commit /var/www/$TURTL_DOMAIN_NAME/htdocs "turtl api commit" "$TURTL_API_COMMIT" $TURTL_API_REPO
125 129
 }
126 130
 
127 131
 function backup_local_turtl {
@@ -228,6 +232,7 @@ function remove_turtl {
228 232
     fi
229 233
     function_check remove_onion_service
230 234
     remove_onion_service turtl ${TURTL_ONION_PORT}
235
+    remove_onion_service turtlapi ${TURTL_API_ONION_PORT}
231 236
     remove_app turtl
232 237
     remove_completion_param install_turtl
233 238
     sed -i '/turtl/d' $COMPLETION_FILE
@@ -295,9 +300,12 @@ function install_turtl {
295 300
         mkdir -p $INSTALL_DIR
296 301
     fi
297 302
 
298
-    if [ ! -d /var/www/$TURTL_DOMAIN_NAME ]; then
299
-        mkdir /var/www/$TURTL_DOMAIN_NAME
303
+    if [ -d /var/www/$TURTL_DOMAIN_NAME ]; then
304
+        rm -rf /var/www/$TURTL_DOMAIN_NAME
300 305
     fi
306
+    mkdir /var/www/$TURTL_DOMAIN_NAME
307
+
308
+    # get the app
301 309
     if [ ! -d /var/www/$TURTL_DOMAIN_NAME/htdocs ]; then
302 310
         function_check git_clone
303 311
         git_clone $TURTL_REPO /var/www/$TURTL_DOMAIN_NAME/htdocs
@@ -307,30 +315,56 @@ function install_turtl {
307 315
         fi
308 316
     fi
309 317
 
310
-    if [ ! -f /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.default.lisp ]; then
311
-        echo $'No default turtl config found'
318
+    # get the api
319
+    if [ ! -d /var/www/$TURTL_DOMAIN_NAME/htdocs/api ]; then
320
+        git_clone $TURTL_API_REPO /var/www/$TURTL_DOMAIN_NAME/htdocs/api
321
+        if [ ! -d /var/www/$TURTL_DOMAIN_NAME/htdocs/api ]; then
322
+            echo $'Unable to clone turtl api repo'
323
+            exit 473843
324
+        fi
325
+    fi
326
+
327
+    # check that default config files exist
328
+    if [ ! -f /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.default.lisp ]; then
329
+        echo $'No default turtl api config found'
312 330
         exit 825328
313 331
     fi
332
+    if [ ! -f /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.default ]; then
333
+        echo $'No default turtl config found'
334
+        exit 783524
335
+    fi
336
+
337
+    # directory where uploads are stored
314 338
     if [ ! -d /var/www/$TURTL_DOMAIN_NAME/htdocs/data ]; then
315 339
         mkdir -p /var/www/$TURTL_DOMAIN_NAME/htdocs/data
316 340
     fi
317
-    cp /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.default.lisp /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
318
-    sed -i "s|defvar *admin-email* \".*|defvar *admin-email* \"$MY_EMAIL_ADDRESS\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
319
-    sed -i "s|defvar *email-from* \".*|defvar *email-from* \"noreply@$DEFAULT_DOMAIN_NAME\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
320
-    sed -i "s|defvar *site-url* \".*|defvar *site-url* \"https://$TURTL_DOMAIN_NAME\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
321
-    sed -i "s|defvar *analytics* '(:enabled.*|defvar *analytics* '(:enabled f|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
322
-    sed -i 's|http://turtl.dev:8181|https://$TURTL_DOMAIN_NAME|g' /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
323
-    sed -i "s|defvar *local-upload*.*|defvar *local-upload* \"/var/www/$TURTL_DOMAIN_NAME/htdocs/data\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
324
-    sed -i "s|defvar *local-upload-url*.*|defvar *local-upload-url* \"https://$TURTL_DOMAIN_NAME\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
325
-    sed -i 's|defparameter *storage-invite-credit*.*|defparameter *storage-invite-credit* 0|g' /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
326
-    sed -i "s|defparameter *default-storage-limit*.*|defparameter *default-storage-limit* $TURTL_STORAGE_LIMIT_MB|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
341
+
342
+    # create config files
343
+    cp /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.default.lisp /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
344
+    cp /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.js.default /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.js
345
+
346
+    # app config file settings
347
+    sed -i "s|api_url.*|api_url: 'https://api.${TURTL_DOMAIN_NAME}'|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.js
348
+    sed -i "s|site_url.*|api_url: 'https://${TURTL_DOMAIN_NAME}'|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.js
349
+
350
+    # api config file settings
351
+    sed -i "s|defvar *admin-email* \".*|defvar *admin-email* \"$MY_EMAIL_ADDRESS\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
352
+    sed -i "s|defvar *email-from* \".*|defvar *email-from* \"noreply@$DEFAULT_DOMAIN_NAME\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
353
+    sed -i "s|defvar *site-url* \".*|defvar *site-url* \"https://$TURTL_DOMAIN_NAME\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
354
+    sed -i "s|defvar *analytics* '(:enabled.*|defvar *analytics* '(:enabled f|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
355
+    sed -i 's|http://turtl.dev:8181|https://$TURTL_DOMAIN_NAME|g' /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
356
+    sed -i "s|defvar *local-upload*.*|defvar *local-upload* \"/var/www/$TURTL_DOMAIN_NAME/htdocs/data\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
357
+    sed -i "s|defvar *local-upload-url*.*|defvar *local-upload-url* \"https://api.${TURTL_DOMAIN_NAME}\"|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
358
+    sed -i 's|defparameter *storage-invite-credit*.*|defparameter *storage-invite-credit* 0|g' /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
359
+    sed -i "s|defparameter *default-storage-limit*.*|defparameter *default-storage-limit* $TURTL_STORAGE_LIMIT_MB|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
327 360
 
328 361
     cd /var/www/$TURTL_DOMAIN_NAME/htdocs
329 362
     git checkout $TURTL_COMMIT -b $TURTL_COMMIT
330 363
     set_completion_param "turtl commit" "$TURTL_COMMIT"
331 364
 
332
-    chmod a+w /var/www/$TURTL_DOMAIN_NAME/htdocs
333
-    chown www-data:www-data /var/www/$TURTL_DOMAIN_NAME/htdocs
365
+    cd /var/www/$TURTL_DOMAIN_NAME/htdocs/api
366
+    git checkout $TURTL_API_COMMIT -b $TURTL_API_COMMIT
367
+    set_completion_param "turtl api commit" "$TURTL_API_COMMIT"
334 368
 
335 369
     install_libuv
336 370
     install_rethinkdb
@@ -344,6 +378,7 @@ function install_turtl {
344 378
     add_ddns_domain $TURTL_DOMAIN_NAME
345 379
 
346 380
     adduser --system --home=/var/www/$TURTL_DOMAIN_NAME/htdocs/ --group turtl
381
+    chmod a+w /var/www/$TURTL_DOMAIN_NAME/htdocs
347 382
     chown -R turtl:turtl /var/www/$TURTL_DOMAIN_NAME/htdocs
348 383
 
349 384
     echo '[Unit]' > /etc/systemd/system/turtl.service
@@ -357,7 +392,7 @@ function install_turtl {
357 392
     echo '[Service]' >> /etc/systemd/system/turtl.service
358 393
     echo 'Type=simple' >> /etc/systemd/system/turtl.service
359 394
     echo 'User=turtl' >> /etc/systemd/system/turtl.service
360
-    echo "WorkingDirectory=/var/www/$TURTL_DOMAIN_NAME/htdocs/" >> /etc/systemd/system/turtl.service
395
+    echo "WorkingDirectory=/var/www/$TURTL_DOMAIN_NAME/htdocs/api/" >> /etc/systemd/system/turtl.service
361 396
     check_architecture=$(uname -a)
362 397
     if [[ "$check_architecture" == *"64"* && "$check_architecture" != *"arm"* ]]; then
363 398
         echo 'ExecStart=/usr/bin/ccl64 -Q -b --load start.lisp' >> /etc/systemd/system/turtl.service
@@ -369,6 +404,9 @@ function install_turtl {
369 404
     echo 'WantedBy=multi-user.target' >> /etc/systemd/system/turtl.service
370 405
     chmod +x /etc/systemd/system/turtl.service
371 406
 
407
+    TURTL_ONION_HOSTNAME=$(add_onion_service turtl 80 ${TURTL_ONION_PORT})
408
+    TURTL_API_ONION_HOSTNAME=$(add_onion_service turtlapi 80 ${TURTL_API_ONION_PORT})
409
+
372 410
     turtl_nginx_site=/etc/nginx/sites-available/$TURTL_DOMAIN_NAME
373 411
     if [[ $ONION_ONLY == "no" ]]; then
374 412
         function_check nginx_http_redirect
@@ -376,7 +414,7 @@ function install_turtl {
376 414
         echo 'server {' >> $turtl_nginx_site
377 415
         echo '  listen 443 ssl;' >> $turtl_nginx_site
378 416
         echo '  listen [::]:443 ssl;' >> $turtl_nginx_site
379
-        echo "  server_name $TURTL_DOMAIN_NAME;" >> $turtl_nginx_site
417
+        echo "  server_name api.${TURTL_DOMAIN_NAME};" >> $turtl_nginx_site
380 418
         echo '' >> $turtl_nginx_site
381 419
         echo '  # Security' >> $turtl_nginx_site
382 420
         function_check nginx_ssl
@@ -392,7 +430,7 @@ function install_turtl {
392 430
         echo '  error_log /dev/null;' >> $turtl_nginx_site
393 431
         echo '' >> $turtl_nginx_site
394 432
         echo '  # Root' >> $turtl_nginx_site
395
-        echo "  root /var/www/$TURTL_DOMAIN_NAME/htdocs;" >> $turtl_nginx_site
433
+        echo "  root /var/www/$TURTL_DOMAIN_NAME/htdocs/api;" >> $turtl_nginx_site
396 434
         echo '' >> $turtl_nginx_site
397 435
         echo '  location / {' >> $turtl_nginx_site
398 436
         function_check nginx_limits
@@ -404,12 +442,43 @@ function install_turtl {
404 442
         echo '' >> $turtl_nginx_site
405 443
         nginx_keybase $TURTL_DOMAIN_NAME
406 444
         echo '}' >> $turtl_nginx_site
445
+        echo '' >> $turtl_nginx_site
446
+        echo 'server {' >> $turtl_nginx_site
447
+        echo '  listen 443 ssl;' >> $turtl_nginx_site
448
+        echo '  listen [::]:443 ssl;' >> $turtl_nginx_site
449
+        echo "  server_name ${TURTL_DOMAIN_NAME};" >> $turtl_nginx_site
450
+        echo '' >> $turtl_nginx_site
451
+        echo '  index index.html;' >> $turtl_nginx_site
452
+        echo '' >> $turtl_nginx_site
453
+        echo '  # Security' >> $turtl_nginx_site
454
+        function_check nginx_ssl
455
+        nginx_ssl $TURTL_DOMAIN_NAME
456
+
457
+        function_check nginx_disable_sniffing
458
+        nginx_disable_sniffing $TURTL_DOMAIN_NAME
459
+
460
+        echo '  add_header Strict-Transport-Security max-age=15768000;' >> $turtl_nginx_site
461
+        echo '' >> $turtl_nginx_site
462
+        echo '  # Logs' >> $turtl_nginx_site
463
+        echo '  access_log /dev/null;' >> $turtl_nginx_site
464
+        echo '  error_log /dev/null;' >> $turtl_nginx_site
465
+        echo '' >> $turtl_nginx_site
466
+        echo '  # Root' >> $turtl_nginx_site
467
+        echo "  root /var/www/$TURTL_DOMAIN_NAME/htdocs;" >> $turtl_nginx_site
468
+        echo '' >> $turtl_nginx_site
469
+        echo '  location / {' >> $turtl_nginx_site
470
+        function_check nginx_limits
471
+        nginx_limits $TURTL_DOMAIN_NAME '15m'
472
+        echo '  }' >> $turtl_nginx_site
473
+        echo '' >> $turtl_nginx_site
474
+        nginx_keybase $TURTL_DOMAIN_NAME
475
+        echo '}' >> $turtl_nginx_site
407 476
     else
408 477
         echo -n '' > $turtl_nginx_site
409 478
     fi
410 479
     echo 'server {' >> $turtl_nginx_site
411
-    echo "    listen 127.0.0.1:$TURTL_ONION_PORT default_server;" >> $turtl_nginx_site
412
-    echo "    server_name $TURTL_DOMAIN_NAME;" >> $turtl_nginx_site
480
+    echo "  listen 127.0.0.1:${TURTL_API_ONION_PORT};" >> $turtl_nginx_site
481
+    echo "  server_name ${TURTL_API_ONION_HOSTNAME};" >> $turtl_nginx_site
413 482
     echo '' >> $turtl_nginx_site
414 483
     function_check nginx_disable_sniffing
415 484
     nginx_disable_sniffing $TURTL_DOMAIN_NAME
@@ -419,7 +488,7 @@ function install_turtl {
419 488
     echo '  error_log /dev/null;' >> $turtl_nginx_site
420 489
     echo '' >> $turtl_nginx_site
421 490
     echo '  # Root' >> $turtl_nginx_site
422
-    echo "  root /var/www/$TURTL_DOMAIN_NAME/htdocs;" >> $turtl_nginx_site
491
+    echo "  root /var/www/$TURTL_DOMAIN_NAME/htdocs/api;" >> $turtl_nginx_site
423 492
     echo '' >> $turtl_nginx_site
424 493
     echo '  location / {' >> $turtl_nginx_site
425 494
     function_check nginx_limits
@@ -431,6 +500,30 @@ function install_turtl {
431 500
     echo '' >> $turtl_nginx_site
432 501
     nginx_keybase $TURTL_DOMAIN_NAME
433 502
     echo '}' >> $turtl_nginx_site
503
+    echo '' >> $turtl_nginx_site
504
+    echo 'server {' >> $turtl_nginx_site
505
+    echo "  listen 127.0.0.1:$TURTL_ONION_PORT default_server;" >> $turtl_nginx_site
506
+    echo "  server_name $TURTL_ONION_HOSTNAME;" >> $turtl_nginx_site
507
+    echo '' >> $turtl_nginx_site
508
+    echo '  index index.html;' >> $turtl_nginx_site
509
+    echo '' >> $turtl_nginx_site
510
+    function_check nginx_disable_sniffing
511
+    nginx_disable_sniffing $TURTL_DOMAIN_NAME
512
+    echo '' >> $turtl_nginx_site
513
+    echo '  # Logs' >> $turtl_nginx_site
514
+    echo '  access_log /dev/null;' >> $turtl_nginx_site
515
+    echo '  error_log /dev/null;' >> $turtl_nginx_site
516
+    echo '' >> $turtl_nginx_site
517
+    echo '  # Root' >> $turtl_nginx_site
518
+    echo "  root /var/www/$TURTL_DOMAIN_NAME/htdocs;" >> $turtl_nginx_site
519
+    echo '' >> $turtl_nginx_site
520
+    echo '  location / {' >> $turtl_nginx_site
521
+    function_check nginx_limits
522
+    nginx_limits $TURTL_DOMAIN_NAME '15m'
523
+    echo '  }' >> $turtl_nginx_site
524
+    echo '' >> $turtl_nginx_site
525
+    nginx_keybase $TURTL_DOMAIN_NAME
526
+    echo '}' >> $turtl_nginx_site
434 527
 
435 528
     function_check create_site_certificate
436 529
     create_site_certificate $TURTL_DOMAIN_NAME 'yes'
@@ -448,10 +541,11 @@ function install_turtl {
448 541
     function_check nginx_ensite
449 542
     nginx_ensite $TURTL_DOMAIN_NAME
450 543
 
451
-    TURTL_ONION_HOSTNAME=$(add_onion_service turtl 80 ${TURTL_ONION_PORT})
452
-
453 544
     if [[ $ONION_ONLY != 'no' ]]; then
454
-        sed -i "s|https://$TURTL_DOMAIN_NAME|http://$TURTL_ONION_HOSTNAME|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.lisp
545
+        sed -i "s|https://${TURTL_DOMAIN_NAME}|http://${TURTL_ONION_HOSTNAME}|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
546
+        sed -i "s|https://api.${TURTL_DOMAIN_NAME}|http://${TURTL_API_ONION_HOSTNAME}|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/api/config/config.lisp
547
+        sed -i "s|https://${TURTL_DOMAIN_NAME}|http://${TURTL_ONION_HOSTNAME}|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.js
548
+        sed -i "s|https://api.${TURTL_DOMAIN_NAME}|http://${TURTL_API_ONION_HOSTNAME}|g" /var/www/$TURTL_DOMAIN_NAME/htdocs/config/config.js
455 549
     fi
456 550
 
457 551
     ${PROJECT_NAME}-pass -u $MY_USERNAME -a turtl -p "$TURTL_ADMIN_PASSWORD"