Преглед на файлове

Interactive config for static blog

Bob Mottram преди 8 години
родител
ревизия
4421c64357
променени са 1 файла, в които са добавени 70 реда и са изтрити 6 реда
  1. 70
    6
      src/freedombone-app-pelican

+ 70
- 6
src/freedombone-app-pelican Целия файл

@@ -33,20 +33,84 @@ VARIANTS=''
33 33
 IN_DEFAULT_INSTALL=0
34 34
 SHOW_ON_ABOUT=0
35 35
 
36
+PELICAN_BLOG_DOMAIN=
37
+PELICAN_BLOG_CODE=
38
+
36 39
 STATIC_BLOG_INSTALL_DIR=/etc/staticblog
37 40
 PELICAN_THEMES_REPO="https://github.com/getpelican/pelican-themes"
38 41
 PELICAN_PLUGINS_REPO="https://github.com/getpelican/pelican-plugins"
39 42
 DEFAULT_BLOG_TITLE=$"Freedombone Blog"
40 43
 
41 44
 pelican_variables=(MY_USERNAME
42
-                   STATIC_BLOG_DOMAIN)
45
+                   ONION_ONLY
46
+                   PELICAN_BLOG_DOMAIN
47
+                   PELICAN_BLOG_CODE)
43 48
 
44 49
 function configure_interactive_pelican {
45 50
     echo -n ''
46 51
 }
47 52
 
48 53
 function install_interactive_pelican {
49
-    echo -n ''
54
+    if [ ! $ONION_ONLY ]; then
55
+        ONION_ONLY='no'
56
+    fi
57
+
58
+    if [[ $ONION_ONLY != "no" ]]; then
59
+        PELICAN_BLOG_DOMAIN='pelican.local'
60
+    else
61
+        PELICAN_DETAILS_COMPLETE=
62
+        while [ ! $PELICAN_DETAILS_COMPLETE ]
63
+        do
64
+            data=$(tempfile 2>/dev/null)
65
+            trap "rm -f $data" 0 1 2 5 15
66
+            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
67
+                dialog --backtitle $"Freedombone Configuration" \
68
+                       --title $"Pelican Blog Configuration" \
69
+                       --form $"\nPlease enter your blog details.\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \
70
+                       $"Domain:" 1 1 "$(grep 'PELICAN_BLOG_DOMAIN' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \
71
+                       $"Code:" 2 1 "$(grep 'PELICAN_BLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 25 33 255 \
72
+                       2> $data
73
+            else
74
+                dialog --backtitle $"Freedombone Configuration" \
75
+                       --title $"Pelican Blog Configuration" \
76
+                       --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 \
77
+                       $"Domain:" 1 1 "$(grep 'PELICAN_BLOG_DOMAIN' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \
78
+                       2> $data
79
+            fi
80
+            sel=$?
81
+            case $sel in
82
+                1) exit 1;;
83
+                255) exit 1;;
84
+            esac
85
+            PELICAN_BLOG_DOMAIN=$(cat $data | sed -n 1p)
86
+            if [ $PELICAN_BLOG_DOMAIN ]; then
87
+                if [[ $PELICAN_BLOG_DOMAIN == "$HUBZILLA_DOMAIN_NAME" ]]; then
88
+                    PELICAN_BLOG_DOMAIN=""
89
+                fi
90
+                TEST_DOMAIN_NAME=$PELICAN_BLOG_DOMAIN
91
+                validate_domain_name
92
+                if [[ $TEST_DOMAIN_NAME != $PELICAN_BLOG_DOMAIN ]]; then
93
+                    PELICAN_BLOG_DOMAIN=
94
+                    dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
95
+                else
96
+                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
97
+                        PELICAN_BLOG_CODE=$(cat $data | sed -n 2p)
98
+                        validate_freedns_code "$PELICAN_BLOG_CODE"
99
+                        if [ ! $VALID_CODE ]; then
100
+                            PELICAN_BLOG_DOMAIN=
101
+                        fi
102
+                    fi
103
+                fi
104
+            fi
105
+            if [ $PELICAN_BLOG_DOMAIN ]; then
106
+                PELICAN_DETAILS_COMPLETE="yes"
107
+            fi
108
+        done
109
+
110
+        # save the results in the config file
111
+        write_config_param "PELICAN_BLOG_CODE" "$PELICAN_BLOG_CODE"
112
+    fi
113
+    write_config_param "PELICAN_BLOG_DOMAIN" "$PELICAN_BLOG_DOMAIN"
50 114
     APP_INSTALLED=1
51 115
 }
52 116
 
@@ -75,11 +139,11 @@ function restore_remote_pelican {
75 139
 }
76 140
 
77 141
 function remove_pelican {
78
-    if [ -d /var/www/$STATIC_BLOG_DOMAIN/htdocs ]; then
79
-        rm -rf /var/www/$STATIC_BLOG_DOMAIN/htdocs
142
+    if [ -d /var/www/$PELICAN_BLOG_DOMAIN/htdocs ]; then
143
+        rm -rf /var/www/$PELICAN_BLOG_DOMAIN/htdocs
80 144
     fi
81 145
     pip uninstall pelican
82
-    remove_certs $STATIC_BLOG_DOMAIN
146
+    remove_certs $PELICAN_BLOG_DOMAIN
83 147
 }
84 148
 
85 149
 function create_pelican_conf {
@@ -319,7 +383,7 @@ function install_pelican {
319 383
     pip install pelican
320 384
 
321 385
     STATIC_BLOG_INSTALL_DIR=/etc/blog
322
-    STATIC_BLOG_PATH=/var/www/$STATIC_BLOG_DOMAIN/htdocs
386
+    STATIC_BLOG_PATH=/var/www/$PELICAN_BLOG_DOMAIN/htdocs
323 387
 
324 388
     if [ ! -d $STATIC_BLOG_INSTALL_DIR ]; then
325 389
         mkdir -p $STATIC_BLOG_INSTALL_DIR