koraktor / steam-condenser

A multi-language library for querying the Steam Community, Source, GoldSrc servers and Steam master servers
https://koraktor.de/steam-condenser
Other
359 stars 65 forks source link

Unable to contact any master servers? #212

Closed MattMills closed 11 years ago

MattMills commented 11 years ago

Hello, when trying to use

require('lib/steam-condenser.php'); $master = new MasterServer($argv[1]); $servers = $master->getServers();

I'm unable to get data from any master server listed in my MasterServer2.vdf or MasterServers.vdf... Also, when doing a wireshark session while checking master servers in a Source Engine game, it shows a query using a different protocol than is listed on the Valve site (Each packet starts with VS01). Am I doing something wrongly, or has the Master Query protocol changed?

koraktor commented 11 years ago

The master servers provided with Steam Condenser work like expected. What servers are listed in the VDFs? VS01 is the protocol header of Steam's own protocol, are you sure this is traffic to the listed master servers (and not Steam itself).

MattMills commented 11 years ago

MasterServers.VDF: http://pastebin.com/n6HL74yx masterserver2.vdf: http://pastebin.com/zWG0V6wb

I'm fairly certain that the VS01 packet is feeding a list of servers, as thats the only traffic that I see that is immediately preceding it querying servers that are large enough to contain a list of servers.

MattMills commented 11 years ago

I went back to double check, I started Wireshark, then Halflife 2 Deathmatch and clicked Find Servers (and all the servers loaded). In the capture, their are NO UDP packets that do not start with VS01 from the start of the capture, to when the client starts sending TSourceEngineQuery's to all the servers

koraktor commented 11 years ago

Seems like all games (with a new Source engine) use a different protocol now. Different from the one publibly documented on VDC and implemented in Steam Condenser.

The usual way to get a master server for Source games is the following:

$master = SourceServer::getMaster();
$servers = $master->getServers(/* filter */);
MattMills commented 11 years ago

I did just find the MasterServer::SOURCE_MASTER_SERVER variable, and that master server does work... I've also emailed Valve to see if they'd be willing to release the new protocol. Thanks for the help!