Este es un formulario de contacto liviano de prueba de concepto para sitios estáticos autohospedados.
La fuente canónica de Knowbl Cluster está alojada en https://git.knowbl.co/dev/log-based-contact-form/.
mail
para Debian/Ubuntu. /submit/
en este ejemplo) debe ser una carpeta vacía, o todas las consultas legítimas a /submit/ serán redirigidas.Dentro del bloque http de su servidor nginx, inserte el formato de registro para su configuración específica cerca de la parte inferior del bloque, pero antes de los primeros bloques del servidor. Se recomienda menos.
log_format contactstatic ' $time_local | $request ' ;
Consulte la ubicación de ubicación nginx-exmaple.conf
.
En el bloque del servidor de su servidor nginx, inserte la ubicación de su acción ( /submit/
en este caso) dentro del formulario.
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/;
}
Esto devolverá al visitante al directorio raíz. Adaptarse a sus necesidades específicas.
Consulte la ubicación de ubicación nginx-exmaple.conf
.
Agregue el formulario en su sitio. Peina según sea necesario.
< 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 >
Agregue tantos <input>
como sea necesario.
GET ya que el método es necesario, ya que es necesario para analizar dentro de los registros.
Hay varias formas de monitorear las publicaciones entrantes del formulario.
Vista directa del archivo de registro en vivo.
tail -f /home/example/logs/access.log
Enviar solicitudes a una dirección de correo electrónico.
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
Nota: Dependiendo de quién complete su formulario (¿los malos?), es posible que desee enviar una alerta de que hay nueva información en el formulario de contacto, en lugar de enviar el registro completo en el cuerpo de un correo electrónico.
chmod +x log-based-static-contact-form-emailer.sh
crontab -e
Agregar al final del crontab
0 9-17 * * 1-5 /var/log/log-based-form.sh
Este cron está configurado para cada hora, en punto, de 9 a. m. a 5 p. m., de lunes a viernes. Siéntase libre de configurar algo más aplicable a su propia configuración.
Cualquier comentario directo se puede enviar en la publicación de HackerNews, aquí.
https://news.ycombinator.com/item?id=13358753
O plantear un problema
https://github.com/knowbl/log-based-static-contact-form/issues
Si esto le resulta útil, haga una donación a la EFF. No trabajo allí, pero hacen un trabajo fantástico en la industria.
https://eff.org/donate/