Это доказательство концепции легкой контактной формы для самостоятельных статических сайтов.
Канонический источник Knowbl Cluster размещен по адресу https://git.knowbl.co/dev/log-based-contact-form/.
mail
для Debian/Ubuntu. /submit/
в этом примере) должен быть пустой папкой, иначе все законные запросы в /submit/ будут перенаправлены.В блоке http вашего сервера nginx вставьте формат журнала для вашей конкретной конфигурации в нижней части блока, но перед первыми блоками сервера. Рекомендуется меньше.
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
Добавьте в низ кронтаба
0 9-17 * * 1-5 /var/log/log-based-form.sh
Этот cron устанавливается на каждый час, с 9:00 до 17:00, с понедельника по пятницу. Не стесняйтесь выбирать что-то более подходящее для вашей собственной установки.
Любой прямой отзыв можно оставить в сообщении HackerNews здесь.
https://news.ycombinator.com/item?id=13358753
Или поднять вопрос
https://github.com/knowbl/log-based-static-contact-form/issues
Если это было для вас полезно, сделайте пожертвование в EFF. Я там не работаю, но они делают фантастическую работу в отрасли.
https://eff.org/donate/