2010-11-16 16 views
13

Para XMPP interface for the Stack Overflow chat, actualmente soy taking the HTML of the chat messages and converting to valid XML y establezco eso como el elemento secundario html del objeto XMPP message. ¡En mi cliente jabber de Mac OS X esto estaba funcionando genial! Esto significaba que cuando los usuarios del SO chatear publicado una imagen oneboxed, la imagen se mostrará en mi cliente XMPP (Adium para OS X):¿Cómo puedo enviar una imagen en la web en un mensaje XMPP (Jabber)?

My Mind Is Blown

Sin embargo, me acaba de actualizar Adium a la última versión y aparentemente they considered what I was doing to be a security hole and against XMPP specs, and changed that behavior. Su razonamiento era que XMPP no debería revelar su dirección IP, y buscar una imagen a través de HTTP revelaría mi dirección IP.

Así que ahora los chats no tienen imágenes sobre XMPP. ¿Cómo puedo hacer que las imágenes funcionen sobre XMPP? ¿Mi componente XMPP debería descargar las imágenes e incrustarlas en las estrofas <Message>? ¿Pueden las imágenes ser procesadas a través del servidor XMPP? ¿O es esto una imposibilidad?

+2

En serio, no entiendo a estas personas que piensan que una IP es información privada que debe proteger. Si puedes ser atacado simplemente conociendo tu IP, de todas maneras estás f * ed. –

+0

Estoy de acuerdo @Camilo. ¡Y paralizó seriamente lo que antes era una interfaz increíble para chatear! – Josh

Respuesta

3

Trate incrustarlo en a data: uri, como <img src="data:image/png;base64,VGhlIGltYWdlIGRhdGEgZ29lcyBoZXJlCg==" alt="some text" />

+0

Esa fue una gran idea. Debería haber mencionado que lo intenté, pero se muestra como una imagen rota en Adium :-( – Josh

0

sólo una idea ...

¿Qué pasa con el análisis de la URL de la imagen, la descarga de las imágenes, ponerlas en una carpeta de archivos temporales con nombres representativos de las direcciones URL originales (el nombre de archivo podría ser un hash de la URL original) y sustituir las URL originales en los mensajes de estas URL de archivo.

Otra idea ... ¿tener un servidor local que busque las URL reales?

+0

El problema es que el puente XMPP se ejecuta en un servidor remoto, no en mi equipo local. Entonces, un archivo 'file: //' URL no me llevaría a ninguna parte. Podría probar tu idea, pero en lugar de 'file: //', servirlos desde una URL 'http: //' donde el dominio de la URL es el mismo que el del servidor XMPP, pero, ese trabajo? – Josh

+0

Ya veo. Bueno, en teoría sí, podría establecer algo rápido en otro puerto, supongo. Habiendo dicho eso, no soy un tipo del lado del servidor. –

6

Adium, iChat y Pidgin admiten XEP-0231, lo que le permite enviar la información binaria, incluidas las imágenes para este fin. Básicamente, le permite especificar un identificador único como fuente para una imagen, y luego el otro cliente puede decidir si desea solicitar los datos en una solicitud <iq>.

He estado trabajando con esto en Python Twisted, pero encuentro con cierta frustración. Hago sepa que Adium e iChat al menos lo utilizan para solicitar los datos.

+0

Vaya, eso se ve genial, y puede ser solo el ¡Incentivo que necesitaba recoger el proyecto de puente StackExchange XMPP Chat bridge! – Josh

+0

Avíseme si lo hace - por lo que puedo decir, he implementado la especificación, pero Google Talk es aparentemente muy quisquilloso y/o confuso acerca de su mensajes de error. ¡Me interesaría ayudar/ver cómo funciona! –

Cuestiones relacionadas