mirror of
https://git.ngram.ca/OpenJam/rc-servers
synced 2026-08-23 23:08:52 +00:00
Add API endpoint for retrieving config.json (without any secure access details)
This commit is contained in:
@@ -610,4 +610,19 @@ impl <C: Clone + Send> super::ConfigProvider<C> for CubeConfig {
|
||||
team_deathmatch: self.battle.games.team_deathmatch.team_chooser.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
fn redacted_json(&self) -> String {
|
||||
use super::RedactedClone;
|
||||
let redacted_self = Self {
|
||||
cubes: self.cubes.clone(),
|
||||
movement: self.movement.clone(),
|
||||
lerp_value: self.lerp_value,
|
||||
battle: self.battle.clone(),
|
||||
chat: self.chat.clone(),
|
||||
factory: self.factory.redacted_clone(),
|
||||
shop: self.shop.clone(),
|
||||
settings: self.settings.redacted_clone(),
|
||||
};
|
||||
serde_json::to_string(&redacted_self).expect("Failed to re-serialize config.json")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ pub use cubes_json::CubeConfig;
|
||||
|
||||
mod traits;
|
||||
pub use traits::{ConfigProvider, DevMessageProvider, ServerConfig, GarageUpgrades, GarageUpgradeIncrement, ChatSystemConfig, GameEventSequence, GameEvents, GameRotationStrategy, GameEvent, GameMap, GameVisibility, GameType, SingleplayerConfig, VehicleInfo, VehicleDescriptor, QueueChangeMode, Point, Sphere, MapConfig, LinksConfig, FakePlayer, ClientEmulator, EnergyConfig, BattleArenaResolver, PitSettings, PitWinCondition, TeamDeathMatchSettings, ShopEntriesResolver, ShopAction, ShopGain, PromoCode, MultiplayerSettings, BattleArenaCrystalParams, VehicleValidators, TeamChoosers, FactoryConfig, PlatformConfig};
|
||||
pub(super) use traits::RedactedClone;
|
||||
|
||||
mod validation;
|
||||
pub use validation::{SelfValidator, ValidationInfo, ValidationMessage};
|
||||
|
||||
@@ -45,6 +45,7 @@ pub trait ConfigProvider<C: Clone> {
|
||||
fn vehicle_validation(&self) -> VehicleValidators;
|
||||
fn garage_slot_limit(&self) -> i32;
|
||||
fn team_choosers(&self) -> TeamChoosers;
|
||||
fn redacted_json(&self) -> String;
|
||||
}
|
||||
|
||||
pub struct DevMessageProvider<C: Clone> {
|
||||
@@ -573,3 +574,7 @@ pub struct PlatformConfig {
|
||||
pub enable_analytics: bool,
|
||||
pub enable_standard_units: bool,
|
||||
}
|
||||
|
||||
pub trait RedactedClone {
|
||||
fn redacted_clone(&self) -> Self;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,17 @@ impl super::config::SelfValidator for Settings {
|
||||
}
|
||||
}
|
||||
|
||||
impl super::config::RedactedClone for Settings {
|
||||
fn redacted_clone(&self) -> Self {
|
||||
Self {
|
||||
gameplay: self.gameplay.clone(),
|
||||
banners: self.banners.clone(),
|
||||
garage_upgrades: self.garage_upgrades.clone(),
|
||||
server: self.server.redacted_clone(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn default_gameplay_settings() -> super::GameplaySettings {
|
||||
super::GameplaySettings {
|
||||
show_tutorial_after_date: "2077-01-01".to_owned(),
|
||||
@@ -112,6 +123,16 @@ pub struct ServerSettings {
|
||||
pub maintenance_message: Option<String>,
|
||||
}
|
||||
|
||||
impl super::config::RedactedClone for ServerSettings {
|
||||
fn redacted_clone(&self) -> Self {
|
||||
let mut redacted = self.clone();
|
||||
redacted.database = "[REDACTED]".to_owned();
|
||||
redacted.intercom_url = "[REDACTED]".to_owned();
|
||||
redacted.dos_protection = true;
|
||||
redacted
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
|
||||
pub enum QueueMode {
|
||||
Upgrade, // move enqueued players into newer gamemode
|
||||
|
||||
@@ -16,6 +16,15 @@ impl super::config::SelfValidator for FactoryConfig {
|
||||
}
|
||||
}
|
||||
|
||||
impl super::config::RedactedClone for FactoryConfig {
|
||||
fn redacted_clone(&self) -> Self {
|
||||
Self {
|
||||
adapter: self.adapter.redacted_clone(),
|
||||
upload_limit: self.upload_limit,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn default_variant() -> AdapterSettings {
|
||||
AdapterSettings::BuiltIn
|
||||
}
|
||||
@@ -36,6 +45,22 @@ pub enum AdapterSettings {
|
||||
None,
|
||||
}
|
||||
|
||||
impl super::config::RedactedClone for AdapterSettings {
|
||||
fn redacted_clone(&self) -> Self {
|
||||
match self {
|
||||
Self::Arc(arc) => {
|
||||
Self::Arc(ArcFactorySettings {
|
||||
uri: "[REDACTED]".to_owned(),
|
||||
show_expired: arc.show_expired,
|
||||
override_cdn: arc.override_cdn,
|
||||
spoof_username: arc.spoof_username,
|
||||
})
|
||||
},
|
||||
x => x.clone(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||
pub struct ArcFactorySettings {
|
||||
pub uri: String,
|
||||
|
||||
Reference in New Issue
Block a user