--- --- #!/bin/bash set -o pipefail set -o errexit ALEF_DB="${ALEF_DB:-comments.db}" ALEF_URL="{{ site.url }}" ALEF_MODERATOR="{{ site.email }}" ALEF_FROM="noreply@{{ site.url | remove: 'https://' | remove: 'http://' }}" echo -en "Status: 200 OK\r\n" echo -en "Content-type: text/plain;charset=UTF-8\r\n\r\n" trap ' echo -- echo User Agent: $HTTP_USER_AGENT echo IP Address: $REMOTE_ADDR echo echo $ALEF_URL ' EXIT POST_STRING=$(cat) # https://stackoverflow.com/a/37840948/ function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; } saveIFS=$IFS IFS='=&' parm=($POST_STRING) IFS=$saveIFS # https://stackoverflow.com/a/3919908/ for ((i=0; i<${#parm[@]}; i+=2)) do varname=var_$( echo ${parm[i]} | sed s/-/_/ ) declare $varname="$(urldecode ${parm[i+1]})" done # Make sure mandatory fields are present ([ -z "$var_message" ] || [ -z "$var_name" ] || [ -z "$var_email" ]) && { echo "لطفا برای ثبت دیدگاه متن و نام و ایمیل را وارد کنید." echo "$ALEF_URL: missing mandatory form fields." >&2 exit 1 } # Anti-spam check (skip if ALEF_PUZZLE not configured) [ -n "$ALEF_PUZZLE" ] && [ "$var_puzzle" != "$ALEF_PUZZLE" ] && { echo "معما رو درست حل نکردی رفیق. نمی‌شه، شرمنده." echo "$ALEF_URL: wrong puzzle." >&2 exit 1 } [ -n "$var_reply_to" ] && { op_email=$(sqlite3 "$ALEF_DB" \ ".param set :reply_to \"$var_reply_to\"" \ "SELECT DISTINCT email FROM comments WHERE id = :reply_to OR legacy_id = :reply_to") } # Initialize DB if not exists [ ! -f "$ALEF_DB" ] && { cat <= 3.35.0) [ -w "$ALEF_DB" ] && NEW_ID=$(sqlite3 "$ALEF_DB" \ ".param set :name \"$var_name\"" \ ".param set :email \"$var_email\"" \ ".param set :page_id \"$var_page_id\"" \ ".param set :reply_to \"$var_reply_to\"" \ ".param set :website \"$var_website\"" \ ".param set :spam \"$spam\"" \ ".param set :message \"$var_message\"" \ "INSERT INTO comments (time, name, email, page_id, reply_to, website, spam, message) VALUES (datetime(), :name, :email, :page_id, :reply_to, :website, :spam, :message) RETURNING id") # Report success echo دیدگاهت ثبت شد و با اولین بیلد وبسایت منتشر خواهد شد. sub="${ALEF_URL}/$var_page_id.html#$NEW_ID" # Convert internationalized header to RFC2047 format from_author="$(mailutils flt2047 --charset=utf-8 'کامنتدونی')" from_header="From: $from_author <${ALEF_FROM}>" # mail is from mailutils package [ -n "$ALEF_MODERATOR" ] && cat <