diff options
| author | tv <tv@krebsco.de> | 2026-10-31 04:57:36 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-31 04:57:36 +0100 |
| commit | 41d50380caebf8cb723e1eda8d866fed2b9ff1c1 (patch) | |
| tree | 4c9dce3dd5ecbe38148a8e992fb95bd49a56c1e4 /src/transport | |
| parent | 7c148c95c22a9852f46f05d3ee887335c53721d1 (diff) | |
move mycelium settings to mycelium module
Diffstat (limited to 'src/transport')
| -rw-r--r-- | src/transport/mycelium/mod.rs | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/transport/mycelium/mod.rs b/src/transport/mycelium/mod.rs index 04474fe..ac55ae9 100644 --- a/src/transport/mycelium/mod.rs +++ b/src/transport/mycelium/mod.rs @@ -98,7 +98,7 @@ pub(crate) struct MyceliumTransport { pub(crate) fn check(settings: &crate::config::Settings) -> Result<()> { if let Some(url) = &settings.mycelium_rest_url { Url::parse(url).with_context(|| format!("mycelium-rest-url {url:?}"))?; - if let Some((name, _)) = settings.supervised_only().iter().find(|(_, set)| *set) { + if let Some((name, _)) = supervised_only(settings).iter().find(|(_, set)| *set) { anyhow::bail!( "{name} is for a supervised Mycelium daemon and can't be combined with mycelium-rest-url" ); @@ -111,6 +111,26 @@ pub(crate) fn check(settings: &crate::config::Settings) -> Result<()> { Ok(()) } +/// The options only a supervised Mycelium daemon takes, and whether each is set: the +/// other side of `config::CONFLICTS`' `mycelium-rest-url` (a test keeps them the same). +pub(crate) fn supervised_only(settings: &crate::config::Settings) -> [(&'static str, bool); 4] { + [ + ("mycelium-key-file", settings.mycelium_key_file.is_some()), + ( + "mycelium-network-key-file", + settings.mycelium_network_key_file.is_some(), + ), + ( + "mycelium-network-name", + settings.mycelium_network_name.is_some(), + ), + ( + "mycelium-tcp-listen-port", + settings.mycelium_tcp_listen_port.is_some(), + ), + ] +} + /// The transport as `settings` configure it (`transport::start`): its daemon supervised /// (started, which can take a while) or one running elsewhere. None if `stop` came /// first. @@ -119,7 +139,10 @@ pub(crate) async fn start( mut stop: tokio::sync::watch::Receiver<bool>, ) -> Result<Option<MyceliumTransport>> { let spawn_config = MyceliumSpawnConfig { - rest_url_opt: settings.mycelium_rest_url(), + rest_url_opt: settings + .mycelium_rest_url + .as_deref() + .and_then(|url| Url::parse(url).ok()), key_file_opt: settings.mycelium_key_file.clone(), network_key_file: settings.mycelium_network_key_file.clone(), network_name: settings.mycelium_network_name.clone(), |
