21 de octubre de 2017

Aplicaciones VFP a traves de Internet usando VPN

Hace algunos años, allá por la versión FoxPro 2.6 para Windows, necesitaba ejecutar una aplicación a través de Internet. Desde entonces hasta la fecha he probado un sin fin de productos. Desde FoxWeb, FoxNet, WestWind Connection, AFP, Fox#,VFPServer, VFP Framework, etc. Desde servidores construidos por el propio código VFP hasta CGI o interacción con ASP.

Primeramente, que es una aplicación VFP a través de Internet? Necesito en verdad crear una interface a través de un navegador para acceder a las bases de datos de la aplicación? Necesito controles llamativos como DBI o Voodo para una interfaz mas rica al usuario? Necesito solamente la transferencia de datos desde un lugar remoto para actualizar, capturar, consultar?

Por cierto que hay varios tipos de necesidades, desde las del usuario (interfaz, facilidad, compatibilidad) hasta las técnicas (sobrecarga del servidor, memoria de la aplicación, instalaciones en los clientes, etc.) Es decir, en algunos casos es necesario tener un servidor web configurado para traer los datos bajo demanda, rápidamente y sin tener que instalar aplicación alguna en los clientes a control remoto, basta un simple navegador para tener los datos. Pero en otros casos, quizá lo que realmente necesitamos es: CONECTAR NUESTRA APLICACION CON LOS DATOS A TRAVES DE INTERNET COMO SI LO HICIERAMOS A TRAVES DE LA RED LOCAL.

Para ello necesitamos lo siguiente:

  1. Una VPN
  2. Una aplicación VFP cualquiera que una pequeña modificación para acceder a la base de datos.
  3. Una conexión a Internet (banda ancha de preferencia)
  4. Un servidor y un cliente.

Recordemos que necesitamos un servidor donde residen nuestra base de datos, esto funciona bien para nuestra LAN, y un cliente o clientes donde tendremos nuestra aplicación. Es posible que varias PCs, laptops tengan el sistema VFP que queremos usar, así que este estará instalado completamente con todas sus pantallas e interfaces, lo único que haremos será conectarnos con el servidor de datos para trabajar con ellos.

PASOS A SEGUIR

El primer paso es usar una VPN (Virtual Private Network). Se que hay varias soluciones tanto de hardware como de software, pero aquí mismo me encontré hace tiempo una excelente: HAMACHI. Pequeña, gratuita y fácil de manejar.

Así, descarguemos Hamachi desde su pagina https://secure.logmein.com/hamachi.msi. En 10 minutos estaremos usando nuestra VPN.

Una vez descargado, necesitamos instalar el Hamachi en lo que será nuestro servidor, puesto que funciona de manera transparente a través de Firewalls, la instalación es por demás sencilla. Necesitamos crear nuestra red, y dar de alta el nombre de nuestro server, así como su password. La empresa entonces nos dará una IP especial a esta computadora. Podemos hacer que Hamachi cargue de manera automática al encender la PC Servidor (aunque si es Servidor, este nunca se apagara).

Ahora, instalamos Hamachi en la computadora cliente, siguiendo casi los mismos pasos, pero en este caso, al ya tener una red hecha, nos incorporaremos a esta, de tal manera que tanto el servidor como el cliente estén en la misma red para que puedan reconocerse. Como los grupos de trabajo de Windows.

Carguemos el Hamachi entonces para conectarnos con el Servidor.

Aquí vemos el Hamachi en acción. Para proteger la identidad se han borrado los nombres de la red y números de IPs.

En este caso, la computadora cliente esta conectada a 3 redes Hamachi distintas. 2 en la misma empresa y una externa. Vemos que solamente 1 PC esta en línea (la segunda) que es el servidor que nos queremos conectar.

Aquí suponemos que el Hamachi esta ejecutándose del lado del servidor.

Y ESO ES TODO LO QUE NECESITAMOS PARA QUE NUESTRAS APLICACIONES FUNCIONEN A TRAVES DE INTERNET. No necesitamos un IP Fija, o conocer direcciones o dominios. Ya que Hamachi ha hecho todo esto por nosotros. Lo importante aquí, es conocer el numero de IP que este le esta dando al servidor.

Ahora, veamos como hacemos la conexión de nuestra aplicación.

En la imagen vemos que para comenzar a usar la aplicación primeramente tenemos que seleccionar la empresa. En este caso tenemos 2 empresas pero se acceden de 3 maneras diferentes:

  1. De manera local (en la propia PC o laptop)
  2. De manera Red (LAN)
  3. O por Internet.

Aunque eliminare algo de código por cuestiones de seguridad, creo que tendrán la idea. Esto funciona teniendo una tabla DBF (que puede ser libre) con unos cuantos campos como nombre de la empresa, fecha de alta, etc. Pero un campo donde pondremos la dirección donde reside.

Así, en el primer caso de manera local, tendremos:

C:\sistemas\clientes\basedato\empresa\ 

Para la red, tendremos algo así:

\\servidor\e\clientes\basedato\empresa\. 

(Noten que no estoy usando un mapeo de la unidad sino una dirección de red, que se puede sustituir por su IP si se desea).

Para internet:

\\5.61.46.25\e\clientes\basedato\empresa 

Aquí notaran la primera parte que es la dirección IP de nuestro VPN Hamachi. Estamos diciéndole que acceda al servidor que esta en esta red. El único requisito es que si vamos a usar esta aplicación con datos a través de internet, es necesario primero activar la Hamachi y que este conectado, de otra manera fallara. Y listo. Una vez configurada la ruta de los archivos, abrimos los formularios, reportes, consultas y estaremos trabajando directamente con el servidor.

Esta ruta la almacenamos en una variable publica que esta presente en toda la sesión de trabajo.

Una vez terminado, cerramos la aplicación, cerramos el Hamachi (si queremos) y listo.

La ventaja de esta técnica es que disponemos de toda la riqueza visual de VFP en nuestros formularios, controles ActiveX, etc., y el código sin grandes modificaciones ya que no nos preocupamos donde reside. He trabajado con esto desde hace meses con tablas que rondan los 200MB y solamente hay un pequeño tiempo de espera la primera vez que se conecta, pero una vez abiertos los archivos, la captura, edición, borrado de los registros es extremadamente rápida, los índices se actualizan sin problema, casi no notamos que estamos trabajando a través de internet. En lo personal me ha servido para actualizar ciertos datos desde casa en el trabajo. O hacer consultas a la base de datos.

Desventajas. Por cierto que las hay. Aunque Hamachi es gratuito, tiene un limite de 16 clientes en una misma red, es decir, solo 16 PC conectadas. Si su ancho de banda es buena, y su código es eficiente, no debe tener problemas para acceder a varios clientes al mismo tiempo, (yo lo he usado con hasta 4 clientes a la vez). El cliente tiene que tener la aplicación compilada y sus runtimes.

A su favor, es que no modificamos gran cosa en el código, mas que la ruta de los archivos, no tardamos mas de 10 min en instalar y configurar Hamachi... y es gratuito... además, no solamente nos servirá para esto, ya que al tener la VPN, podremos hacer muchas mas cosas como control remoto a distancia (con VNC por ejemplo), mejor que un ftp y mas rápido, conexiones seguras y algunas futuras aplicaciones.

Por supuesto para conexiones mas robustas y con mayor cantidad de clientes en la conexión, habrá que usar otras herramientas, pero si desean hacer una conexión rápida, barata, sencilla, fácil de administrar, creo que esta opción es bastante recomendable.

Que estén bien.

Sergio Hugo Sanchez

3 comentarios :

  1. https://www.taringa.net/posts/juegos-online/19175212/Solucion-VPN-hamachi-triangulo-amarillo-tunel-directo.html

    Las nuevas versiones en windows server 2008 no instalan los driver de Hamachi, hay que instalar una version mas antigua.

    Excelente. Muchas gracias por compartir.

    ResponderEliminar
  2. Buen articulo, Openvpn tambien funciona muy bien, es multiplataforma & opensource.

    ResponderEliminar
  3. FUNCIONARA ADECUADAMENTE CON WINDOWS 10?

    ResponderEliminar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.