|  | #!/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
 |