1use serde::Deserialize;
2use std::path::PathBuf;
3
4#[derive(Debug, Deserialize, Clone)]
5pub struct GossipConfig {
6 #[serde(default)]
7 pub enabled: bool,
8 #[serde(default = "default_bind")]
9 pub bind: String,
10 #[serde(default)]
11 pub seeds: Vec<String>,
12 #[serde(default = "default_node_name")]
13 pub node_name: String,
14 #[serde(default)]
17 pub identity_key: Option<PathBuf>,
18 #[serde(default)]
21 pub peer_keys: Vec<PathBuf>,
22 #[serde(default)]
24 pub peer_identities: std::collections::BTreeMap<String, PathBuf>,
25}
26
27impl Default for GossipConfig {
28 fn default() -> Self {
29 Self {
30 enabled: false,
31 bind: default_bind(),
32 seeds: Vec::new(),
33 node_name: default_node_name(),
34 identity_key: None,
35 peer_keys: Vec::new(),
36 peer_identities: Default::default(),
37 }
38 }
39}
40
41fn default_bind() -> String {
42 "0.0.0.0:7946".into()
43}
44
45fn default_node_name() -> String {
46 std::env::var("HOSTNAME").unwrap_or_else(|_| "hoike-node".into())
47}