Resumen rápido

Presentes: jrand0m, dm, Dellammo, mihi, moi, mihi-backup, dm_backup, wilde, shardy

Registro de la reunión

[23:01] <jrand0m> agenda [23:01] <jrand0m> 0) bienvenida [23:01] <jrand0m> 1) estado de la 0.2 [23:01] <jrand0m> 2) proxy web [23:01] * dm reflexiona. [23:02] <dm> oh, ¿reunión? [23:02] <jrand0m> 3) phttprelay [23:02] <jrand0m> 4) i2ptunnel [23:02] <jrand0m> 5) instalación [23:02] <dm> perdón. [23:02] <jrand0m> 6) solicitud de funcionalidad para iip [23:02] <jrand0m> 7) ??? [23:02] <jrand0m> 0) bienvenida [23:02] <jrand0m> hola. [23:02] <jrand0m> ¿reunión 62? ¿es? [23:02] <Dellammo> hola [23:02] <jrand0m> (no te preocupes dm, podemos perdonarte) [23:02] <mihi> hola jrand0m [23:02] <dm> hola mihi [23:02] * mihi cree que sí [23:03] <jrand0m> 1) estado de la 0.2 [23:03] * jrand0m ha padecido últimamente un grave caso de 'feature creep', así que al lanzamiento 0.2 aún le quedan como 30 minutos de código por escribir. [23:04] <jrand0m> pero entonces podremos ejecutar y comunicarnos de forma fiable sin importar el NAT, el cortafuegos o el proxy HTTP. [23:04] * dm acaba de crear I2PSecureRemoteShell 1.0 [23:04] <dm> ¡genial, jr! [23:05] <jrand0m> todo es funcional, lo único que falta es expirar las entradas de base de datos no usadas tras N minutos (probablemente 5 por defecto) [23:05] <jrand0m> la comunicación a través de NAT/cortafuegos/proxy HTTP es mediante el transporte PHTTP. Es lento, pero fiable. [23:05] <dm> ¿cómo funciona? ¿qué puertos utiliza? [23:06] <jrand0m> envía el mensaje a un relé PHTTP alcanzable, que almacena el mensaje, y luego el receptor sondea mensajes cada N segundos [23:06] <jrand0m> hay MUCHO que se puede ajustar y mejorar en ese aspecto, que es el punto 3 de la agenda :) [23:06] <dm> ¿La P es de? [23:06] <jrand0m> Polling HTTP [23:06] <dm> ok, gracias. [23:07] <jrand0m> Voy a actualizar también la página de "kludges" en la wiki después de la reunión, para anotar las cosas raras [23:07] <jrand0m> (como que aún no manejamos un cambio de lease durante la comunicación) [23:08] <jrand0m> el otro punto a discutir es el punto 5 de la agenda: instalación. o sea, cómo deberíamos gestionar la instalación del router/sdk/tunnel/etc [23:08] <jrand0m> bien, eso es todo para el estado de la 0.2 [23:08] <jrand0m> 2) proxy www. [23:09] <jrand0m> moi tuvo una idea muy buena para navegar sitios www dentro de i2p. [23:09] <jrand0m> ¿quieres explicar de qué va, moi? [23:09] * jrand0m te pone bajo los focos *** moi es ~someone@anon.iip (someone) *** en canales: #freenet #anonymous #iip #iip-dev *** en irc vía servidor anon.iip (IIP oficial ) *** moi ha estado inactivo 9 minutos, inició sesión el Thu Jan 01 01:00:00 1970 [23:10] <moi> bueno [23:10] <moi> solo estoy modificando un proxy HTTP y usando el tunnel de mihi [23:10] <moi> para que puedas ir a (Enlace: http://i2p/BASE64KEYHERE)http://i2p/BASE64KEYHERE [23:10] <moi> eventualmente el servidor de nombres estaría ahí-- [23:11] <dm> genial [23:11] *** Cierre de sesión: mihi (Tiempo de espera de ping agotado) [23:11] <moi> tienes que pegar la primera clave larga, pero después de eso técnicamente deberías poder seguir los enlaces, creo [23:11] <Dellammo> ¿así que una página web interna o una página fuera de i2p? [23:11] <dm> ¿i2p se resuelve a localhost? [23:11] <moi> así que alguien podría montar un Google de i2p y, a partir de ahí... quizá [23:12] <mihi-backup> !thwap dm. [23:12] <mihi-backup> un proxy... [23:12] <jrand0m> por seguridad, el proxy debería devolver 404 a todos los hosts excepto (Enlace: http://i2p/)http://i2p/ [23:12] <dm> ¡ups! [23:12] <moi> buen punto [23:12] <dm> me perdí esa parte [23:12] <mihi-backup> aunque un servlet sencillo también estaría bien [23:12] <jrand0m> ¿hmm? [23:13] *** mihi (~mihi@anon.iip) se ha unido al canal #iip-dev [23:13] <jrand0m> hmm, puede haber un problema. [23:13] <jrand0m> ¿esto usaría HTTP 1.0 o 1.1? [23:14] <mihi> ¿si el servidor solicita una cabecera Host:? [23:14] <jrand0m> [o sea, ¿tendría una cabecera Host:?] [23:14] <jrand0m> exacto [23:14] * mihi desea algo [23:14] <moi> me pregunto si podemos hacer que el proxy lo deje en blanco [23:14] <jrand0m> si el tunnel saliente del servidor está siempre en el mismo host, está bien [23:14] <jrand0m> puedes establecer el Host: del proxy a 127.0.0.1 [23:15] *** dm_backup (~as@anon.iip) se ha unido al canal #iip-dev [23:15] <jrand0m> pero entonces debes ejecutar el tunnel en el mismo host que el servidor. no es un gran problema, ya que no es para navegación web normal general [23:15] <jrand0m> ¿no? [23:15] *** Cierre de sesión: dm (Tiempo de espera de ping agotado) [23:16] * moi no lo había pensado tan a fondo todavía [23:16] <mihi> si ejecutas el servidor en tu propia máquina también puedes hacer un alias de i2p a localhost o algo así. [23:16] <dm_backup> ¿entonces la gente tiene que ejecutar servidores web ahora? [23:16] <jrand0m> dm_backup> esto es solo para quien quiera. [23:16] *** dm_backup ahora se llama dm [23:16] <Dellammo> como yo [23:16] <dm> sí, me refiero a esto de (Enlace: http://i2p)http://i2p [23:17] <mihi> si quieres proporcionar contenido, sí. [23:17] <mihi> pero también tienes que ejecutar uno para ofrecer contenido en la buena y vieja www. [23:18] <Dellammo> ¿por qué? [23:18] <dm> Hmmm, quizá debería construir una app P2P para I2P. [23:18] <jrand0m> una app de intercambio de archivos sobre i2p sería la caña. [23:18] <dm> sí, perdón, intercambio de archivos. [23:19] <moi> creo que sería posible que alguien ejecutara un servidor OpenNap junto con i2ptunnel [23:19] <jrand0m> sí. [23:19] <jrand0m> (aunque un p2p nativo de i2p tendría mejor rendimiento) [23:19] <mihi> pero las descargas serán difíciles. [23:20] <mihi> no hay forma de llegar al host correcto, ya que todos son localhost ;) [23:20] <dm> Esperemos a ver PING funcionando sobre i2ptunnel primero. [23:20] * Dellammo está confundido: ¿estamos hablando de un proxy que no es i2ptunnel y que te permite acceder a servidores web internos a la red i2p escribiendo '(Enlace: http://i2p/')http://i2p/' ? [23:20] <jrand0m> quizá solo un cliente FTP simple diseñado para ejecutarse sobre i2p? [23:20] <dm> (no ping literalmente) [23:20] <mihi> jrand0m: ftp necesita 2 puertos... [23:20] <jrand0m> diseñado para ejecutarse sobre i2p. [23:21] <jrand0m> una app de transferencia de archivos general, no el protocolo FTP, específicamente [23:21] <mihi> entonces no es ftp. [23:21] <mihi> ATalk ;) [23:21] <jrand0m> (aprovechando tamaños de mensaje mayores) [23:21] <dm> ¡batalla de sabios! [23:21] <jrand0m> je [23:21] <moi> Dellammo: ahora mismo tienes que crear un i2ptunnel para cada sitio web/Destination que quieras visitar. Estamos pensando en usar un servidor proxy que construya dinámicamente un i2ptunnel para cada sitio. [23:22] <jrand0m> (más o menos) [23:22] <jrand0m> no querrás usar un i2ptunnel, específicamente. [23:22] <jrand0m> querrás usar el protocolo de i2ptunnel y enviar mensajes directamente, no mediante sockets TCP/IP. [23:23] <jrand0m> mihi> ¿alguna idea de cuánto tiempo llevaría extraer la funcionalidad del protocolo de i2ptunnel para que otras apps pudieran enviar datos a un tunnel de i2p? *** mihi es mihi@anon.iip (mihi) *** en canales: #iip-dev #iip #headlines #german #freenet-opn #freenet #fredisdead #frazaa @#fiw #anonymous *** en irc vía servidor anon.iip (IIP oficial ) *** mihi-backup es ~mihi@anon.iip (mihi) *** en canales: #iip-dev *** en irc vía servidor anon.iip (IIP oficial ) *** mihi-backup ha estado inactivo 12 minutos, inició sesión el Thu Jan 01 01:00:00 1970 [23:25] <mihi> ¿hay mucha funcionalidad de protocolo? I2PTunnelRunner se puede usar tal cual. [23:25] <mihi> Solo tienes que ajustar la clase de cliente para tus necesidades. [23:25] <jrand0m> hmm, no exactamente: i2ptunnelRunner usa un socket [23:26] <jrand0m> esto es una app Java simple que quiere generar un mensaje ("HTTP GET /\n\n") y enviarlo a un I2PTunnel saliente [23:27] <jrand0m> no queremos redirigir al cliente que contacta con el proxy a un puerto nuevo para conectarse al I2PTunnel recién instanciado (ya que no habría forma de volver para los enlaces fuera de ese sitio) [23:28] <jrand0m> pero quizá cambiar I2PTunnelRunner para usar un InputStream (todo lo que usa es socket.getInputStream) sería fácil... [23:28] <jrand0m> pero entonces aún necesitamos el lado que escucha [23:28] *** Cierre de sesión: mihi (Tiempo de espera de ping agotado) [23:28] <jrand0m> d'oh [23:28] * jrand0m espera que la copia de seguridad no esté a punto de hacer ping timeout... [23:28] <dm> ¡la copia de seguridad va a morir también, ¡mira! [23:29] <mihi-backup> ;) [23:29] <jrand0m> w00t [23:29] <mihi-backup> [23:25] <jrand0m> hmm, no exactamente: i2ptunnelRunner usa un socket [23:29] <mihi-backup> [23:25] <mihi> ups, cierto. ¿y quieres hacerlo completamente sin sockets? [23:29] <mihi-backup> [23:25] <mihi> entonces no queda mucho código de i2ptunnel. la mayor parte es para manejar los sockets. [23:29] <mihi-backup> [23:26] <mihi> mejor cíñete al protocolo e impleméntalo tú mismo (construye los mensajes con el método estático en i2ptunnel.java) [23:29] <mihi-backup> [23:28] <mihi> http no necesitaría tantos hilos. Solo ejecuta un lector sobre el mensaje entrante hasta un doble retorno y luego envía lo tuyo. [23:30] <jrand0m> ah 'k. gracias [23:30] <jrand0m> moi> ¿tú sabes? [23:30] <mihi-backup> sobre cambiar I2PTunnel por un input stream. ¿para qué? no obtendrás nada más en él después de parsear la petición. [23:31] * moi piensa [23:31] <dm> toi thinks [23:31] <mihi-backup> olvida el tunnelrunner. ;) [23:31] <jrand0m> claro, solo pensaba en que I2PTunnel y el proxy http usaran el mismo código: I2PTunnel usaría socket.getInputStream(), el proxy http usaría new ByteArrayInputStream("GET / \n\n".getBytes()) [23:31] *** mihi (mihi@anon.iip) se ha unido al canal #iip-dev [23:32] * moi tendrá que repasar esto en detalle más tarde [23:32] <mihi-backup> pero eso hará que el runner envíe un "Connection closed" cuando se envíe la cadena. [23:32] <mihi-backup> ya que el stream termina. [23:32] <jrand0m> claro, lo cual es HTTP normal [23:33] <mihi-backup> solo olvida el runner, dije ;) [23:33] <jrand0m> 'k [23:33] <mihi-backup> jrand0m: no. la conexión se cierra cuando llega la respuesta, no cuando sale la pregunta. [23:33] <jrand0m> oh, sí [23:33] <jrand0m> ;) [23:36] <jrand0m> genial moi, podemos trabajar estos temas más tarde. [23:36] <jrand0m> bien, ese fue el punto 2) de la agenda. ahora el 3) [23:36] <moi> ok [23:37] <jrand0m> 3) phttprelay [23:37] <jrand0m> phttp relay es un conjunto de servlets empaquetados en un archivo .war [23:38] <jrand0m> funciona de inmediato en Windows / JVM de Sun, pero tuve que hackear jetty para ejecutarlo con kaffe [23:38] <mihi> haz .peace, no .war [23:39] * jrand0m gime [23:39] <dm> ¿puedes ejecutar archivos .war sin un servidor J2ee? [23:39] <dm> bueno saberlo. [23:39] <jrand0m> los archivos .war se ejecutan en cualquier contenedor de servlets: tomcat, apache con mod_jk, jetty, etc [23:40] <jrand0m> vamos a querer que algunas personas ejecuten estos en máquinas con direcciones IP públicamente alcanzables, pero solo son necesarios para quienes no tienen direcciones alcanzables públicamente (como yo) [23:41] <mihi> ¿qué puertos necesitas redirigir si quieres atravesar un NAT sin eso? [23:41] <jrand0m> su implementación también es muy rudimentaria: necesita límites sobre para cuántos routers hace relay, cuántos mensajes encola, cuánto tiempo antes de hacer timeout, etc [23:41] <jrand0m> solo el puerto TCP de I2NP [23:41] <jrand0m> (o el puerto UDP de I2NP) [23:41] * mihi no sabe si su NAT permite reenvío UDP [23:42] * jrand0m tampoco sabe si el NAT de mihi lo permite [23:43] <jrand0m> ahora mismo, por ejemplo, mi portátil es alcanzable solo vía PHTTP, y el router de mi servidor es alcanzable vía PHTTP, TCP y UDP. si mi portátil establece una conexión con el router del servidor vía TCP, puede enviar mensajes vía TCP. pero si mi portátil no hace eso primero, el servidor debe enviar mensajes vía PHTTP [23:44] <jrand0m> el código está en i2p/code/apps/phttprelay/ para cualquiera con experiencia en servlets que quiera trastear con una app pequeña [23:45] <jrand0m> (también debería funcionar de forma transparente con https así como con http en claro) [23:45] <jrand0m> Documentaré el protocolo PHTTP muy pronto. :) [23:45] *** Cierre de sesión: mihi (Tiempo de espera de ping agotado) [23:45] <jrand0m> bien, eso es todo para el punto 3) phttprelay [23:45] <jrand0m> 4) i2ptunnel [23:46] <jrand0m> ya hemos discutido un montón de cosas. a menos que mihi (o alguien más) tenga algo más sobre esto, podemos pasar al 5) [23:46] *** wilde (~anon@anon.iip) se ha unido al canal #iip-dev [23:46] <jrand0m> hola wilde [23:47] <jrand0m> bien. dicho eso, punto 5 :) [23:47] <jrand0m> 5) instalación [23:48] <jrand0m> para sacar la 0.2 y lo que venga, estoy pensando en unos scripts de ant. [23:48] <jrand0m> ¿o deberíamos usar otro sistema de instalación de código abierto? [23:48] <jrand0m> ¿alguien tiene experiencias/opiniones sobre esto? [23:49] <Dellammo> hmm [23:50] <jrand0m> ant tiene la ventaja de estar unificado con el sistema de build, ser independiente de la plataforma y poder funcionar sin interfaz (headless). [23:50] <wilde> hola [23:50] <jrand0m> pero requiere ant (que requiere Java). y no tiene GUI [23:51] <Dellammo> se me ocurren muchos programas de instalación para Windows... aunque no sé cuántos son GPL [23:51] <jrand0m> sí, tengo una instalación con licencia de InstallAnywhere Enterprise, pero es mala para el software libre [23:51] <jrand0m> NSIS es de código abierto, pero tiene sus matices. [23:51] <dm> pregunta tonta: ¿ant viene incluido en Java? [23:52] <jrand0m> no. [23:52] <jrand0m> oh, aunque PODRÍAMOS distribuir un ant compilado con GCJ [23:52] <dm> vale, entonces debió venir con Eclipse. [23:52] <jrand0m> (compilado a código nativo) [23:52] <jrand0m> definitivamente, dm. [23:52] <jrand0m> apache hace ant (ant.apache.org) y tiene licencia Apache. [23:52] <jrand0m> oh, qué asco. [23:52] * jrand0m acaba de leer la frase que escribió) [23:53] <jrand0m> la gpl no es compatible con la apl, según la FSF [23:53] <jrand0m> probablemente no podamos distribuir ant. [23:53] <dm> ¿no podemos simplemente usar un script? ¿qué hay que hacer para instalarlo? [23:53] <jrand0m> pero podemos usarlo. [23:53] <jrand0m> no mucho, la verdad. un script está bien. [23:53] <jrand0m> pero, ¿queremos un .bat y un .sh, etc.? [23:54] *** shardy (~shardy@anon.iip) se ha unido al canal #iip-dev [23:54] <dm> ¿qué implica una instalación, un par de preguntas? [23:54] <jrand0m> escribir un instalador en Java para hacerlo multiplataforma es excesivo, así que idealmente deberíamos usar un framework de instalación existente [23:54] <jrand0m> sí, unas pocas preguntas [23:54] <jrand0m> los objetivos de instalación que preveo: [23:54] <Dellammo> ¿conseguimos un logo nuevo y llamativo? ¿quién está trabajando en eso? [23:54] <jrand0m> install-router [23:55] <jrand0m> install-www-tunnel, install-www-proxy, install-sdk, install-cvs-tunnel, update-seednodes [23:55] <moi> ¿por qué no usar InstallAnywhere? si el código es abierto, eso es lo que importa [23:55] * jrand0m cree que TÚ eres Dellammo :) [23:55] <jrand0m> InstallAnywhere no es de código abierto. [23:55] * Dellammo se pone a trabajar [23:56] <dm> un script probablemente sería suficiente en este punto, pero supongo que mejor pensar a futuro. [23:56] <jrand0m> (son unos 4k euros por puesto) [23:56] <jrand0m> bien. así que para mañana, probablemente solo escriba scripts de ant, pero necesitamos investigar un sistema [23:56] *** Cierre de sesión: wilde (Tiempo de espera de ping agotado) [23:56] <jrand0m> así que si alguien puede ayudar con eso, se agradecería :) [23:57] <dm> ah ok, pensaba en scripts de shell. [23:57] <moi> Algunos de los gestores de paquetes podrían hacer eso en las instalaciones de Linux [23:57] *** wilde (~anon@anon.iip) se ha unido al canal #iip-dev [23:57] <jrand0m> gestionar instaladores distintos para diferentes plataformas es un PITA (un dolor de cabeza) [23:59] <dm> ¿instalador en Java? ¿Por qué es un PITA? [23:59] <jrand0m> un instalador en Java estaría genial [23:59] <mihi-backup> dolor en el c**o [23:59] <mihi-backup> ups, perdón... [23:59] <dm> system.out.println("Please enter where you would like to install I2P") ;) [23:59] <mihi-backup> s/tln/t; s/P"/P: "/ [23:59] <mihi-backup> s/sys/Sys/ [00:00] <jrand0m> escribir un instalador personalizado en Java es posible, pero se prefiere usar un framework existente. ¡pero si te ofreces a escribir un instalador personalizado, te apoyo! [00:00] <dm> mihi está teniendo una convulsión epiléptica. [00:00] * mihi-backup abofetea a dm un poco con una gran trucha [00:00] <dm> Te diré algo... [00:01] <dm> Si en algún momento tienes tiempo para escribir los pasos exactos necesarios en una instalación, escribiré un instalador en Java. [00:01] <mihi-backup> dm: lee el script de ant ;) [00:01] <jrand0m> de acuerdo, dm. cuando haga que lo de ant funcione lo documentaré para ti [00:01] <dm> me parece bien, veremos si puedo entender el script de ant cuando salga. [00:02] *** Cierre de sesión: wilde (Tiempo de espera de ping agotado) [00:02] <Dellammo> jrand0m, i2p I2P i^2p o I^2P ? [00:02] * jrand0m tiene unos garabatos con una I mayúscula, un 2 y una P mayúscula todos superpuestos... [00:03] <Dellammo> hmm [00:03] *** wilde (~anon@anon.iip) se ha unido al canal #iip-dev [00:03] *** mihi (~mihi@anon.iip) se ha unido al canal #iip-dev [00:03] <jrand0m> bien, ese fue el 5) instalación [00:03] <jrand0m> 6) solicitud de funcionalidad para iip [00:04] <jrand0m> alguien vino por aquí con una solicitud de robo automático de nick [00:04] <jrand0m> básicamente, si alguien ha registrado un nick, nadie puede quedarse con ese nick a menos que esté identificado [00:04] <jrand0m> nop u otra persona que haya hecho dev de iip: ¿opiniones? [00:04] * jrand0m piensa que sería una gran funcionalidad [00:05] * Dellammo dibuja un ojo illuminati con un símbolo de prohibido encima, como el de no fumar [00:05] <jrand0m> je [00:05] <dm> Quizá haga también un logo de I2P... para la parte GUI de mi instalador ;) [00:05] *** Cierre de sesión: wilde ((null)) [00:05] <Dellammo> hagámoslos todos, así no nos quedamos con un logo cutre [00:05] <mihi> jrand0m: pregunta a mids: él mantiene trent. [00:06] <mihi> el código fuente de trent está en cvs, por cierto [00:06] <Dellammo> el logo es la parte más importante de cualquier actividad [00:06] <jrand0m> definitivamente, Dellammo. [00:06] * dm desempolva Corel Draw... [00:06] <dm> tío, me encanta Corel Draw. [00:07] <jrand0m> bien, eso es todo para el 6) [00:07] <jrand0m> 7) ??? [00:07] <jrand0m> ¿alguna pregunta/opinión/frisbees/uñas de los pies? [00:07] <dm> Pensamiento: espero que funcione. [00:08] <jrand0m> je [00:08] * jrand0m también. [00:09] <mihi> jrand0m: ¡sigue con el buen trabajo! [00:09] <dm> sí, sigue así. [00:09] <jrand0m> ¿buen trabajo? obviamente no has visto el código ;) [00:09] <dm> Me encanta tu código, excepto por los guiones bajos deslumbrantes. [00:09] <dm> deslumbrantes... sangrantes... etc... [00:09] <jrand0m> je, las variables de instancia tienen _, así que nunca tenemos que hacer this.var = var; [00:10] <jrand0m> bien... 68 minutos... si puedo alargar esto un minuto más... [00:10] <jrand0m> w00t [00:10] * jrand0m cierra la reunión con un *baf*.