浏览代码

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
 IN_DEFAULT_INSTALL=0
33
 IN_DEFAULT_INSTALL=0
34
 SHOW_ON_ABOUT=0
34
 SHOW_ON_ABOUT=0
35
 
35
 
36
+PELICAN_BLOG_DOMAIN=
37
+PELICAN_BLOG_CODE=
38
+
36
 STATIC_BLOG_INSTALL_DIR=/etc/staticblog
39
 STATIC_BLOG_INSTALL_DIR=/etc/staticblog
37
 PELICAN_THEMES_REPO="https://github.com/getpelican/pelican-themes"
40
 PELICAN_THEMES_REPO="https://github.com/getpelican/pelican-themes"
38
 PELICAN_PLUGINS_REPO="https://github.com/getpelican/pelican-plugins"
41
 PELICAN_PLUGINS_REPO="https://github.com/getpelican/pelican-plugins"
39
 DEFAULT_BLOG_TITLE=$"Freedombone Blog"
42
 DEFAULT_BLOG_TITLE=$"Freedombone Blog"
40
 
43
 
41
 pelican_variables=(MY_USERNAME
44
 pelican_variables=(MY_USERNAME
42
-                   STATIC_BLOG_DOMAIN)
45
+                   ONION_ONLY
46
+                   PELICAN_BLOG_DOMAIN
47
+                   PELICAN_BLOG_CODE)
43
 
48
 
44
 function configure_interactive_pelican {
49
 function configure_interactive_pelican {
45
     echo -n ''
50
     echo -n ''
46
 }
51
 }
47
 
52
 
48
 function install_interactive_pelican {
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
     APP_INSTALLED=1
114
     APP_INSTALLED=1
51
 }
115
 }
52
 
116
 
75
 }
139
 }
76
 
140
 
77
 function remove_pelican {
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
     fi
144
     fi
81
     pip uninstall pelican
145
     pip uninstall pelican
82
-    remove_certs $STATIC_BLOG_DOMAIN
146
+    remove_certs $PELICAN_BLOG_DOMAIN
83
 }
147
 }
84
 
148
 
85
 function create_pelican_conf {
149
 function create_pelican_conf {
319
     pip install pelican
383
     pip install pelican
320
 
384
 
321
     STATIC_BLOG_INSTALL_DIR=/etc/blog
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
     if [ ! -d $STATIC_BLOG_INSTALL_DIR ]; then
388
     if [ ! -d $STATIC_BLOG_INSTALL_DIR ]; then
325
         mkdir -p $STATIC_BLOG_INSTALL_DIR
389
         mkdir -p $STATIC_BLOG_INSTALL_DIR