11 Jul -TOC, TOC -¿Quién es?
Aunque hoy en día ya hasta tu cuñado usa una VPN turca para ver Netflix más barato, a veces sigue siendo útil conocer la IP desde la que un cliente se conecta a tu aplicación.

Electrical engineering photo created by freepik - www.freepik.com
En las aplicaciones de Velneo nativas tenemos varias funciones para conocer este dato, pero cuando utilizamos vModApache la cosa se complica, aquí parece se han olvidado de incluir alguna función como theRequest.ipAddress() o similar como disponen en otras plataformas.
Pero gracias al servidor Apache (que tiene más recursos que McGyver con una caja de clips) podemos conseguirlo añadiendo una cabecera que contenga la IP y luego leyéndola desde un proceso Velneo.
Incluir Fichero %APACHE%/conf/extra/vhosts.conf
<Location /senda_base>
setHandler velneo
[VelneoMode SERVER]
Vrl vatp[/s]://usuario:contraseña@servidor[:NUM_PUERTO]/ID_INSTANCIA
RequestHeader set VMODAPACHE_REMOTE_ADDR "%{REMOTE_ADDR}s"
</Location>
Proceso Javascript con estilo «Accesible web»
var sRemoteAddr = theRequest.header("VMODAPACHE_REMOTE_ADDR");
theResponse.setBody("Tu dirección IP es: " + sRemoteAddr);

En caso de usar vModApache en un servidor que está detrás de un proxy este método devolverá la IP del mismo, pero si el proxy está correctamente configurado la IP del cliente debe aparecer en la cabecera X-Forwarded-For
Dominio al que se ha enviado la petición
Con este método podemos pasar otras variables del servidor Apache a Velneo, por ejemplo, si tenemos una instancia con un proceso web que debe responder de manera diferente según el dominio al que se accede (https://cliente-1.mi-super-app.com, https://cliente-2.mi-super-app.com) utilizando la variable HTTP_HOST
<Location /senda_base>
setHandler velneo
[VelneoMode SERVER]
Vrl vatp[/s]://usuario:contraseña@servidor[:NUM_PUERTO]/ID_INSTANCIA
RequestHeader set VMODAPACHE_REMOTE_ADDR "%{REMOTE_ADDR}s"
RequestHeader set VMODAPACHE_HTTP_HOST "%{HTTP_HOST}s"
</Location>
Proceso Javascript con estilo «Accesible web»
var sRemoteAddr = theRequest.header("VMODAPACHE_REMOTE_ADDR");
var sHttpHost = theRequest.header("VMODAPACHE_HTTP_HOST");
theResponse.setBody("Bienvenido a " + sHttpHost + ", tu dirección IP es: " + sRemoteAddr);

No Comments