Procházet zdrojové kódy

lilith: Specify full accept_addrs for each spawned networks instead of globally

parazyd před 2 roky
rodič
revize
3b967d8dae
2 změnil soubory, kde provedl 17 přidání a 29 odebrání
  1. 4 13
      bin/lilith/lilith_config.toml
  2. 13 16
      bin/lilith/src/main.rs

+ 4 - 13
bin/lilith/lilith_config.toml

@@ -9,42 +9,33 @@
 # JSON-RPC listen URL
 #rpc_listen = "tcp://127.0.0.1:18927"
 
-# Daemon published urls, common for all enabled networks.
-# These should be without a port.
-accept_addrs = [
-    "tcp://0.0.0.0",
-    "tcp://[::]",
-    "tcp+tls://0.0.0.0",
-    "tcp+tls://[::]",
-]
-
 # Hosts .tsv file to use
 #hosts_file="~/.config/darkfi/lilith_hosts.tsv"
 
 ## Per-network settings
 #[network."darkfid_sync_v4"]
-#port = 33032
+#accept_addrs = ["tcp+tls://0.0.0.0:33022"]
 #seeds = []
 #peers = []
 #version = "0.4.1"
 #localnet = false
 
 #[network."darkfid_consensus_v4"]
-#port = 33033
+#accept_addrs = ["tcp+tls://0.0.0.0:33023"]
 #seeds = []
 #peers = []
 #version = "0.4.1"
 #localnet = false
 
 #[network."darkirc_v4"]
-#port = 25551
+#accept_addrs = ["tcp+tls://0.0.0.0:25551"]
 #seeds = []
 #peers = []
 #version = "0.4.1"
 #localnet = false
 
 #[network."taud_v4"]
-#port = 23331
+#accept_addrs = ["tcp+tls://0.0.0.0:23331"]
 #seeds = []
 #peers = []
 #version = "0.4.1"

+ 13 - 16
bin/lilith/src/main.rs

@@ -69,10 +69,6 @@ struct Args {
     /// JSON-RPC listen URL
     pub rpc_listen: Url,
 
-    #[structopt(long)]
-    /// Accept addresses (URL without port)
-    pub accept_addrs: Vec<Url>,
-
     #[structopt(short, long)]
     /// Configuration file to use
     pub config: Option<String>,
@@ -126,8 +122,8 @@ impl Spawn {
 /// Defines the network-specific settings
 #[derive(Clone)]
 struct NetInfo {
-    /// Specific port the network will use
-    pub port: u16,
+    /// Accept addresses the network will use
+    pub accept_addrs: Vec<Url>,
     /// Other seeds to connect to
     pub seeds: Vec<Url>,
     /// Manual peers to connect to
@@ -308,13 +304,18 @@ fn parse_configured_networks(data: &str) -> Result<HashMap<String, NetInfo>> {
             for net in map["network"].as_table().unwrap() {
                 info!(target: "lilith", "Found configuration for network: {}", net.0);
                 let table = net.1.as_table().unwrap();
-                if !table.contains_key("port") {
-                    warn!(target: "lilith", "Network port is mandatory, skipping network.");
+                if !table.contains_key("accept_addrs") {
+                    warn!(target: "lilith", "Network accept addrs are mandatory, skipping network.");
                     continue
                 }
 
                 let name = net.0.to_string();
-                let port = table["port"].as_integer().unwrap().try_into().unwrap();
+                let accept_addrs: Vec<Url> = table["accept_addrs"]
+                    .as_array()
+                    .unwrap()
+                    .iter()
+                    .map(|x| Url::parse(x.as_str().unwrap()).unwrap())
+                    .collect();
 
                 let mut seeds = vec![];
                 if table.contains_key("seeds") {
@@ -354,7 +355,7 @@ fn parse_configured_networks(data: &str) -> Result<HashMap<String, NetInfo>> {
                     semver::Version::parse(option_env!("CARGO_PKG_VERSION").unwrap_or("0.0.0"))?
                 };
 
-                let net_info = NetInfo { port, seeds, peers, version, localnet };
+                let net_info = NetInfo { accept_addrs, seeds, peers, version, localnet };
                 ret.insert(name, net_info);
             }
         }
@@ -366,17 +367,14 @@ fn parse_configured_networks(data: &str) -> Result<HashMap<String, NetInfo>> {
 async fn spawn_net(
     name: String,
     info: &NetInfo,
-    accept_addrs: &[Url],
     saved_hosts: &HashSet<Url>,
     ex: Arc<Executor<'static>>,
 ) -> Result<Spawn> {
     let mut listen_urls = vec![];
 
     // Configure listen addrs for this network
-    for url in accept_addrs {
-        let mut url = url.clone();
-        url.set_port(Some(info.port))?;
-        listen_urls.push(url);
+    for url in &info.accept_addrs {
+        listen_urls.push(url.clone());
     }
 
     // P2P network settings
@@ -441,7 +439,6 @@ async fn realmain(args: Args, ex: Arc<Executor<'static>>) -> Result<()> {
         match spawn_net(
             name.to_string(),
             info,
-            &args.accept_addrs,
             saved_hosts.get(name).unwrap_or(&HashSet::new()),
             ex.clone(),
         )