libp2p_server/
config.rs

1use std::{error::Error, path::Path};
2
3use libp2p::Multiaddr;
4use serde::Deserialize;
5
6#[derive(Clone, Deserialize)]
7#[serde(rename_all = "PascalCase")]
8pub(crate) struct Config {
9    pub(crate) identity: Identity,
10    pub(crate) addresses: Addresses,
11}
12
13impl Config {
14    pub(crate) fn from_file(path: &Path) -> Result<Self, Box<dyn Error>> {
15        Ok(serde_json::from_str(&std::fs::read_to_string(path)?)?)
16    }
17}
18
19#[derive(Clone, Deserialize)]
20#[serde(rename_all = "PascalCase")]
21pub(crate) struct Identity {
22    #[serde(rename = "PeerID")]
23    pub(crate) peer_id: String,
24    pub(crate) priv_key: String,
25}
26
27#[derive(Clone, Deserialize)]
28#[serde(rename_all = "PascalCase")]
29pub(crate) struct Addresses {
30    pub(crate) swarm: Vec<Multiaddr>,
31    pub(crate) append_announce: Vec<Multiaddr>,
32}
33
34impl zeroize::Zeroize for Config {
35    fn zeroize(&mut self) {
36        self.identity.peer_id.zeroize();
37        self.identity.priv_key.zeroize();
38    }
39}