1
0
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:
NG (Graham)
2026-03-02 19:53:30 -05:00
parent 223d15ecef
commit ca8e5b013b
5 changed files with 18 additions and 4 deletions

View File

@@ -2,15 +2,18 @@ use std::collections::HashMap;
use polariton_server::operations::{Operation, OperationCode};
pub struct MaintenanceModeTeller;
pub struct MaintenanceModeTeller {
message: Option<String>,
}
impl <C: Send + 'static> Operation<C> for MaintenanceModeTeller {
type User = crate::UserTy;
fn handle(&self, _: polariton::operation::ParameterTable<C>, _: &Self::User) -> polariton::operation::OperationResponse<C> {
let mut resp_params = HashMap::new();
resp_params.insert(20 /* is in maintenance mode? */, polariton::operation::Typed::Bool(false));
resp_params.insert(19 /* maintenace mode message */, polariton::operation::Typed::Str("OpenJam's servers are currently undergoing maintenance".into()));
resp_params.insert(20 /* is in maintenance mode? */, polariton::operation::Typed::Bool(self.message.is_some()));
let message = self.message.clone().unwrap_or_default();
resp_params.insert(19 /* maintenace mode message */, polariton::operation::Typed::Str(message.into()));
polariton::operation::OperationResponse {
code: 20,
return_code: 0,
@@ -25,3 +28,9 @@ impl OperationCode for MaintenanceModeTeller {
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,
}
}

View File

@@ -117,7 +117,7 @@ pub fn handler(init_ctx: &crate::InitConfig) -> OperationsHandler<crate::UserTy>
.add(eac::EacChallengeIgnorer)
.add(more_auth::MoreLobbyAuth)
.add(versioner::version_teller(&init_ctx.cubes))
.add(maintenancer::MaintenanceModeTeller)
.add(maintenancer::maintenace_teller(&init_ctx.cubes))
.add(game_quality::QualityConfigTeller)
.add(login_flags::UserFlagsTeller)
.add(polariton_server::operations::Ack::<132, _>::default()) // verify user level