Hello All,
I hope i havent made another useless thread but i have a problem. I'm trying to gather information about spring client lobby protocol. I'd like to make my own (firstly private) spring lobby as a hobby. I'm not new in programming but i havent made very big projects so far. So i'm kinda new in building a program depending on possibly big protocols. Could someone help me a small bit where i should start?
For myself i think i have to start with making a connection and try to understand the protocol of sending and receiving messages to te spring server. Does anyone know where i can find the connectionstring and the commands for the protocol?
Spring client lobby protocol
Moderator: Moderators
Re: Spring client lobby protocol
you should also have a look at the source code of other lobbies or lobby servers, we have them in C++, Python, Java, C# and Delphi.
but frankly.. it would serve the community more if you'd start engine deving.
what languages do you know?
but frankly.. it would serve the community more if you'd start engine deving.

what languages do you know?
Re: Spring client lobby protocol
************
Last edited by Satirik on 07 Jan 2011, 19:35, edited 1 time in total.
Re: Spring client lobby protocol
I dont like to help with engine developing because i dont want anyone depending on me. Its purely hobby i'm going to do.
My known languages from best to less good: Vb.net, C#, Java, Delphi
My known languages from best to less good: Vb.net, C#, Java, Delphi
Re: Spring client lobby protocol
If you send a command like: "SAYPRIVATE username message"
you need to put an newline at the end: "SAYPRIVATE username message\n"
This was one of the first problems I had.
And of course hoijui is right, it would serve the community more if you would develop on the engine.
Btw. an basic implementation in Go and Ruby exists, too.
you need to put an newline at the end: "SAYPRIVATE username message\n"
This was one of the first problems I had.
And of course hoijui is right, it would serve the community more if you would develop on the engine.
Btw. an basic implementation in Go and Ruby exists, too.
Re: Spring client lobby protocol
In zero-k lobby you can type "server" in the adressbar and see the protocol traffic.
You will it is textbased which is very nice, only some flags for ready-status etc are bitfields. If you start with a chat-only lobby you will only need a handfull of protocoll commands or so: LOGIN, JOIN, PING, SAY, SAID
I think all your languages can do network stuff, if you do not know network programming yet google sockets and winsock.
For login, the password must not be send cleartext but as MD5, strangely the MD5's in googled up produced different hashes than the one the spring sever wanted. Not sure how I got it in the end and maybe its changed now, just saying in case you wonder about that...
You will it is textbased which is very nice, only some flags for ready-status etc are bitfields. If you start with a chat-only lobby you will only need a handfull of protocoll commands or so: LOGIN, JOIN, PING, SAY, SAID
I think all your languages can do network stuff, if you do not know network programming yet google sockets and winsock.
For login, the password must not be send cleartext but as MD5, strangely the MD5's in googled up produced different hashes than the one the spring sever wanted. Not sure how I got it in the end and maybe its changed now, just saying in case you wonder about that...
Re: Spring client lobby protocol
It is a base64 encoded md5.
To get the code:
string(base64(md5(password as clear text string)))
To get the code:
string(base64(md5(password as clear text string)))
Re: Spring client lobby protocol
ah, thanks. but wasnt there a way to make hashs with spring or a command to make server send it to you or something? or was it a lobby feature?
anyway, appearently some online generators use the words entered by users to build a hash->clear text password data base, so if you use them be carefull what you enter and stuff...
anyway, appearently some online generators use the words entered by users to build a hash->clear text password data base, so if you use them be carefull what you enter and stuff...
Re: Spring client lobby protocol
The only reason we hash them at all is so that scriptkiddies who accidentally find it have no idea what the password is. Anyone with any sense realises that you dont need to figure out the original password, you already have everything you need to login by having the hash, since the server just uses and stores whatever its sent in plaintext.
So for example, if I dont bother to hash and base64encode, I can send 'password' in its raw unprocessed form, and that is my new password.
So, the reason we still base64encode and hash, is because if we dont then all the users who originally used tasclient will not work because of the mismatching hashes.
If your sure the user will never use a rival lobby client, you can use whatever hashing system you like if any, Battlehub/AFLobby had an option to use SHA hashes instead of MD5
So for example, if I dont bother to hash and base64encode, I can send 'password' in its raw unprocessed form, and that is my new password.
So, the reason we still base64encode and hash, is because if we dont then all the users who originally used tasclient will not work because of the mismatching hashes.
If your sure the user will never use a rival lobby client, you can use whatever hashing system you like if any, Battlehub/AFLobby had an option to use SHA hashes instead of MD5
Re: Spring client lobby protocol
Thanks for all the info. The info of the first 2 or 3 messages were already known for me but later replys are very usefull (ofcourse the first messages were usefull too btw) !