diff --git a/README.md b/README.md index c03f3d2..156e497 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,4 @@ Lista plików i katalogów: - add_user.sh --> skrypt służący do dodawania użytkownika - del_user.sh --> skrypt służący do permanentnego usunięcia użytkownika - cgenforce.sh --> skrypt uruchamiany z crona co minutę, podpina procesy wszystkich użytkowników pod cgroups w celu ustawienia limitów - +- blog --> skrypt umożliwiający postowanie na blogu ! dostępny dla użytkowników ! diff --git a/blog b/blog new file mode 100755 index 0000000..f518450 --- /dev/null +++ b/blog @@ -0,0 +1,97 @@ +#!/bin/sh +TEMPLATE="/etc/tylda/post_html" +TMP_MD="/tmp/post_md_$$.md" +TMP_HTML="/tmp/post_html_$$.html" +sanitize_title() { + local raw txt + + raw=$1 + + txt=$(echo "$raw" | perl -MText::Unidecode -CS -pe '$_=unidecode($_)') + txt=$(echo "$txt" | sed 's/[^a-zA-Z0-9 \t]//g') + txt=$(echo "$txt" | sed -E 's/[[:space:]]+/-/g') + printf '%s' "$txt" +} + +awk_escape() { + printf '%s' "$1" | sed -e 's/[\\/]/\\&/g' +} + +if [ $# -ne 1 ]; then + echo "" + echo "blog - komenda do zarządzania twoim blogiem" + echo "" + echo "Użycie: $0 " + echo "" + echo "================================" + echo "Aby skopiować do obecnego katalogu szablon posta użyj: $0 template" + echo "" + echo "W razie problemów skontaktuj się z administratorem." + exit 1 +fi +SRCFILE=$1 + +if [ "$SRCFILE" == "template" ]; then + cp /etc/tylda/post_template ./new_post + echo "Szablon skopiowany do: $(pwd)/new_post." + exit 1 +fi + +if [ ! -f "$SRCFILE" ]; then + echo "Błąd: nie znaleziono pliku '$SRCFILE'" + exit 1 +fi + +if [ ! -f "$TEMPLATE" ]; then + echo "Błąd: nie znaleziono pliku szablonu: '$TEMPLATE'. Skontaktuj się z administratorem." + exit 1 +fi + +TITLE_LINE=$(sed -n '1{s/^#title:[[:space:]]*//p}' "$SRCFILE") +if [ -z "$TITLE_LINE" ]; then + echo "Błąd: pierwsza linia pliku nie zaczyna się od '#title:'" + exit 1 +fi +TITLE=$(printf '%s' "$TITLE_LINE") + +tail -n +2 "$SRCFILE" > "$TMP_MD" + +if command -v pandoc >/dev/null 2>&1; then + pandoc -f markdown -t html "$TMP_MD" -o "$TMP_HTML" +else + echo "Błąd: pandoc nie zainstalowany. Nie można przeprowadzić konwersji do HTML." + rm -f "$TMP_MD" + exit 1 +fi +CONTENT_HTML=$(cat "$TMP_HTML") + +SAFE_TITLE=$(sanitize_title "$TITLE") +OUTFILE="${SAFE_TITLE}.php" +cp "$TEMPLATE" "$OUTFILE" + +CURRENT_USER=$(whoami) +CURRENT_DATE=$(date +"%Y-%m-%d %H:%M:%S") + +TITLE_AWK=$(awk_escape "$TITLE") +USER_AWK=$(awk_escape "$CURRENT_USER") +DATE_AWK=$(awk_escape "$CURRENT_DATE") +CONTENT_AWK=$(awk_escape "$CONTENT_HTML") +awk -v title="$TITLE_AWK" \ + -v user="$USER_AWK" \ + -v date="$DATE_AWK" \ + -v content="$CONTENT_AWK" ' +{ + gsub(/<>/, title); + gsub(/<<USER>>/, user); + gsub(/<<DATE>>/, date); + gsub(/<<CONTENT>>/, content); + print; +} +' "$OUTFILE" > "${OUTFILE}.tmp" && mv "${OUTFILE}.tmp" "$OUTFILE" + +rm -f "$TMP_MD" "$TMP_HTML" +mv "$OUTFILE" "/home/$CURRENT_USER/public_html/blog/posts/" + +echo "Post utworzony i zapisany do: /home/$CURRENT_USER/public_html/blog/posts/$OUTFILE" +echo "Zobacz go tutaj: https://tylda.org/~$CURRENT_USER/blog/$OUTFILE" +exit 0