Unity-Technologies / qstat

New official qstat repository
Artistic License 2.0
121 stars 33 forks source link

Support for the newer gamespy emulators #97

Open DiegoJArg opened 4 years ago

DiegoJArg commented 4 years ago

Hi. The currently working gamespy for server lists are the following: gsm.qtracker.com:27900 unreal.epicgames.com:27900 master.333networks.com:27900

The last one doesn't produces any results with qstat.

The debug result of the execution, gives the following, but it seems that -d option doesn't shows the sent stream. Could you please help to solve this, so we can have server lists and trackers on websites again?

I am using qstat 2.11 because 2.15 is not available for download for windows or mac.

C:\TO4win\qstat>qstat -d -gsm,ut master.333networks.com:28900,-
ADDRESS           PLAYERS      MAP   RESPONSE TIME    NAME
FROM master.333networks.com:28900,- len 28
    0: 5c626173 69635c5c 73656375 72655c48  \basic\\ secure\H
   16: 53564849 505c6669 6e616c5c           SVHIP\fi nal\

FROM master.333networks.com:28900,- len 75
    0: 5c656368 6f5c596f 75206661 696c6564  \echo\Yo u failed
   16: 20746f20 61757468 656e7469 63617465   to auth enticate
   32: 2e205365 65203333 336e6574 776f726b  . See 33 3network
   48: 732e636f 6d20666f 72206d6f 72652069  s.com fo r more i
   64: 6e666f2e 5c66696e 616c5c             nfo.\fin al\

FROM master.333networks.com:28900,- len 0

GSM master.333networks.com:28900,- 0 servers      0 / 0

333networks Developer's Forum

stevenh commented 3 years ago

2.11 is very old, the source builds for Windows and should for Mac too.

We recently added Linux and Windows binaries to the releases latest currently is v2.16 so you can grab the Windows from there to test.

illwieckz commented 3 years ago

I had investigated it in the past, and If I remember correctly what I found is that Qstat support of GameSpy protocol is incomplete and that Qstat only supports GameSpy protocol without key challenge. The protocol usually makes use of some keys, but UT did not make use of them so it works, and maybe qtracker.com does not make use of them, so maybe it works as well. But Qstat is not working with 333networks.com this service seems to be a complete server implementation so we need a complete client implementation.

The message You failed to authenticate. See 333networks.com for more info. seems to confirm this. Given I don't remember having seen the protocol support being completed by someone and haven't found time to do it myself despite my initial intention, I really doubt latest Qstat is able to query 333networks.com.

One software that supports those keys is Gslist by Luigi Auriemma. He also provides a large database of per-game keys. I wanted to try to port code from Gslist to Qstat to add support 333networks.com years ago, but it looks like I'm too much busy on other projects and this is just sleeping on my TODO list for years.

According to my old research and what I wrote in a mail I had with Luigi, the important thing to import seems to live in gsmalg.h file from Gslist source code.

Note that those software use different licenses, Qstat is under Artistic License 2.0 and Gslist is under GPLv2+, I got permission from Luigi for getting his code being under Artistic License to avoid a QStat relicense to GPLv2+ when merging some of his code. He also added useful information to his answer.

I'm too busy to work on this even if that was my intention. Don't hesitate to pick the task, at least I did the research to narrow down the required work to be done. =)

My question:

From: Thomas DEBESSE <dev[ad]illwieckz.net> Date: 2018-03-23 23:08 CET Subject: Asking for Artistic License 2.0 licensing for gsmsalg.h (for inclusion within qstat source tree) To: Luigi Auriemma <me[ad]aluigi.org>

Hi, I'm maintaining the old XQF game server browser (see http://xqf.github.io/ ) which is basically a GUI front-end for qstat (see https://github.com/multiplay/qstat ) and I noticed qstat only knows how to query GameSpy master servers that ignore the key challenge. Gamespy original service is down since a long time but various compatible third-party master servers are up out there and I would like to make XQF able to query them using qstat.

So, I would like to extend the current qtsat's Gamespy code using gsmalg.h to handle that key challenge too.

I've seen that qstat is covered bydistributed under the Artistic License 2.0 and gsmalg.h is distributed under GPLv2 or any later version.

It looks like Artistic License 2.0 allows relicensing to GPLv2 (thanks to article 4ii) so it looks like to be legal to include gsmalg.h within qstat source tree but if I'm right it would mean building qstat would relicenses the whole produced binary to GPLv2. It would be nice if the qstat license remains consistent across the whole source tree. Using the same license in every file would make things easier. That's why I send you this e-mail: to license gsmalg.h under Artistic License 2.0 we need your explicit permission.

Dual-licensing gsmalg.h to “Artistic License 2.0 or GPLv2+” would do the trick. You can find the Artistic License 2.0 terms there: > http://www.perlfoundation.org/artistic_license_2_0

So, I now ask the very formal question:

Do you “distribute gsmalg.h under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version, or the Artistic License 2.0” ?

Thank you in advance.

-- Thomas “illwieckz” Debesse

Luigi's answer:

From: Luigi Auriemma <aluigi[ad]autistici.org> Date: 2018-03-24 12:06 CET Subject: Re: Asking for Artistic License 2.0 licensing for gsmsalg.h (for inclusion within qstat source tree) To: Thomas DEBESSE <dev[ad]illwieckz.net>

Hi Thomas,

yes, you have my permission for dual-licensing gsmsalg.h under Artistic License 2.0 and GPL 2.0 for being able to integrate it in qstat.

Hope that's enough :)

Anyway, just FYI, Gamespy used at least 3 different types of encryptions and protocols for communicating with the master server, gsmsalg.h alone is able to support only one of them (enctype 0). But probably that's not much important considering that Gamespy is dead and this wasn't a technical "limitation", just a blacklist/whitelist based on the release date of the game trying to avoid "external queries".

-- Luigi Auriemma http://aluigi.org http://zenhax.com https://twitter.com/luigi_auriemma

stevenh commented 3 years ago

Thanks @illwieckz I'll leave this one open and tag as help wanted. Given gamespy's now defunct its not something we'll get to, so contributions welcome.