Краткое резюме

Присутствовали: jrand0m, dm, Dellammo, mihi, moi, mihi-backup, dm_backup, wilde, shardy

Протокол встречи

[23:01] <jrand0m> повестка [23:01] <jrand0m> 0) приветствие [23:01] <jrand0m> 1) статус 0.2 [23:01] <jrand0m> 2) www‑прокси [23:01] * dm размышляет. [23:02] <dm> о, собрание? [23:02] <jrand0m> 3) phttprelay [23:02] <jrand0m> 4) i2ptunnel [23:02] <jrand0m> 5) установка [23:02] <dm> извините. [23:02] <jrand0m> 6) запрос функции iip [23:02] <jrand0m> 7) ??? [23:02] <jrand0m> 0) приветствие [23:02] <jrand0m> привет. [23:02] <jrand0m> встреча №62? так? [23:02] <Dellammo> привет [23:02] <jrand0m> (не переживай, dm, мы тебя простим) [23:02] <mihi> привет, jrand0m [23:02] <dm> привет, mihi [23:02] * mihi так и думает [23:03] <jrand0m> 1) статус 0.2 [23:03] * у jrand0m в последнее время тяжёлая форма «feature creep», так что для релиза 0.2 осталось написать кода примерно на 30 минут. [23:04] <jrand0m> но зато мы сможем стабильно запускаться и общаться вне зависимости от NAT, файрвола или HTTP‑прокси. [23:04] * dm только что создал I2PSecureRemoteShell 1.0 [23:04] <dm> круто, jr! [23:05] <jrand0m> всё работает; осталось только делать протухание неиспользуемых записей базы данных через N минут (по умолчанию, вероятно, 5) [23:05] <jrand0m> связь через NAT/файрвол/HTTP‑прокси обеспечивает транспорт PHTTP. Он медленный, но надёжный. [23:05] <dm> как это работает? какие порты он использует? [23:06] <jrand0m> он отправляет сообщение на доступный PHTTP relay, который его сохраняет, а затем получатель опрашивает на сообщения каждые N секунд [23:06] <jrand0m> по этой части можно ОЧЕНЬ многое настроить и улучшить — это пункт 3 повестки :) [23:06] <dm> P означает? [23:06] <jrand0m> Polling HTTP (HTTP с опросом) [23:06] <dm> ок, спасибо. [23:07] <jrand0m> после собрания я также обновлю страницу «kludges» на вики, чтобы отметить странности [23:07] <jrand0m> (например, пока не обрабатываем смену lease во время общения) [23:08] <jrand0m> другая тема для обсуждения — пункт 5 повестки: установка. То есть как нам обрабатывать установку router/sdk/tunnel/и т. п. [23:08] <jrand0m> ок, с пунктом «статус 0.2» всё [23:08] <jrand0m> 2) www‑прокси. [23:09] <jrand0m> у moi была очень классная идея для просмотра www‑сайтов внутри I2P. [23:09] <jrand0m> хочешь объяснить, что к чему, moi? [23:09] * jrand0m направляет на тебя свет софитов *** moi is ~someone@anon.iip (someone) *** на каналах: #freenet #anonymous #iip #iip-dev *** в irc через сервер anon.iip (Official IIP ) *** moi бездействует 9 минут, зашёл Thu Jan 01 01:00:00 1970 [23:10] <moi> ну [23:10] <moi> я просто модифицирую HTTP‑прокси и использую tunnel mihi [23:10] <moi> так что вы сможете заходить на (Link: http://i2p/BASE64KEYHERE)http://i2p/BASE64KEYHERE [23:10] <moi> в перспективе там будет и сервер имён— [23:11] <dm> круто [23:11] *** Signoff: mihi (Ping timeout) [23:11] <moi> нужно вставить первый длинный ключ, но после этого, думаю, технически вы сможете переходить по ссылкам [23:11] <Dellammo> то есть внутренняя веб‑страница или страница вне I2P? [23:11] <dm> i2p резолвится в localhost? [23:11] <moi> то есть кто‑то мог бы поднять в I2P «Google» и идти оттуда... может быть [23:12] <mihi-backup> !thwap dm. [23:12] <mihi-backup> прокси... [23:12] <jrand0m> для безопасности прокси должен отдавать 404 для всех хостов, кроме (Link: http://i2p/)http://i2p/ [23:12] <dm> ой! [23:12] <moi> хорошее замечание [23:12] <dm> упустил этот момент [23:12] <mihi-backup> хотя простой сервлет тоже был бы неплох [23:12] <jrand0m> хмм? [23:13] *** mihi (~mihi@anon.iip) присоединился к каналу #iip-dev [23:13] <jrand0m> хмм, может быть проблема. [23:13] <jrand0m> это будет использовать HTTP 1.0 или 1.1? [23:14] <mihi> если сервер требует заголовок Host:? [23:14] <jrand0m> [то есть, будет ли у него заголовок Host:?] [23:14] <jrand0m> именно [23:14] * mihi мечтает [23:14] <moi> интересно, может ли прокси обнулять это поле [23:14] <jrand0m> если исходящий tunnel сервера всегда на одном и том же хосте, это нормально [23:14] <jrand0m> можно поставить в прокси Host: на 127.0.0.1 [23:15] *** dm_backup (~as@anon.iip) присоединился к каналу #iip-dev [23:15] <jrand0m> но тогда нужно запускать tunnel на том же хосте, что и сервер. Не велика проблема, так как это не для обычного веб‑сёрфинга [23:15] <jrand0m> верно? [23:15] *** Signoff: dm (Ping timeout) [23:16] * moi ещё не думал об этом так глубоко [23:16] <mihi> если вы запускаете сервер на своей машине, можно ещё сопоставить i2p с localhost или что‑то вроде того. [23:16] <dm_backup> то есть людям теперь нужно запускать веб‑серверы? [23:16] <jrand0m> dm_backup> это только для тех, кто хочет. [23:16] *** dm_backup теперь известен как dm [23:16] <Dellammo> как мне [23:16] <dm> да, я про эту штуку (Link: http://i2p)http://i2p [23:17] <mihi> если хотите предоставлять контент, да. [23:17] <mihi> но ведь и в старом добром www, чтобы давать контент, тоже надо запускать сервер. [23:18] <Dellammo> почему? [23:18] <dm> Хммм, может, мне сделать P2P‑приложение для I2P. [23:18] <jrand0m> приложение для обмена файлами поверх I2P было бы круто. [23:18] <dm> да, извините, файлообмен. [23:19] <moi> думаю, можно было бы кому‑то запустить сервер OpenNap в связке с i2ptunnel [23:19] <jrand0m> да. [23:19] <jrand0m> (хотя нативный для I2P p2p работал бы быстрее) [23:19] <mihi> но со скачиваниями будет сложно. [23:20] <mihi> нельзя попасть на правильный хост, так как все они — localhost ;) [23:20] <dm> Давайте сперва дождёмся, чтобы PING заработал поверх i2ptunnel. [23:20] * Dellammo в замешательстве: мы говорим о прокси, который не i2ptunnel, и который позволяет заходить на веб‑сервера внутри сети I2P, набрав '(Link: http://i2p/')http://i2p/' ? [23:20] <jrand0m> может, просто простой FTP‑клиент, спроектированный для работы поверх I2P? [23:20] <dm> (не буквально ping) [23:20] <mihi> jrand0m: ftp нужны 2 порта... [23:20] <jrand0m> спроектированный для работы поверх I2P. [23:21] <jrand0m> общее приложение для передачи файлов, не конкретно протокол FTP [23:21] <mihi> тогда это не ftp. [23:21] <mihi> ATalk ;) [23:21] <jrand0m> (с выгодой от больших размеров сообщений) [23:21] <dm> битва мудрецов! [23:21] <jrand0m> хех [23:21] <moi> Dellammo: сейчас нужно создавать отдельный i2ptunnel для каждого сайта/Destination, который вы хотите просматривать. Мы думаем использовать прокси‑сервер, который будет динамически строить i2ptunnel для каждого сайта. [23:22] <jrand0m> (что‑то вроде того) [23:22] <jrand0m> конкретно i2ptunnel использовать не захочешь. [23:22] <jrand0m> нужно будет использовать протокол i2ptunnel и отправлять сообщения напрямую, а не через TCP/IP‑сокеты. [23:23] <jrand0m> mihi> есть идеи, сколько времени займёт выделить функциональность протокола из i2ptunnel, чтобы другие приложения могли отправлять данные в i2p tunnel? *** mihi is mihi@anon.iip (mihi) *** на каналах: #iip-dev #iip #headlines #german #freenet-opn #freenet #fredisdead #frazaa @#fiw #anonymous *** в irc через сервер anon.iip (Official IIP ) *** mihi бездействует 3 минуты, зашёл Thu Jan 01 01:00:00 1970 *** mihi-backup is ~mihi@anon.iip (mihi) *** на канале: #iip-dev *** в irc через сервер anon.iip (Official IIP ) *** mihi-backup бездействует 12 минут, зашёл Thu Jan 01 01:00:00 1970 [23:25] <mihi> есть ли там вообще какая‑то существенная логика протокола? I2PTunnelRunner можно использовать как есть. [23:25] <mihi> просто нужно подправить клиентский класс под свои нужды. [23:25] <jrand0m> хмм, не совсем — i2ptunnelRunner использует сокет [23:26] <jrand0m> это простое Java‑приложение, которое хочет сгенерировать сообщение ("HTTP GET /\n\n") и отправить его в исходящий I2PTunnel [23:27] <jrand0m> мы не хотим перенаправлять клиент, обратившийся к прокси, на новый порт для подключения к только что поднятому I2PTunnel (так как не будет способа вернуться для ссылок с этого сайта) [23:28] <jrand0m> но, возможно, переключить I2PTunnelRunner на использование InputStream (он ведь и так использует только socket.getInputStream) будет легко... [23:28] <jrand0m> но тогда нам всё равно нужна сторона, которая слушает [23:28] *** Signoff: mihi (Ping timeout) [23:28] <jrand0m> блин [23:28] * jrand0m надеется, что backup сейчас не отвалится по ping... [23:28] <dm> backup тоже сейчас упадёт, смотрите! [23:29] <mihi-backup> ;) [23:29] <jrand0m> w00t [23:29] <mihi-backup> [23:25] <jrand0m> хмм, не совсем — i2ptunnelRunner использует сокет [23:29] <mihi-backup> [23:25] <mihi> упс, точно. и вы хотите сделать это полностью без сокетов? [23:29] <mihi-backup> [23:25] <mihi> тогда от i2ptunnel там почти ничего не останется. большинство кода — для работы с сокетами. [23:29] <mihi-backup> [23:26] <mihi> лучше придерживаться протокола и реализовать самому (собирать сообщения статическим методом в i2ptunnel.java) [23:29] <mihi-backup> [23:28] <mihi> для http не нужно так много потоков. Просто читайте входящее сообщение до двойного перевода строки, а затем отправляйте свою штуку. [23:30] <jrand0m> а, ок. спасибо [23:30] <jrand0m> moi> tu sabes? [23:30] <mihi-backup> насчёт замены I2PTunnel на входной поток — зачем? после разбора запроса вы больше ничего на нём не получите. [23:31] * moi думает [23:31] <dm> toi думает [23:31] <mihi-backup> просто забудьте про tunnelrunner. ;) [23:31] <jrand0m> верно, я просто думал оставить общий код для I2PTunnel и http‑прокси: I2PTunnel использовал бы socket.getInputStream(), а http‑прокси — new ByteArrayInputStream("GET / \n\n".getBytes()) [23:31] *** mihi (mihi@anon.iip) присоединился к каналу #iip-dev [23:32] * moi нужно будет позже подробно это разобрать [23:32] <mihi-backup> но это заставит runner послать "Connection closed" сразу после отправки строки. [23:32] <mihi-backup> поскольку поток завершится. [23:32] <jrand0m> да, что нормально для HTTP [23:33] <mihi-backup> я же сказал: забудьте про runner ;) [23:33] <jrand0m> 'k [23:33] <mihi-backup> jrand0m: нет. соединение закрывается, когда пришёл ответ, а не когда вопрос отправлен. [23:33] <jrand0m> а, точно [23:33] <jrand0m> ;) [23:36] <jrand0m> круто, moi, мы можем проработать это позже. [23:36] <jrand0m> ок, это был пункт 2 повестки. теперь 3) [23:36] <moi> ок [23:37] <jrand0m> 3) phttprelay [23:37] <jrand0m> phttp relay — это набор сервлетов, упакованных в файл .war [23:38] <jrand0m> это работает из коробки на Windows / Sun JVM, но мне пришлось хакнуть Jetty, чтобы запустить с kaffe [23:38] <mihi> делайте .peace, а не .war [23:39] * jrand0m стонет [23:39] <dm> можно запускать .war‑файлы без сервера J2ee? [23:39] <dm> хорошо знать. [23:39] <jrand0m> .war‑файлы запускаются в любом контейнере сервлетов — tomcat, apache с mod_jk, jetty и т. п. [23:40] <jrand0m> нам понадобится, чтобы некоторые люди запускали их на машинах с общедоступными IP‑адресами, но они нужны только тем, у кого нет общедоступных адресов (как у меня) [23:41] <mihi> какие порты нужно пробрасывать, если хочешь проходить через NAT без этого? [23:41] <jrand0m> реализация тоже очень примитивная — нужны ограничения: для скольких router он ретранслирует, сколько сообщений ставит в очередь, через сколько времени истекает таймаут и т. д. [23:41] <jrand0m> только TCP‑порт I2NP [23:41] <jrand0m> (или UDP‑порт I2NP) [23:41] * mihi не знает, позволяет ли его NAT проброс UDP [23:42] * jrand0m тоже не знает, позволяет ли NAT mihi [23:43] <jrand0m> сейчас, например, мой ноутбук доступен только через PHTTP, а router моего сервера — через PHTTP, TCP и UDP. если мой ноутбук устанавливает соединение с router сервера по TCP, он может отправлять сообщения по TCP. но если ноутбук сначала этого не сделает, сервер должен отправлять сообщения через PHTTP [23:44] <jrand0m> код лежит в i2p/code/apps/phttprelay/ — для всех, у кого есть опыт с сервлетами и кто хочет похакать небольшое приложение [23:45] <jrand0m> (это также должно прозрачно работать с https, как и с обычным http) [23:45] <jrand0m> я задокументирую протокол PHTTP совсем скоро. :) [23:45] *** Signoff: mihi (Ping timeout) [23:45] <jrand0m> ок, всё по пункту 3) phttprelay [23:45] <jrand0m> 4) i2ptunnel [23:46] <jrand0m> мы уже обсудили кучу всего. если у mihi (или у кого‑то ещё) нет ничего добавить, можем перейти к 5) [23:46] *** wilde (~anon@anon.iip) присоединился к каналу #iip-dev [23:46] <jrand0m> hola, wilde [23:47] <jrand0m> ок. итак, пункт 5 :) [23:47] <jrand0m> 5) установка [23:48] <jrand0m> чтобы выпустить 0.2 и дальше, я думаю о паре скриптов ant. [23:48] <jrand0m> или нам использовать другую open‑source систему установки? [23:48] <jrand0m> у кого‑нибудь есть опыт/мысли по этому поводу? [23:49] <Dellammo> хмм [23:50] <jrand0m> у ant есть плюсы: он единый с системой сборки, кроссплатформенный и умеет работать без GUI. [23:50] <wilde> эй [23:50] <jrand0m> но для него нужен ant (который требует Java). и у него нет GUI [23:51] <Dellammo> могу вспомнить много инсталляторов для Windows... не знаю, сколько из них под GPL [23:51] <jrand0m> да, у меня есть лицензия InstallAnywhere Enterprise, но это плохо для open source [23:51] <jrand0m> NSIS — open source, но со своими нюансами. [23:51] <dm> глупый вопрос: ant входит в состав Java? [23:52] <jrand0m> нет. [23:52] <jrand0m> о, хотя МЫ МОГЛИ БЫ распространять GCJ'ed ant [23:52] <dm> понятно, значит он пришёл вместе с Eclipse. [23:52] <jrand0m> (скомпилированный в native code) [23:52] <jrand0m> точно, dm. [23:52] <jrand0m> ant делает Apache (ant.apache.org), и он под лицензией apache. [23:52] <jrand0m> о, фу. [23:52] * jrand0m только что прочитал предложение, которое написал) [23:53] <jrand0m> GPL, по словам FSF, не дружит с APL [23:53] <jrand0m> скорее всего, мы не можем распространять ant. [23:53] <dm> а нельзя просто скрипт? что нужно сделать для установки? [23:53] <jrand0m> но мы можем его использовать. [23:53] <jrand0m> почти ничего. скрипт подойдёт. [23:53] <jrand0m> но нам тогда нужны .bat и .sh и т. п. [23:54] *** shardy (~shardy@anon.iip) присоединился к каналу #iip-dev [23:54] <dm> что включает установка — пару вопросов? [23:54] <jrand0m> писать Java‑инсталлятор ради кроссплатформенности — перебор, так что идеальнее использовать существующий install‑framework [23:54] <jrand0m> да, несколько вопросов [23:54] <jrand0m> цели установки, которые я вижу: [23:54] <Dellammo> а у нас будет яркий новый логотип? кто над ним работает? [23:54] <jrand0m> install-router [23:55] <jrand0m> install-www-tunnel, install-www-proxy, install-sdk, install-cvs-tunnel, update-seednodes [23:55] <moi> почему бы не использовать InstallAnywhere? если код открыт, вот что важно [23:55] * jrand0m думает, что ЭТО ты, Dellammo :) [23:55] <jrand0m> InstallAnywhere — не open source. [23:55] * Dellammo принимается за работу [23:56] <dm> скрипта, вероятно, сейчас достаточно, но, думаю, стоит смотреть наперёд. [23:56] <jrand0m> (это около 4 тыс. евро за место) [23:56] <jrand0m> верно. так что к завтрашнему дню я, вероятно, просто напишу скрипты ant, но нам нужно посмотреть систему [23:56] *** Signoff: wilde (Ping timeout) [23:56] <jrand0m> так что если кто‑то может помочь с этим, будем признательны :) [23:57] <dm> а, понятно, я думал о shell‑скриптах. [23:57] <moi> некоторые менеджеры пакетов могли бы это делать на установках Linux [23:57] *** wilde (~anon@anon.iip) присоединился к каналу #iip-dev [23:57] <jrand0m> управлять разными инсталляторами для разных платформ — это PITA [23:59] <dm> java‑инсталлятор? почему это PITA? [23:59] <jrand0m> java‑инсталлятор был бы отличным [23:59] <mihi-backup> pain in the a**e [23:59] <mihi-backup> ой, извините... [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> написать кастомный инсталлятор на Java возможно, но предпочтительнее использовать существующий фреймворк. но если ты добровольно возьмёшься написать свой инсталлятор — я за! [00:00] <dm> у mihi эпилептический припадок. [00:00] * mihi-backup слегка лупит dm большой форелью [00:00] <dm> знаешь что... [00:01] <dm> если у тебя найдётся время расписать точные шаги установки, я напишу java‑инсталлятор. [00:01] <mihi-backup> dm: прочитай ant‑скрипт ;) [00:01] <jrand0m> базар, dm. как только заставлю ant‑штуку работать, задокументирую это для тебя [00:01] <dm> хорошо, посмотрим, смогу ли я разобраться с ant‑скриптом, когда он появится. [00:02] *** Signoff: wilde (Ping timeout) [00:02] <Dellammo> jrand0m, i2p I2P i^2p или I^2P ? [00:02] * у jrand0m есть каракули: заглавная I, цифра 2 и заглавная P, наложенные друг на друга... [00:03] <Dellammo> хмм [00:03] *** wilde (~anon@anon.iip) присоединился к каналу #iip-dev [00:03] *** mihi (~mihi@anon.iip) присоединился к каналу #iip-dev [00:03] <jrand0m> ок, это 5) установка [00:03] <jrand0m> 6) запрос функции iip [00:04] <jrand0m> кто‑то пришёл сюда с запросом на авто‑захват ника [00:04] <jrand0m> по сути: если кто‑то зарегистрировал ник, никто не может оставаться с этим ником, если он не идентифицирован [00:04] <jrand0m> nop или кто‑нибудь, кто занимался разработкой iip — мысли? [00:04] * jrand0m думает, что это была бы отличная фича [00:05] * Dellammo рисует глаз иллюминатов с перечёркивающим знаком «no», как на табличке «не курить» [00:05] <jrand0m> хех [00:05] <dm> может, я ещё сделаю логотип I2P... для GUI‑части моего инсталлятора ;) [00:05] *** Signoff: wilde ((null)) [00:05] <Dellammo> давайте все сделаем по логотипу, чтобы мы не застряли с отстойным логотипом [00:05] <mihi> jrand0m: спроси mids — он сопровождает trent. [00:06] <mihi> кстати, исходники trent в CVS [00:06] <Dellammo> логотип — самая важная часть любой деятельности [00:06] <jrand0m> определённо, Dellammo. [00:06] * dm сдувает пыль с Corel Draw... [00:06] <dm> обожаю Corel Draw. [00:07] <jrand0m> ок, всё по 6) [00:07] <jrand0m> 7) ??? [00:07] <jrand0m> какие‑нибудь вопросы/мысли/фрисби/ногти? [00:07] <dm> Мысль: надеюсь, это заработает. [00:08] <jrand0m> хех [00:08] * jrand0m тоже. [00:09] <mihi> jrand0m: продолжай в том же духе! [00:09] <dm> да, продолжай. [00:09] <jrand0m> хорошая работа? ты явно не видел код ;) [00:09] <dm> обожаю твой код, за исключением «слепящих» подчёркиваний. [00:09] <dm> blinding... bleeding... и т. п.. [00:09] <jrand0m> хех, у переменных экземпляра есть _, так что нам никогда не нужно писать this.var = var; [00:10] <jrand0m> ок... 68 минут... если смогу протянуть ещё минуту... [00:10] <jrand0m> w00t [00:10] * jrand0m *baf* закрывает встречу.