diff --git a/rc_core/src/persist/config/cubes_json.rs b/rc_core/src/persist/config/cubes_json.rs index deb6f6e..0f1c001 100644 --- a/rc_core/src/persist/config/cubes_json.rs +++ b/rc_core/src/persist/config/cubes_json.rs @@ -297,6 +297,7 @@ impl super::ConfigProvider for CubeConfig { auth_url: self.settings.server.auth_url.trim_end_matches('/').to_owned(), intercom_url: self.settings.server.intercom_url.trim_end_matches('/').to_owned(), minimum_version: self.settings.server.min_version as i32, + dos_protect: self.settings.server.dos_protection, } } diff --git a/rc_core/src/persist/config/traits.rs b/rc_core/src/persist/config/traits.rs index 1d43430..05a0a9c 100644 --- a/rc_core/src/persist/config/traits.rs +++ b/rc_core/src/persist/config/traits.rs @@ -93,6 +93,7 @@ pub struct ServerConfig { pub auth_url: String, pub intercom_url: String, pub minimum_version: i32, + pub dos_protect: bool, } pub enum QueueChangeMode { diff --git a/rc_core/src/persist/settings.rs b/rc_core/src/persist/settings.rs index 64a4ee0..dff2886 100644 --- a/rc_core/src/persist/settings.rs +++ b/rc_core/src/persist/settings.rs @@ -98,6 +98,8 @@ pub struct ServerSettings { pub wiki_url: String, #[serde(default = "default_game_version")] pub min_version: u32, + #[serde(default = "default_true")] + pub dos_protection: bool, } #[derive(Serialize, Deserialize, Clone, Debug, Default)] @@ -124,6 +126,7 @@ fn default_server_conf() -> ServerSettings { support_url: default_support_url(), wiki_url: default_wiki_url(), min_version: default_game_version(), + dos_protection: default_true(), } } @@ -154,3 +157,7 @@ fn default_wiki_url() -> String { fn default_game_version() -> u32 { 2855 } + +fn default_true() -> bool { + true +} diff --git a/rc_multiplayer/src/main.rs b/rc_multiplayer/src/main.rs index 6d8cd38..c534f69 100644 --- a/rc_multiplayer/src/main.rs +++ b/rc_multiplayer/src/main.rs @@ -41,8 +41,9 @@ async fn main() -> std::io::Result<()> { }; let mtu = oj_rc_core::ConfigProvider::<()>::network_config(&init_ctx.config).max_packet_size; + let dos_protection = oj_rc_core::ConfigProvider::<()>::server_config(&init_ctx.config).dos_protect; let event_handler = events::handler(&init_ctx).await; - let server = literustlib_server::Server::new(event_handler, (args.ip, args.port), mtu).await.expect("Bad server"); + let server = literustlib_server::Server::new(event_handler, (args.ip, args.port), mtu, dos_protection).await.expect("Bad server"); let start_time = chrono::Utc::now(); START_TIMESTAMP_S.store(start_time.timestamp(), std::sync::atomic::Ordering::Relaxed);