You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

169 lines
4.9 KiB

#!/bin/bash
# Variables
blog_dir=~/repos/blog-cms
check() {
if [ "$EUID" -ne 0 ]
then
echo "Please run as root"
exit
fi
}
confirm() {
confirmvar=""
while [[ "$confirmvar" == "" ]]
do
read -p "y/n/q: " confirmvar
if [ "${confirmvar}" == "y" ]
then
echo true
elif [ "${confirmvar}" == "n" ]
then
echo false
fi
done
}
newpost() {
c=false
while [[ ${c} == false ]]
do
read -p "Title: " title
echo -e "Subject 1:\n\t0 - no subject\n\t1 - Programming\n\t2 - Pentesting\n\t3 - Personal"
sub1=$(subjectselect)
echo -e "Subject 1:\n\t0 - no subject\n\t1 - Programming\n\t2 - Pentesting\n\t3 - Personal"
sub2=$(subjectselect)
echo -e "Title: ${title}\nSubject 1: ${sub1}\nSubject 2: ${sub2}\n\nAre you sure?\n"
c=$(confirm)
done
dirname=$(echo ${title} | sed 's/\ /_/g')
mkdir -p ${blog_dir}/posts/${dirname}/static
cd ${blog_dir}/posts/${dirname}
echo ${title} >> title
echo ${sub1} >> .sub1
echo ${sub2} >> .sub2
touch {intro.html,body.html}
pwd
ls -al
}
subjectselect() {
read -p "0/1/2/3: " tmpvar
if [ "$tmpvar" == "1" ]
then
echo "Programming"
elif [ "$tmpvar" == "2" ]
then
echo "Pentesting"
elif [ "$tmpvar" == "3" ]
then
echo "Personal"
elif [ "$tmpvar" == "0" ]
then
echo ""
fi
}
listandReturn() { printf "Listing contents of %s.\\n" "$1"
ls -rc "$1" | awk -F '/' '{print $NF}' | nl
read -erp "Pick an entry by number to $2, or press ctrl-c to cancel. " number
chosen="$(ls -rc "$1" | nl | grep -w "$number" | awk '{print $2}')"
basefile="$(basename "$chosen")" && base="${basefile%.*}" ;}
upload() {
#check
listandReturn ${blog_dir}/posts
#cd ${blog_dir}/posts/${basefile}
titlevar=$(cat ${blog_dir}/posts/${basefile}/title)
subvar1=$(cat ${blog_dir}/posts/${basefile}/.sub1)
subvar2=$(cat ${blog_dir}/posts/${basefile}/.sub2)
echo "Add intro pic?"
if [[ $(confirm) == true ]]
then
listandReturn ${blog_dir}/posts/${basefile}/static/
picvar=${basefile}
fi
echo -n Mysql password:
read -s sqlpassword
scp ${blog_dir}/posts/${basefile}/{intro.html,body.html} root@tovijaeschke.xyz:/var/lib/mysql-files/
scp ${blog_dir}/posts/${basefile}/static/* root@tovijaeschke.xyz:/usr/share/nginx/personal/static/
if [[ "$picvar" == "" ]]
then
ssh root@tovijaeschke.xyz "chown mysql:mysql /var/lib/mysql-files/* &&
chmod go+rw /var/lib/mysql-files/* &&
mysql -u root -p${sqlpassword} -D PersonalWebsite -e \"INSERT INTO Posts (subject,subject2,title,intro,body) VALUES ('${subvar1}', '${subvar2}', '${titlevar}', LOAD_FILE('/var/lib/mysql-files/intro.html'), LOAD_FILE('/var/lib/mysql-files/body.html'));\""
else
ssh root@tovijaeschke.xyz "chown mysql:mysql /var/lib/mysql-files/* &&
chmod go+rw /var/lib/mysql-files/* &&
mysql -u root -p${sqlpassword} -D PersonalWebsite -e \"INSERT INTO Posts (subject,subject2,title,pic,intro,body) VALUES ('${subvar1}', '${subvar2}', '${titlevar}', '${picvar}', LOAD_FILE('/var/lib/mysql-files/intro.html'), LOAD_FILE('/var/lib/mysql-files/body.html'));\""
fi
}
preview() {
mkdir -p /tmp/preview
cp -r ${blog_dir}/.preview/* /tmp/preview/
listandReturn ${blog_dir}/posts
title=$(cat ${blog_dir}/posts/${basefile}/title | tr -d '\n')
intro=$(cat ${blog_dir}/posts/${basefile}/intro.html | tr -d '\n')
body=$(cat ${blog_dir}/posts/${basefile}/body.html | tr -d '\n')
cp -r ${blog_dir}/posts/${basefile}/static/ /tmp/preview
sed -i .bak 's|TITLE_PREVIEW|'"${title}"'|g' /tmp/preview/post.html
sed -i .bak 's|INTRO_PREVIEW|'"${intro}"'|g' /tmp/preview/post.html
sed -i .bak 's|BODY_PREVIEW|'"${body}"'|g' /tmp/preview/post.html
if [[ $(uname) == "Linux" ]]; then
firefox /tmp/preview/post.html
else
open -a firefox -g /tmp/preview/post.html
fi
}
deletedraft() {
echo "Which draft would you like to delete?"
listandReturn ${blog_dir}/posts
echo "Are you sure you want to delete \"$(cat ${blog_dir}/posts/${basefile}/title)?\""
c=$(confirm)
if [ ${c} != false ]
then
rm -rf ${blog_dir}/posts/${basefile}
fi
}
deletepost() {
echo -n Mysql password:
read -s sqlpassword
echo -e "\nWhich post would you like to delete?"
ssh root@tovijaeschke.xyz "mysql -u root -p${sqlpassword} -D PersonalWebsite -B --disable-column-names -e \"SELECT id,title FROM Posts;\""
read -p "\nWhich post would you like to delete?" post
ssh root@tovijaeschke.xyz "mysql -u root -p${sqlpassword} -D PersonalWebsite -e \"DELETE FROM Posts WHERE id=${post};\" && \
post=\$(mysql -B -u root -p${sqlpassword} -D PersonalWebsite --disable-column-names -e \"SELECT MAX(id) FROM Posts;\") && \
mysql -u root -p${sqlpassword} -D PersonalWebsite -e \"ALTER TABLE Posts AUTO_INCREMENT=\$post;\""
}
helpmsg() {
printf "\nBLOG UPLOAD SCRIPT\n\n\tn - new draft\n\tp - preview post\n\tu - upload post\n\tdd - delete draft\n\tdp - delete post\n\th - help message\n\n"
}
case "$1" in
n*) newpost ;;
p*) preview ;;
u*) upload ;;
dd*) deletedraft ;;
dp*) deletepost ;;
h*) helpmsg ;;
*) helpmsg ;;
esac