Reserved peers CLI flag (#528)

This commit is contained in:
Arkadiy Paronyan
2018-08-09 20:52:56 +02:00
committed by Gav Wood
parent 36122833a1
commit 9d88d868dd
3 changed files with 23 additions and 0 deletions
+6
View File
@@ -70,6 +70,12 @@ args:
help: Specify a list of bootnodes
takes_value: true
multiple: true
- reserved-nodes:
long: reserved-nodes
value_name: URL
help: Specify a list of reserved node addresses
takes_value: true
multiple: true
- chain:
long: chain
value_name: CHAIN_SPEC
+7
View File
@@ -61,6 +61,7 @@ use service::{
ServiceFactory, FactoryFullConfiguration, RuntimeGenesis,
FactoryGenesis, PruningMode, ChainSpec,
};
use network::NonReservedPeerMode;
use std::io::{Write, Read, stdin, stdout};
use std::iter;
@@ -278,6 +279,12 @@ where
.map_or(Default::default(), |v| v.map(|n| n.to_owned()).collect::<Vec<_>>()));
config.network.config_path = Some(network_path(&base_path, config.chain_spec.id()).to_string_lossy().into());
config.network.net_config_path = config.network.config_path.clone();
config.network.reserved_nodes.extend(matches
.values_of("reserved-nodes")
.map_or(Default::default(), |v| v.map(|n| n.to_owned()).collect::<Vec<_>>()));
if !config.network.reserved_nodes.is_empty() {
config.network.non_reserved_mode = NonReservedPeerMode::Deny;
}
let port = match matches.value_of("port") {
Some(port) => port.parse().map_err(|_| "Invalid p2p port value specified.")?,
@@ -506,6 +506,16 @@ fn init_thread(
}
}
shared.network_state.set_non_reserved_mode(shared.config.non_reserved_mode.clone());
for reserved in shared.config.reserved_nodes.iter() {
match shared.network_state.add_reserved_peer(reserved) {
Ok(who) => {
trace!(target: "sub-libp2p", "Added reseved peer {:?}", who);
},
Err(err) => warn!(target:"sub-libp2p", "Couldn't parse reserved address: {}", err),
}
}
// Start connecting to nodes now.
connect_to_nodes(shared.clone(), transport.clone(), &swarm_controller);