2 direct connect messages
3 ========================
5 by suxxx@users.sourceforge.net
11 This is a open spezification of the neo-modus.com direct connect protocol.
12 If you find here some errors, please write me a mail.
13 This direct connect protocol spezifcations describe the client<->server and the
14 server<->server commands. And a little bit the client<->client protocol.
16 1. Client-Server protocol
18 direct connect uses TCP for client to server communication. The servers called "Hubs" runs
21 each message to/from the server is in the form of
26 the | specifies the end of each command.
27 each command starts with a $.
29 if the packed starting without a $ then the packed is a public chat message.
30 each public chat message is in the form of
32 <<username>> <chattext>|
35 the | specifies the end of each public chat message.
37 2. Command Types (client to server)
39 The following section describes the format of the Commands
40 Each field is denoted with <>. The fields in the command are separated
41 by a single space character (ASCII 32). And each Command ends with a | (pipe)
42 All Commands are casesensetiv
44 command sended by description of the subcomands and the format
45 =============================================================================================
48 $Lock SERVER First message from server to client. thats a security check.
49 the client must send a $Key command as answer.
51 Format: $Lock <lockcode>
53 $Key CLIENT This is the Clients first message to the server.
54 the client sends a Key. this key will be calculated from the
57 Format: $Key <keycode>
60 $HubName SERVER The server sends his name to the client. Mostly with a welcome message.
62 Format: $HubName <hubname>
64 $ValidateNick CLIENT The Client sends his Username to the Server.
65 If the Username is already in use or wrong, the server sends a $ValidateDenide message.
67 Format: $ValidateNick <nickname>
69 $ValidateDenide SERVER If the Username already in use or wrong, the server sends this message.
71 the client must take another Username and send $ValidateNick again.
73 Format: $ValidateDenide <thebadnickname>
75 $GetPass SERVER Sends from server to the connected client, if the username is password protected.
79 $MyPass CLIENT The client sends this message to the server to send the password.
81 Format: $MyPass <password>
84 $BadPass SERVER If the password is wrong, the server sends this message and closes the connection
88 $Version CLIENT The client sends the version of the clientsoftware to the server
90 Format: $Version <versionnumber>
92 $Hello SERVER If a new client connected, the server sends to all clients this message.
95 Format: $Hello <nickname>
97 $LogedIn SERVER If a operator connected, the server sends this message to the connected
98 user. (to enable the admin menue eg.)
100 Format: $LogedIn <nickname>
102 $MyInfo CLIENT This message informs the server about the Userinfos.
103 SERVER This message will send from server too as response to $GetINFO.
105 Format: $MyINFO $ALL <nickname> <description>$ $<speed>
\x01$<email>$<sharedsizeinbyte$
107 "
\x01" stands for (as ascii char):
121 $GetINFO CLIENT This message reqests the userinfos from a other user.
123 Format: $GetINFO <nickname> <ownnickname>
125 $GetNickList CLIENT This message sends the client to request the nicklist and the oplist.
129 $NickList SERVER This message sends the server to a client, when the client request the nicklist.
132 Format: $NickList <nickname1>$$<nickname2>$$
134 $OpList SERVER This message sends the server to a client, when the client request the nicklist.
135 This message will send too, when a new op connected. (to all connected users)
137 Format: $OpList <nickname1>$$<nickname2>$$
139 $To CLIENT This message sends the client to the server to send a private message to a spezific user
140 SERVER The same message sends the server to the spezific user
143 Format: $To: <nickname> From: <ownnickname> $<ownnickname> <message>
145 $ConnectToMe CLIENT This message sends the client to the server to send a connection request to a spezific user
146 SERVER The same message sends the server to the spezific user
148 Format: $ConnectToMe <nickname> <ownip>:<ownlistenport>
150 $MultiConnectToMe CLIENT The same message as $ConnectToMe. That message will send by client, when other user
153 $RevConnectToMe CLIENT This message sends the client to the server to send a connection request to a spezific user
155 SERVER The same message sends the server to the spezific user
156 The client sends this message, when he is behind a firewall.
157 When the other client received the message it must send a $ConnectToMe that the firewalld User.
160 Format: $RevConnectToMe <ownnick> <nickname>
162 $Search CLIENT This message will send to search a file.
163 SERVER The same message sends the server to the spezific user
167 Format: $Search Hub:<ownnickname> <cmd1>?<cmd2>?cmd3>?<cmd4>?<cmd5>
169 Format: $Search <ownip>:<ownlistenport> <cmd1>?<cmd2>?cmd3>?<cmd4>?<cmd5>
171 <cmd1> sets search for sizelimit Yes or No (Yes = T and No = F)
172 <cmd2> search sizelimit "At Least" or "At Most" ("At Least" = F and "At Most" = T)
173 <cmd3> sizelimit. if <cmd1> is "F" then <cmd3> is 0 else the sizelimit in bytes
174 <cmd4> the filetype ("Any" is 1, "Audio" is 2 an so on)
175 <cmd5> is the search value. If you insert "mp3 techno" you must replace the " " with a "$"
177 $MultiSearch CLIENT The same message as $Search. That message will send by client, when the search on all hubs
181 $SR CLIENT This is the Searchrespond for passive searching. if a active user find some files that
182 SERVER matches the searchrequest. it will send this message. the server will forward this message only
183 to the user that had start the searchrequest.
185 Format: $SR <ownname> <filenamewithpath)
\x05<filesizeinbytes> <current openslots>/<allopenslots>
\x05<hubname> (<hubip>:<hubport>)
186 "
\x05" is ascii char 5
188 $Kick CLIENT This message could only sends an operator. This command will kick another user.
191 Format: $Kick <nickname>
193 $OpForceMove CLIENT This message could only sends an operator. This command will redirect another user.
195 Format: $OpForceMove $Who:<nickname>$Where:<iptoredirect><Msg:<a message>
197 $ForceMove SERVER This message will sends by the server to a client, that he must connect to another hub.
198 Server dont kick the user, the client must disconnect!
200 Format: $ForceMove <ipaddress>
203 $Quit SERVER This message will send to all clients, when a user disconnects
205 Format: $Quit <nickname>
209 3. Server-Server protocol
211 direct connect uses UDP for server to server communication.
213 each message is in the form of
218 the | specifies the end of each command.
219 each command starts with a $.
221 4. Command Types (server to server)
223 The following section describes the format of the Commands
224 Each field is denoted with <>. The fields in the command are separated
225 by a single space character (ASCII 32). And each Command ends with a | (pipe)
227 All Commands are casesensetiv
229 command description of the subcomands and the format
230 ============================================================================================
232 $Up This message will send as heardbeat request to each linked server.
234 Format: $Up <linkedserverpassword> <ownip>
236 $UpToo This message will send as heardbeat response to the requesting server
239 Format: $UpToo <linkedserverpassword> <ownip>
241 $Search This message will send from a server to each linked server, when a user
242 searches with $MultiSearch
244 Format: $Search <ownip>:<ownlistenport> <cmd1>?<cmd2>?cmd3>?<cmd4>?<cmd5>
246 <cmd1> sets search for sizelimit Yes or No (Yes = T and No = F)
247 <cmd2> search sizelimit "At Least" or "At Most" ("At Least" = F and "At Most" = T)
248 <cmd3> sizelimit. if <cmd1> is "F" then <cmd3> is 0 else the sizelimit in bytes
249 <cmd4> the filetype ("Any" is 1, "Audio" is 2 an so on)
251 <cmd5> is the search value. If you insert "mp3 techno" you must replace the " " with a "$"
254 $ConnectToMe This message sends the server to each linked server, when a user sends the $MultiConnectToMe
257 Format: $ConnectToMe <nickname> <ownip>:<ownlistenport>
260 5. client-client protocol
263 direct connect uses TCP for client to client communication.
264 normaly the client listen at port 412 for client connections.
265 but if the port already in use it uses 413,414 and so on..
267 After a $ConnectToMe over the Server a Client Connects the other one.
269 each message is in the form of
273 the | specifies the end of each command.
275 each command starts with a $.
277 6. Command Types (client to client)
279 The following section describes the format of the Commands
280 Each field is denoted with <>. The fields in the command are separated
281 by a single space character (ASCII 32). And each Command ends with a | (pipe)
282 All Commands are casesensetiv
284 Client number 1 is the user who connecting
285 Client number 2 is the use who listen
288 command from client num description of the subcomands and the format
289 ============================================================================================
291 $MyNick CLIENT 2 The listen User sends his Name when a user connecting.
292 CLIENT 1 After the Lock/Key handshake the connected client sends MyNick too
294 Format: $MyNick <ownnickname>
296 $Lock CLIENT 2 After the $MyNick command the listen user sends a $Lock command.
297 CLIENT 1 After the first handshake, the connecting client sends a $Lock code too.
299 Format: $Lock <lockcode>
301 $Key CLIENT 1 This is the first message to the listen user.
303 the key will be calculated from the <lockcode>.
305 Format: $Key <keycode>
307 $Direction CLIENT 2 ???? for passive or active mode downloading???
309 Format: $Direction <direction> <anumber>
312 could be "Upload" or "Download"
315 $GetListLenCLIENT 1 with this command the client requestes the filesize of the
320 $ListLen CLIENT 2 this is the answer to $GetListLen.
323 Format: $ListLen <sizeinbyte>
325 $MaxedOutCLIENT 2 this will send, when no freeslots available
329 $Error CLIENT 2 this will send when a error occures.. like file not found eg
331 Format: $Error <errormessage>
333 $Send CLIENT 2 informs the other client, that the upload will start.
335 CLIENT 1 informa a client tha he could start with the upload
339 $Get CLIENT 1 requests a file from the other client.
341 Format: $Get <filenameandpath>$<resumecount>
343 $FileLengthCLIENT 2 after a $Get request, the other the other client sends
347 Format: $FileLength <sizeinbytes>
349 $CanceledCLIENT 1 Cancel a transfer
356 Client 1 connects Client 2
360 CL2: $MyNick <nickname>
361 CL2: $Lock <lockcode>
363 CL1: $Lock <lockcode>
365 CL1: $MyNick <nickname>
369 CL2: $Direction <direction> <anumber>
373 //request shared listfilesize
375 CL2: $ListLen <sizeinbyte>
376 //request shared listfilesize
378 //request the shared filelist
379 CL1: $Get MyList.DcLst$1
380 CL2: $FileLength <sizeinbytes>
381 //request the shared filelist
388 After the $Send command, the sharing client sending the file...
393 direct connect is a trademark of neo-modus.com
396 this protocol specs writen and analyst by suxxx
397 without any help from neo-modus.com if you want
398 informations about the protocol or if you have
399 informations about some messages eg.write me a mail.
401 Telechargement dans DC:
405 $Lock O5SGVKT;U)>]aoK\a>2jTtv_RQk9J8bl0y+0B;gWV(;sNvAdlgf'Gvm8g4=a.-&@6Cp'GwaufkSKIX68i%>\, Pk=(iNeJXH>+1blGZ2.|
408 $MyNick.[BBB]WizardOne|
409 $Lock EXTENDEDPROTOCOLABCABCABCABCABCABC Pk=DCPLUSPLUS0.1763kABCABC|
410 $Direction Upload 666|
411 $Key...fA......q6..Bq.........0.%7'....%.'.....1...sR.......U.5...0.fgW3u..aA1..........&.|
414 $Direction Download 9708|
415 $Key.........A......0.0..0..0..0..0..0.|
416 $Get.upload\-.=.Misc.=.-\WIN.XP.CODE.txt$1|
425 ................. Le fichier .....................
427 $Direction Upload/Download level|