Para usuarios de CloudFlare: cómo usar los campos CF-* del encabezado HTTP en lugar de la IP normal

Dado que CloudFlare ofusca la dirección IP del visitante, sería útil poder capturar campos específicos adicionales de CloudFlare (como CF-Connecting-IP, X-Forwarded-For y CF-IPCountry) desde las cabeceras HTTP que insertan, y luego reportarlos condicionalmente en la página Admin > Usuarios > nombre de usuario, además de los campos de IP (poco útiles con CF) y el botón de búsqueda de IP.

¿Podríamos tener estos campos disponibles en esta página cuando estén presentes las cabeceras CF-*?

Una opción útil (que he utilizado en otras aplicaciones Rails) sería usar simplemente esos campos en lugar de la IP si están disponibles. Ha pasado un tiempo desde que lo implementé, pero si recuerdo correctamente, creo que solo deberíamos establecer la IP del visitante como la IP a menos que exista CF-Connecting-IP… aunque creo que hice algo más con X-Forwarded-For

Si utilizas la plantilla de Cloudflare proporcionada, todo esto se gestiona automáticamente. De hecho, esto ha estado disponible en Discourse desde hace cuatro o cinco años.

Asumiendo que seguiste la instalación estándar:

cd /var/discourse
nano containers/app.yml

luego agrega esta línea bajo templates:

- "templates/cloudflare.template.yml"

Luego simplemente reconstruye:

./launcher rebuild app

En ese punto, tu instalación mostrará las direcciones de usuario reales.

¡Eso es fantástico, Stephen, gracias! Es algo tan sencillo que probablemente debería estar incluido y comentado por defecto, o documentado en algún lugar. Al menos ahora se puede encontrar mediante búsquedas de “CloudFlare” aquí en relación con esto. ¡Nunca se me pasó por la mente mirar en la carpeta templates! :slight_smile: