All pastes #276707 Raw Edit

Someone

public text v1 · immutable
·published 2006-12-12 17:00 UTC
rendered paste body
One of the important parts of NMDC and ADC, is the exchange of client information. In NMDC we have MyINFO and in ADC we have INF. 

I had planned on discussing the upsides, downsides and everything in between about these exchanges. But instead of writing one massive post, I 
thought I would split them up in segments. So, I bring you Client Information And You, the series.

To start these series, I should explain what the actually do (beside the somwhat ambigious "exchange of client information").

So, what do I mean? I mean the exchange of client information. (Duh!)

This is the part of the protocol(s) where the client send specific information about itself to the hub (which then relay the information to the other 
clients).

This information ranges from nick, to client version to the amount of hubs the client is operator in. And in ADC's special case, a global identifier.

These types of information reveal nothing of true importance, from a security stand point. And from a general point of view, they are simply 
informational, and only provide the information for the benefit of the network. Spoofing the information is extremely easy, although it require that 
you have some coding skills (or know someone who do). 


Stay tuned for the next part in our series, Client Information And You: My Information.


It has undergone a few changes through the years, it has been through several heated discussions and a few have wondered about it day and night. No, 
I am not talking about Britney Spears's belly. I am talking about NMDC's $MyINFO.

The information you may find in $MyINFO is (the client's) nick, description, connection type (and some more info on it), e-mail and share size. 

This command is sent during login and will be completely re-broadcasted if any of these parts change. As many may notice at this point is that this 
is quite annoying, stupid and pointless. If don't get it, then consider the scenario where your share size change (constantly)  while the other types 
of information remain intact. This will cause your client to send information about itself that people already know. Why should they want to see your 
nick or description again if only your share size changed? This is one of the short comings of NMDC's $MyINFO.

One of the major changes made to $MyINFO (that some consider) is the "hijacking" of the description. This is the addition of the tag (that originally 
came from DC++, do to pressure from hub owners, requiring DC++ to notify how many hubs it was in [since the original NMDC client was only capable of 
connecting to one hub simultaniously]). Of course, this was more a client and hub implementation standard, rather than a protocol standard (there's 
no definition of any of the NMDC commands, remember?). 

Some decided, at some point, that instead of hijacking any other part of the description (or $MyINFO), that it would be best to provide (and 
get) client information through extensions. ClientID for "global identifier", UserIp for getting users' IP and so on.

What is great about $MyINFO, $ClientID and all of the other NMDC client informational commands? It is that they are relatively short and concise. 
They provide a nice deal for client developers, since they don't require that you implement them all at once. They don't rely on each other, so you 
can send one but don't need to send the other.

Unfortunately, their problems are equally important to know. Like I said about $MyINFO, it (and other NMDC commands) has a problem with 
re-broadcasting of already established information. Also, none of the current commands are (easily?) extensible. That means that if you want to make 
a small change, you need to (1) change it in your client (duh!), (2) change it in today's hub softs and, hopefully, (3) notify others by posting on 
eg the DC++ wiki.

This was everything from this edition of Client Information And You. Next up is Client Information And You: The Information.