summaryrefslogtreecommitdiff
path: root/server/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-02-27 18:19:50 +0100
committermetamuffin <metamuffin@disroot.org>2023-02-27 18:19:50 +0100
commit0cc79a94471d4b12caad8e29dfbedba0149aae02 (patch)
tree57f72077d4d653560d1ae2ac4f2e83264c4fc0b2 /server/src/main.rs
parent14feff1f92149d18767e58db16f0d2eebc88b757 (diff)
downloadkeks-meet-0cc79a94471d4b12caad8e29dfbedba0149aae02.tar
keks-meet-0cc79a94471d4b12caad8e29dfbedba0149aae02.tar.bz2
keks-meet-0cc79a94471d4b12caad8e29dfbedba0149aae02.tar.zst
properly apply configured theme everywheere
Diffstat (limited to 'server/src/main.rs')
-rw-r--r--server/src/main.rs29
1 files changed, 28 insertions, 1 deletions
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};
+}}
+"#
+ )
+}