Using IRC as kind of a hostcache was discussed a bit on the gnutella developers forum (gdf) and so another guy there and I cranked this out. Since I am also a freenet fan, I made sure it supported freenet also.
It is a bot that listens for node announcements and can respond telling where to find nodes. It is written in perl and uses Net::IRC: http://starsky.ee.ucla.edu/~boykin/ghostcache.pl This sort of thing could help the seed nodes problem (or maybe not). See the attached (crappy) documentation describing the whole thing. Oscar. -- boykin at pobox.com http://pobox.com/~boykin ICQ: 5118680 Key fingerprint = 159A FA02 DF12 E72F B68F 5B2D C368 3BCA 36D7 CF28 -------------- next part -------------- P2P IRC hostcache. =================== Motivation: By implementing host cachers for decentralized p2p systems such as gnutella, freenet and others, connection to such systems can be made easier for new users. However, dedicated centralized host cachers introduce a point of attack (both for denial of service as well as legal). By making use of IRC, which has a decentralized archetecture, a host cacher can be made more robust. Goals: To implement a cross p2p hostcacher operates by listening to requests on an irc channel. Details: Each p2p system will have a unique namespace (e.g. "gnutella", "freenet", ...) The namespace may be any string with no whitespace. In the below message, the namespace for the examples will be "gnutella" To find out if there is a host cache on a channel send the public message: "gnutella hostcache" look for a response: "gnutella hostcache nick" where nick will be the nick for the hostcache bot. To report an ip:port (1.2.3.4:5678) to the bot: "/msg nick gnutella put 1.2.3.4:5678" or "gnutella put 1.2.3.4:5678" To request hosts use: "/msg nick gnutella get [num]" or "gnutella get [num]" with [num] being an optional maximum number of responses. responses will have the format: "gnutella hosts 1.2.3.4:5678 1.2.5.6:3435 1.4.5.6:6348" Implementation details: The hostcache implementation at: http://starsky.ee.ucla.edu/~boykin/ghostcache.pl supports both freenet and gnutella. It would be trivial to add more p2p systems. The cacher has a maximum size for each cache which in turn behave as a fifo. Returned hosts are randomly selected. Credits: After showing up on openprojects Petr very quickly worked out an initial version. Oscar took Petr's code and the Net::IRC module and produced another revision that supports the specification in this document. Petr Baudis <pasky at pasky.ji.cz> http://pasky.ji.cz/~pasky/dev/nut/nutcache.pl P. Oscar Boykin <boykin at pobox.com> http://starsky.ee.ucla.edu/~boykin/ghostcache.pl -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 232 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20011016/9c288c09/attachment.pgp>
