Merge pull request #1347 from rphmeier/reserved-peers
Reserved peers, reserved-only flag
This commit is contained in:
@@ -67,6 +67,10 @@ Networking Options:
|
||||
--no-discovery Disable new peer discovery.
|
||||
--node-key KEY Specify node secret key, either as 64-character hex
|
||||
string or input to SHA3 operation.
|
||||
--reserved-peers FILE Provide a file containing enodes, one per line.
|
||||
These nodes will always have a reserved slot on top
|
||||
of the normal maximum peers.
|
||||
--reserved-only Connect only to reserved nodes.
|
||||
|
||||
API and Console Options:
|
||||
--jsonrpc-off Disable the JSON-RPC API server.
|
||||
@@ -238,6 +242,8 @@ pub struct Args {
|
||||
pub flag_no_discovery: bool,
|
||||
pub flag_nat: String,
|
||||
pub flag_node_key: Option<String>,
|
||||
pub flag_reserved_peers: Option<String>,
|
||||
pub flag_reserved_only: bool,
|
||||
pub flag_cache_pref_size: usize,
|
||||
pub flag_cache_max_size: usize,
|
||||
pub flag_queue_max_size: usize,
|
||||
|
||||
@@ -153,6 +153,26 @@ impl Configuration {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn init_reserved_nodes(&self) -> Vec<String> {
|
||||
use std::fs::File;
|
||||
use std::io::BufRead;
|
||||
|
||||
if let Some(ref path) = self.args.flag_reserved_peers {
|
||||
let mut buffer = String::new();
|
||||
let mut node_file = File::open(path).unwrap_or_else(|e| {
|
||||
die!("Error opening reserved nodes file: {}", e);
|
||||
});
|
||||
node_file.read_to_string(&mut buffer).expect("Error reading reserved node file");
|
||||
buffer.lines().map(|s| {
|
||||
Self::normalize_enode(s).unwrap_or_else(|| {
|
||||
die!("{}: Invalid node address format given for a reserved node.", s);
|
||||
})
|
||||
}).collect()
|
||||
} else {
|
||||
Vec::new()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn net_addresses(&self) -> (Option<SocketAddr>, Option<SocketAddr>) {
|
||||
let port = self.net_port();
|
||||
let listen_address = Some(SocketAddr::new(IpAddr::from_str("0.0.0.0").unwrap(), port));
|
||||
@@ -179,6 +199,8 @@ impl Configuration {
|
||||
let mut net_path = PathBuf::from(&self.path());
|
||||
net_path.push("network");
|
||||
ret.config_path = Some(net_path.to_str().unwrap().to_owned());
|
||||
ret.reserved_nodes = self.init_reserved_nodes();
|
||||
ret.reserved_only = self.args.flag_reserved_only;
|
||||
ret
|
||||
}
|
||||
|
||||
|
||||
@@ -315,10 +315,11 @@ fn execute_export(conf: Configuration) {
|
||||
udp_port: None,
|
||||
nat_enabled: false,
|
||||
discovery_enabled: false,
|
||||
pin: true,
|
||||
reserved_only: true,
|
||||
boot_nodes: Vec::new(),
|
||||
use_secret: None,
|
||||
ideal_peers: 0,
|
||||
reserved_nodes: Vec::new(),
|
||||
};
|
||||
let client_config = conf.client_config(&spec);
|
||||
|
||||
@@ -386,10 +387,11 @@ fn execute_import(conf: Configuration) {
|
||||
udp_port: None,
|
||||
nat_enabled: false,
|
||||
discovery_enabled: false,
|
||||
pin: true,
|
||||
reserved_only: true,
|
||||
boot_nodes: Vec::new(),
|
||||
use_secret: None,
|
||||
ideal_peers: 0,
|
||||
reserved_nodes: Vec::new(),
|
||||
};
|
||||
let client_config = conf.client_config(&spec);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user