DirectConnect
From MLDonkey
Direct connect is a file sharing protocol based on servers (called hubs) run by volunteers. Thus you only share your files with the people connected to the same hubs as you are. The people running hubs usually set up lots of rules about who can connect to their hub, for example a minimum amount of shared files, open slots for connections, ban some material (eg. child pornography) etc. This is good because is gets rid of a lot of leechers. (people who just download, don't share).
Contents |
Features
Feature | Reference | Support |
---|---|---|
Direct Connect | ? | 2.8.7 |
IPv6 | No | |
Tiger Tree Hashing | TTH | Yes |
Advanced Direct Connect | ADC | No |
XML hublists | 3.0.2 | |
Magnet links | 3.0.3 | |
Port forwarding | UPnP/NAT-PMP | 3.0.6 |
Description
Get the list of available dc commands with ?? dc.
Basic use cases:
- add hublist url to web_infos (default one is already there)
- dc command opens main DC management page
- open dc->hublist and choose the hubs you like (press 'add' to add them to the global list of servers)
- alternatively add the hub manually with dcn ip port command
- go to dc->hubs and see all the selected hubs (status waiting means hub is not connected)
- press Set to make mldonkey autoconnect to chosen hubs
- go to main servers page, selected hubs will appear there, go to all servers and press conn to connect hubs manually
- connected hubs will appear on connected servers page
- go to main search page and search for something as usual
- alternatively open dc->users and choose some users and press get list, then go to dc->filelists and wait till those filelists get downloaded, then you can browse them for files
- dc->clients will show current dc network operations in progress (upload/download, they will also appear on main transfers page)
- dc->shared lists currently shared files
- when the hub is connected corresponding open chat will blink in dc->hubs and you can chat with other users there
- dc->users lists all users from all connected hubs, open chat will be blinking if there are unread messages
See also
History
Here is an IRC log to be used as first step documenting this new module:
Apr 29 20:13:11 <Alffa> Hello MLDonkeyers... Apr 29 20:13:47 <Alffa> I was wondering if anybody has interest for DC++ for MLDonkey Apr 29 20:15:07 <Alffa> I have been using the version what I have been programming from start of this year, and now I am in personal situation that I no longer continue Apr 29 20:18:31 <Alffa> so If someone of the devs likes to get the source, it is on 2.8.3 CVS but I have no knowledge how to transfer it anywhere Apr 29 20:20:08 <spiralvoice> Alffa: create a patch against the CVS version you build it upon and send the patch to Savannah: http://savannah.nongnu.org/patch/?group=mldonkey Apr 29 20:20:52 <spiralvoice> Alffa: I can not guarantee you that it will be included into CVS nor that it will be developed further, but having it on Savannah opens all oppurtunities;-) Apr 29 20:21:00 <Alffa> I need direct help cause I dont remeber enymore even how to use CVS or how to transfer it Apr 29 20:21:43 <Alffa> It works for me fully but if others get something out of it, it would be enough for me... Apr 29 22:28:59 <Alffa> if you get it to compile, it works in web interface and with "dc" you get the menu... Apr 29 22:32:53 <Alffa> in configs there are many settings... hublists address etc. Apr 29 22:35:36 <Alffa> in options I meant Apr 29 22:39:29 <Alffa> if you have VIP for hubs, you have to directly put the password in directconnect.ini-file Apr 29 22:44:34 <spiralvoice> Alffa: are there any differences/lacking features in your MLDonkey DC++ module compared to official DC++ clients? Apr 29 22:45:06 <Alffa> I tried to make it a copy of DC++ Win client Apr 29 22:48:41 <spiralvoice> Alffa: your code requires Bzip2? Apr 29 22:48:48 <Alffa> yes Apr 29 22:49:51 <spiralvoice> Alffa: is this a requirement of DC++? In MLDonkey bzip2 is optional, in order to include your code I have to make a choice, change your code to let it optionally use bzip2 or make bzip2 a manditory dependency Apr 29 22:50:28 <Alffa> you cant open hublists if there is no bzip2 Apr 29 22:51:02 <Alffa> also filelists are in bzip2 Apr 29 22:54:13 <spiralvoice> ok, then I´ll change configure.in to disable dc++ if no bzip2 is found Apr 29 22:55:00 <spiralvoice> Alffa: does your dc++ code have filesize limits? Did you download files > 4GB with it? Apr 29 22:57:06 <Alffa> biggest what I have downloaded are < 1G Apr 29 22:58:03 <Alffa> so I cant say for sure Apr 29 22:58:31 <Alffa> In code itself I dont remember any that kind of limits Apr 29 23:00:13 <spiralvoice> Alffa: does the C hash code support large files? Is che3 the hash code of dc++? Apr 29 23:00:37 <Alffa> In DC++ there are users that share 1-5 Tbytes of data... in these cases filelists are so big that web interface basicly jams... Apr 29 23:17:15 <Alffa> you can filter the list with: dchublist show filteringword filteringword ... Apr 30 00:27:07 <spiralvoice> ok, got 2910 hubs Apr 30 00:33:53 <spiralvoice> I added several hubs, they are now in state "Waiting" Apr 30 21:57:13 <spiralvoice> Alffa: do you have mem leaks with your patch? Apr 30 21:57:56 <spiralvoice> Alffa: "dc", Shared - displays the share list twice Apr 30 21:59:40 <Alffa> actulally no, it just shows all files first that are globally shared and the second list is what filres are hashed with tigertree Apr 30 22:00:27 <spiralvoice> Alffa: is there a time when the lists are not the same? Apr 30 22:00:52 <spiralvoice> Alffa: EDK shares are shown only once, when the hash is not yet known there is no EDK link displayed Apr 30 22:02:42 <Alffa> the sharing is somewhat a mess... that was the worst part to code in ... Apr 30 22:03:22 <spiralvoice> same for EDK, I tried once to implement storing total upload values, to be reloaded later Apr 30 22:03:36 <spiralvoice> I already saw you created a new ini file for shares;-) Apr 30 22:03:44 <Alffa> I decided to make a duplicate system for dc shares... there is a good job to unify the sharing properly Apr 30 22:04:42 <Alffa> yes, with my skills and understanding of the common code that was my implementation Apr 30 22:05:06 <Alffa> I dont like it but didi not know other way to do it Apr 30 22:06:09 <spiralvoice> Alffa: I do not like the handling of shares in MLdonkey as a whole, shared_files_new.ini is EDK-only, shared_files.ini for Gnutella/G2/Fasttrack (handled by commonShares?) Apr 30 22:06:18 <spiralvoice> its a mess Apr 30 22:06:28 <spiralvoice> but if your DC++ code works, its ok for me Apr 30 22:07:36 <spiralvoice> Alffa: can you now help me using dc++? I never used that network. a hublist is loaded and some shares are hashed, what to do next? Apr 30 22:07:42 <Alffa> I agree that someone should check the sharing code from the roots... I had very hard time with understanding the operation atm. Apr 30 22:07:50 <spiralvoice> Alffa: ah, and the dc++ port is opened and forwarded Apr 30 22:08:25 <Alffa> then you have to connect to a server/hub Apr 30 22:08:41 <Alffa> if you list the hublist there is add button Apr 30 22:08:45 <spiralvoice> Alffa: do I need to register with a hub before connecting with MLDonkey? Apr 30 22:09:00 <Alffa> when yuou add the hub it shows in global servers list Apr 30 22:09:21 <Alffa> no, only if there is limits in the huib itself Apr 30 22:09:25 <spiralvoice> Alffa: I did that yesterday evening but the hubs stayed in status "Waiting" for several minutes, then I went to bed;-) Apr 30 22:09:26 <Alffa> and there usually are Apr 30 22:09:55 <Alffa> like you have to share enough or you have to have enough open slot etc. Apr 30 22:10:44 <spiralvoice> Alffa: I added 8 hubs, thry are all in state waiting now, should I add more hubs? Apr 30 22:11:19 <Alffa> the "waiting" means that the server/hub is like in your favourites list and doing nothing Apr 30 22:12:21 <Alffa> you have to connect to it from global server ist and if it connects it shows in global servers list "connected" and in dc hub list "user" or "op" Apr 30 22:13:08 <Alffa> there is no limit for hubs, you can add as meny you think are usable to you Apr 30 22:13:16 <Alffa> like favourites list ... Apr 30 22:14:04 <Alffa> also if the hub is really connected the "open chat" should blink and you should be able to read server messaeges Apr 30 22:16:29 <spiralvoice> I connected to my machine from an outside server on DC-client_port using telnet and got a connection, I could see this telnet connection also in a locally run "ngrep port xxxx" Apr 30 22:16:42 <spiralvoice> but I can not see any connection attempts from MLDonkey to a hub Apr 30 22:17:23 <Alffa> it only tries to connet when you click in global server list the button "conn" Apr 30 22:18:06 <Alffa> also, if you set the autoconnect state in hub list on, it tries automatically connect to server until it connect forever Apr 30 22:19:32 <spiralvoice> looks better, now I see lots of traffic Apr 30 22:20:37 <spiralvoice> now I am connected to 9 hubs, what next? Apr 30 22:22:17 <Alffa> then you search :) Apr 30 22:22:26 <Alffa> and check results Apr 30 22:22:40 <Alffa> and monitor the servers how they react to you... Apr 30 22:23:02 <Alffa> some operators are very picky about who connect and what you share :) Apr 30 22:23:13 <spiralvoice> [dcInt] Exception Failure("Buffer.add: cannot grow buffer") in printing users Apr 30 22:24:12 <spiralvoice> dcusers fails Apr 30 22:24:46 <spiralvoice> Alffa: its a known limit, a buffer can store 16MB, not more: https://savannah.nongnu.org/bugs/?17712 Apr 30 22:25:35 <Alffa> perhaps if you have huge amount of user (like when you connet to many hubs) I havent tested that extensively Apr 30 22:25:45 <Alffa> for me 1500 users are a lot :) Apr 30 22:26:07 <Alffa> but I am in a hub where peaople share terabytes Apr 30 22:26:07 <spiralvoice> I was connected to 10 hubs with ~5000 users each Apr 30 22:26:24 <Alffa> ok perhaps that is too much :) Apr 30 22:26:24 <spiralvoice> i disconnected some hubs and it works now, but the list is still huge Apr 30 22:26:43 <Alffa> perhaps there should be coded some kind of limit to users :) Apr 30 22:26:46 <spiralvoice> firefox uses 500MB RAM Apr 30 22:27:18 <Alffa> dc++ uses A LOT if traffic, if there are many userss Apr 30 22:27:28 <Alffa> all searches come to all users Apr 30 22:27:40 <Alffa> so there moves a lot of search data Apr 30 22:27:47 <spiralvoice> ok, I disconnected from all but one hub Apr 30 22:28:10 <Alffa> try to find a hub or couple where yuou find enough results Apr 30 22:28:39 <Alffa> basicly hubs where are small number of users but with big shares are best Apr 30 22:28:57 <Alffa> also if you share a lot you are welcomed better hubs Apr 30 22:29:05 <Alffa> that is the culture of dc++ Apr 30 22:29:45 <Alffa> also it wont hurt to "know" someone and get operator passwords to the best hubs Apr 30 22:29:56 <spiralvoice> I put 460MB in my share for testing dc++ atm Apr 30 22:30:27 <Alffa> I share 450Gb and still get from some hubs "too low share limit" Apr 30 22:31:42 <Alffa> now I have to excuse and go to bed... :) gn Apr 30 22:31:53 <spiralvoice> I see some warnings in ngrep received from clients: "WARNING: Your client uses IP 192.168.1.1 for downloading, while you have IP 84....." Apr 30 22:32:19 <spiralvoice> the port is open and forwarded, do I need to setup something else? Apr 30 22:32:55 <spiralvoice> ah, old problem, client_ip is only updated through EDK server connections Apr 30 22:36:14 <spiralvoice> wow, received the first filelist Apr 30 22:37:06 <spiralvoice> received the first file from dc++ Apr 30 22:50:47 <spiralvoice> gn