Ini adalah bukti konsep formulir kontak ringan untuk situs statis yang dihosting sendiri.
Sumber kanonik Knowbl Cluster dihosting di https://git.knowbl.co/dev/log-based-contact-form/.
mail
untuk Debian/Ubuntu. /submit/
dalam contoh ini) harus berupa folder kosong, atau semua permintaan sah ke /submit/ akan dialihkan.Di dalam blok http server nginx Anda, masukkan format log untuk konfigurasi spesifik Anda di dekat bagian bawah blok, tetapi sebelum blok server pertama. Lebih sedikit yang direkomendasikan.
log_format contactstatic ' $time_local | $request ' ;
Lihat lokasi penempatan nginx-exmaple.conf
.
Di blok server server nginx Anda, masukkan lokasi tindakan Anda ( /submit/
dalam hal ini) ke dalam formulir.
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/;
}
Ini akan mengembalikan pengunjung ke direktori root. Sesuaikan dengan kebutuhan spesifik Anda.
Lihat lokasi penempatan nginx-exmaple.conf
.
Tambahkan formulir di situs Anda. Gaya sesuai kebutuhan.
< 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 >
Tambahkan <input>
sebanyak yang diperlukan.
GET sebagai metode yang diperlukan, karena diperlukan penguraian di dalam log.
Ada beberapa cara untuk memantau postingan formulir masuk Anda.
Tampilan langsung dari file log langsung.
tail -f /home/example/logs/access.log
Kirim permintaan ke alamat email.
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
Catatan: Tergantung pada siapa yang mengisi formulir Anda (orang jahat?), Anda mungkin ingin mengirimkan peringatan bahwa ada informasi formulir kontak baru, daripada mengirimkan seluruh log di badan email.
chmod +x log-based-static-contact-form-emailer.sh
crontab -e
Tambahkan ke bagian bawah crontab
0 9-17 * * 1-5 /var/log/log-based-form.sh
Cron ini disetel untuk setiap jam, pada jam tersebut, jam 9 pagi hingga jam 5 sore, Senin hingga Jumat. Jangan ragu untuk menyetel ke sesuatu yang lebih dapat diterapkan pada penyiapan Anda sendiri.
Umpan balik langsung apa pun dapat diberikan di postingan HackerNews, di sini
https://news.ycombinator.com/item?id=13358753
Atau angkat masalah
https://github.com/knowbl/log-based-static-contact-form/issues
Jika ini bermanfaat bagi Anda, silakan berdonasi ke EFF. Saya tidak bekerja di sana, tetapi mereka melakukan pekerjaan luar biasa di industri ini
https://eff.org/donate/