นี่เป็นการพิสูจน์แนวคิดของแบบฟอร์มติดต่อน้ำหนักเบาสำหรับไซต์คงที่ที่โฮสต์ด้วยตนเอง
แหล่งที่มาตามรูปแบบบัญญัติของ 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
เพิ่มไปที่ด้านล่างของ crontab
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/