[jdev] Re: GAIM-Integrated Filesharing
Euseval at aol.com
Euseval at aol.com
Fri Nov 12 05:38:48 CST 2004
Hi,
your projects about GAIM Filesharing sounds great.
http://www.zeropaid.com/bbs/showthread.php?threadid=24366
http://downhillbattle.org/labs/gaim_filesharing_plugin/
Would be good, if you could create a real project on SF.net
and then make a link to this on your homepage.
The GAIM People do not like the filesahing inside GAIM,
so a plugin should be designed, to maybe one day be as well totally hyybrid with GAIM.
But I think technically it is easy to start with a plugion, that maybe later is an owbn gaim app if the gaim people shoudl block this.
Maybe you like to search the gaim developer mailinglist for ideas:
Search for "Gnucleus" or "Magnet" or "p2p"...
http://sourceforge.net/mailarchive/message.php?msg_id=4406034
http://sourceforge.net/mailarchive/message.php?msg_id=4397151
Basically the question has to be made, if the filetransfer has to be encrpted or not
and if the file transfer is 2. generation to a direct IP adress,
or if it should be routed through several proxy nodes.
If you have set up a sf.net project there should be a mailinglist for discussion!!
Towards the design:
Problem is, that you need the IP adress of the the whoel buddylist.
GAIM Transport to other Messnengers need to ping pong them in a hidden process.
Then you have to create an IP cache, with all the IP adresses of your online buddies.
If every buddy is doing this, you need to send this cache to all your buddies.
Cache of Buddy A
12.123.123.1.
123.3.3.123.1
123.3.31.23.3.
32.12.3.312.3.
12.3.3.1.2.3.1
This means every one of my buddies gets my cache of IP adresses of all my buddies.
The recieving buddy marks all the transferred IP adresses with the suffix +1 and adds this list of IP adresses to his cache.
Cache of Buddy B
456.4566.45.64
45..6445.6.456.
65.456.54..645
456.665.4.56.4
45.66..54.5.6.4
Then Buddy A gets online, has ping-ponged his online Buddies and created his cache,
then the cache of A is transferred to the cache of B and added.
Cache of Buddy B now:
456.4566.45.64
45..6445.6.456.
65.456.54..645
456.665.4.56.4
45.66..54.5.6.4
plus the cache of B´s Buddy A:
12.123.123.1. +1
123.3.3.123.1 +1
123.3.31.23.3. +1
32.12.3.312.3. +1
12.3.3.1.2.3.1 +1
Buddy "C" is as wella Buddy of "B" and sends as well his cache
Cache of Buddy B now:
456.4566.45.64
45..6445.6.456.
65.456.54..645
456.665.4.56.4
45.66..54.5.6.4
plus the cache of B´s Buddy A:
12.123.123.1. +1
123.3.3.123.1 +1
123.3.31.23.3. +1
32.12.3.312.3. +1
12.3.3.1.2.3.1 +1
Plus the cache of B´s Buddy C:
789.678.67.8.768
.8678.8.6.78.6.78
.678..87.6.78867.
.67.8.76.7.8.678.
.6878.6.8.67.8.
567.567.56.56 +1
.567.765.67.56 +1
.567.5.7.567. +1
.567.5.67.67. +1
5.67.5.76.56.7 +1
You see, The buddy "C" has juste added th IP adresses of his (C´s) buddy "D"
Cache of Buddy B now:
456.4566.45.64
45..6445.6.456.
65.456.54..645
456.665.4.56.4
45.66..54.5.6.4
12.123.123.1. +1
123.3.3.123.1 +1
123.3.31.23.3. +1
32.12.3.312.3. +1
12.3.3.1.2.3.1 +1
789.678.67.8.768
.8678.8.6.78.6.78
.678..87.6.78867.
.67.8.76.7.8.678.
.6878.6.8.67.8.
567.567.56.56 +1
.567.765.67.56 +1
.567.5.7.567. +1
.567.5.67.67. +1
5.67.5.76.56.7 +1
There then has to be the rule, that for 7 Hops (Time to live) every IP adress is saved in the cache.
And very important is, to delete redundant doublette IP´s.
This means the cache collects all IP adresses forwarded from a chain of friends with hops of seven steps.
This List then means, that maybe VERY large, imagine every buddy has 100 buddies,
then you need a concept of a netork or a Digital hash table-Database.
A) NETWORK
If every Buddy has in average 100 Buddies and there is a time to live or Hop-Amount of 7, then you get a large list of IP adresses.
This means you have to introduce Ultrapeers of g2-hub, so that you have a supernode and several leaves. E.g. you every buddy could create an edonkey-server (www.efarm-project.net) with handling all the leaves. But this means, to have several connections maybe 2 times.
As well the problem has to be solves, that a supernode could go offline,
and this means you have to search for another node on the buddy"7"-network.
Then I think it is better, if every Buddy is an edonkey server and every buddy then is forced to conenct one to this server, which means as well to connect as well to the server of each buddy. If i have 44 buddies online, I have to try to get on 44 edonkeyservers to post my shared media.
And: For a search I have to do a global server search.
This means to get maybe on untrusted servers. It must be technically restricted, that only in the horizont of 7 hops is searched.
Another way would be to implement the gnutella2.com protocol. Each IP adress identifies its bandwidth, so that several Ip adresses in the cache have DSl or Cable,s o they are g2-HUBs / supernodes.
Maybe a shareaza version could be used to have a GAIM common shared path with teh IP-cache is used, but shareaza is only connecting to IP adresses from this cache.
maybe this would be a very easy architecture:
Make a Shareaza mod, that only uses the G2-protocol and that only connects to IP adresses from the cache. If the IP is a hub, then you connect as a leave to it, and if your IP is dsl-bandwidth, you just connect all the IP adresses out of the cache as leaves!
Then you coudl just write a pinp pong - IP identifieer for gaim and run gaim with this ping-pong plugin, which collects buddy Ip adresses.
This I call the GAIM-IP-collector. Then you only need a shareaza mod, which is only working for g2 and olny uses (as hub or leave) the IP adresses from the cache of the GAIM-IP-Collector.
Gnucleus has integrated g2 support, maybe the code is much more easy to use.
B) IP List as a DHT.
Every user should send his IP list and his list of shared files to the buddies with a TTL of 7.
then, each node has a full Database of files and the refering IP adresses.
This is fairly dangerous, because it is an architecture like edonkey enabling friends browsing to everybody in the horiziont of 7.
I do not want a list of all my shared files known ny friends of my friends.
So a queryhit has to belong to a concrete search and not a total database has to be transferred to everybody of everybody.
Maybe there are more advanced architectures like Ares (softgap.com) has.
Every user in a chatroom has the ability to search the database in the chatroom,
shared by each member of the chatroom.
So .. after these few thoughts i think gnucleus.com with only g2 protocol ist teh best thing to use,
we only need an IP-collector with 7 hops in gaim and a gnucleus which is accepting only IP adresses from the colected cache, either as hub or as a leave.
Then we do not need a gui integration or something, Just Install gaim, instal the deamon plugin to collect the IP adresses and install the modified gnucleus client.
this means: Make a simple g2 gnucleus client with the ipcollector integrated and a download tab page inside the client for the actual GAIM version.
this means: Just install a new g2 filesharing client and use gaim.
Then this g2 client only uses ip adresses delivered by gaim.
You do not need a gui integration.
But: would be cool if shareaza could do this already. a MODUS (not a mod) to only use private IP adresses out of a cache delivered by GAIM or any other instant messenger
e.g. JETIANTS.tk
Jeti already has an IP collection tool, it is as well a full all in one messenger like gaim and delivers the IP adreses to antsp2p.sf.net
It is bad, that there is no JAVA g2 client out, limewire is really not that advanced for g2.
Or is there any g2 java client ? And do you can code in java too?
and now: the important thing for the magnet uri list: We all do this, to send magnet uri links over the chatwindow to buddies, which then can search for the hash or download it directly with HAsh + ip adress.
Would be cool to hear some comments.
Thanks
More information about the JDev
mailing list