blog
This commit is contained in:
parent
164a89ea3e
commit
4b6922f8e1
@ -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 !
|
||||
|
||||
97
blog
Executable file
97
blog
Executable file
@ -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 <plik z nowym postem>"
|
||||
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>>/, 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
|
||||
Loading…
x
Reference in New Issue
Block a user