Newer
Older
# _____ _ _
# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___
# | __| _| -_| -_| . | . | | . | . | | -_|
# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___|
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
Bob Mottram
committed
IN_DEFAULT_INSTALL=0
Bob Mottram
committed
PELICAN_THEMES_REPO="https://github.com/getpelican/pelican-themes"
PELICAN_PLUGINS_REPO="https://github.com/getpelican/pelican-plugins"
PELICAN_CURRENT_BLOG_INDEX=$PELICAN_BLOG_INSTALL_DIR/.blog-index
function pelican_remove_bad_blog_links {
find ./ -type f -name "*.css" -exec sed -i -e '/googleapi/d' {} \;
find ./ -type f -name "*.scss" -exec sed -i -e '/googleapi/d' {} \;
find ./ -type f -name "*.html" -exec sed -i -e '/googleapi/d' {} \;
find ./ -type f -name "*.css" -exec sed -i -e '/bootstrapcdn/d' {} \;
find ./ -type f -name "*.scss" -exec sed -i -e '/bootstrapcdn/d' {} \;
find ./ -type f -name "*.html" -exec sed -i -e '/bootstrapcdn/d' {} \;
function logging_on_pelican {
echo -n ''
}
function logging_off_pelican {
echo -n ''
}
echo -n '' > /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
return
fi
function_check nginx_http_redirect
nginx_http_redirect $PELICAN_DOMAIN_NAME
{ echo 'server {';
echo ' listen 443 ssl;';
echo ' #listen [::]:443 ssl;';
echo " root /var/www/${PELICAN_DOMAIN_NAME}/htdocs;";
echo " server_name ${PELICAN_DOMAIN_NAME};";
echo ' access_log /dev/null;';
echo " error_log /dev/null;";
echo ' index index.html;';
echo ' charset utf-8;'; } >> "/etc/nginx/sites-available/$PELICAN_DOMAIN_NAME"
function_check nginx_security_options
nginx_security_options "$PELICAN_DOMAIN_NAME"
{ echo ' add_header Strict-Transport-Security "max-age=0;";';
echo '';
echo ' location / {'; } >> "/etc/nginx/sites-available/$PELICAN_DOMAIN_NAME"
nginx_limits "$PELICAN_DOMAIN_NAME"
{ echo ' }';
echo '';
echo ' # block these file types';
echo ' location ~* \.(tpl|md|tgz|log|out)$ {';
echo ' deny all;';
echo ' }';
echo '';
echo ' # deny access to all dot files';
echo ' location ~ /\. {';
echo ' deny all;';
echo ' }';
echo '';
echo ' location ~ /(data|conf|bin|inc)/ {';
echo ' deny all;';
echo ' }';
echo ' location ~ /\.ht {';
echo ' deny all;';
echo ' }';
echo '}';
echo ''; } >> "/etc/nginx/sites-available/$PELICAN_DOMAIN_NAME"
{ echo 'server {';
echo " listen 127.0.0.1:${PELICAN_ONION_PORT} default_server;";
echo " root /var/www/${PELICAN_DOMAIN_NAME}/htdocs;";
echo " server_name ${PELICAN_DOMAIN_NAME};";
echo ' access_log /dev/null;';
echo " error_log /dev/null;";
echo ' index index.html;';
echo ' charset utf-8;'; } >> "/etc/nginx/sites-available/$PELICAN_DOMAIN_NAME"
function_check nginx_security_options
nginx_security_options "$PELICAN_DOMAIN_NAME"
{ echo ' add_header Strict-Transport-Security "max-age=0;";';
echo '';
echo ' location / {'; } >> "/etc/nginx/sites-available/$PELICAN_DOMAIN_NAME"
nginx_limits "$PELICAN_DOMAIN_NAME"
{ echo ' }';
echo '';
echo ' # block these file types';
echo ' location ~* \.(tpl|md|tgz|log|out)$ {';
echo ' deny all;';
echo ' }';
echo '';
echo ' # deny access to all dot files';
echo ' location ~ /\. {';
echo ' deny all;';
echo ' }';
echo '';
echo ' location ~ /(data|conf|bin|inc)/ {';
echo ' deny all;';
echo ' }';
echo ' location ~ /\.ht {';
echo ' deny all;';
echo ' }';
echo '}'; } >> "/etc/nginx/sites-available/$PELICAN_DOMAIN_NAME"
function pelican_editor_config {
if [ ! -f $PELICAN_BLOG_INSTALL_DIR/.emacs-pelican ]; then
{ echo "(add-hook 'before-save-hook 'delete-trailing-whitespace)";
echo '(setq org-support-shift-select t)';
echo '(setq standard-indent 4)';
echo '(setq-default tab-width 4)';
echo '(setq c-basic-offset 4)';
echo '(mouse-wheel-mode t)';
echo '(setq make-backup-files t)';
echo '(setq version-control t)';
echo '(setq backup-directory-alist (quote ((".*" . "~/.emacs_backups/"))))';
echo "(setq default-major-mode 'text-mode)";
echo "(dolist (hook '(text-mode-hook))";
echo ' (add-hook hook (lambda () (flyspell-mode 1))))';
echo '(setq-default fill-column 72)';
echo '(setq auto-fill-mode 0)';
echo "(add-hook 'text-mode-hook 'turn-on-auto-fill)";
echo "(setq-default auto-fill-function 'do-auto-fill)"; } > "$PELICAN_BLOG_INSTALL_DIR/.emacs-pelican"
function pelican_regenerate_blog {
clear
echo ''
echo $'Regenerating blog...'
cp -r $PELICAN_BLOG_INSTALL_DIR/output/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/
chown -R www-data:www-data /var/www/$PELICAN_DOMAIN_NAME/htdocs
}
function pelican_new_blog {
DATESTR=$(date "+%Y-%m-%d %H:%M:%S")
if [ ! -f $PELICAN_BLOG_INSTALL_DIR/.new-blog-entry ]; then
{ echo $'Title: Blog Post Title';
echo $"Date: ${DATESTR}";
echo $"Author: $(toxid --showuser)";
echo $'Category: default';
echo $'Tags: blog, tag';
echo '';
echo $'Add your text here';
echo '';
echo -n $'To include an image copy it into the /etc/blog/content/images directory, ';
echo $'then link to it with:';
echo '';
echo $'';
echo ''; } > $PELICAN_BLOG_INSTALL_DIR/.new-blog-entry
fi
if [ -f /usr/bin/emacs ]; then
emacs -q --load $PELICAN_BLOG_INSTALL_DIR/.emacs-pelican $PELICAN_BLOG_INSTALL_DIR/.new-blog-entry
else
editor $PELICAN_BLOG_INSTALL_DIR/.new-blog-entry
fi
if grep -q $"Add your text here" $PELICAN_BLOG_INSTALL_DIR/.new-blog-entry; then
return
fi
if grep -q $"Blog Post Title" $PELICAN_BLOG_INSTALL_DIR/.new-blog-entry; then
return
fi
if [ ! -f $PELICAN_CURRENT_BLOG_INDEX ]; then
echo '0' > $PELICAN_CURRENT_BLOG_INDEX
fi
# move to the content directory
# shellcheck disable=SC2086
mv $PELICAN_BLOG_INSTALL_DIR/.new-blog-entry $BLOG_CONTENT_PATH/${CURRENT_INDEX}_post.md
# increment the index
CURRENT_INDEX=$((CURRENT_INDEX + 1))
echo "$CURRENT_INDEX" > $PELICAN_CURRENT_BLOG_INDEX
pelican_regenerate_blog
}
function pelican_edit_blog {
PREVIOUS_INDEX=$((CURRENT_INDEX - 1))
LAST_BLOG_ENTRY=$BLOG_CONTENT_PATH/${PREVIOUS_INDEX}_post.md
emacs -q --load "$PELICAN_BLOG_INSTALL_DIR/.emacs-pelican" "$LAST_BLOG_ENTRY"
}
function pelican_delete_blog {
PREVIOUS_INDEX=$((CURRENT_INDEX - 1))
LAST_BLOG_ENTRY=$BLOG_CONTENT_PATH/${PREVIOUS_INDEX}_post.md
return
fi
dialog --title $"Delete the previous blog entry" \
--backtitle $"Freedombone Mesh" \
--defaultno \
--yesno $"\\nAre you sure that you wish to delete the previous blog entry?" 8 60
echo "$CURRENT_INDEX" > $PELICAN_CURRENT_BLOG_INDEX
fi
pelican_regenerate_blog
;;
esac
}
function pelican_change_theme {
THEMES=()
for d in $PELICAN_BLOG_INSTALL_DIR/themes/*/ ; do
THEME_NAME=$(echo "$d" | awk -F '/' '{print $6}')
THEMES+=("$THEME_NAME")
done
themelist=""
n=1
theme_index=0
curr_theme_index=
if [ -f $PELICAN_BLOG_INSTALL_DIR/.blog-theme-index ]; then
curr_theme_index=$(cat $PELICAN_BLOG_INSTALL_DIR/.blog-theme-index)
fi
# shellcheck disable=SC2068
for a in ${THEMES[@]}
if [ "$curr_theme_index" ]; then
if [ $n -eq "$curr_theme_index" ]; then
is_selected='on'
fi
else
if [[ "$a" == 'nice-blog' ]]; then
is_selected='on'
fi
fi
themelist="$themelist $n $a $is_selected"
dialog --backtitle $"Freedombone Mesh" \
--title $"Select Blog Theme" \
--radiolist $'Choose:' \
echo "$CHOSEN_THEME_INDEX" > $PELICAN_BLOG_INSTALL_DIR/.blog-theme-index
CHOSEN_THEME_INDEX=$((CHOSEN_THEME_INDEX - 1))
CHOSEN_THEME=${THEMES[$CHOSEN_THEME_INDEX]}
cd "$PELICAN_BLOG_INSTALL_DIR/themes/$CHOSEN_THEME" || exit 2648268284
if grep -q "THEME=" $PELICAN_BLOG_INSTALL_DIR/pelicanconf.py; then
sed -i "s|THEME=.*|THEME='themes/${CHOSEN_THEME}'|g" $PELICAN_BLOG_INSTALL_DIR/pelicanconf.py
else
echo "THEME='themes/${CHOSEN_THEME}'" >> $PELICAN_BLOG_INSTALL_DIR/pelicanconf.py
fi
pelican_regenerate_blog
}
dialog --backtitle $"Freedombone Configuration" \
--title $"Pelican Blogging" \
--radiolist $"Choose an operation:" 18 50 11 \
1 $"New blog entry" off \
2 $"Edit the previous blog entry" off \
3 $"Delete the previous blog entry" off \
4 $"Change theme" off \
1) pelican_new_blog;;
2) pelican_edit_blog;;
3) pelican_delete_blog;;
4) pelican_change_theme;;
esac
}
ONION_ONLY='no'
fi
if [[ $ONION_ONLY != "no" ]]; then
else
PELICAN_DETAILS_COMPLETE=
while [ ! $PELICAN_DETAILS_COMPLETE ]
do
if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; 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_DOMAIN_NAME' 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 \
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_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \
PELICAN_DOMAIN_NAME=$(sed -n 1p < "$data")
if [ "$PELICAN_DOMAIN_NAME" ]; then
if [[ $PELICAN_DOMAIN_NAME == "$HUBZILLA_DOMAIN_NAME" ]]; then
PELICAN_DOMAIN_NAME=""
dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
else
if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
validate_freedns_code "$PELICAN_BLOG_CODE"
done
# save the results in the config file
write_config_param "PELICAN_BLOG_CODE" "$PELICAN_BLOG_CODE"
fi
write_config_param "PELICAN_DOMAIN_NAME" "$PELICAN_DOMAIN_NAME"
source_directory=/etc/blog
if [ -d $source_directory ]; then
dest_directory=pelican
function_check backup_directory_to_usb
backup_directory_to_usb $source_directory $dest_directory
fi
if [ -d $source_directory ]; then
dest_directory=pelican-site
function_check backup_directory_to_usb
backup_directory_to_usb $source_directory $dest_directory
fi
temp_restore_dir=/root/temppelican
function_check restore_directory_from_usb
restore_directory_from_usb $temp_restore_dir pelican
if [ -d $temp_restore_dir/etc/blog ]; then
cp -r $temp_restore_dir/etc/blog/* /etc/blog/
else
cp -r $temp_restore_dir/* /etc/blog/
fi
if [ ! "$?" = "0" ]; then
rm -rf $temp_restore_dir
function_check set_user_permissions
set_user_permissions
function_check backup_unmount_drive
backup_unmount_drive
exit 527942
fi
rm -rf $temp_restore_dir
fi
fi
temp_restore_dir=/root/temppelican-site
function_check restore_directory_from_usb
restore_directory_from_usb $temp_restore_dir pelican-site
if [ -d $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs ]; then
cp -r $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/
else
cp -r $temp_restore_dir/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/
fi
if [ ! "$?" = "0" ]; then
rm -rf $temp_restore_dir
function_check set_user_permissions
set_user_permissions
function_check backup_unmount_drive
backup_unmount_drive
exit 2946282
fi
rm -rf $temp_restore_dir
fi
fi
if [ -f /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME ]; then
nginx_dissite pelican
rm /etc/nginx/sites-available/$PELICAN_DOMAIN_NAME
if [ -d /var/www/$PELICAN_DOMAIN_NAME ]; then
rm -rf /var/www/$PELICAN_DOMAIN_NAME
fi
systemctl reload nginx
STATIC_BLOG_FILE="$1"
{ echo '#!/usr/bin/env python';
echo '# -*- coding: utf-8 -*- #';
echo 'from __future__ import unicode_literals';
echo '';
echo "AUTHOR=u\"$MY_USERNAME\"";
echo "SITENAME=u'$DEFAULT_BLOG_TITLE'";
echo "SITEURL=''";
echo "PATH='content'";
echo 'TIMEZONE=u"Europe/London"';
echo "DEFAULT_LANG=u'en'";
echo '';
echo 'FEED_ALL_ATOM=None';
echo 'CATEGORY_FEED_ATOM=None';
echo 'TRANSLATION_FEED_ATOM=None';
echo 'AUTHOR_FEED_ATOM=None';
echo 'AUTHOR_FEED_RSS=None';
echo '';
echo 'DEFAULT_PAGINATION=False';
echo 'RELATIVE_URLS=True';
echo "THEME='themes/nice-blog'"; } > "$STATIC_BLOG_FILE"
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
STATIC_BLOG_FILE="$1"
{ echo 'PY?=python';
echo 'PELICAN?=pelican';
echo 'PELICANOPTS=';
echo '';
echo "BASEDIR=\$(CURDIR)";
echo "INPUTDIR=\$(BASEDIR)/content";
echo "OUTPUTDIR=$PELICAN_BLOG_PATH";
echo "CONFFILE=\$(BASEDIR)/pelicanconf.py";
echo "PUBLISHCONF=\$(BASEDIR)/publishconf.py";
echo '';
echo 'DEBUG ?= 0';
echo "ifeq (\$(DEBUG), 1)";
echo -e '\tPELICANOPTS += -D';
echo 'endif';
echo '';
echo 'RELATIVE ?= 0';
echo "ifeq (\$(RELATIVE), 1)";
echo -e '\tPELICANOPTS += --relative-urls';
echo 'endif';
echo '';
echo 'html:';
echo -e "\\t\$(PELICAN) \$(INPUTDIR) -o \$(OUTPUTDIR) -s \$(CONFFILE) \$(PELICANOPTS)";
echo '';
echo 'clean:';
echo -e "\\t[ ! -d \$(OUTPUTDIR) ] || rm -rf \$(OUTPUTDIR)";
echo '';
echo 'regenerate:';
echo -e "\\t\$(PELICAN) -r \$(INPUTDIR) -o \$(OUTPUTDIR) -s \$(CONFFILE) \$(PELICANOPTS)";
echo '';
echo 'serve:';
echo 'ifdef PORT';
echo -e "\\tcd \$(OUTPUTDIR) && \$(PY) -m pelican.server \$(PORT)";
echo 'else';
echo -e "\\tcd \$(OUTPUTDIR) && \$(PY) -m pelican.server";
echo 'endif';
echo '';
echo 'serve-global:';
echo 'ifdef SERVER';
echo -e "\\tcd \$(OUTPUTDIR) && \$(PY) -m pelican.server 80 \$(SERVER)";
echo 'else';
echo -e "\\tcd \$(OUTPUTDIR) && \$(PY) -m pelican.server 80 0.0.0.0";
echo 'endif';
echo '';
echo 'devserver:';
echo 'ifdef PORT';
echo -e "\\t\$(BASEDIR)/develop_server.sh restart \$(PORT)";
echo 'else';
echo -e "\\t\$(BASEDIR)/develop_server.sh restart";
echo 'endif';
echo '';
echo 'stopserver:';
echo -e "\\t\$(BASEDIR)/develop_server.sh stop";
echo -e '\t@echo "Stopped Pelican and SimpleHTTPServer processes running in background."';
echo '';
echo 'publish:';
echo -e "\\t\$(PELICAN) \$(INPUTDIR) -o \$(OUTPUTDIR) -s \$(PUBLISHCONF) \$(PELICANOPTS)";
echo '';
echo '.PHONY: html clean regenerate serve serve-global devserver publish'; } > "$STATIC_BLOG_FILE"
}
function create_pelican_publish_conf {
STATIC_BLOG_FILE=$1
{ echo '#!/usr/bin/env python';
echo '# -*- coding: utf-8 -*- #';
echo 'from __future__ import unicode_literals';
echo '';
echo 'import os';
echo 'import sys';
echo 'sys.path.append(os.curdir)';
echo 'from pelicanconf import *';
echo '';
echo "SITEURL = ''";
echo 'RELATIVE_URLS = True';
echo '';
echo "FEED_ALL_ATOM = 'feeds/all.atom.xml'";
echo "CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml'";
echo '';
echo 'DELETE_OUTPUT_DIRECTORY = True'; } > "$STATIC_BLOG_FILE"
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
# Clone themes separately because the themes repo sometimes has bad refs
git clone https://github.com/KenMercusLai/BT3-Flat
git clone https://github.com/abr4xas/Casper2Pelican
git clone https://github.com/alexandrevicenzi/Flex
git clone https://github.com/allenskd/Nuja
git clone https://github.com/ir193/Responsive-Pelican
git clone https://github.com/nairobilug/pelican-alchemy
git clone https://github.com/livibetter-backup/apricot
git clone https://github.com/jody-frankowski/blue-penguin
git clone https://github.com/gregseth/pelican-bgh
git clone https://github.com/blueicefield/pelican-blueidea
git clone https://github.com/demianbrecht/pelican-bold
git clone https://github.com/fly/burrito
git clone https://github.com/yuex/pelican-iliork
git clone https://github.com/tbunnyman/pelican-chunk
git clone https://github.com/hdra/Pelican-Cid
git clone https://github.com/gilsondev/pelican-clean-blog
git clone https://github.com/porterjamesj/crowsfoot
git clone https://github.com/22decembre/dev-random3.git
git clone https://github.com/kura/eevee
git clone https://github.com/talha131/pelican-elegant.git
git clone https://github.com/callmefish/pelican-free-agent
git clone https://github.com/jsliang/pelican-fresh
git clone https://github.com/vaiski/genus
git clone https://github.com/PierrePaul/html5-dopetrope
git clone https://github.com/jvanz/pelican-hyde
git clone https://github.com/erfaan/pelican-theme-irfan
git clone https://github.com/slok/iris
git clone https://github.com/badele/pelican-theme-jesuislibre
git clone https://github.com/mothsART/pelican-lab
git clone https://github.com/siovene/lannisport
git clone https://github.com/lazycoder-ru/lazystrap
git clone https://github.com/chdoig/pelican-bootstrap3-lovers
git clone https://github.com/kplaube/maggner-pelican
git clone https://github.com/cpaulik/martin-pelican
git clone https://github.com/greizgh/pelican-material
git clone https://github.com/eswarm/materialistic-pelican
git clone https://github.com/cprieto/pelican-mediumfox
git clone https://github.com/onuraslan/medius
git clone https://github.com/lucachr/pelican-mg
git clone https://github.com/BYK/pelican-neat
git clone https://github.com/molivier/nest
git clone https://github.com/guilherme-toti/nice-blog
git clone https://github.com/gunchu/nikhil-theme
git clone https://github.com/wilbur-ma/niu-x2
git clone https://github.com/duilio/pelican-octopress-theme
git clone https://github.com/Parbhat/pelican-blue
git clone https://github.com/hdra/pelican-cait
git clone https://github.com/laughk/pelican-hss
git clone https://github.com/wrl/pelican-mockingbird
git clone https://github.com/fle/pelican-simplegrey
git clone https://github.com/fle/pelican-sober
git clone https://github.com/ingwinlu/pelican-twitchy
git clone https://github.com/badele/pelicanthemes-generator
git clone https://github.com/jjimenezlopez/pelipress
git clone https://github.com/xm3ron/pjport
git clone https://github.com/kdeldycke/plumage
git clone https://github.com/habibillah/pujangga
git clone https://github.com/danclaudiupop/pure
git clone https://github.com/wamonite/relapse
git clone https://github.com/ellisonleao/pelican-semantic-ui
git clone https://github.com/kdheepak89/pelican-smoothie
git clone https://github.com/if1live/pelican-sora
git clone https://github.com/redVi/storm
git clone https://github.com/keningle/pelican-sundown
git clone https://github.com/giulivo/pelican-svbhack
git clone https://github.com/wting/pelican-svbtle
git clone https://github.com/frankV/twenty-pelican-html5up
git clone https://github.com/robulouski/voidy-bootstrap
git clone https://github.com/samael500/w3-personal-blog
git clone https://github.com/jarv/water-iris
git clone https://github.com/kplaube/yapeme
pelican_remove_bad_blog_links
if [[ "$VARIANT" != "meshclient" && "$VARIANT" != "meshusb" && "$VARIANT" != "usb" ]]; then
# shellcheck disable=SC2154,SC2086
chroot "$rootdir" $INSTALL_PACKAGES python-pip
chroot "$rootdir" pip install ipython
chroot "$rootdir" pip install Markdown
chroot "$rootdir" pip install typogrify
chroot "$rootdir" pip install pelican
PELICAN_BLOG_INSTALL_DIR=/home/$MY_USERNAME/CreateBlog
PELICAN_BLOG_PATH=/home/$MY_USERNAME/Public/Blog
if [ ! -d "$rootdir$PELICAN_BLOG_INSTALL_DIR" ]; then
mkdir -p "$rootdir$PELICAN_BLOG_INSTALL_DIR"
if [ ! -d "$rootdir$PELICAN_BLOG_PATH" ]; then
mkdir -p "$rootdir$PELICAN_BLOG_PATH"
if [ ! -d "$rootdir$PELICAN_BLOG_INSTALL_DIR/content/images" ]; then
mkdir -p "$rootdir$PELICAN_BLOG_INSTALL_DIR/content/images"
create_pelican_conf "$rootdir$PELICAN_BLOG_INSTALL_DIR/pelicanconf.py"
create_pelican_makefile "$rootdir$PELICAN_BLOG_INSTALL_DIR/Makefile"
create_pelican_publish_conf "$rootdir$PELICAN_BLOG_INSTALL_DIR/publishconf.py"
mkdir -p "$rootdir$PELICAN_BLOG_INSTALL_DIR/themes"
cd "$rootdir$PELICAN_BLOG_INSTALL_DIR/themes" || exit 74624524
#git clone --recursive $PELICAN_PLUGINS_REPO $rootdir$PELICAN_BLOG_INSTALL_DIR/plugins
chroot "$rootdir" chown -R "$MY_USERNAME":"$MY_USERNAME" "$PELICAN_BLOG_INSTALL_DIR"
chroot "$rootdir" chown -R "$MY_USERNAME":"$MY_USERNAME" "/home/$MY_USERNAME/Public"
pip install ipython
pip install Markdown
pip install typogrify
pip install pelican
if [ ! -d "$PELICAN_BLOG_INSTALL_DIR" ]; then
mkdir -p "$PELICAN_BLOG_INSTALL_DIR"
if [ ! -d $PELICAN_BLOG_PATH ]; then
mkdir -p $PELICAN_BLOG_PATH
if [ ! -d "$PELICAN_BLOG_INSTALL_DIR/content" ]; then
mkdir -p "$PELICAN_BLOG_INSTALL_DIR/content"
create_pelican_conf "$PELICAN_BLOG_INSTALL_DIR/pelicanconf.py"
create_pelican_makefile "$PELICAN_BLOG_INSTALL_DIR/Makefile"
create_pelican_publish_conf "$PELICAN_BLOG_INSTALL_DIR/publishconf.py"
mkdir -p "$PELICAN_THEMES_REPO" "$PELICAN_BLOG_INSTALL_DIR/themes"
cd "$PELICAN_BLOG_INSTALL_DIR/themes" || exit 45357282883
#git clone --recursive $PELICAN_PLUGINS_REPO $PELICAN_BLOG_INSTALL_DIR/plugins
chown -R "$MY_USERNAME":"$MY_USERNAME" "$PELICAN_BLOG_INSTALL_DIR"
chown -R www-data:www-data $PELICAN_BLOG_PATH
PELICAN_ONION_HOSTNAME=$(add_onion_service pelican 80 ${PELICAN_ONION_PORT})
set_completion_param "pelican onion domain" "$PELICAN_ONION_HOSTNAME"
install_pelican_website
install_pelican_website_onion
echo $'Failed to generate pelican blog'
exit 521892
fi
function_check nginx_ensite
nginx_ensite $PELICAN_DOMAIN_NAME
systemctl restart nginx