diff options
-rw-r--r-- | client-web/source/index.ts | 8 | ||||
-rw-r--r-- | server/src/config.rs | 22 | ||||
-rw-r--r-- | server/src/main.rs | 29 |
3 files changed, 39 insertions, 20 deletions
diff --git a/client-web/source/index.ts b/client-web/source/index.ts index 83f1dfc..c92ca2b 100644 --- a/client-web/source/index.ts +++ b/client-web/source/index.ts @@ -79,14 +79,6 @@ export async function main() { username: config.webrtc.turn_user, }] } - if (config.appearance) { - document.body.style.setProperty("--ac", config.appearance.accent) - document.body.style.setProperty("--ac-dark", config.appearance.accent_dark) - document.body.style.setProperty("--ac-light", config.appearance.accent_light) - document.body.style.setProperty("--bg", config.appearance.background) - document.body.style.setProperty("--bg-dark", config.appearance.background_dark) - - } r = new Room(conn, rtc_config) diff --git a/server/src/config.rs b/server/src/config.rs index 6dd380f..870315e 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -2,23 +2,23 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ClientConfig { - webrtc: ClientWebrtcConfig, - appearance: Option<ClientAppearanceConfig>, + pub webrtc: ClientWebrtcConfig, + pub appearance: ClientAppearanceConfig, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ClientWebrtcConfig { - stun: String, - turn: Option<String>, - turn_user: Option<String>, - turn_cred: Option<String>, + pub stun: String, + pub turn: Option<String>, + pub turn_user: Option<String>, + pub turn_cred: Option<String>, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ClientAppearanceConfig { - accent: String, - accent_light: String, - accent_dark: String, - background: String, - background_dark: String, + pub accent: String, + pub accent_light: String, + pub accent_dark: String, + pub background: String, + pub background_dark: String, } diff --git a/server/src/main.rs b/server/src/main.rs index 8a0e342..78f236a 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -8,7 +8,7 @@ pub mod config; pub mod protocol; pub mod room; -use config::ClientConfig; +use config::{ClientAppearanceConfig, ClientConfig}; use hyper::{header, StatusCode}; use listenfd::ListenFd; use log::{debug, error}; @@ -39,6 +39,7 @@ async fn run() { let client_config: ClientConfig = toml::from_str(include_str!("../../config/client.toml")) .expect("client configuration invalid"); let client_config_json = serde_json::to_string(&client_config).unwrap(); + let client_config_css = css_overrides(&client_config.appearance); let rooms: _ = Rooms::default(); let rooms: _ = warp::any().map(move || rooms.clone()); @@ -64,6 +65,9 @@ async fn run() { "application/json", ) }); + let client_config_css: _ = warp::path!("overrides.css").map(move || { + warp::reply::with_header(client_config_css.clone(), "content-type", "text/css") + }); let favicon: _ = warp::path!("favicon.ico").map(|| ""); let old_format_redirect: _ = warp::path!("room" / String).map(|rsecret| { reply::with_header( @@ -82,6 +86,7 @@ async fn run() { .or(favicon) .or(sw_script) .or(old_format_redirect) + .or(client_config_css) .recover(handle_rejection) .with(warp::log("stuff")); @@ -140,3 +145,25 @@ fn signaling_connect(rsecret: String, rooms: Rooms, ws: warp::ws::Ws) -> impl Re } ws.on_upgrade(move |sock| inner(sock, rsecret, rooms)) } + +fn css_overrides( + ClientAppearanceConfig { + accent, + accent_light, + accent_dark, + background, + background_dark, + }: &ClientAppearanceConfig, +) -> String { + format!( + r#":root {{ + --bg: {background}; + --bg-dark: {background_dark}; + --ac: {accent}; + --ac-dark: {accent_dark}; + --ac-dark-transparent: {accent_dark}c9; + --ac-light: {accent_light}; +}} +"# + ) +} |