add checks for SRV records
This commit is contained in:
parent
983ac7021e
commit
7c8c04573c
5 changed files with 163 additions and 7 deletions
33
src/main.rs
33
src/main.rs
|
|
@ -5,6 +5,7 @@ use std::{env};
|
|||
|
||||
use mcstatusface::http::{HttpServer, StatusCode};
|
||||
use mcstatusface::{MinecraftStatus};
|
||||
use mcstatusface::dns::{resolve_srv_port};
|
||||
|
||||
#[derive(serde::Serialize)]
|
||||
struct MinecraftStatusResponse<'a> {
|
||||
|
|
@ -16,6 +17,8 @@ struct MinecraftStatusResponse<'a> {
|
|||
motd: String,
|
||||
}
|
||||
|
||||
const DEFAULT_PORT: u16 = 25565;
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let args: Vec<String> = env::args().collect();
|
||||
if args.len() < 2 {
|
||||
|
|
@ -33,7 +36,15 @@ env!("CARGO_PKG_VERSION"));
|
|||
|
||||
if args[1] != "serve" {
|
||||
let mut address = String::from(args[1].as_str());
|
||||
if !address.contains(":") { address.push_str(":25565"); }
|
||||
if !address.contains(":") {
|
||||
let port: u16 = match resolve_srv_port(&address) {
|
||||
Some(port) => port,
|
||||
None => DEFAULT_PORT,
|
||||
};
|
||||
|
||||
address.push_str(":");
|
||||
address.push_str(port.to_string().as_str());
|
||||
}
|
||||
let mut addrs_iter = address.to_socket_addrs().unwrap();
|
||||
let address = addrs_iter.next().unwrap();
|
||||
|
||||
|
|
@ -98,7 +109,15 @@ env!("CARGO_PKG_VERSION"));
|
|||
Some(query_address) => {
|
||||
let mut address = query_address.to_string();
|
||||
address = address.replace("%3A", ":");
|
||||
if !address.contains(":") { address.push_str(":25565"); }
|
||||
if !address.contains(":") {
|
||||
let port: u16 = match resolve_srv_port(&address) {
|
||||
Some(port) => port,
|
||||
None => DEFAULT_PORT,
|
||||
};
|
||||
|
||||
address.push_str(":");
|
||||
address.push_str(port.to_string().as_str());
|
||||
}
|
||||
match address.to_socket_addrs() {
|
||||
Err(_) => {
|
||||
response.status(StatusCode::BadRequest);
|
||||
|
|
@ -179,7 +198,15 @@ env!("CARGO_PKG_VERSION"));
|
|||
Some(query_address) => {
|
||||
let mut address = query_address.to_string();
|
||||
address = address.replace("%3A", ":");
|
||||
if !address.contains(":") { address.push_str(":25565"); }
|
||||
if !address.contains(":") {
|
||||
let port: u16 = match resolve_srv_port(&address) {
|
||||
Some(port) => port,
|
||||
None => DEFAULT_PORT,
|
||||
};
|
||||
|
||||
address.push_str(":");
|
||||
address.push_str(port.to_string().as_str());
|
||||
}
|
||||
match address.to_socket_addrs() {
|
||||
Err(_) => {
|
||||
response.status(StatusCode::BadRequest);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue