소스 검색

pelican web site

Bob Mottram 8 년 전
부모
커밋
ddcbe1ca1a
1개의 변경된 파일127개의 추가작업 그리고 28개의 파일을 삭제
  1. 127
    28
      src/freedombone-app-pelican

+ 127
- 28
src/freedombone-app-pelican 파일 보기

@@ -33,7 +33,7 @@ VARIANTS=''
33 33
 IN_DEFAULT_INSTALL=0
34 34
 SHOW_ON_ABOUT=0
35 35
 
36
-PELICAN_BLOG_DOMAIN=
36
+PELICAN_DOMAIN_NAME=
37 37
 PELICAN_BLOG_CODE=
38 38
 
39 39
 PELICAN_THEMES_REPO="https://github.com/getpelican/pelican-themes"
@@ -45,9 +45,101 @@ PELICAN_CURRENT_BLOG_INDEX=$PELICAN_BLOG_INSTALL_DIR/.blog-index
45 45
 
46 46
 pelican_variables=(MY_USERNAME
47 47
                    ONION_ONLY
48
-                   PELICAN_BLOG_DOMAIN
48
+                   PELICAN_DOMAIN_NAME
49 49
                    PELICAN_BLOG_CODE)
50 50
 
51
+
52
+function install_pelican_website {
53
+    if [[ $ONION_ONLY == 'no' ]]; then
54
+        echo -n '' > /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
55
+        return
56
+    fi
57
+    function_check nginx_http_redirect
58
+    nginx_http_redirect $PELICAN_DOMAIN_NAME
59
+    echo 'server {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
60
+    echo '    listen 443 ssl;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
61
+    echo '    listen [::]:443 ssl;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
62
+    echo "    root /var/www/${PELICAN_DOMAIN_NAME}/htdocs;" >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
63
+    echo "    server_name ${PELICAN_DOMAIN_NAME};" >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
64
+    echo '    access_log /dev/null;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
65
+    echo "    error_log /dev/null;" >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
66
+    echo '    index index.html;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
67
+    echo '    charset utf-8;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
68
+    function_check nginx_ssl
69
+    nginx_ssl $PELICAN_DOMAIN_NAME
70
+    function_check nginx_disable_sniffing
71
+    nginx_disable_sniffing $PELICAN_DOMAIN_NAME
72
+    echo '    add_header Strict-Transport-Security "max-age=0;";' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
73
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
74
+    echo '    location / {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
75
+    function_check nginx_limits
76
+    nginx_limits $PELICAN_DOMAIN_NAME
77
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
78
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
79
+    nginx_keybase ${PELICAN_DOMAIN_NAME}
80
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
81
+    echo '    # block these file types' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
82
+    echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
83
+    echo '        deny all;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
84
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
85
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
86
+    echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
87
+    echo '    location ~ /\. {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
88
+    echo '        deny all;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
89
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
90
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
91
+    echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
92
+    echo '      deny all;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
93
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
94
+    echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
95
+    echo '      deny  all;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
96
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
97
+    echo '}' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
98
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
99
+
100
+    function_check create_site_certificate
101
+    create_site_certificate $PELICAN_DOMAIN_NAME 'yes'
102
+}
103
+
104
+function install_pelican_website_onion {
105
+    echo 'server {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
106
+    echo "    listen 127.0.0.1:${HTMLY_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
107
+    echo "    root /var/www/${PELICAN_DOMAIN_NAME}/htdocs;" >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
108
+    echo "    server_name ${PELICAN_DOMAIN_NAME};" >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
109
+    echo '    access_log /dev/null;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
110
+    echo "    error_log /dev/null;" >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
111
+    echo '    index index.html;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
112
+    echo '    charset utf-8;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
113
+    function_check nginx_disable_sniffing
114
+    nginx_disable_sniffing $PELICAN_DOMAIN_NAME
115
+    echo '    add_header Strict-Transport-Security "max-age=0;";' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
116
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
117
+    echo '    location / {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
118
+    function_check nginx_limits
119
+    nginx_limits $PELICAN_DOMAIN_NAME
120
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
121
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
122
+    nginx_keybase ${PELICAN_DOMAIN_NAME}
123
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
124
+    echo '    # block these file types' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
125
+    echo '    location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
126
+    echo '        deny all;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
127
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
128
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
129
+    echo '    # deny access to all dot files' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
130
+    echo '    location ~ /\. {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
131
+    echo '        deny all;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
132
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
133
+    echo '' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
134
+    echo '    location ~ /(data|conf|bin|inc)/ {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
135
+    echo '      deny all;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
136
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
137
+    echo '    location ~ /\.ht {' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
138
+    echo '      deny  all;' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
139
+    echo '    }' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
140
+    echo '}' >> /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
141
+}
142
+
51 143
 function pelican_editor_config {
52 144
     if [ ! -f $PELICAN_BLOG_INSTALL_DIR/.emacs-pelican ]; then
53 145
         echo "(add-hook 'before-save-hook 'delete-trailing-whitespace)" > $PELICAN_BLOG_INSTALL_DIR/.emacs-pelican
@@ -76,8 +168,8 @@ function pelican_regenerate_blog {
76 168
 
77 169
     cd $PELICAN_BLOG_INSTALL_DIR
78 170
     make html
79
-    cp -r $PELICAN_BLOG_INSTALL_DIR/output/* /var/www/$PELICAN_BLOG_DOMAIN/htdocs/
80
-    chown -R www-data:www-data /var/www/$PELICAN_BLOG_DOMAIN/htdocs
171
+    cp -r $PELICAN_BLOG_INSTALL_DIR/output/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/
172
+    chown -R www-data:www-data /var/www/$PELICAN_DOMAIN_NAME/htdocs
81 173
 }
82 174
 
83 175
 function pelican_new_blog {
@@ -263,7 +355,7 @@ function install_interactive_pelican {
263 355
     fi
264 356
 
265 357
     if [[ $ONION_ONLY != "no" ]]; then
266
-        PELICAN_BLOG_DOMAIN='pelican.local'
358
+        PELICAN_DOMAIN_NAME='pelican.local'
267 359
     else
268 360
         PELICAN_DETAILS_COMPLETE=
269 361
         while [ ! $PELICAN_DETAILS_COMPLETE ]
@@ -274,14 +366,14 @@ function install_interactive_pelican {
274 366
                 dialog --backtitle $"Freedombone Configuration" \
275 367
                        --title $"Pelican Blog Configuration" \
276 368
                        --form $"\nPlease enter your blog details.\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \
277
-                       $"Domain:" 1 1 "$(grep 'PELICAN_BLOG_DOMAIN' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \
369
+                       $"Domain:" 1 1 "$(grep 'PELICAN_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \
278 370
                        $"Code:" 2 1 "$(grep 'PELICAN_BLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 25 33 255 \
279 371
                        2> $data
280 372
             else
281 373
                 dialog --backtitle $"Freedombone Configuration" \
282 374
                        --title $"Pelican Blog Configuration" \
283 375
                        --form $"\nPlease enter your GNU Social details. The background image URL can be left blank.\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \
284
-                       $"Domain:" 1 1 "$(grep 'PELICAN_BLOG_DOMAIN' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \
376
+                       $"Domain:" 1 1 "$(grep 'PELICAN_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \
285 377
                        2> $data
286 378
             fi
287 379
             sel=$?
@@ -289,27 +381,27 @@ function install_interactive_pelican {
289 381
                 1) exit 1;;
290 382
                 255) exit 1;;
291 383
             esac
292
-            PELICAN_BLOG_DOMAIN=$(cat $data | sed -n 1p)
293
-            if [ $PELICAN_BLOG_DOMAIN ]; then
294
-                if [[ $PELICAN_BLOG_DOMAIN == "$HUBZILLA_DOMAIN_NAME" ]]; then
295
-                    PELICAN_BLOG_DOMAIN=""
384
+            PELICAN_DOMAIN_NAME=$(cat $data | sed -n 1p)
385
+            if [ $PELICAN_DOMAIN_NAME ]; then
386
+                if [[ $PELICAN_DOMAIN_NAME == "$HUBZILLA_DOMAIN_NAME" ]]; then
387
+                    PELICAN_DOMAIN_NAME=""
296 388
                 fi
297
-                TEST_DOMAIN_NAME=$PELICAN_BLOG_DOMAIN
389
+                TEST_DOMAIN_NAME=$PELICAN_DOMAIN_NAME
298 390
                 validate_domain_name
299
-                if [[ $TEST_DOMAIN_NAME != $PELICAN_BLOG_DOMAIN ]]; then
300
-                    PELICAN_BLOG_DOMAIN=
391
+                if [[ $TEST_DOMAIN_NAME != $PELICAN_DOMAIN_NAME ]]; then
392
+                    PELICAN_DOMAIN_NAME=
301 393
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
302 394
                 else
303 395
                     if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
304 396
                         PELICAN_BLOG_CODE=$(cat $data | sed -n 2p)
305 397
                         validate_freedns_code "$PELICAN_BLOG_CODE"
306 398
                         if [ ! $VALID_CODE ]; then
307
-                            PELICAN_BLOG_DOMAIN=
399
+                            PELICAN_DOMAIN_NAME=
308 400
                         fi
309 401
                     fi
310 402
                 fi
311 403
             fi
312
-            if [ $PELICAN_BLOG_DOMAIN ]; then
404
+            if [ $PELICAN_DOMAIN_NAME ]; then
313 405
                 PELICAN_DETAILS_COMPLETE="yes"
314 406
             fi
315 407
         done
@@ -317,7 +409,7 @@ function install_interactive_pelican {
317 409
         # save the results in the config file
318 410
         write_config_param "PELICAN_BLOG_CODE" "$PELICAN_BLOG_CODE"
319 411
     fi
320
-    write_config_param "PELICAN_BLOG_DOMAIN" "$PELICAN_BLOG_DOMAIN"
412
+    write_config_param "PELICAN_DOMAIN_NAME" "$PELICAN_DOMAIN_NAME"
321 413
     APP_INSTALLED=1
322 414
 }
323 415
 
@@ -336,7 +428,7 @@ function backup_local_pelican {
336 428
         function_check backup_directory_to_usb
337 429
         backup_directory_to_usb $source_directory $dest_directory
338 430
     fi
339
-    source_directory=/var/www/$PELICAN_BLOG_DOMAIN/htdocs
431
+    source_directory=/var/www/$PELICAN_DOMAIN_NAME/htdocs
340 432
     if [ -d $source_directory ]; then
341 433
         dest_directory=pelican-site
342 434
         function_check backup_directory_to_usb
@@ -362,12 +454,12 @@ function restore_local_pelican {
362 454
             rm -rf $temp_restore_dir
363 455
         fi
364 456
     fi
365
-    if [ -d /var/www/$PELICAN_BLOG_DOMAIN/htdocs ]; then
457
+    if [ -d /var/www/$PELICAN_DOMAIN_NAME/htdocs ]; then
366 458
         if [ -d $USB_MOUNT_DLNA/backup/pelican-site ]; then
367 459
             temp_restore_dir=/root/temppelican-site
368 460
             function_check restore_directory_from_usb
369 461
             restore_directory_from_usb $temp_restore_dir pelican-site
370
-            cp -r $temp_restore_dir/var/www/$PELICAN_BLOG_DOMAIN/htdocs/* /var/www/$PELICAN_BLOG_DOMAIN/htdocs/
462
+            cp -r $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/
371 463
             if [ ! "$?" = "0" ]; then
372 464
                 rm -rf $temp_restore_dir
373 465
                 function_check set_user_permissions
@@ -385,8 +477,8 @@ function backup_remote_pelican {
385 477
     if [ -d /etc/blog ]; then
386 478
         backup_directory_to_friend /etc/blog pelican
387 479
     fi
388
-    if [ -d /var/www/$PELICAN_BLOG_DOMAIN/htdocs ]; then
389
-        backup_directory_to_friend /var/www/$PELICAN_BLOG_DOMAIN/htdocs pelican-site
480
+    if [ -d /var/www/$PELICAN_DOMAIN_NAME/htdocs ]; then
481
+        backup_directory_to_friend /var/www/$PELICAN_DOMAIN_NAME/htdocs pelican-site
390 482
     fi
391 483
 }
392 484
 
@@ -403,12 +495,12 @@ function restore_remote_pelican {
403 495
             rm -rf $temp_restore_dir
404 496
         fi
405 497
     fi
406
-    if [ -d /var/www/$PELICAN_BLOG_DOMAIN/htdocs ]; then
498
+    if [ -d /var/www/$PELICAN_DOMAIN_NAME/htdocs ]; then
407 499
         if [ -d $SERVER_DIRECTORY/backup/pelican-site ]; then
408 500
             temp_restore_dir=/root/temppelican-site
409 501
             function_check restore_directory_from_friend
410 502
             restore_directory_from_friend $temp_restore_dir pelican-site
411
-            cp -r $temp_restore_dir/var/www/$PELICAN_BLOG_DOMAIN/htdocs/* /var/www/$PELICAN_BLOG_DOMAIN/htdocs/
503
+            cp -r $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/
412 504
             if [ ! "$?" = "0" ]; then
413 505
                 exit 76382562
414 506
             fi
@@ -418,11 +510,11 @@ function restore_remote_pelican {
418 510
 }
419 511
 
420 512
 function remove_pelican {
421
-    if [ -d /var/www/$PELICAN_BLOG_DOMAIN/htdocs ]; then
422
-        rm -rf /var/www/$PELICAN_BLOG_DOMAIN/htdocs
513
+    if [ -d /var/www/$PELICAN_DOMAIN_NAME/htdocs ]; then
514
+        rm -rf /var/www/$PELICAN_DOMAIN_NAME/htdocs
423 515
     fi
424 516
     pip uninstall pelican
425
-    remove_certs $PELICAN_BLOG_DOMAIN
517
+    remove_certs $PELICAN_DOMAIN_NAME
426 518
 }
427 519
 
428 520
 function create_pelican_conf {
@@ -661,7 +753,7 @@ function install_pelican {
661 753
     pip install typogrify
662 754
     pip install pelican
663 755
 
664
-    PELICAN_BLOG_PATH=/var/www/$PELICAN_BLOG_DOMAIN/htdocs
756
+    PELICAN_BLOG_PATH=/var/www/$PELICAN_DOMAIN_NAME/htdocs
665 757
 
666 758
     if [ ! -d $PELICAN_BLOG_INSTALL_DIR ]; then
667 759
         mkdir -p $PELICAN_BLOG_INSTALL_DIR
@@ -690,6 +782,13 @@ function install_pelican {
690 782
 
691 783
     pelican_editor_config
692 784
 
785
+    install_pelican_website
786
+    install_pelican_website_onion
787
+
788
+    function_check nginx_ensite
789
+    nginx_ensite $PELICAN_DOMAIN_NAME
790
+    systemctl restart nginx
791
+
693 792
     APP_INSTALLED=1
694 793
 }
695 794