lilith: Support versioning of spawned networks.

This commit is contained in:
parazyd
2023-07-03 17:34:27 +02:00
parent fba6eb966f
commit 3546af6c79
5 changed files with 32 additions and 5 deletions

View File

@@ -22,6 +22,7 @@ smol = "1.3.0"
# Misc
log = "0.4.19"
semver = "1.0.17"
serde_json = "1.0.96"
simplelog = "0.12.1"
url = "2.4.0"

View File

@@ -22,26 +22,30 @@ accept_addrs = [
#hosts_file="~/.config/darkfi/lilith_hosts.tsv"
## Per-network settings
#[network."darkfid_sync"]
#[network."darkfid_sync_v4"]
#port = 33032
#seeds = []
#peers = []
#version = "0.4.1"
#localnet = false
#[network."darkfid_consensus"]
#[network."darkfid_consensus_v4"]
#port = 33033
#seeds = []
#peers = []
#version = "0.4.1"
#localnet = false
#[network."ircd"]
#[network."darkirc_v4"]
#port = 25551
#seeds = []
#peers = []
#version = "0.4.1"
#localnet = false
#[network."taud"]
#[network."taud_v4"]
#port = 23331
#seeds = []
#peers = []
#version = "0.4.1"
#localnet = false

View File

@@ -26,6 +26,7 @@ use async_std::{stream::StreamExt, sync::Arc};
use async_trait::async_trait;
use futures::future::join_all;
use log::{debug, error, info, warn};
use semver::Version;
use serde_json::json;
use signal_hook::consts::{SIGHUP, SIGINT, SIGQUIT, SIGTERM};
use signal_hook_async_std::Signals;
@@ -117,6 +118,8 @@ struct NetInfo {
pub seeds: Vec<Url>,
/// Manual peers to connect to
pub peers: Vec<Url>,
/// Supported network version
pub version: Version,
/// Enable localnet hosts
pub localnet: bool,
}
@@ -355,7 +358,13 @@ fn parse_configured_networks(data: &str) -> Result<HashMap<String, NetInfo>> {
false
};
let net_info = NetInfo { port, seeds, peers, localnet };
let version = if table.contains_key("version") {
semver::Version::parse(table["version"].as_str().unwrap())?
} else {
semver::Version::parse(option_env!("CARGO_PKG_VERSION").unwrap_or("0.0.0"))?
};
let net_info = NetInfo { port, seeds, peers, version, localnet };
ret.insert(name, net_info);
}
}
@@ -386,6 +395,7 @@ async fn spawn_net(
seeds: info.seeds.clone(),
peers: info.peers.clone(),
outbound_connections: 0,
app_version: info.version.clone(),
localnet: info.localnet,
allowed_transports: vec![
"tcp".to_string(),