diff --git a/.gitignore b/.gitignore index 05b2ee3..44b4275 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /target +/.idea ServerConfig.toml +beammp_rust_server.iml \ No newline at end of file diff --git a/src/config.rs b/src/config.rs index b4ac64d..899783e 100644 --- a/src/config.rs +++ b/src/config.rs @@ -43,3 +43,21 @@ pub struct GeneralSettings { #[serde(rename = "ResourceFolder")] pub resource_folder: String, } + +impl GeneralSettings { + pub fn is_auth_key_valid(&self) -> bool { + // Valid key format + // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + // -8--------4----4----4----12--------- + if self.auth_key.is_none() {return false} + let key = self.auth_key.clone().unwrap(); + let key_check: Vec<&str> = key.split("-").collect(); + if key_check.len() != 5 {return false} + else if key_check[0].len() != 8 {return false} + else if key_check[1].len() != 4 {return false} + else if key_check[2].len() != 4 {return false} + else if key_check[3].len() != 4 {return false} + else if key_check[4].len() != 12 {return false} + true + } +} \ No newline at end of file diff --git a/src/heartbeat.rs b/src/heartbeat.rs index daa2e83..cf02ae4 100644 --- a/src/heartbeat.rs +++ b/src/heartbeat.rs @@ -20,6 +20,10 @@ struct HeartbeatInfo { } pub async fn backend_heartbeat(config: std::sync::Arc, mut hb_rx: Receiver) { + if !config.general.is_auth_key_valid() { + debug!{"auth_key has invalid format. canceling hearbeat init"}; + return; + } let mut info = HeartbeatInfo { uuid: config.general.auth_key.clone().unwrap_or(String::from("Unknown name!")), players: 0,