これは、自己ホスト型静的サイト用の軽量お問い合わせフォームの概念実証です。
Knowbl Cluster の正規ソースは https://git.knowbl.co/dev/log-based-contact-form/ でホストされています。
mail
。 /submit/
) は空のフォルダーである必要があります。そうでない場合は、/submit/ へのすべての正当なクエリがリダイレクトされます。nginx サーバーの http ブロック内で、ブロックの下部近く、ただし最初のサーバー ブロックの前に、特定の構成のログ形式を挿入します。少ないことをお勧めします。
log_format contactstatic ' $time_local | $request ' ;
nginx-exmaple.conf
配置場所を参照してください。
nginx サーバーのサーバー ブロックで、フォーム内のアクションの場所 (この例では/submit/
) を挿入します。
location ~* /submit/(.*)$ {
access_log /home/example/logs/static-contact-access.log contactstatic;
error_log /home/example/logs/static-contact-error.log;
return https://example.com/;
}
これにより、訪問者はルート ディレクトリに戻ります。特定のニーズに合わせてカスタマイズします。
nginx-exmaple.conf
配置場所を参照してください。
サイトにフォームを追加します。必要に応じてスタイルを整えます。
< form action =" /submit/ " method =" GET " >
< label for =" name " > Name: </ label >
< input type =" text " name =" name " required =" yes " placeholder =" What can I call you? " >
< label for =" email " > Email: </ label >
< input type =" email " name =" email " required =" yes " placeholder =" [email protected] " >
< label for =" message " > Short message: </ label >
< textarea type =" message " name =" message " required =" yes " placeholder =" What do you want to say (in 140 characters)? " maxlength =" 140 " > </ textarea >
< input type =" submit " value =" Send a message " >
</ form >
必要なだけ<input>
を追加します。
ログ内の解析に必要なため、メソッドとして GET が必要です。
受信したフォーム投稿を監視するにはいくつかの方法があります。
ライブログファイルを直接表示します。
tail -f /home/example/logs/access.log
リクエストを電子メール アドレスに送信します。
cd /home/example/
nano log-based-static-contact-form-emailer.sh
#! /bin/bash
EMAIL= " [email protected] "
EMAILSUBJECT= " Contact form "
LOG= " /home/example/logs/static-contact-access.log "
CRON= " /home/example/logs/example-cron.log "
# ## DO NOT EDIT BELOW ###
NOW= $( date + " Form sent to $EMAIL -- %Y-%m-%d %H:%M:%S -- " ) ;
if [ ! -f $LOG ] ;
then
printf " . " >> $CRON
else
mail -s " $EMAILSUBJECT " $EMAIL < $LOG ;
printf " n n $NOW n n " >> $CRON
fi
注: フォームに記入する人 (悪者?) によっては、ログ全体を電子メールの本文に含めて送信するのではなく、新しいお問い合わせフォーム情報があることを知らせるアラートを送信したい場合があります。
chmod +x log-based-static-contact-form-emailer.sh
crontab -e
crontabの一番下に追加
0 9-17 * * 1-5 /var/log/log-based-form.sh
この cron は、月曜日から金曜日の午前 9 時から午後 5 時までの正時ごとに設定されます。自分のセットアップに合わせて、より適切なものを自由に設定してください。
直接のフィードバックは、HackerNews の投稿 (ここ) に送信できます。
https://news.ycombinator.com/item?id=13358753
あるいは問題を提起する
https://github.com/knowbl/log-based-static-contact-form/issues
これがお役にたてましたら、EFF に寄付してください。私はそこで働いていませんが、彼らは業界で素晴らしい仕事をしています
https://eff.org/donate/