Recientemente adquirí un hosting VPS a un costo bajo con las siguientes especificaciones:

  • 1024MB Ram
  • 50GB DiskSpace
  • 600GB Bandwidth
  • 1 IPv4 Address
  • OpenVZ/SolusVM
  • 100 Mbps Port Speed
  • $3.99/Month

Entre las opciones disponibles para usar esta Cent0S/Debian/Ubuntu para la configuración utilizare CentOS release 6.3 (Final) e instalare el paquete openvpn. La tecnología de virtualización utilizada por el hosting es OpenVZ(base de Parallels) , que funciona similar al jail de BSD o las zonas en Solaris.

Con OpenVZ no es posible agregar módulos al Kernel desde el container por razones de seguridad, los módulos deben ser agregados al kernel del host para ser usados por el container(guest o maquina virtual).

A pesar de poder agregar modulo ipsec al kernel desde host, el container solo puede usar ciertos módulos por ejemplo iptables, ipsec verify falla en el container al verificar el soporte para los módulos de encripción en el kernel hasta el momento el soporte para IPSEC en OpenVZ container es experimental, por suerte tun/tap o ppp están disponibles, PPP no es recomendable por razones de seguridad pero si podremos usar la interfaz tun/tap con Openvpn puesto que este tipo de VPN no carga módulos en el kernel y puede usar claves o PKI(Infraestructura de llave publica) basada en OpenSSL

La VPN a configurar con OpenVPN sera para enrutar todo el trafico de los clientes por la VPN con esta configuración se puede usar por ejemplo para asegurar la comunicación sobre redes inseguras o saltar filtros de geolocalización de ciertos sitios web.

Read the rest of this entry »

En la actualidad las aplicaciones web están tomando un enfoque mas amplio al controlar desde el servidor web hasta el contenido final que es servido al usuario final, node la plataforma construida en el runtime javascript de chrome permite la rápida construcción de aplicaciones usando un modelo de no bloqueo en I/O y basado en eventos hacen de la plataforma ideal para aplicaciones web escalables, aplicaciones de redes y aplicaciones con cargas de datos intensivas en tiempo real haciendo uso de base de datos nosql como MongoDB, CouchDB, Riak.

Node.js es una plataforma en la cual se han desarrollado muchos componentes que en conjunto brindan toda la funcionalidad necesaria para construir aplicaciones web, como es connect un framework middleware para node, express framework para aplicaciones web, jade

Para este articulo lo primero sera instalar node y el framework express

node esta disponible para todas las plataformas Windows(instaladores para 32 y 64 bits), Linux, Solaris, FreeBSD, Darwin en codigo fuente para compilar e instalar.

Una vez instalado node tenemos acceso al gestor de modulos npm y podremos instalaremos express
express se puede configurar de 2 maneras.

la primera opcione es crear un directorio con un descriptor para la aplicación, un archivo
package.json y luego ejecutar la instalación del modulo express con npm

$ mkdir ndemo
$ cd ndemo
$ vim package.json
$ npm install 
$ npm ls

Descriptor de la aplicacion: package.json

// file: package.json
{
    "name":"ndemo",
    "version":"0.0.1",
    "private":true,
    "scripts":{
        "start":"node app"
    },
    "dependencies":{
        "express":"3.x",
        "jade":"*",
        "stylus":"*"
    }
}

la otra alternativa es instalar express de manera global usando npm y utilizar el comando express para crear la aplicación.

# requiere permisos de root
$ npm install -g express
$ express -s -c stylus ndemo

al final se tendrá el directorio de la aplicación con los módulos necesarios como se muestra en la imagen usando “npm ls” se pueden ver las dependencias de express en la aplicación

npm ls

Con la primera opción se debe crear el script de inicio y del servidor para arrancar la aplicación, con la segunda opción estos archivos son creados automáticamente.

Suds es un tremendo cliente SOAP para consumir web services es basado en Python a diferencia de los clientes en Java no hay generación de clases, y el API es tipo orientado a objetos. Y lo mejor es el poco código que se debe escribir para consumir un servicio web y para muestra un ejemplo sencillo:

Lo primero instalar el cliente ya sea descargándolo del sitio o instalando el paquetes si nuestra distribución de linux lo incluye en sus repositorios.

# fedora 15
yum -y install python-suds
# tarball
wget https://fedorahosted.org/releases/s/u/suds/python-suds-0.4.tar.gz
tar xzvf python-suds-0.4.tar.gz
cd python-suds-0.4
python setup.py install

Para el ejemplo utilizaremos uno de los webservices del sitio webservicesx.net

#!/usr/bin/env python

from suds.client import Client
url = 'http://www.webservicex.net/globalweather.asmx?WSDL'
client = Client(url)
print client

si todo esta correcto la salida del script mostrara esto:

web service output

Suds ( https://fedorahosted.org/suds/ )  version: 0.3.9 GA  build: R659-20100219

Service ( GlobalWeather ) tns="http://www.webserviceX.NET"
   Prefixes (0)
   Ports (2):
      (GlobalWeatherSoap)
         Methods (2):
            GetCitiesByCountry(xs:string CountryName, )
            GetWeather(xs:string CityName, xs:string CountryName, )
         Types (0):
      (GlobalWeatherSoap12)
         Methods (2):
            GetCitiesByCountry(xs:string CountryName, )
            GetWeather(xs:string CityName, xs:string CountryName, )
         Types (0):

El servicio web tiene 2 metodos los cuales podemos invocar de la siguiente manera:

#!/usr/bin/env python

from suds.client import Client
url = 'http://www.webservicex.net/globalweather.asmx?WSDL'
client = Client(url)
#print client
weather =  client.service.GetWeather('Managua', 'Nicaragua')
print weather

esto generara un string conteniendo el xml para que luego pueda ser procesado según se requiera .

<?xml version="1.0" encoding="utf-16"?>
<CurrentWeather>
  <Location>Managua A. C. Sandino, Nicaragua (MNMG) 12-09N 086-10W 56M</Location>
  <Time>Jul 18, 2011 - 12:00 AM EDT / 2011.07.18 0400 UTC</Time>
  <Wind> from the ESE (110 degrees) at 5 MPH (4 KT):0</Wind>
  <Visibility> greater than 7 mile(s):0</Visibility>
  <SkyConditions> partly cloudy</SkyConditions>
  <Temperature> 77 F (25 C)</Temperature>
  <DewPoint> 73 F (23 C)</DewPoint>
  <RelativeHumidity> 88%</RelativeHumidity>
  <Pressure> 29.88 in. Hg (1011 hPa)</Pressure>
  <Status>Success</Status>
</CurrentWeather>

Referencias:

Python Suds

top