Servidor Proxy de Sockets
El SPS o Servidor Proxy de Sockets 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 RedeWa 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 de 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 de la Arquitectura eWa
El SPS es, dentro del SOM uno de los SeRViCios más importantes pertenecientes a la parte de la Red y la interconexión entre pares, y en general el uso de Sockets. No pertenece al Estándar, ya que el Paradigma 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 usado tanto dentro como fuera del Paradigma eWa, normalmente se usa en otras aplicaciones que, sin necesidad de que sean estándares, puedan funcionar tanto dentro del Paradigma eWa como fuera de él. La implementación Estándar del SPS en el Paradigma eWa para SOMs se realiza utilizando el Estándar de comunicación, por lo tanto, aunque es estándar y por eso se considera un SeRViCio dentro del el SOM que así lo implemente, aunque sea através de una conexión camuflada.
Normalmente a la implementación con pares se le denomina XPX.
En la programación Flash
Dentro de la programación Flash el uso del SPS revolucionó el panorama del Action Script 3.0 dotándolo de conexión a Sockets tanto 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 Imagénes.
- 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 aplicación o programa que, si es necesario, entienda el protocolo y valide la conexión correctamente. De esta forma, cualquier aplicación que soporte acceso a Sockets locales en el puerto 9999 podrá comunicarse con el SPS y realizar las conexiones Sockets 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 podra suplantar la identidad local que, en cualquier caso, siempre tendrá la máxima autoridad para la toma de control absoluta 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.
Protocolo del SPS
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 Paquetes SPS
Tras el desarrollo más en profundidad del Sistema de Paquetes eWa, el SPS incluyó las funcionalidades básicas para este tipo de protocolo. Para eso se usó el mismo concepto de búsqueda y apertura 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 del 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(ar)á liberalizado para compilar sobre Windows (wx-DevCpp) y sobre cualquier compilador/enlazador C++ para Windows o Linux.