1pub mod config;
4pub mod control;
5pub mod error;
6#[cfg(feature = "harness")]
7pub mod harness;
8#[cfg(feature = "m4a")]
9pub mod m4a;
10#[cfg(feature = "memory")]
11pub mod memory;
12#[cfg(feature = "m4a")]
13pub mod hub;
14pub mod node_controller;
15pub mod drain_consumer;
16pub mod operator_control;
17pub mod mesh_runtime;
18#[cfg(feature = "m4a")]
19pub mod node_sink;
20#[cfg(feature = "m4a")]
21pub mod messenger;
22#[cfg(feature = "m4a")]
23pub mod provision;
24#[cfg(feature = "m4a")]
25pub mod tasks;
26pub mod subservice;
27pub mod supervisor;
28
29pub use config::ServerConfig;
30pub use error::ServerError;
31pub use subservice::{State, Status, Subservice};
32pub use supervisor::Supervisor;
33
34pub fn build_subservices(config: &ServerConfig) -> Vec<Box<dyn Subservice>> {
36 #[allow(unused_mut)]
37 let mut services: Vec<Box<dyn Subservice>> = Vec::new();
38 #[cfg(feature = "harness")]
39 if config.harness_enabled {
40 if let Some(bin) = config.harness_bin.clone() {
41 services.push(Box::new(harness::HarnessSubservice::new(bin, config.harness_args.clone())));
42 }
43 }
44 #[cfg(feature = "m4a")]
45 if config.m4a_enabled {
46 services.push(Box::new(m4a::M4aSubservice::new(
47 &config.data_dir,
48 config.m4a_master_key_var.clone(),
49 )));
50 }
51 #[cfg(feature = "m4a")]
52 if let (true, Some(master), Some(c2_addr)) =
53 (config.m4a_enabled, config.m4a_master_key_var.clone(), config.provision_c2_addr.clone())
54 {
55 services.push(Box::new(provision::ProvisionSubservice::new(provision::ProvisionConfig {
56 data_dir: config.data_dir.clone(),
57 master_key_var: master,
58 c2_addr,
59 c2_token_var: config.provision_c2_token_var.clone(),
60 interval: std::time::Duration::from_secs(config.provision_interval_secs),
61 server_ref: config.m4a_server_ref.clone(),
62 mail_domain: config.mail_domain.clone(),
63 policy_path: config.policy_path.clone(),
64 })));
65 }
66 #[cfg(feature = "memory")]
67 services.push(Box::new(memory::MemorySubservice::new(
68 config.memory_bin.clone(),
69 &config.data_dir,
70 )));
71 let _ = config;
72 services
73}