urlimport Importando módulos remotos en python

Esta mañana me he levantado con una idea en la cabeza, sería genial: poder importar módulos de una ruta...
Pues bien después de haber pensado en la implementación y todo me ha dado por buscar en la web y da la casualidad de que no soy demasiado original y ya alguien tenía alguna que otra implementación.
He encotrado el módulo urlimport:
http://urlimport.codeshift.net/
Ejemplo de código:
import urlimport import sys sys.path += ['http://www.crummy.com/software/BeautifulSoup/download/'] import BeautifulSoup BeautifulSoup <module 'BeautifulSoup' from 'http://www.crummy.com/software/BeautifulSoup/download/BeautifulSoup.py'>
Con esto se podrían ejecutar aplicaciones gtk por ejemplo de manera que el código esté en remoto y nos lo bajemos sólo para ejecutarlo. Así tenemos aplicaciones de escritorio remotas, es lo mismo que pasa con el javascript pero a nivel de python y sin navegador. Y con esto si por ejemplo cambiamos nuestro código no tenemos que ir instalando la nueva versión en cada cliente, sólo en el servidor, sino que la próxima vez que se ejecuten estarán actualizados.
Esto tiene un pequeño fallo de seguridad, y es que si alguien consigue mandarte una respuesta con codigo malicioso podría ejecutar casi cualquier cosa en tu propia máquina.
Por eso me he puesto a modificar un poco el código y le he añadido firma con RSA. Para esto he utilizado un módulo python puro http://stuvel.eu/rsa.
El servidor en el cual está el código tiene una clave pública y otra privada, con la clave privada se cifra el sha256 del código y se incluye tanto el código como el hash firmado en un zip. Por otra parte el cliente se descarga el fichero zip y teniendo la clave pública verifica que el hash que va incluido en el zip es el que se corresponde con el código y además está firmado por el servidor.
Para crear el fichero .zip he utilizado el módulo zipfile y hashlib para generar el hash.
Cosas por hacer
Aún me quedan un par de mejoras que quiero añadirle, además de código python quiero poder ponerle dependencias a los módulos .zip de otros "módulos" pero de datos para por ejemplo poder añadir las imágenes de una aplicación o los ficheros .glade, etc. También quiero estudiar la posibilidad de que los datos como imágenes y los ficheros .glade se los pueda descargar por petición, es decir que se los descargue si intenta cargar un fichero y falla, aunque no tengo mucha confianza en la viabilidad de esta solución.
El código lo estoy versionando en mi repositorio: http://bzr.danigm.net/urlimport/. Quiero hacer que sweetgtk se ejecute así.




Es una buena idea y deberías seguir desarrollando, ahora bien y solo por situarme:
¿No se parece un poco la idea al concepto del remote deployment?
¿No son más adecuadas las RPC para llevar a cabo esas labores?
¿Y las API web?
¡Saludos! y vaya ascii-art-captcha más geek!
- reply
Submitted by J. Félix Ontañón (not verified) on Fri, 27/03/2009 - 01:11.