Tóm tắt nhanh
Có mặt: jrand0m, dm, Dellammo, mihi, moi, mihi-backup, dm_backup, wilde, shardy
Nhật ký cuộc họp
[23:01] <jrand0m> chương trình nghị sự [23:01] <jrand0m> 0) chào mừng [23:01] <jrand0m> 1) tình trạng 0.2 [23:01] <jrand0m> 2) www proxy [23:01] * dm trầm ngâm. [23:02] <dm> ồ, họp à? [23:02] <jrand0m> 3) phttprelay [23:02] <jrand0m> 4) i2ptunnel [23:02] <jrand0m> 5) cài đặt [23:02] <dm> xin lỗi. [23:02] <jrand0m> 6) yêu cầu tính năng iip [23:02] <jrand0m> 7) ??? [23:02] <jrand0m> 0) chào mừng [23:02] <jrand0m> chào mọi người. [23:02] <jrand0m> họp thứ 62? đúng không? [23:02] <Dellammo> chào [23:02] <jrand0m> (đừng lo dm, bọn tớ tha lỗi cho cậu) [23:02] <mihi> chào jrand0m [23:02] <dm> chào mihi [23:02] * mihi cũng nghĩ vậy [23:03] <jrand0m> 1) tình trạng 0.2 [23:03] * jrand0m dạo này bị “feature creep” nặng, nên bản phát hành 0.2 vẫn còn khoảng 30 phút code nữa mới xong. [23:04] <jrand0m> nhưng rồi chúng ta sẽ có thể chạy và liên lạc ổn định bất kể NAT, firewall hay HTTP proxy. [23:04] * dm vừa tạo I2PSecureRemoteShell 1.0 [23:04] <dm> hay đó jr! [23:05] <jrand0m> mọi thứ đã hoạt động, việc duy nhất còn lại là cho hết hạn các mục cơ sở dữ liệu không dùng sau N phút (có lẽ mặc định là 5) [23:05] <jrand0m> việc liên lạc xuyên NAT/firewall/HTTP proxy dùng PHTTP transport. Nó chậm, nhưng đáng tin cậy. [23:05] <dm> nó hoạt động thế nào? dùng cổng nào? [23:06] <jrand0m> nó gửi thông điệp tới một PHTTP relay có thể truy cập được, relay đó lưu thông điệp, và bên nhận sẽ poll để lấy thông điệp mỗi N giây [23:06] <jrand0m> còn RẤT nhiều thứ có thể tinh chỉnh và cải thiện ở phía đó, đó là mục 3 trong nghị sự :) [23:06] <dm> P là viết tắt của gì? [23:06] <jrand0m> Polling HTTP [23:06] <dm> ok cảm ơn. [23:07] <jrand0m> Tôi sẽ cập nhật trang “kludges” trên wiki sau buổi họp, để ghi chú những thứ còn kỳ cục [23:07] <jrand0m> (ví dụ như chưa xử lý việc thay đổi lease trong lúc liên lạc) [23:08] <jrand0m> điểm khác cần bàn là mục 5 - cài đặt. tức là chúng ta nên xử lý việc cài đặt router/sdk/tunnel/etc thế nào [23:08] <jrand0m> ok, vậy là hết phần tình trạng 0.2 [23:08] <jrand0m> 2) www proxy. [23:09] <jrand0m> moi có một ý tưởng rất hay để duyệt các site www trong I2P. [23:09] <jrand0m> muốn giải thích không moi? [23:09] * jrand0m rọi đèn sân khấu vào bạn *** moi is ~someone@anon.iip (someone) *** on channels: #freenet #anonymous #iip #iip-dev *** on irc via server anon.iip (Official IIP ) *** moi đã không hoạt động 9 phút, đăng nhập lúc Thu Jan 01 01:00:00 1970 [23:10] <moi> ừm [23:10] <moi> mình chỉ đang chỉnh sửa một HTTP proxy và dùng tunnel của mihi [23:10] <moi> để bạn có thể vào (Link: http://i2p/BASE64KEYHERE)http://i2p/BASE64KEYHERE [23:10] <moi> về sau thì naming server sẽ ở đó-- [23:11] <dm> hay quá [23:11] *** Signoff: mihi (Ping timeout) [23:11] <moi> bạn phải dán cái khóa dài đầu tiên, nhưng sau đó về mặt kỹ thuật bạn có thể bấm theo liên kết được, mình nghĩ vậy [23:11] <Dellammo> vậy là một trang web nội bộ hay trang bên ngoài i2p? [23:11] <dm> i2p resolve về localhost à? [23:11] <moi> ai đó có thể dựng một Google trong i2p, và đi tiếp từ đó... có lẽ [23:12] <mihi-backup> !thwap dm. [23:12] <mihi-backup> một proxy... [23:12] <jrand0m> vì lý do bảo mật, proxy nên trả 404 cho tất cả host khác ngoài (Link: http://i2p/)http://i2p/ [23:12] <dm> úi! [23:12] <moi> ý hay [23:12] <dm> bỏ qua mất phần đó [23:12] <mihi-backup> dù một servlet đơn giản cũng sẽ hay [23:12] <jrand0m> hmm? [23:13] *** mihi (~mihi@anon.iip) đã vào kênh #iip-dev [23:13] <jrand0m> hmm, có thể có vấn đề. [23:13] <jrand0m> cái này sẽ dùng HTTP 1.0 hay 1.1? [23:14] <mihi> nếu server yêu cầu một header Host:? [23:14] <jrand0m> [tức là, nó có header Host: không?] [23:14] <jrand0m> chính xác [23:14] * mihi ước gì có cái gì đó [23:14] <moi> Mình tự hỏi liệu proxy có thể xóa cái đó đi không [23:14] <jrand0m> nếu outbound tunnel của server luôn ở cùng host, thì ổn [23:14] <jrand0m> bạn có thể đặt Host: của proxy thành 127.0.0.1 [23:15] *** dm_backup (~as@anon.iip) đã vào kênh #iip-dev [23:15] <jrand0m> nhưng khi đó bạn phải chạy tunnel trên cùng host với server. không phải vấn đề lớn, vì cái này không dành cho duyệt web thông thường [23:15] <jrand0m> đúng chứ? [23:15] *** Signoff: dm (Ping timeout) [23:16] * moi chưa nghĩ sâu đến vậy [23:16] <mihi> nếu bạn chạy server trên máy của mình bạn cũng có thể alias i2p về localhost hay gì đó. [23:16] <dm_backup> vậy mọi người giờ phải chạy web server à? [23:16] <jrand0m> dm_backup> chỉ dành cho ai muốn thôi. [23:16] *** dm_backup giờ được gọi là dm [23:16] <Dellammo> như tớ chẳng hạn [23:16] <dm> ừ, ý tớ là cho cái (Link: http://i2p)http://i2p này [23:17] <mihi> nếu bạn muốn cung cấp nội dung, đúng vậy. [23:17] <mihi> nhưng bạn cũng phải chạy web server để cung cấp nội dung trên www thông thường mà. [23:18] <Dellammo> tại sao? [23:18] <dm> Hmmm, có lẽ tớ nên xây một ứng dụng P2P cho I2P. [23:18] <jrand0m> một ứng dụng chia sẻ tệp qua i2p thì sẽ tuyệt. [23:18] <dm> đúng rồi, chia sẻ tệp. [23:19] <moi> Mình nghĩ ai đó có thể chạy OpenNap server kết hợp với i2ptunnel [23:19] <jrand0m> đúng. [23:19] <jrand0m> (dù một p2p thuần i2p sẽ có hiệu năng tốt hơn) [23:19] <mihi> nhưng việc tải xuống sẽ khó. [23:20] <mihi> không có cách nào tới đúng host vì tất cả đều là localhost ;) [23:20] <dm> Hãy đợi tới khi thấy PING chạy qua i2ptunnel trước đã. [23:20] * Dellammo bối rối chúng ta đang nói về một proxy không phải i2ptunnel, cho phép bạn truy cập webserver nội bộ mạng i2p bằng cách gõ '(Link: http://i2p/')http://i2p/' à? [23:20] <jrand0m> có lẽ chỉ cần một FTP client đơn giản thiết kế để chạy qua i2p? [23:20] <dm> (không phải ping theo nghĩa đen) [23:20] <mihi> jrand0m: ftp cần 2 cổng... [23:20] <jrand0m> được thiết kế để chạy qua i2p. [23:21] <jrand0m> một ứng dụng truyền tệp tổng quát, không phải giao thức FTP cụ thể [23:21] <mihi> vậy thì không phải ftp. [23:21] <mihi> ATalk ;) [23:21] <jrand0m> (tận dụng kích thước thông điệp lớn hơn) [23:21] <dm> trận đấu giữa các bậc hiền nhân! [23:21] <jrand0m> heh [23:21] <moi> Dellammo: hiện giờ bạn phải tạo một i2ptunnel cho mỗi website/Destination bạn muốn duyệt. Bọn mình đang nghĩ dùng một proxy server sẽ dựng i2ptunnel động cho từng site. [23:22] <jrand0m> (đại khái vậy) [23:22] <jrand0m> bạn sẽ không muốn dùng một i2ptunnel, cụ thể là vậy. [23:22] <jrand0m> bạn sẽ muốn dùng i2ptunnel protocol, và gửi thông điệp trực tiếp, không qua socket TCP/IP. [23:23] <jrand0m> mihi> ước lượng mất bao lâu để tách phần giao thức ra khỏi i2ptunnel để app khác có thể gửi dữ liệu tới một i2p tunnel? *** mihi is mihi@anon.iip (mihi) *** on channels: #iip-dev #iip #headlines #german #freenet-opn #freenet #fredisdead #frazaa @#fiw #anonymous *** on irc via server anon.iip (Official IIP ) *** mihi đã không hoạt động 3 phút, đăng nhập lúc Thu Jan 01 01:00:00 1970 *** mihi-backup is ~mihi@anon.iip (mihi) *** on channels: #iip-dev *** on irc via server anon.iip (Official IIP ) *** mihi-backup đã không hoạt động 12 phút, đăng nhập lúc Thu Jan 01 01:00:00 1970 [23:25] <mihi> có phần chức năng giao thức lớn nào không? I2PTunnelRunner có thể dùng nguyên trạng. [23:25] <mihi> Bạn chỉ cần điều chỉnh lớp client theo nhu cầu. [23:25] <jrand0m> hmm, không hẳn - i2ptunnelRunner dùng một socket [23:26] <jrand0m> đây là một app java thuần muốn tạo một thông điệp ("HTTP GET /\n\n") và gửi nó tới một outbound I2PTunnel [23:27] <jrand0m> ta không muốn chuyển hướng client đang liên hệ với proxy sang một cổng mới để kết nối tới I2PTunnel mới khởi tạo (vì sẽ không có cách nào quay lại cho các link ngoài site đó) [23:28] <jrand0m> nhưng có lẽ chuyển I2PTunnelRunner sang dùng một InputStream (nó chỉ dùng socket.getInputStream) sẽ dễ... [23:28] <jrand0m> nhưng rồi ta vẫn cần phía listen [23:28] *** Signoff: mihi (Ping timeout) [23:28] <jrand0m> d'oh [23:28] * jrand0m hy vọng bản backup không sắp ping out... [23:28] <dm> backup cũng sẽ chết đấy, coi này! [23:29] <mihi-backup> ;) [23:29] <jrand0m> w00t [23:29] <mihi-backup> [23:25] <jrand0m> hmm, không hẳn - i2ptunnelRunner dùng một socket [23:29] <mihi-backup> [23:25] <mihi> ủa, đúng rồi. và bạn muốn làm hoàn toàn không có socket? [23:29] <mihi-backup> [23:25] <mihi> vậy thì không còn nhiều code từ i2ptunnel nữa đâu. phần lớn là để xử lý socket. [23:29] <mihi-backup> [23:26] <mihi> tốt nhất là bám theo giao thức và tự triển khai (xây thông điệp bằng phương thức static trong i2ptunnel.java) [23:29] <mihi-backup> [23:28] <mihi> http sẽ không cần nhiều thread. Chỉ cần chạy một reader trên thông điệp đến cho đến khi gặp double return rồi gửi thứ của bạn đi. [23:30] <jrand0m> à ok. cảm ơn [23:30] <jrand0m> moi> tu sabes? [23:30] <mihi-backup> về việc chuyển I2PTunnel sang input stream. để làm gì? bạn sẽ không nhận được gì trên đó nữa sau khi đã parse request. [23:31] * moi suy nghĩ [23:31] <dm> toi nghĩ [23:31] <mihi-backup> quên tunnelrunner đi là vừa. ;) [23:31] <jrand0m> đúng, tôi chỉ nghĩ để giữ I2PTunnel và http proxy dùng chung code - I2PTunnel sẽ dùng socket.getInputStream(), http proxy sẽ dùng new ByteArrayInputStream("GET / \n\n".getBytes()) [23:31] *** mihi (mihi@anon.iip) đã vào kênh #iip-dev [23:32] * moi sẽ cần xem kỹ chuyện này sau [23:32] <mihi-backup> nhưng như vậy runner sẽ gửi "Connection closed" khi chuỗi được gửi xong. [23:32] <mihi-backup> vì stream kết thúc. [23:32] <jrand0m> đúng, đó là HTTP bình thường [23:33] <mihi-backup> đã bảo quên runner đi mà ;) [23:33] <jrand0m> ok [23:33] <mihi-backup> jrand0m: không. kết nối được đóng khi có câu trả lời, không phải khi câu hỏi đã gửi xong. [23:33] <jrand0m> ồ đúng rồi [23:33] <jrand0m> ;) [23:36] <jrand0m> tốt đấy moi, bọn mình có thể xử lý mấy thứ này sau. [23:36] <jrand0m> ok, đó là mục 2). giờ tới 3) [23:36] <moi> ok [23:37] <jrand0m> 3) phttprelay [23:37] <jrand0m> phttp relay là một tập các servlet gói trong một file .war [23:38] <jrand0m> nó chạy ngay lập tức trên windows / Sun JVM, nhưng tôi đã phải hack jetty để chạy với kaffe [23:38] <mihi> make .peace not .war [23:39] * jrand0m rên rỉ [23:39] <dm> có thể chạy file .war mà không cần J2ee server à? [23:39] <dm> biết thế cũng tốt. [23:39] <jrand0m> file .war chạy trong bất kỳ servlet container nào - tomcat, apache w/ mod_jk, jetty, v.v. [23:40] <jrand0m> ta sẽ muốn vài người chạy những cái này trên máy có địa chỉ IP truy cập công khai, nhưng chúng chỉ cần thiết cho những người không có địa chỉ công khai (như tôi) [23:41] <mihi> cần redirect những cổng nào nếu bạn muốn đi qua nat mà không dùng cái đó? [23:41] <jrand0m> việc triển khai hiện rất thô sơ - nó cần giới hạn về số lượng router nó relay, số lượng thông điệp xếp hàng, thời gian trước khi timeout, v.v. [23:41] <jrand0m> chỉ cổng I2NP TCP [23:41] <jrand0m> (hoặc cổng I2NP UDP) [23:41] * mihi không biết nat của mình có cho forward udp không [23:42] * jrand0m cũng không biết nat của mihi có cho hay không [23:43] <jrand0m> hiện tại, ví dụ, laptop của tôi chỉ có thể truy cập qua PHTTP, và router trên server của tôi có thể truy cập qua PHTTP, TCP, và UDP. nếu laptop của tôi thiết lập một kết nối tới router của server qua TCP, nó có thể gửi thông điệp qua TCP. nhưng nếu laptop của tôi không làm vậy trước, server phải gửi thông điệp qua PHTTP [23:44] <jrand0m> code nằm ở i2p/code/apps/phttprelay/ cho ai có kinh nghiệm với servlet và muốn hack một app nhỏ [23:45] <jrand0m> (nó cũng nên hoạt động trong suốt với https cũng như http thuần) [23:45] <jrand0m> Tôi sẽ viết tài liệu PHTTP protocol sớm thôi. :) [23:45] *** Signoff: mihi (Ping timeout) [23:45] <jrand0m> ok, vậy là hết mục 3) phttprelay [23:45] <jrand0m> 4) i2ptunnel [23:46] <jrand0m> ta đã bàn kha khá rồi. trừ khi mihi (hoặc ai khác) còn gì thêm, ta chuyển sang 5) [23:46] *** wilde (~anon@anon.iip) đã vào kênh #iip-dev [23:46] <jrand0m> hola wilde [23:47] <jrand0m> ok. nói vậy, tới mục 5 :) [23:47] <jrand0m> 5) cài đặt [23:48] <jrand0m> để đưa 0.2 ra mắt, và xa hơn, tôi đang nghĩ đến vài ant scripts. [23:48] <jrand0m> hay ta nên dùng một hệ thống cài đặt mã nguồn mở khác? [23:48] <jrand0m> ai có kinh nghiệm / ý kiến về việc này không? [23:49] <Dellammo> hmm [23:50] <jrand0m> ant có lợi thế là thống nhất với hệ thống build, độc lập nền tảng, và có thể chạy không cần giao diện. [23:50] <wilde> chào [23:50] <jrand0m> nhưng nó yêu cầu ant (mà ant yêu cầu java). và nó không có GUI [23:51] <Dellammo> mình có thể nghĩ ra nhiều chương trình cài đặt cho windows... không biết có bao nhiêu cái theo gpl [23:51] <jrand0m> ừ, tôi có bản quyền InstallAnywhere Enterprise, nhưng nó không hợp với mã nguồn mở [23:51] <jrand0m> NSIS là mã nguồn mở, nhưng có những điểm riêng. [23:51] <dm> câu hỏi ngu: ant có kèm trong java không? [23:52] <jrand0m> không. [23:52] <jrand0m> ồ, dù ta CÓ THỂ phân phối một ant biên dịch bằng GCJ [23:52] <dm> được rồi, chắc là đi kèm eclipse rồi. [23:52] <jrand0m> (biên dịch ra mã máy) [23:52] <jrand0m> chắc chắn là vậy dm. [23:52] <jrand0m> apache làm ant (ant.apache.org) và nó theo giấy phép apache. [23:52] <jrand0m> ồ, chà. [23:52] * jrand0m vừa đọc câu mình gõ) [23:53] <jrand0m> gpl không thân thiện với apl, theo FSF [23:53] <jrand0m> có lẽ ta không thể phân phối ant. [23:53] <dm> ta không thể chỉ dùng script à? cần làm gì để cài đặt? [23:53] <jrand0m> nhưng ta có thể dùng nó. [23:53] <jrand0m> không nhiều lắm. script là ổn. [23:53] <jrand0m> nhưng ta có muốn có .bat và .sh, v.v. [23:54] *** shardy (~shardy@anon.iip) đã vào kênh #iip-dev [23:54] <dm> cài đặt gồm những gì, vài câu hỏi à? [23:54] <jrand0m> viết một installer bằng java để cài đặt đa nền tảng là quá mức cần thiết, nên lý tưởng là dùng một framework cài đặt sẵn có [23:54] <jrand0m> ừ, vài câu hỏi [23:54] <jrand0m> các mục tiêu cài đặt tôi dự đoán: [23:54] <Dellammo> ta có logo mới lòe loẹt không? ai đang làm vậy? [23:54] <jrand0m> install-router [23:55] <jrand0m> install-www-tunnel, install-www-proxy, install-sdk, install-cvs-tunnel, update-seednodes [23:55] <moi> sao không dùng InstallAnywhere? nếu code mở thì điều đó mới quan trọng [23:55] * jrand0m nghĩ NGƯỜI ĐÓ là cậu đấy Dellammo :) [23:55] <jrand0m> InstallAnywhere không phải mã nguồn mở. [23:55] * Dellammo bắt tay vào làm [23:56] <dm> script chắc là đủ ở thời điểm này, nhưng chắc cũng nên nghĩ xa. [23:56] <jrand0m> (nó khoảng 4k euro / ghế) [23:56] <jrand0m> đúng. vậy ngày mai, tôi có lẽ chỉ viết ant scripts, nhưng ta cần xem một hệ thống [23:56] *** Signoff: wilde (Ping timeout) [23:56] <jrand0m> nên ai có thể giúp vụ đó, sẽ rất đáng quý :) [23:57] <dm> à ok, tôi đang nghĩ tới shell scripts. [23:57] <moi> Một số trình quản lý gói có thể làm việc đó trên bản cài đặt Linux [23:57] *** wilde (~anon@anon.iip) đã vào kênh #iip-dev [23:57] <jrand0m> quản lý các installer khác nhau cho các nền tảng khác nhau là một PITA [23:59] <dm> java installer? Tại sao lại là PITA? [23:59] <jrand0m> một java installer sẽ rất tuyệt [23:59] <mihi-backup> pain in the a**e [23:59] <mihi-backup> ối, xin lỗi... [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> viết một installer tùy chỉnh bằng java là có thể, nhưng ưa dùng một framework sẵn có hơn. nhưng nếu bạn xung phong viết installer tùy chỉnh, tôi ủng hộ bạn hết mình! [00:00] <dm> mihi đang lên cơn động kinh. [00:00] * mihi-backup tát dm vài cái bằng một con cá hồi to [00:00] <dm> Thế này nhé... [00:01] <dm> Nếu lúc nào bạn có thời gian viết ra các bước cài đặt chính xác cần làm, tôi sẽ viết một java installer. [00:01] <mihi-backup> dm: đọc ant script ;) [00:01] <jrand0m> hay đấy dm. khi tôi làm ant xong tôi sẽ viết tài liệu cho bạn [00:01] <dm> được thôi, xem tôi có hiểu nổi ant script khi nó ra mắt không. [00:02] *** Signoff: wilde (Ping timeout) [00:02] <Dellammo> jrand0m, i2p I2P i^2p hay I^2P ? [00:02] * jrand0m có vài phác thảo với chữ I hoa, số 2 và chữ P hoa chồng lên nhau... [00:03] <Dellammo> hmm [00:03] *** wilde (~anon@anon.iip) đã vào kênh #iip-dev [00:03] *** mihi (~mihi@anon.iip) đã vào kênh #iip-dev [00:03] <jrand0m> ok, đó là 5) cài đặt [00:03] <jrand0m> 6) yêu cầu tính năng iip [00:04] <jrand0m> có người vào đây yêu cầu auto-nicktheifing [00:04] <jrand0m> về cơ bản, nếu ai đó đã đăng ký một nick, không ai có thể giữ nick đó trừ khi họ đã identify [00:04] <jrand0m> nop hay ai đã làm iip dev - ý kiến? [00:04] * jrand0m nghĩ đó sẽ là một tính năng hay [00:05] * Dellammo vẽ một con mắt illuminati với dấu cấm (như biển cấm hút thuốc) đè lên [00:05] <jrand0m> heh [00:05] <dm> Có lẽ tôi cũng sẽ làm một logo I2P... cho phần gui của installer tôi ;) [00:05] *** Signoff: wilde ((null)) [00:05] <Dellammo> tất cả cùng làm đi, kẻo lại dính logo dở tệ [00:05] <mihi> jrand0m: hỏi mids đi - anh ấy bảo trì trent. [00:06] <mihi> source của trent nằm trong cvs nhân tiện [00:06] <Dellammo> logo là phần quan trọng nhất của mọi hoạt động [00:06] <jrand0m> chắc chắn rồi Dellammo. [00:06] * dm phủi bụi Corel Draw... [00:06] <dm> mình mê Corel Draw. [00:07] <jrand0m> ok, thế là xong 6) [00:07] <jrand0m> 7) ??? [00:07] <jrand0m> có câu hỏi / ý kiến / đĩa bay/ móng chân nào không? [00:07] <dm> Ý nghĩ: hi vọng nó chạy. [00:08] <jrand0m> heh [00:08] * jrand0m cũng vậy. [00:09] <mihi> jrand0m: tiếp tục phát huy nhé! [00:09] <dm> đúng, cứ thế nhé. [00:09] <jrand0m> “làm tốt”? rõ ràng bạn chưa xem code rồi ;) [00:09] <dm> Yêu code của bạn, trừ mấy dấu gạch dưới chói mắt. [00:09] <dm> blinding...bleeding..v.v.. [00:09] <jrand0m> heh, biến instance có _, nên ta không bao giờ phải làm this.var = var; [00:10] <jrand0m> ok... 68 phút... nếu tôi kéo dài thêm một phút nữa... [00:10] <jrand0m> w00t [00:10] * jrand0m *baf* tuyên bố kết thúc buổi họp.