diff --git a/Cargo.lock b/Cargo.lock index e99a6f6..c24ef2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -202,7 +202,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -237,7 +237,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -364,7 +364,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.68", + "syn 2.0.87", "which", ] @@ -811,7 +811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -834,7 +834,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -845,7 +845,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -871,7 +871,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -955,7 +955,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -1091,7 +1091,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -1153,7 +1153,7 @@ dependencies = [ "proc-macro2", "quote", "slab", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -1167,7 +1167,7 @@ dependencies = [ "krates", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", "tracing", ] @@ -1222,7 +1222,7 @@ dependencies = [ "proc-macro2", "quote", "server_fn_macro", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -1251,7 +1251,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -1314,7 +1314,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -1335,7 +1335,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -1459,7 +1459,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -1568,7 +1568,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -1822,7 +1822,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -2130,7 +2130,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -2711,7 +2711,7 @@ dependencies = [ "manganis-common", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", "tracing-subscriber", ] @@ -2888,6 +2888,7 @@ dependencies = [ "ogg", "once_cell", "ordermap", + "serde", "serde-wasm-bindgen 0.6.5", "serde_json", "sir", @@ -3137,7 +3138,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -3377,7 +3378,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -3471,7 +3472,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -3973,9 +3974,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -4014,13 +4015,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -4053,7 +4054,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -4116,7 +4117,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", "xxhash-rust", ] @@ -4127,7 +4128,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00783df297ec85ea605779f2fef9cbec98981dffe2e01e1a9845c102ee1f1ae6" dependencies = [ "server_fn_macro", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -4258,7 +4259,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdd941cc539bd3dc694edaf9d0c4e1221d02baa67c6b45ec04fad1024d9e8139" dependencies = [ "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -4396,9 +4397,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.68" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -4491,7 +4492,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -4546,7 +4547,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -4604,7 +4605,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -4748,7 +4749,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -4961,7 +4962,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -4995,7 +4996,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5112,7 +5113,7 @@ checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -5220,7 +5221,7 @@ checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -5231,7 +5232,7 @@ checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -5242,7 +5243,7 @@ checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -5253,7 +5254,7 @@ checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -5636,7 +5637,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", "zvariant_utils", ] @@ -5669,7 +5670,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] [[package]] @@ -5701,7 +5702,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", "zvariant_utils", ] @@ -5713,5 +5714,5 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.87", ] diff --git a/Cargo.toml b/Cargo.toml index b380a9b..c6605d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,6 +74,7 @@ futures-channel = "0.3.30" sir = { version = "0.5.0", features = ["dioxus"] } tokio = { version = "1.41.1", features = ["net", "rt"], optional = true } tokio-rustls = { version = "0.26.0", optional = true } +serde = { version = "1.0.214", features = ["derive"] } [features] web = [ diff --git a/src/app.rs b/src/app.rs index 8f79ca6..b4b0aa5 100644 --- a/src/app.rs +++ b/src/app.rs @@ -6,7 +6,7 @@ use ordermap::OrderSet; use sir::{css, global_css}; use std::collections::HashMap; -use crate::imp; +use crate::{imp, CONFIG}; pub type ChannelId = u32; pub type UserId = u32; @@ -444,7 +444,7 @@ pub fn ServerView() -> Element { #[component] pub fn LoginView() -> Element { let net: Coroutine = use_coroutine_handle(); - let default_address = option_env!("MUMBLEWEB2_WEBTRANSPORT_SERVER_ADDRESS").unwrap_or(""); + let default_address = CONFIG.proxy_url.as_deref().unwrap_or(""); let mut address = use_signal(|| default_address.to_string()); let previous_username = imp::load_username(); diff --git a/src/imp/desktop.rs b/src/imp/desktop.rs index 76716ed..49d1997 100644 --- a/src/imp/desktop.rs +++ b/src/imp/desktop.rs @@ -177,3 +177,7 @@ pub fn set_default_username(username: &str) -> Option<()> { pub fn load_username() -> Option { return None; } + +pub fn load_config() -> Option { + None +} diff --git a/src/imp/web.rs b/src/imp/web.rs index 85f53d9..011efa8 100644 --- a/src/imp/web.rs +++ b/src/imp/web.rs @@ -1,5 +1,6 @@ use crate::app::Command; use crate::bail; +use crate::CONFIG; use dioxus::prelude::*; use futures::AsyncRead; use futures::AsyncWrite; @@ -346,17 +347,6 @@ pub async fn network_connect( ) -> Result<(), Error> { console::log_1(&"Rust via WASM!".into()); - let Ok(server_hash): Result, _> = include_str!("../../server_hash.txt") - .trim() - .trim_matches(&['[', ']']) - .split(',') - .map(|x| x.trim().parse()) - .collect() - else { - bail!("could not parse server hash"); - }; - let hash = web_sys::js_sys::Uint8Array::from(server_hash.as_slice()); - let object = web_sys::js_sys::Object::new(); Reflect::set( @@ -365,7 +355,10 @@ pub async fn network_connect( &JsValue::from_str("sha-256"), )?; - web_sys::js_sys::Reflect::set(&object, &"value".into(), &hash)?; + if let Some(server_hash) = &CONFIG.cert_hash { + let hash = web_sys::js_sys::Uint8Array::from(server_hash.as_slice()); + web_sys::js_sys::Reflect::set(&object, &"value".into(), &hash)?; + } let array = web_sys::js_sys::Array::new(); array.push(&object); @@ -423,3 +416,7 @@ pub fn load_username() -> Option { .get_item("username") .ok()? } + +pub fn load_config() -> Option { + serde_wasm_bindgen::from_value(Reflect::get(window()?.as_ref(), &"config".into()).ok()?).ok() +} diff --git a/src/lib.rs b/src/lib.rs index 015ad29..fe70ffe 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,6 +18,8 @@ use mumble_protocol::control::ControlPacket; use mumble_protocol::voice::VoicePacketPayload; use mumble_protocol::Clientbound; use mumble_protocol::Serverbound; +use once_cell::sync::Lazy; +use serde::Deserialize; use std::collections::hash_map::Entry; use std::collections::HashMap; use std::time::Duration; @@ -32,6 +34,14 @@ pub mod imp; #[path = "imp/desktop.rs"] pub mod imp; +#[derive(Clone, Deserialize, Default)] +pub struct GuiConfig { + pub proxy_url: Option, + pub cert_hash: Option>, +} + +pub static CONFIG: Lazy = Lazy::new(|| imp::load_config().unwrap_or_default()); + #[macro_export] macro_rules! bail { ($($x:tt)*) => {