mirror of
https://github.com/tribufu/rust-gamedig
synced 2026-06-01 09:42:41 +00:00
[Protocol] Enable the use of Ipv6 addresses (#41)
Replace usages of Ipv4Addr with IpAddr which allows the use of either Ipv4 or Ipv6. This patch essentially consists of running: "sed -i 's/Ipv4Addr/IpAddr/g' src/**/*.rs examples/*" and fixing the errors.
This commit is contained in:
parent
e620398615
commit
3f654e0dfd
60 changed files with 155 additions and 162 deletions
|
|
@ -4,7 +4,7 @@ use gamedig::protocols::valve;
|
||||||
use gamedig::protocols::valve::Engine;
|
use gamedig::protocols::valve::Engine;
|
||||||
use gamedig::{aliens, aoc, arma2oa, ase, asrd, avorion, bat1944, bb2, bf1942, bm, bo, ccure, cosu, cs, cscz, csgo, css, dod, dods, doi, dst, ffow, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, ohd, onset, pz, ror2, rust, sc, sdtd, ss, tf, tf2, tfc, ts, unturned, ut, vr, GDResult, cw};
|
use gamedig::{aliens, aoc, arma2oa, ase, asrd, avorion, bat1944, bb2, bf1942, bm, bo, ccure, cosu, cs, cscz, csgo, css, dod, dods, doi, dst, ffow, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, ohd, onset, pz, ror2, rust, sc, sdtd, ss, tf, tf2, tfc, ts, unturned, ut, vr, GDResult, cw};
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
|
|
||||||
fn main() -> GDResult<()> {
|
fn main() -> GDResult<()> {
|
||||||
let args: Vec<String> = env::args().collect();
|
let args: Vec<String> = env::args().collect();
|
||||||
|
|
@ -20,7 +20,7 @@ fn main() -> GDResult<()> {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
let ip = &args[2].as_str().parse::<Ipv4Addr>().unwrap();
|
let ip = &args[2].as_str().parse::<IpAddr>().unwrap();
|
||||||
let port = match args.len() == 4 {
|
let port = match args.len() == 4 {
|
||||||
false => {
|
false => {
|
||||||
if args[1].starts_with("_") {
|
if args[1].starts_with("_") {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(2304),
|
port.unwrap_or(2304),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27020),
|
port.unwrap_or(27020),
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDError::TypeParse,
|
GDError::TypeParse,
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let mut valve_response = valve::query(
|
let mut valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(7780),
|
port.unwrap_or(7780),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::protocols::gamespy;
|
use crate::protocols::gamespy;
|
||||||
use crate::protocols::gamespy::one::Response;
|
use crate::protocols::gamespy::one::Response;
|
||||||
use crate::GDResult;
|
use crate::GDResult;
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> {
|
||||||
gamespy::one::query(address, port.unwrap_or(23000), None)
|
gamespy::one::query(address, port.unwrap_or(23000), None)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27016),
|
port.unwrap_or(27016),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27004),
|
port.unwrap_or(27004),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::protocols::gamespy;
|
use crate::protocols::gamespy;
|
||||||
use crate::protocols::gamespy::three::Response;
|
use crate::protocols::gamespy::three::Response;
|
||||||
use crate::GDResult;
|
use crate::GDResult;
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> {
|
||||||
gamespy::three::query(address, port.unwrap_or(64100), None)
|
gamespy::three::query(address, port.unwrap_or(64100), None)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27016),
|
port.unwrap_or(27016),
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::protocols::types::TimeoutSettings;
|
use crate::protocols::types::TimeoutSettings;
|
||||||
use crate::protocols::valve::{Engine, Environment, Server, ValveProtocol};
|
use crate::protocols::valve::{Engine, Environment, Server, ValveProtocol};
|
||||||
use crate::GDResult;
|
use crate::GDResult;
|
||||||
|
|
@ -43,11 +43,11 @@ pub struct Response {
|
||||||
pub time_left: u16,
|
pub time_left: u16,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> {
|
||||||
query_with_timeout(address, port, TimeoutSettings::default())
|
query_with_timeout(address, port, TimeoutSettings::default())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn query_with_timeout(address: &Ipv4Addr, port: Option<u16>, timeout_settings: TimeoutSettings) -> GDResult<Response> {
|
pub fn query_with_timeout(address: &IpAddr, port: Option<u16>, timeout_settings: TimeoutSettings) -> GDResult<Response> {
|
||||||
let mut client = ValveProtocol::new(address, port.unwrap_or(5478), Some(timeout_settings))?;
|
let mut client = ValveProtocol::new(address, port.unwrap_or(5478), Some(timeout_settings))?;
|
||||||
let mut buffer = client.get_request_data(
|
let mut buffer = client.get_request_data(
|
||||||
&Engine::GoldSrc(true),
|
&Engine::GoldSrc(true),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27016),
|
port.unwrap_or(27016),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27131),
|
port.unwrap_or(27131),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::minecraft::{self, BedrockResponse, JavaResponse, LegacyGroup},
|
protocols::minecraft::{self, BedrockResponse, JavaResponse, LegacyGroup},
|
||||||
GDError,
|
GDError,
|
||||||
|
|
@ -7,7 +7,7 @@ use crate::{
|
||||||
|
|
||||||
/// Query with all the protocol variants one by one (Java -> Bedrock -> Legacy
|
/// Query with all the protocol variants one by one (Java -> Bedrock -> Legacy
|
||||||
/// (1.6 -> 1.4 -> Beta 1.8)).
|
/// (1.6 -> 1.4 -> Beta 1.8)).
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<JavaResponse> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<JavaResponse> {
|
||||||
if let Ok(response) = query_java(address, port) {
|
if let Ok(response) = query_java(address, port) {
|
||||||
return Ok(response);
|
return Ok(response);
|
||||||
}
|
}
|
||||||
|
|
@ -24,22 +24,22 @@ pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<JavaResponse> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Query a Java Server.
|
/// Query a Java Server.
|
||||||
pub fn query_java(address: &Ipv4Addr, port: Option<u16>) -> GDResult<JavaResponse> {
|
pub fn query_java(address: &IpAddr, port: Option<u16>) -> GDResult<JavaResponse> {
|
||||||
minecraft::query_java(address, port_or_java_default(port), None)
|
minecraft::query_java(address, port_or_java_default(port), None)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8).
|
/// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8).
|
||||||
pub fn query_legacy(address: &Ipv4Addr, port: Option<u16>) -> GDResult<JavaResponse> {
|
pub fn query_legacy(address: &IpAddr, port: Option<u16>) -> GDResult<JavaResponse> {
|
||||||
minecraft::query_legacy(address, port_or_java_default(port), None)
|
minecraft::query_legacy(address, port_or_java_default(port), None)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Query a specific (Java) Legacy Server.
|
/// Query a specific (Java) Legacy Server.
|
||||||
pub fn query_legacy_specific(group: LegacyGroup, address: &Ipv4Addr, port: Option<u16>) -> GDResult<JavaResponse> {
|
pub fn query_legacy_specific(group: LegacyGroup, address: &IpAddr, port: Option<u16>) -> GDResult<JavaResponse> {
|
||||||
minecraft::query_legacy_specific(group, address, port_or_java_default(port), None)
|
minecraft::query_legacy_specific(group, address, port_or_java_default(port), None)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Query a Bedrock Server.
|
/// Query a Bedrock Server.
|
||||||
pub fn query_bedrock(address: &Ipv4Addr, port: Option<u16>) -> GDResult<BedrockResponse> {
|
pub fn query_bedrock(address: &IpAddr, port: Option<u16>) -> GDResult<BedrockResponse> {
|
||||||
minecraft::query_bedrock(address, port_or_bedrock_default(port), None)
|
minecraft::query_bedrock(address, port_or_bedrock_default(port), None)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27005),
|
port.unwrap_or(27005),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(7776),
|
port.unwrap_or(7776),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(16261),
|
port.unwrap_or(16261),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27016),
|
port.unwrap_or(27016),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(26900),
|
port.unwrap_or(26900),
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::protocols::gamespy;
|
use crate::protocols::gamespy;
|
||||||
use crate::protocols::gamespy::one::Response;
|
use crate::protocols::gamespy::one::Response;
|
||||||
use crate::GDResult;
|
use crate::GDResult;
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> {
|
||||||
gamespy::one::query(address, port.unwrap_or(25601), None)
|
gamespy::one::query(address, port.unwrap_or(25601), None)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27016),
|
port.unwrap_or(27016),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, get_optional_extracted_data, Server, ServerPlayer, SteamApp},
|
protocols::valve::{self, get_optional_extracted_data, Server, ServerPlayer, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
|
|
@ -94,7 +94,7 @@ impl Response {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27015),
|
port.unwrap_or(27015),
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::protocols::gamespy;
|
use crate::protocols::gamespy;
|
||||||
use crate::protocols::gamespy::one::Response;
|
use crate::protocols::gamespy::one::Response;
|
||||||
use crate::GDResult;
|
use crate::GDResult;
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> {
|
||||||
gamespy::one::query(address, port.unwrap_or(7778), None)
|
gamespy::one::query(address, port.unwrap_or(7778), None)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::valve::{self, game, SteamApp},
|
protocols::valve::{self, game, SteamApp},
|
||||||
GDResult,
|
GDResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: Option<u16>) -> GDResult<game::Response> {
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
||||||
let valve_response = valve::query(
|
let valve_response = valve::query(
|
||||||
address,
|
address,
|
||||||
port.unwrap_or(27016),
|
port.unwrap_or(27016),
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,10 @@ use crate::{
|
||||||
|
|
||||||
use crate::protocols::gamespy::common::has_password;
|
use crate::protocols::gamespy::common::has_password;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
|
|
||||||
fn get_server_values(
|
fn get_server_values(
|
||||||
address: &Ipv4Addr,
|
address: &IpAddr,
|
||||||
port: u16,
|
port: u16,
|
||||||
timeout_settings: Option<TimeoutSettings>,
|
timeout_settings: Option<TimeoutSettings>,
|
||||||
) -> GDResult<HashMap<String, String>> {
|
) -> GDResult<HashMap<String, String>> {
|
||||||
|
|
@ -178,7 +178,7 @@ fn extract_players(server_vars: &mut HashMap<String, String>, players_maximum: u
|
||||||
/// If there are parsing problems using the `query` function, you can directly
|
/// If there are parsing problems using the `query` function, you can directly
|
||||||
/// get the server's values using this function.
|
/// get the server's values using this function.
|
||||||
pub fn query_vars(
|
pub fn query_vars(
|
||||||
address: &Ipv4Addr,
|
address: &IpAddr,
|
||||||
port: u16,
|
port: u16,
|
||||||
timeout_settings: Option<TimeoutSettings>,
|
timeout_settings: Option<TimeoutSettings>,
|
||||||
) -> GDResult<HashMap<String, String>> {
|
) -> GDResult<HashMap<String, String>> {
|
||||||
|
|
@ -188,7 +188,7 @@ pub fn query_vars(
|
||||||
/// Query a server by providing the address, the port and timeout settings.
|
/// Query a server by providing the address, the port and timeout settings.
|
||||||
/// Providing None to the timeout settings results in using the default values.
|
/// Providing None to the timeout settings results in using the default values.
|
||||||
/// (TimeoutSettings::[default](TimeoutSettings::default)).
|
/// (TimeoutSettings::[default](TimeoutSettings::default)).
|
||||||
pub fn query(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> {
|
pub fn query(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> {
|
||||||
let mut server_vars = query_vars(address, port, timeout_settings)?;
|
let mut server_vars = query_vars(address, port, timeout_settings)?;
|
||||||
|
|
||||||
let players_maximum = server_vars
|
let players_maximum = server_vars
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ use crate::protocols::types::TimeoutSettings;
|
||||||
use crate::socket::{Socket, UdpSocket};
|
use crate::socket::{Socket, UdpSocket};
|
||||||
use crate::{GDError, GDResult};
|
use crate::{GDError, GDResult};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
|
|
||||||
const THIS_SESSION_ID: u32 = 1;
|
const THIS_SESSION_ID: u32 = 1;
|
||||||
|
|
||||||
|
|
@ -43,7 +43,7 @@ struct GameSpy3 {
|
||||||
const PACKET_SIZE: usize = 2048;
|
const PACKET_SIZE: usize = 2048;
|
||||||
|
|
||||||
impl GameSpy3 {
|
impl GameSpy3 {
|
||||||
fn new(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
fn new(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
||||||
let socket = UdpSocket::new(address, port)?;
|
let socket = UdpSocket::new(address, port)?;
|
||||||
socket.apply_timeout(timeout_settings)?;
|
socket.apply_timeout(timeout_settings)?;
|
||||||
|
|
||||||
|
|
@ -104,7 +104,7 @@ impl GameSpy3 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_server_packets(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Vec<Vec<u8>>> {
|
fn get_server_packets(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Vec<Vec<u8>>> {
|
||||||
let mut gs3 = GameSpy3::new(address, port, timeout_settings)?;
|
let mut gs3 = GameSpy3::new(address, port, timeout_settings)?;
|
||||||
|
|
||||||
let challenge = gs3.make_initial_handshake()?;
|
let challenge = gs3.make_initial_handshake()?;
|
||||||
|
|
@ -165,7 +165,7 @@ fn data_to_map(packet: &[u8]) -> GDResult<(HashMap<String, String>, Vec<u8>)> {
|
||||||
/// If there are parsing problems using the `query` function, you can directly
|
/// If there are parsing problems using the `query` function, you can directly
|
||||||
/// get the server's values using this function.
|
/// get the server's values using this function.
|
||||||
pub fn query_vars(
|
pub fn query_vars(
|
||||||
address: &Ipv4Addr,
|
address: &IpAddr,
|
||||||
port: u16,
|
port: u16,
|
||||||
timeout_settings: Option<TimeoutSettings>,
|
timeout_settings: Option<TimeoutSettings>,
|
||||||
) -> GDResult<HashMap<String, String>> {
|
) -> GDResult<HashMap<String, String>> {
|
||||||
|
|
@ -308,7 +308,7 @@ fn parse_players_and_teams(packets: Vec<Vec<u8>>) -> GDResult<(Vec<Player>, Vec<
|
||||||
/// Query a server by providing the address, the port and timeout settings.
|
/// Query a server by providing the address, the port and timeout settings.
|
||||||
/// Providing None to the timeout settings results in using the default values.
|
/// Providing None to the timeout settings results in using the default values.
|
||||||
/// (TimeoutSettings::[default](TimeoutSettings::default)).
|
/// (TimeoutSettings::[default](TimeoutSettings::default)).
|
||||||
pub fn query(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> {
|
pub fn query(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Response> {
|
||||||
let packets = get_server_packets(address, port, timeout_settings)?;
|
let packets = get_server_packets(address, port, timeout_settings)?;
|
||||||
|
|
||||||
let (mut server_vars, remaining_data) = data_to_map(packets.get(0).ok_or(GDError::PacketBad)?)?;
|
let (mut server_vars, remaining_data) = data_to_map(packets.get(0).ok_or(GDError::PacketBad)?)?;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// This file has code that has been documented by the NodeJS GameDig library
|
// This file has code that has been documented by the NodeJS GameDig library
|
||||||
// (MIT) from https://github.com/gamedig/node-gamedig/blob/master/protocols/minecraftbedrock.js
|
// (MIT) from https://github.com/gamedig/node-gamedig/blob/master/protocols/minecraftbedrock.js
|
||||||
|
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
bufferer::{Bufferer, Endianess},
|
bufferer::{Bufferer, Endianess},
|
||||||
protocols::{
|
protocols::{
|
||||||
|
|
@ -19,7 +19,7 @@ pub struct Bedrock {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Bedrock {
|
impl Bedrock {
|
||||||
fn new(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
fn new(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
||||||
let socket = UdpSocket::new(address, port)?;
|
let socket = UdpSocket::new(address, port)?;
|
||||||
socket.apply_timeout(timeout_settings)?;
|
socket.apply_timeout(timeout_settings)?;
|
||||||
|
|
||||||
|
|
@ -93,7 +93,7 @@ impl Bedrock {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<BedrockResponse> {
|
pub fn query(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<BedrockResponse> {
|
||||||
Bedrock::new(address, port, timeout_settings)?.get_info()
|
Bedrock::new(address, port, timeout_settings)?.get_info()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
bufferer::{Bufferer, Endianess},
|
bufferer::{Bufferer, Endianess},
|
||||||
protocols::{
|
protocols::{
|
||||||
|
|
@ -31,7 +31,7 @@ pub struct Java {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Java {
|
impl Java {
|
||||||
fn new(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
fn new(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
||||||
let socket = TcpSocket::new(address, port)?;
|
let socket = TcpSocket::new(address, port)?;
|
||||||
socket.apply_timeout(timeout_settings)?;
|
socket.apply_timeout(timeout_settings)?;
|
||||||
|
|
||||||
|
|
@ -139,7 +139,7 @@ impl Java {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
pub fn query(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
||||||
Java::new(address, port, timeout_settings)?.get_info()
|
Java::new(address, port, timeout_settings)?.get_info()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
bufferer::{Bufferer, Endianess},
|
bufferer::{Bufferer, Endianess},
|
||||||
protocols::{
|
protocols::{
|
||||||
|
|
@ -16,7 +16,7 @@ pub struct LegacyBV1_8 {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LegacyBV1_8 {
|
impl LegacyBV1_8 {
|
||||||
fn new(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
fn new(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
||||||
let socket = TcpSocket::new(address, port)?;
|
let socket = TcpSocket::new(address, port)?;
|
||||||
socket.apply_timeout(timeout_settings)?;
|
socket.apply_timeout(timeout_settings)?;
|
||||||
|
|
||||||
|
|
@ -60,7 +60,7 @@ impl LegacyBV1_8 {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
pub fn query(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
||||||
LegacyBV1_8::new(address, port, timeout_settings)?.get_info()
|
LegacyBV1_8::new(address, port, timeout_settings)?.get_info()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
bufferer::{Bufferer, Endianess},
|
bufferer::{Bufferer, Endianess},
|
||||||
protocols::{
|
protocols::{
|
||||||
|
|
@ -16,7 +16,7 @@ pub struct LegacyV1_4 {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LegacyV1_4 {
|
impl LegacyV1_4 {
|
||||||
fn new(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
fn new(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
||||||
let socket = TcpSocket::new(address, port)?;
|
let socket = TcpSocket::new(address, port)?;
|
||||||
socket.apply_timeout(timeout_settings)?;
|
socket.apply_timeout(timeout_settings)?;
|
||||||
|
|
||||||
|
|
@ -64,7 +64,7 @@ impl LegacyV1_4 {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
pub fn query(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
||||||
LegacyV1_4::new(address, port, timeout_settings)?.get_info()
|
LegacyV1_4::new(address, port, timeout_settings)?.get_info()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
bufferer::{Bufferer, Endianess},
|
bufferer::{Bufferer, Endianess},
|
||||||
protocols::{
|
protocols::{
|
||||||
|
|
@ -16,7 +16,7 @@ pub struct LegacyV1_6 {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LegacyV1_6 {
|
impl LegacyV1_6 {
|
||||||
fn new(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
fn new(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
||||||
let socket = TcpSocket::new(address, port)?;
|
let socket = TcpSocket::new(address, port)?;
|
||||||
socket.apply_timeout(timeout_settings)?;
|
socket.apply_timeout(timeout_settings)?;
|
||||||
|
|
||||||
|
|
@ -93,7 +93,7 @@ impl LegacyV1_6 {
|
||||||
LegacyV1_6::get_response(&mut buffer)
|
LegacyV1_6::get_response(&mut buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn query(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
pub fn query(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
||||||
LegacyV1_6::new(address, port, timeout_settings)?.get_info()
|
LegacyV1_6::new(address, port, timeout_settings)?.get_info()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
use crate::{
|
use crate::{
|
||||||
protocols::minecraft::{
|
protocols::minecraft::{
|
||||||
protocol::{
|
protocol::{
|
||||||
|
|
@ -25,7 +25,7 @@ mod legacy_v1_6;
|
||||||
|
|
||||||
/// Queries a Minecraft server with all the protocol variants one by one (Java
|
/// Queries a Minecraft server with all the protocol variants one by one (Java
|
||||||
/// -> Bedrock -> Legacy (1.6 -> 1.4 -> Beta 1.8)).
|
/// -> Bedrock -> Legacy (1.6 -> 1.4 -> Beta 1.8)).
|
||||||
pub fn query(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
pub fn query(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
||||||
if let Ok(response) = query_java(address, port, timeout_settings.clone()) {
|
if let Ok(response) = query_java(address, port, timeout_settings.clone()) {
|
||||||
return Ok(response);
|
return Ok(response);
|
||||||
}
|
}
|
||||||
|
|
@ -42,12 +42,12 @@ pub fn query(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSett
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Query a Java Server.
|
/// Query a Java Server.
|
||||||
pub fn query_java(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
pub fn query_java(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
||||||
Java::query(address, port, timeout_settings)
|
Java::query(address, port, timeout_settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8).
|
/// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8).
|
||||||
pub fn query_legacy(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
pub fn query_legacy(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<JavaResponse> {
|
||||||
if let Ok(response) = query_legacy_specific(LegacyGroup::V1_6, address, port, timeout_settings.clone()) {
|
if let Ok(response) = query_legacy_specific(LegacyGroup::V1_6, address, port, timeout_settings.clone()) {
|
||||||
return Ok(response);
|
return Ok(response);
|
||||||
}
|
}
|
||||||
|
|
@ -66,7 +66,7 @@ pub fn query_legacy(address: &Ipv4Addr, port: u16, timeout_settings: Option<Time
|
||||||
/// Query a specific (Java) Legacy Server.
|
/// Query a specific (Java) Legacy Server.
|
||||||
pub fn query_legacy_specific(
|
pub fn query_legacy_specific(
|
||||||
group: LegacyGroup,
|
group: LegacyGroup,
|
||||||
address: &Ipv4Addr,
|
address: &IpAddr,
|
||||||
port: u16,
|
port: u16,
|
||||||
timeout_settings: Option<TimeoutSettings>,
|
timeout_settings: Option<TimeoutSettings>,
|
||||||
) -> GDResult<JavaResponse> {
|
) -> GDResult<JavaResponse> {
|
||||||
|
|
@ -78,6 +78,6 @@ pub fn query_legacy_specific(
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Query a Bedrock Server.
|
/// Query a Bedrock Server.
|
||||||
pub fn query_bedrock(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<BedrockResponse> {
|
pub fn query_bedrock(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<BedrockResponse> {
|
||||||
Bedrock::query(address, port, timeout_settings)
|
Bedrock::query(address, port, timeout_settings)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ use bzip2_rs::decoder::Decoder;
|
||||||
|
|
||||||
use crate::protocols::valve::Packet;
|
use crate::protocols::valve::Packet;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
#[allow(dead_code)] //remove this later on
|
#[allow(dead_code)] //remove this later on
|
||||||
|
|
@ -125,7 +125,7 @@ pub(crate) struct ValveProtocol {
|
||||||
static PACKET_SIZE: usize = 6144;
|
static PACKET_SIZE: usize = 6144;
|
||||||
|
|
||||||
impl ValveProtocol {
|
impl ValveProtocol {
|
||||||
pub fn new(address: &Ipv4Addr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
pub fn new(address: &IpAddr, port: u16, timeout_settings: Option<TimeoutSettings>) -> GDResult<Self> {
|
||||||
let socket = UdpSocket::new(address, port)?;
|
let socket = UdpSocket::new(address, port)?;
|
||||||
socket.apply_timeout(timeout_settings)?;
|
socket.apply_timeout(timeout_settings)?;
|
||||||
|
|
||||||
|
|
@ -412,7 +412,7 @@ impl ValveProtocol {
|
||||||
/// (GatherSettings::[default](GatheringSettings::default),
|
/// (GatherSettings::[default](GatheringSettings::default),
|
||||||
/// TimeoutSettings::[default](TimeoutSettings::default)).
|
/// TimeoutSettings::[default](TimeoutSettings::default)).
|
||||||
pub fn query(
|
pub fn query(
|
||||||
address: &Ipv4Addr,
|
address: &IpAddr,
|
||||||
port: u16,
|
port: u16,
|
||||||
engine: Engine,
|
engine: Engine,
|
||||||
gather_settings: Option<GatheringSettings>,
|
gather_settings: Option<GatheringSettings>,
|
||||||
|
|
@ -429,7 +429,7 @@ pub fn query(
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_response(
|
fn get_response(
|
||||||
address: &Ipv4Addr,
|
address: &IpAddr,
|
||||||
port: u16,
|
port: u16,
|
||||||
engine: Engine,
|
engine: Engine,
|
||||||
gather_settings: GatheringSettings,
|
gather_settings: GatheringSettings,
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ use crate::bufferer::{Bufferer, Endianess};
|
||||||
use crate::socket::{Socket, UdpSocket};
|
use crate::socket::{Socket, UdpSocket};
|
||||||
use crate::valve_master_server::{Region, SearchFilters};
|
use crate::valve_master_server::{Region, SearchFilters};
|
||||||
use crate::{GDError, GDResult};
|
use crate::{GDError, GDResult};
|
||||||
use std::net::Ipv4Addr;
|
use std::net::{IpAddr, Ipv4Addr};
|
||||||
|
|
||||||
/// The default master ip, which is the one for Source.
|
/// The default master ip, which is the one for Source.
|
||||||
pub const DEFAULT_MASTER_IP: Ipv4Addr = Ipv4Addr::new(208, 64, 201, 194); // hl2master.steampowered.com
|
pub const DEFAULT_MASTER_IP: IpAddr = IpAddr::V4(Ipv4Addr::new(208, 64, 201, 194)); // hl2master.steampowered.com
|
||||||
/// The default master port.
|
/// The default master port.
|
||||||
pub const DEFAULT_MASTER_PORT: u16 = 27011;
|
pub const DEFAULT_MASTER_PORT: u16 = 27011;
|
||||||
|
|
||||||
|
|
@ -43,7 +43,7 @@ pub struct ValveMasterServer {
|
||||||
|
|
||||||
impl ValveMasterServer {
|
impl ValveMasterServer {
|
||||||
/// Construct a new struct.
|
/// Construct a new struct.
|
||||||
pub fn new(master_ip: &Ipv4Addr, master_port: u16) -> GDResult<Self> {
|
pub fn new(master_ip: &IpAddr, master_port: u16) -> GDResult<Self> {
|
||||||
let socket = UdpSocket::new(master_ip, master_port)?;
|
let socket = UdpSocket::new(master_ip, master_port)?;
|
||||||
socket.apply_timeout(None)?;
|
socket.apply_timeout(None)?;
|
||||||
|
|
||||||
|
|
@ -58,7 +58,7 @@ impl ValveMasterServer {
|
||||||
search_filters: &Option<SearchFilters>,
|
search_filters: &Option<SearchFilters>,
|
||||||
last_address_ip: &str,
|
last_address_ip: &str,
|
||||||
last_address_port: u16,
|
last_address_port: u16,
|
||||||
) -> GDResult<Vec<(Ipv4Addr, u16)>> {
|
) -> GDResult<Vec<(IpAddr, u16)>> {
|
||||||
let payload = construct_payload(region, search_filters, last_address_ip, last_address_port);
|
let payload = construct_payload(region, search_filters, last_address_ip, last_address_port);
|
||||||
self.socket.send(&payload)?;
|
self.socket.send(&payload)?;
|
||||||
|
|
||||||
|
|
@ -69,9 +69,9 @@ impl ValveMasterServer {
|
||||||
return Err(GDError::PacketBad);
|
return Err(GDError::PacketBad);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut ips: Vec<(Ipv4Addr, u16)> = Vec::new();
|
let mut ips: Vec<(IpAddr, u16)> = Vec::new();
|
||||||
while buf.remaining_length() > 0 {
|
while buf.remaining_length() > 0 {
|
||||||
let ip = Ipv4Addr::new(buf.get_u8()?, buf.get_u8()?, buf.get_u8()?, buf.get_u8()?);
|
let ip = IpAddr::V4(Ipv4Addr::new(buf.get_u8()?, buf.get_u8()?, buf.get_u8()?, buf.get_u8()?));
|
||||||
let port = buf.get_u16()?;
|
let port = buf.get_u16()?;
|
||||||
|
|
||||||
ips.push((ip, port));
|
ips.push((ip, port));
|
||||||
|
|
@ -81,8 +81,8 @@ impl ValveMasterServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Make a complete query.
|
/// Make a complete query.
|
||||||
pub fn query(&mut self, region: Region, search_filters: Option<SearchFilters>) -> GDResult<Vec<(Ipv4Addr, u16)>> {
|
pub fn query(&mut self, region: Region, search_filters: Option<SearchFilters>) -> GDResult<Vec<(IpAddr, u16)>> {
|
||||||
let mut ips: Vec<(Ipv4Addr, u16)> = Vec::new();
|
let mut ips: Vec<(IpAddr, u16)> = Vec::new();
|
||||||
|
|
||||||
let mut exit_fetching = false;
|
let mut exit_fetching = false;
|
||||||
let mut last_ip: String = "0.0.0.0".to_string();
|
let mut last_ip: String = "0.0.0.0".to_string();
|
||||||
|
|
@ -122,7 +122,7 @@ impl ValveMasterServer {
|
||||||
/// Take only the first response of (what would be a) complete query. This is
|
/// Take only the first response of (what would be a) complete query. This is
|
||||||
/// faster as it results in less packets being sent, received and processed but
|
/// faster as it results in less packets being sent, received and processed but
|
||||||
/// yields less ips.
|
/// yields less ips.
|
||||||
pub fn query_singular(region: Region, search_filters: Option<SearchFilters>) -> GDResult<Vec<(Ipv4Addr, u16)>> {
|
pub fn query_singular(region: Region, search_filters: Option<SearchFilters>) -> GDResult<Vec<(IpAddr, u16)>> {
|
||||||
let mut master_server = ValveMasterServer::new(&DEFAULT_MASTER_IP, DEFAULT_MASTER_PORT)?;
|
let mut master_server = ValveMasterServer::new(&DEFAULT_MASTER_IP, DEFAULT_MASTER_PORT)?;
|
||||||
|
|
||||||
let mut ips = master_server.query_specific(region, &search_filters, "0.0.0.0", 0)?;
|
let mut ips = master_server.query_specific(region, &search_filters, "0.0.0.0", 0)?;
|
||||||
|
|
@ -137,7 +137,7 @@ pub fn query_singular(region: Region, search_filters: Option<SearchFilters>) ->
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Make a complete query.
|
/// Make a complete query.
|
||||||
pub fn query(region: Region, search_filters: Option<SearchFilters>) -> GDResult<Vec<(Ipv4Addr, u16)>> {
|
pub fn query(region: Region, search_filters: Option<SearchFilters>) -> GDResult<Vec<(IpAddr, u16)>> {
|
||||||
let mut master_server = ValveMasterServer::new(&DEFAULT_MASTER_IP, DEFAULT_MASTER_PORT)?;
|
let mut master_server = ValveMasterServer::new(&DEFAULT_MASTER_IP, DEFAULT_MASTER_PORT)?;
|
||||||
|
|
||||||
master_server.query(region, search_filters)
|
master_server.query(region, search_filters)
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,12 @@ use std::{
|
||||||
io::{Read, Write},
|
io::{Read, Write},
|
||||||
net,
|
net,
|
||||||
};
|
};
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
|
|
||||||
const DEFAULT_PACKET_SIZE: usize = 1024;
|
const DEFAULT_PACKET_SIZE: usize = 1024;
|
||||||
|
|
||||||
pub trait Socket {
|
pub trait Socket {
|
||||||
fn new(address: &Ipv4Addr, port: u16) -> GDResult<Self>
|
fn new(address: &IpAddr, port: u16) -> GDResult<Self>
|
||||||
where Self: Sized;
|
where Self: Sized;
|
||||||
|
|
||||||
fn apply_timeout(&self, timeout_settings: Option<TimeoutSettings>) -> GDResult<()>;
|
fn apply_timeout(&self, timeout_settings: Option<TimeoutSettings>) -> GDResult<()>;
|
||||||
|
|
@ -28,7 +28,7 @@ pub struct TcpSocket {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Socket for TcpSocket {
|
impl Socket for TcpSocket {
|
||||||
fn new(address: &Ipv4Addr, port: u16) -> GDResult<Self> {
|
fn new(address: &IpAddr, port: u16) -> GDResult<Self> {
|
||||||
let complete_address = address_and_port_as_string(address, port);
|
let complete_address = address_and_port_as_string(address, port);
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
|
|
@ -65,7 +65,7 @@ pub struct UdpSocket {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Socket for UdpSocket {
|
impl Socket for UdpSocket {
|
||||||
fn new(address: &Ipv4Addr, port: u16) -> GDResult<Self> {
|
fn new(address: &IpAddr, port: u16) -> GDResult<Self> {
|
||||||
let complete_address = address_and_port_as_string(address, port);
|
let complete_address = address_and_port_as_string(address, port);
|
||||||
let socket = net::UdpSocket::bind("0.0.0.0:0").map_err(|_| SocketBind)?;
|
let socket = net::UdpSocket::bind("0.0.0.0:0").map_err(|_| SocketBind)?;
|
||||||
|
|
||||||
|
|
@ -100,7 +100,6 @@ impl Socket for UdpSocket {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use std::net::IpAddr;
|
|
||||||
use std::thread;
|
use std::thread;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
@ -117,10 +116,7 @@ mod tests {
|
||||||
stream.write(&buf).unwrap();
|
stream.write(&buf).unwrap();
|
||||||
});
|
});
|
||||||
|
|
||||||
let address = match bound_address.ip() {
|
let address = bound_address.ip();
|
||||||
IpAddr::V4(a) => a,
|
|
||||||
_ => panic!("address not ipv4!")
|
|
||||||
};
|
|
||||||
|
|
||||||
// Create a TCP socket and send a message to the server
|
// Create a TCP socket and send a message to the server
|
||||||
let mut socket = TcpSocket::new(&address, bound_address.port()).unwrap();
|
let mut socket = TcpSocket::new(&address, bound_address.port()).unwrap();
|
||||||
|
|
@ -153,10 +149,7 @@ mod tests {
|
||||||
socket.send_to(&buf, src_addr).unwrap();
|
socket.send_to(&buf, src_addr).unwrap();
|
||||||
});
|
});
|
||||||
|
|
||||||
let address = match bound_address.ip() {
|
let address = bound_address.ip();
|
||||||
IpAddr::V4(a) => a,
|
|
||||||
_ => panic!("address not ipv4!")
|
|
||||||
};
|
|
||||||
|
|
||||||
// Create a UDP socket and send a message to the server
|
// Create a UDP socket and send a message to the server
|
||||||
let mut socket = UdpSocket::new(&address, bound_address.port()).unwrap();
|
let mut socket = UdpSocket::new(&address, bound_address.port()).unwrap();
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use crate::{
|
||||||
};
|
};
|
||||||
|
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
use std::net::Ipv4Addr;
|
use std::net::IpAddr;
|
||||||
|
|
||||||
pub fn error_by_expected_size(expected: usize, size: usize) -> GDResult<()> {
|
pub fn error_by_expected_size(expected: usize, size: usize) -> GDResult<()> {
|
||||||
match size.cmp(&expected) {
|
match size.cmp(&expected) {
|
||||||
|
|
@ -14,18 +14,18 @@ pub fn error_by_expected_size(expected: usize, size: usize) -> GDResult<()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn address_and_port_as_string(address: &Ipv4Addr, port: u16) -> String { format!("{}:{}", address, port) }
|
pub fn address_and_port_as_string(address: &IpAddr, port: u16) -> String { format!("{}:{}", address, port) }
|
||||||
|
|
||||||
pub fn u8_lower_upper(n: u8) -> (u8, u8) { (n & 15, n >> 4) }
|
pub fn u8_lower_upper(n: u8) -> (u8, u8) { (n & 15, n >> 4) }
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use std::net::Ipv4Addr;
|
use std::net::{IpAddr, Ipv4Addr};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn address_and_port_as_string() {
|
fn address_and_port_as_string() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
super::address_and_port_as_string(&Ipv4Addr::new(192, 168, 0, 1), 27015),
|
super::address_and_port_as_string(&IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1)), 27015),
|
||||||
"192.168.0.1:27015"
|
"192.168.0.1:27015"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue