mirror of
https://git.ngram.ca/OpenJam/rc-servers
synced 2026-08-23 23:08:52 +00:00
Add maintenance mode lockout during login
This commit is contained in:
@@ -300,6 +300,7 @@ impl <C: Clone + Send> super::ConfigProvider<C> for CubeConfig {
|
|||||||
intercom_url: self.settings.server.intercom_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,
|
minimum_version: self.settings.server.min_version as i32,
|
||||||
dos_protect: self.settings.server.dos_protection,
|
dos_protect: self.settings.server.dos_protection,
|
||||||
|
maintenance_message: self.settings.server.maintenance_message.clone(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ pub struct ServerConfig {
|
|||||||
pub intercom_url: String,
|
pub intercom_url: String,
|
||||||
pub minimum_version: i32,
|
pub minimum_version: i32,
|
||||||
pub dos_protect: bool,
|
pub dos_protect: bool,
|
||||||
|
pub maintenance_message: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum QueueChangeMode {
|
pub enum QueueChangeMode {
|
||||||
|
|||||||
@@ -102,6 +102,8 @@ pub struct ServerSettings {
|
|||||||
pub min_version: u32,
|
pub min_version: u32,
|
||||||
#[serde(default = "default_true")]
|
#[serde(default = "default_true")]
|
||||||
pub dos_protection: bool,
|
pub dos_protection: bool,
|
||||||
|
#[serde(default)]
|
||||||
|
pub maintenance_message: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
|
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
|
||||||
@@ -130,6 +132,7 @@ fn default_server_conf() -> ServerSettings {
|
|||||||
wiki_url: default_wiki_url(),
|
wiki_url: default_wiki_url(),
|
||||||
min_version: default_game_version(),
|
min_version: default_game_version(),
|
||||||
dos_protection: default_true(),
|
dos_protection: default_true(),
|
||||||
|
maintenance_message: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,15 +2,18 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use polariton_server::operations::{Operation, OperationCode};
|
use polariton_server::operations::{Operation, OperationCode};
|
||||||
|
|
||||||
pub struct MaintenanceModeTeller;
|
pub struct MaintenanceModeTeller {
|
||||||
|
message: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
impl <C: Send + 'static> Operation<C> for MaintenanceModeTeller {
|
impl <C: Send + 'static> Operation<C> for MaintenanceModeTeller {
|
||||||
type User = crate::UserTy;
|
type User = crate::UserTy;
|
||||||
|
|
||||||
fn handle(&self, _: polariton::operation::ParameterTable<C>, _: &Self::User) -> polariton::operation::OperationResponse<C> {
|
fn handle(&self, _: polariton::operation::ParameterTable<C>, _: &Self::User) -> polariton::operation::OperationResponse<C> {
|
||||||
let mut resp_params = HashMap::new();
|
let mut resp_params = HashMap::new();
|
||||||
resp_params.insert(20 /* is in maintenance mode? */, polariton::operation::Typed::Bool(false));
|
resp_params.insert(20 /* is in maintenance mode? */, polariton::operation::Typed::Bool(self.message.is_some()));
|
||||||
resp_params.insert(19 /* maintenace mode message */, polariton::operation::Typed::Str("OpenJam's servers are currently undergoing maintenance".into()));
|
let message = self.message.clone().unwrap_or_default();
|
||||||
|
resp_params.insert(19 /* maintenace mode message */, polariton::operation::Typed::Str(message.into()));
|
||||||
polariton::operation::OperationResponse {
|
polariton::operation::OperationResponse {
|
||||||
code: 20,
|
code: 20,
|
||||||
return_code: 0,
|
return_code: 0,
|
||||||
@@ -25,3 +28,9 @@ impl OperationCode for MaintenanceModeTeller {
|
|||||||
20
|
20
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn maintenace_teller(conf: &oj_rc_core::ConfigImpl) -> MaintenanceModeTeller {
|
||||||
|
MaintenanceModeTeller {
|
||||||
|
message: <oj_rc_core::ConfigImpl as oj_rc_core::ConfigProvider<()>>::server_config(conf).maintenance_message,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ pub fn handler(init_ctx: &crate::InitConfig) -> OperationsHandler<crate::UserTy>
|
|||||||
.add(eac::EacChallengeIgnorer)
|
.add(eac::EacChallengeIgnorer)
|
||||||
.add(more_auth::MoreLobbyAuth)
|
.add(more_auth::MoreLobbyAuth)
|
||||||
.add(versioner::version_teller(&init_ctx.cubes))
|
.add(versioner::version_teller(&init_ctx.cubes))
|
||||||
.add(maintenancer::MaintenanceModeTeller)
|
.add(maintenancer::maintenace_teller(&init_ctx.cubes))
|
||||||
.add(game_quality::QualityConfigTeller)
|
.add(game_quality::QualityConfigTeller)
|
||||||
.add(login_flags::UserFlagsTeller)
|
.add(login_flags::UserFlagsTeller)
|
||||||
.add(polariton_server::operations::Ack::<132, _>::default()) // verify user level
|
.add(polariton_server::operations::Ack::<132, _>::default()) // verify user level
|
||||||
|
|||||||
Reference in New Issue
Block a user