Servidor Proxy de Sockets

De Wiki~eWa
Ir a la navegaciónIr a la búsqueda

El SPS o Servidor Proxy de Sockets es un Protocolo, Servicio, SeRViCio y Aplicación que se desarrolló durante finales de Septiembre de 2008 y el mes de Octubre de ese mismo año, y abrió en el Proyecto eWa una gran puerta a compatibilizar progresivamente la Red eWa al Paradigma eWa y el SIM. Permite controlar el sistema local (archivos, puertos, dispositivos), software a nivel de operativo (ventanas del sistema, avisos, control de hardware), ejecución remota de código, y la red de forma completa, sin las restricciones de seguridad Adobe Flash 9 y posteriores. Implementa políticas de seguridad eWa que garantizan un grado de seguridad extremo fácil de configurar.

Usos del SPS

Dentro del Paradigma eWa

Véase también: XPX

El SPS es, fuera de la Arquitectura eWa uno de los protocolos más importantes pertenecientes a la parte de la Red y la interconexión entre pares de máquinas, y en general el uso de Sockets. No pertenece al Estándar, ya que la Arquitectura eWa no se conecta nativamente por Sockets, si no por pares (XPX), aunque sí se considera uno de los protocolos de comunicación por red más importantes.

Como SeRViCio, normalmente se usa en conjunción de otras soluciones que, sin necesidad de que sean estándares, puedan funcionar fácilmente dentro del Paradigma eWa como fuera de él. Cuando se programa el SPS usando el Paradigma eWa tal y como lo marca el estándar, la implementación para SOMs por ejemplo, se denomina XPX. Son compatibles entre sí a nivel de red ya que el diseño del XPX es muy similar al SPS.

En la programación Flash

Dentro de la programación nativa para Flash (y por tanto fuera de la Arquitectura eWa) el uso del SPS revolucionó el panorama del ActionScript 3.0 dotándolo de conexión a tanto Sockets de Clientes (sin restricciones de seguridad) como de conexión a Sockets de Servidor. Esta última característica es de las más importantes, ya que permite crear aplicaciones Web en Flash de conexión (entre otras de pares) como, por ejemplo:

  • Chats con videoconferencia.
  • Envío de archivos dinámicos.
  • Sincronización.
  • Acceso remoto.
  • Videojuegos.

También permite conexiones de Servidor como, por ejemplo, de:

  • Páginas Web dinámicas.
  • Juegos multijugador.
  • Correo electrónico.
  • Canal de Chat.
  • Multivideoconferencias.
  • Transmisión de Audio y Vídeo por streaming.

Pero no hay que olvidar del resto de funcionalidades traducidas a Sockets que realiza el SPS que permiten acceder a recursos locales de la misma forma que a los externos. Normalmente estos accesos se hacen en entornos limitados o tras algún tipo de verificación formal. Las aplicaciones que logran tener esos permisos, pueden implementar, por ejemplo:

  • Tratamiento de Imágenes.
  • Envío o publicación de archivos locales.
  • Acceso a los puertos Serie y Paralelo.
  • Guardar estados (partidas, documentos) en forma local.

En el resto de paradigmas de programación

Ya que el SPS de forma local se ejecuta en el puerto 9999 del localhost sin ningún ámbito de seguridad, es accesible desde cualquier servicio que, si es necesario, entienda el protocolo y valide la conexión correctamente. De esta forma, cualquier servicio que soporte acceso a sockets TCP/IP en el puerto 9999 podrá comunicarse con el SPS y realizar las conexiones propias del problema que quieran resolver.

Seguridad en el SPS

Una de las mayores preocupaciones que se han tenido a la hora de desarrollar el SPS ha sido el tema de la Seguridad. Por ese motivo, el SPS cuenta con varias políticas de seguridad configurables desde un entorno de seguridad y jerarquía limitado al ordenador local: ninguna otra conexión podrá suplantar la identidad local que, en cualquier caso, siempre tendrá la máxima autoridad para la toma de control absoluta y completa del SPS.

Además, se han incluido diversos métodos de seguridad para acceder a las diferentes personalidades y funcionalidades que ofrece el SPS para el acceso de recursos tanto locales (sistema de archivos, puertos, control...) como externos (ancho de banda, conexión,...) y asegurar el perfecto funcionamiento de la Máquina donde se está ejecutando.

La suite del SPS

recopilando

El iSPS

recopilando

El rSPS

recopilando

Protocolo del SPS

En ocasiones llamado PSPS, el Protocolo del SPS es un protocolo de red para la transferencia de información entre sistemas conectados a una red TCP, basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para solicitar, enviar y recibir información desde él.

El protocolo divide las instrucciones, junto con sus argumentos si los necesitan, en los siguientes bloques funcionales:

Apertura de Sockets en el SPS

El SPS nace inicialmente para permitir la conexión entre sockets (la forma común de enviar información de ordenador a ordenador) con un conjunto de instrucciones muy básico:

  • "O host puerto" para abrir una conexión con el host (un dominio o una IP) por el puerto indicado.
  • "S [longitud] array_de_bytes" para enviar por la conexión activa un array_de_bytes que representan un comando o información.
  • "R [longitud] array_de_bytes" al recibir por la conexión activa un array_de_bytes que representan un comando o información.

Después, puesto que había muchas más posibilidades, se añadieron:

  • "K" para desconectar la conexión activa.
  • "X" o "X host puerto" para convertir la conexión activa en directa: esto permitía evitar tener que poner 'S' para mandar y tener un 'R' cuando se reciben los datos.
  • "T numero" para establecer el tamaño de los paquetes de datos.

Sistema de Archivos en el SPS

Aun así, se vio que las posibilidades de esta aplicación podrían ser mayores. Para eso se usó el mismo concepto de Socket para trabajar con el sistema de archivos locales:

  • "A nombre" para solicitar la apertura un archivo local.
  • "B" para borrar un archivo local.
  • "C nombre [atributos]" para crear un archivo local.
  • "D pos=0 [hasta=fin [long=hasta-pos]]" para colocar la cabeza lectora y tamaño de la misma.

Sistema de Paquetería en el SPS

Véase también: Sistema de Paquetería eWa

Tras el desarrollo posterior y más en profundidad del Sistema de Paquetería eWa, el Protocolo del SPS adoptó las funcionalidades básicas para este tipo de protocolo. Para eso se usó el mismo concepto de búsqueda y comunicación de paquetes que usa el Paradigma eWa:

  • "U [niveles*]" para realizar búsquedas de claves de paquetes.
  • "V clave" para solicitar la apertura de un paquete concreto.

Control de la Red en el SPS

Para profundizar en la gestión de red, se añadieron dos comandos para el control de escucha de puertos y del propio SPS:

  • "P [desafío]" para hacer ping con o sin desafío.
  • "Q [clave]" para tener control del SPS y recibir todo lo que escucha.
  • "L puerto" para crear un servidor Socket escuchando por el puerto indicado.

Además, se añadió una forma de tratamiento de errores:

  • "E error [solución]" para informar o solucionar un error.

Comandos eWa para Sistemas Operativos que los soporten

Se usan los comandos Z: "Z [*]" que permiten, entre otras cosas:

  • Crear iconos en el Área de Notificación.
  • Crear ventanas simples a nivel de bits o con textos.
  • Maximizar, restaurar, minimizar ventanas.
  • Apagar, reiniciar, y demás acciones en el equipo.

Todas estas acciones se pueden configurar para que se necesiten algunos privilegios para llevarlas a cabo.

Comandos eWa del SPS

Y por último una serie de comandos propios para conectarse al Proyecto eWa: "W [*]".

Código fuente del SPS

El código fuente del SPS está liberalizado para compilar sobre Windows (wx-DevCpp) y sobre cualquier compilador/enlazador C++ para Windows o Linux. Podrá obtenerse aquí para usarse sobre windows como servicio configurable en una ventana (híbrido de archivos de preconfiguración y cambios durante la ejecución) o preconfigurable para terminal de consola (sólo archivos de preconfiguración).