Skip to content

Releases: xIGBClutchIx/queryhost

v1.7.0

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 10 Oct 15:18
3448245

Added

  • queryMany(inputs, options), which queries many servers with bounded concurrency (8 by default, at most 64) and yields { index, input, result } entries as each settles. A failed target is a failure entry, never a rejected batch, and a batch signal stops starting new inputs and cancels those in flight. Breaking out of the loop early cancels outstanding queries and waits for their cleanup.
  • A Minecraft Java legacy ping fallback for pre-1.7 servers (Beta 1.8 through 1.6). When a server closes or rejects the modern status handshake, the query retries once with the FE 01 ping and reports it as the new minecraft-legacy-ping source; SLP timeouts do not fall back. Legacy results have no favicon, and Beta 1.8 through 1.3 servers report no version or protocol, so those fields are omitted.
  • detect({ host, port? }), which identifies the game a server runs without the caller naming it, then returns that game's typed query result. It probes the protocol and port pairs the registry's conventions allow, at most 8 by default (maxProbes, up to 16) and four at a time within one timeoutMs deadline, resolves the host once, and cancels the remaining probes as soon as one answers. A2S games are told apart by their advertised Steam App ID, Cfx servers by gamename, and the result says which evidence decided it and lists every planned probe and its outcome. The CLI runs it as queryhost auto <host> [port].
  • steamAppId on registry definitions of named A2S games.
  • steamGameId on generic A2S data, the full 64-bit Steam game ID when the server advertises it, since the 16-bit appId truncates larger App IDs.
  • An onSource callback on QueryInput that reports each source as it starts and completes, with the exported QuerySourceEvent type. The completed reports match the result's sources, nothing is reported after the query resolves, and a callback that throws cannot change the result.
  • A crossplay hint on Minecraft Java and Bedrock data, with the exported MinecraftCrossplayHint type, when a server advertises a Geyser bridge for players of the other edition: a Geyser or Floodgate plugin in Java Query's plugin list, or Geyser's default sub-MOTD in a Bedrock pong. It costs no extra requests, and its absence does not mean the server is single-edition.

The legacy ping counts against each query's 16-attempt outbound limit like any other connection, so a query that has already used up its attempts reports the outbound limit instead of opening an extra socket.

Full changelog: v1.6.0...v1.7.0

v1.6.0

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 09 Oct 23:00
db94d7f

Added

  • Eco queries over the dedicated server's unauthenticated web /frontpage status page (web port 3001, game port +1), with the server name stripped of Unity rich-text tags, online player names, total and active player counts, and world facts such as the meteor countdown, laws, animals, and plants. The name and description as served stay under rawData.
  • eco in the GameProtocol union and an eco-frontpage query source.
  • VEIN (game port 7777, query +1) and Avorion (game port 27000, fixed Steam query port 27020) through Steam A2S.

Eco reports how many players have ever joined a world rather than a slot limit, so server.players.max is omitted and that count is data.totalPlayers.

Full changelog: v1.5.1...v1.6.0

v1.5.1

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 08 Oct 12:48
bcd39a2

Fixed

  • Send FiveM, RedM, and Satisfactory HTTP queries through a dedicated built-in agent, so a host application's global or proxy HTTP agent can no longer carry the connection away from the validated, pinned address.

Changed

  • Load the HTTP stacks and the bzip2 decoder only when a query needs them, cutting the package-root import time by more than half.

No API changes. Apps that relied on a global or proxy HTTP agent to route these queries will now connect directly to the validated address.

Full changelog: v1.5.0...v1.5.1

v1.5.0

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 08 Oct 12:05
23dd0cf

Added

  • A protocol field on every GAME_REGISTRY definition naming the game's query protocol family (a2s, a2s-unreal, minecraft-java, minecraft-bedrock, cfx, satisfactory, or vintage-story), with the exported GameProtocol type and a GameProtocolMap that types each game's protocol literally.
  • Arma Reforger, Starbound, Space Engineers, HumanitZ, and V Rising queries through Steam A2S, with each game's query-port rule, an explicit unsupported Player source for Arma Reforger, and Unreal Engine session data for HumanitZ. Each server must enable queries with a setting; the README names it.

The five new games answer only when their server enables queries: Arma Reforger's a2s config block, Starbound's runQueryServer, V Rising's ListOnSteam, HumanitZ's -queryport, and Space Engineers on its game port.

Full changelog: v1.4.2...v1.5.0

QueryHost 1.4.2

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 08 Oct 00:49
5cd02df

Fixed

  • Accept hostnames with more than four DNS answers instead of reporting TARGET_BLOCKED. Up to 64 answers are validated, any unsafe answer still rejects the whole set, and four are pinned, alternating address families when both are present.
  • Report one round trip in server.queryRttMs and A2S source rttMs when a server requires a challenge, instead of the sum of the challenge and data exchanges.

Changed

  • Start the next validated address 250 ms after the previous one, or as soon as it fails, for required A2S, Minecraft, Satisfactory, and Vintage Story sources. A silent first address no longer costs its full 2 s budget, and later addresses now get tried within the default deadline. Minecraft SRV backups are still tried only after every target at the preferred priority has failed.

Full changelog: v1.4.1...v1.4.2

QueryHost 1.4.1

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 06 Oct 23:55
6b92c70

Fixes malformed JavaScript input (an unknown or inherited game ID like "proto", a non-object input, a non-string host, or a non-AbortSignal signal), which now returns an INVALID_INPUT failure instead of throwing. UDP queries to a closed port now fail as CONNECTION_FAILED after about one round trip instead of waiting out the timeout. Per-query CPU is about 30% lower.

QueryHost 1.4.0

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 06 Oct 13:51
c96c8c9

Adds a browser-safe queryhost/registry entry point with the game registry, alias helpers, and their types, so client bundles can share the game list without the Node.js query runtime.

QueryHost 1.3.0

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 01 Oct 00:48
v1.3.0
e8c2b7c

New games

  • Source engine: Counter-Strike 2, Counter-Strike: Source, Team Fortress 2, Left 4 Dead, Left 4 Dead 2, Garry's Mod
  • Fixed Steam query port: ARK: Survival Evolved, Conan Exiles, Killing Floor 2, Day of Dragons, Soulmask, Sons of the Forest, Icarus, Abiotic Factor
  • Game-specific query port: Arma 3, American Truck Simulator, Euro Truck Simulator 2, The Forest, Unturned, Enshrouded, Insurgency: Sandstorm

New data

  • All Steam games: game description, full App ID, advertised game port, server Steam ID
  • Arma 3: difficulty, DLC, Creator DLC, mods, signatures, and server-browser fields such as BattlEye, required build, game type, platform and island
  • Unturned: PvP, difficulty, camera, Gold, BattlEye and plugin framework, plus game version, full description, Workshop IDs, links, changed config and RocketMod plugins
  • ARK: Survival Evolved: full server name, PvE, BattlEye, official flag, cluster, game mode, day, download permissions, Workshop mods and the real build
  • Killing Floor 2: game mode, difficulty, wave progress and match state
  • Garry's Mod: gamemode, gamemode Workshop ID, category, location and build
  • Insurgency: Sandstorm: game mode, coop, lighting, ranked status, mutators and mod IDs
  • Team Fortress 2: game modes, friendly fire, random crits, Highlander and Medieval
  • Unreal Engine games (ARK, Conan Exiles, Day of Dragons, Soulmask, Icarus, Abiotic Factor, Sandstorm): build ID, open public slots and session flags, plus Conan's full server name and Abiotic Factor's join code and lock

Full details are in the changelog.

QueryHost 1.2.1

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 16 Sep 01:31
v1.2.1
b9e54d9

Corrects the internal error type for Satisfactory HTTPS health checks interrupted by cancellation or the global deadline.

QueryHost 1.2.0

Choose a tag to compare

@xIGBClutchIx xIGBClutchIx released this 16 Sep 01:22
v1.2.0
98313f5

Adds server queries for RedM, Palworld, Satisfactory, Vintage Story, DayZ, Don't Starve Together, and Valheim, with typed game data and game-specific port defaults.

Factorio remains outside the supported registry because a direct unauthenticated status query has not been established.