From 4421c6435703f9e148de4946794085746f77d209 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 25 Mar 2017 18:07:31 +0000 Subject: [PATCH] Interactive config for static blog --- src/freedombone-app-pelican | 76 ++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/src/freedombone-app-pelican b/src/freedombone-app-pelican index d898a014..7ba73ae0 100755 --- a/src/freedombone-app-pelican +++ b/src/freedombone-app-pelican @@ -33,20 +33,84 @@ VARIANTS='' IN_DEFAULT_INSTALL=0 SHOW_ON_ABOUT=0 +PELICAN_BLOG_DOMAIN= +PELICAN_BLOG_CODE= + STATIC_BLOG_INSTALL_DIR=/etc/staticblog PELICAN_THEMES_REPO="https://github.com/getpelican/pelican-themes" PELICAN_PLUGINS_REPO="https://github.com/getpelican/pelican-plugins" DEFAULT_BLOG_TITLE=$"Freedombone Blog" pelican_variables=(MY_USERNAME - STATIC_BLOG_DOMAIN) + ONION_ONLY + PELICAN_BLOG_DOMAIN + PELICAN_BLOG_CODE) function configure_interactive_pelican { echo -n '' } function install_interactive_pelican { - echo -n '' + if [ ! $ONION_ONLY ]; then + ONION_ONLY='no' + fi + + if [[ $ONION_ONLY != "no" ]]; then + PELICAN_BLOG_DOMAIN='pelican.local' + else + PELICAN_DETAILS_COMPLETE= + while [ ! $PELICAN_DETAILS_COMPLETE ] + do + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + dialog --backtitle $"Freedombone Configuration" \ + --title $"Pelican Blog Configuration" \ + --form $"\nPlease enter your blog details.\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \ + $"Domain:" 1 1 "$(grep 'PELICAN_BLOG_DOMAIN' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \ + $"Code:" 2 1 "$(grep 'PELICAN_BLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 25 33 255 \ + 2> $data + else + dialog --backtitle $"Freedombone Configuration" \ + --title $"Pelican Blog Configuration" \ + --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 \ + $"Domain:" 1 1 "$(grep 'PELICAN_BLOG_DOMAIN' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \ + 2> $data + fi + sel=$? + case $sel in + 1) exit 1;; + 255) exit 1;; + esac + PELICAN_BLOG_DOMAIN=$(cat $data | sed -n 1p) + if [ $PELICAN_BLOG_DOMAIN ]; then + if [[ $PELICAN_BLOG_DOMAIN == "$HUBZILLA_DOMAIN_NAME" ]]; then + PELICAN_BLOG_DOMAIN="" + fi + TEST_DOMAIN_NAME=$PELICAN_BLOG_DOMAIN + validate_domain_name + if [[ $TEST_DOMAIN_NAME != $PELICAN_BLOG_DOMAIN ]]; then + PELICAN_BLOG_DOMAIN= + dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 + else + if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + PELICAN_BLOG_CODE=$(cat $data | sed -n 2p) + validate_freedns_code "$PELICAN_BLOG_CODE" + if [ ! $VALID_CODE ]; then + PELICAN_BLOG_DOMAIN= + fi + fi + fi + fi + if [ $PELICAN_BLOG_DOMAIN ]; then + PELICAN_DETAILS_COMPLETE="yes" + fi + done + + # save the results in the config file + write_config_param "PELICAN_BLOG_CODE" "$PELICAN_BLOG_CODE" + fi + write_config_param "PELICAN_BLOG_DOMAIN" "$PELICAN_BLOG_DOMAIN" APP_INSTALLED=1 } @@ -75,11 +139,11 @@ function restore_remote_pelican { } function remove_pelican { - if [ -d /var/www/$STATIC_BLOG_DOMAIN/htdocs ]; then - rm -rf /var/www/$STATIC_BLOG_DOMAIN/htdocs + if [ -d /var/www/$PELICAN_BLOG_DOMAIN/htdocs ]; then + rm -rf /var/www/$PELICAN_BLOG_DOMAIN/htdocs fi pip uninstall pelican - remove_certs $STATIC_BLOG_DOMAIN + remove_certs $PELICAN_BLOG_DOMAIN } function create_pelican_conf { @@ -319,7 +383,7 @@ function install_pelican { pip install pelican STATIC_BLOG_INSTALL_DIR=/etc/blog - STATIC_BLOG_PATH=/var/www/$STATIC_BLOG_DOMAIN/htdocs + STATIC_BLOG_PATH=/var/www/$PELICAN_BLOG_DOMAIN/htdocs if [ ! -d $STATIC_BLOG_INSTALL_DIR ]; then mkdir -p $STATIC_BLOG_INSTALL_DIR