Create network-specific nodes files (#1970)
This commit is contained in:
parent
fcfacc76d5
commit
f69b3f8522
@ -32,7 +32,7 @@ use ethcore_rpc::NetworkSettings;
|
|||||||
use cache::CacheConfig;
|
use cache::CacheConfig;
|
||||||
use helpers::{to_duration, to_mode, to_block_id, to_u256, to_pending_set, to_price, replace_home,
|
use helpers::{to_duration, to_mode, to_block_id, to_u256, to_pending_set, to_price, replace_home,
|
||||||
geth_ipc_path, parity_ipc_path, to_bootnodes, to_addresses, to_address};
|
geth_ipc_path, parity_ipc_path, to_bootnodes, to_addresses, to_address};
|
||||||
use params::{ResealPolicy, AccountsConfig, GasPricerConfig, MinerExtras};
|
use params::{ResealPolicy, AccountsConfig, GasPricerConfig, MinerExtras, SpecType};
|
||||||
use ethcore_logger::Config as LogConfig;
|
use ethcore_logger::Config as LogConfig;
|
||||||
use dir::Directories;
|
use dir::Directories;
|
||||||
use dapps::Configuration as DappsConfiguration;
|
use dapps::Configuration as DappsConfiguration;
|
||||||
@ -440,13 +440,23 @@ impl Configuration {
|
|||||||
ret.min_peers = self.min_peers();
|
ret.min_peers = self.min_peers();
|
||||||
let mut net_path = PathBuf::from(self.directories().db);
|
let mut net_path = PathBuf::from(self.directories().db);
|
||||||
net_path.push("network");
|
net_path.push("network");
|
||||||
|
let net_specific_path = net_path.join(&try!(self.network_specific_path()));
|
||||||
ret.config_path = Some(net_path.to_str().unwrap().to_owned());
|
ret.config_path = Some(net_path.to_str().unwrap().to_owned());
|
||||||
|
ret.net_config_path = Some(net_specific_path.to_str().unwrap().to_owned());
|
||||||
ret.reserved_nodes = try!(self.init_reserved_nodes());
|
ret.reserved_nodes = try!(self.init_reserved_nodes());
|
||||||
|
|
||||||
ret.allow_non_reserved = !self.args.flag_reserved_only;
|
ret.allow_non_reserved = !self.args.flag_reserved_only;
|
||||||
Ok(ret)
|
Ok(ret)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn network_specific_path(&self) -> Result<PathBuf, String> {
|
||||||
|
let spec_type : SpecType = try!(self.chain().parse());
|
||||||
|
let spec = try!(spec_type.spec());
|
||||||
|
let id = try!(self.network_id());
|
||||||
|
let mut path = PathBuf::new();
|
||||||
|
path.push(format!("{}", id.unwrap_or_else(|| spec.network_id())));
|
||||||
|
Ok(path)
|
||||||
|
}
|
||||||
|
|
||||||
fn network_id(&self) -> Result<Option<U256>, String> {
|
fn network_id(&self) -> Result<Option<U256>, String> {
|
||||||
let net_id = self.args.flag_network_id.as_ref().or(self.args.flag_networkid.as_ref());
|
let net_id = self.args.flag_network_id.as_ref().or(self.args.flag_networkid.as_ref());
|
||||||
match net_id {
|
match net_id {
|
||||||
|
@ -172,6 +172,7 @@ pub fn default_network_config() -> ::ethsync::NetworkConfiguration {
|
|||||||
use ethsync::NetworkConfiguration;
|
use ethsync::NetworkConfiguration;
|
||||||
NetworkConfiguration {
|
NetworkConfiguration {
|
||||||
config_path: Some(replace_home("$HOME/.parity/network")),
|
config_path: Some(replace_home("$HOME/.parity/network")),
|
||||||
|
net_config_path: Some(replace_home("$HOME/.parity/network/1")),
|
||||||
listen_address: Some("0.0.0.0:30303".into()),
|
listen_address: Some("0.0.0.0:30303".into()),
|
||||||
public_address: None,
|
public_address: None,
|
||||||
udp_port: None,
|
udp_port: None,
|
||||||
|
@ -215,8 +215,10 @@ impl ManageNetwork for EthSync {
|
|||||||
#[derive(Binary, Debug, Clone, PartialEq, Eq)]
|
#[derive(Binary, Debug, Clone, PartialEq, Eq)]
|
||||||
/// Network service configuration
|
/// Network service configuration
|
||||||
pub struct NetworkConfiguration {
|
pub struct NetworkConfiguration {
|
||||||
/// Directory path to store network configuration. None means nothing will be saved
|
/// Directory path to store general network configuration. None means nothing will be saved
|
||||||
pub config_path: Option<String>,
|
pub config_path: Option<String>,
|
||||||
|
/// Directory path to store network-specific configuration. None means nothing will be saved
|
||||||
|
pub net_config_path: Option<String>,
|
||||||
/// IP address to listen for incoming connections. Listen to all connections by default
|
/// IP address to listen for incoming connections. Listen to all connections by default
|
||||||
pub listen_address: Option<String>,
|
pub listen_address: Option<String>,
|
||||||
/// IP address to advertise. Detected automatically if none.
|
/// IP address to advertise. Detected automatically if none.
|
||||||
@ -264,6 +266,7 @@ impl NetworkConfiguration {
|
|||||||
|
|
||||||
Ok(BasicNetworkConfiguration {
|
Ok(BasicNetworkConfiguration {
|
||||||
config_path: self.config_path,
|
config_path: self.config_path,
|
||||||
|
net_config_path: self.net_config_path,
|
||||||
listen_address: match self.listen_address { None => None, Some(addr) => Some(try!(SocketAddr::from_str(&addr))) },
|
listen_address: match self.listen_address { None => None, Some(addr) => Some(try!(SocketAddr::from_str(&addr))) },
|
||||||
public_address: match self.public_address { None => None, Some(addr) => Some(try!(SocketAddr::from_str(&addr))) },
|
public_address: match self.public_address { None => None, Some(addr) => Some(try!(SocketAddr::from_str(&addr))) },
|
||||||
udp_port: self.udp_port,
|
udp_port: self.udp_port,
|
||||||
@ -283,6 +286,7 @@ impl From<BasicNetworkConfiguration> for NetworkConfiguration {
|
|||||||
fn from(other: BasicNetworkConfiguration) -> Self {
|
fn from(other: BasicNetworkConfiguration) -> Self {
|
||||||
NetworkConfiguration {
|
NetworkConfiguration {
|
||||||
config_path: other.config_path,
|
config_path: other.config_path,
|
||||||
|
net_config_path: other.net_config_path,
|
||||||
listen_address: other.listen_address.and_then(|addr| Some(format!("{}", addr))),
|
listen_address: other.listen_address.and_then(|addr| Some(format!("{}", addr))),
|
||||||
public_address: other.public_address.and_then(|addr| Some(format!("{}", addr))),
|
public_address: other.public_address.and_then(|addr| Some(format!("{}", addr))),
|
||||||
udp_port: other.udp_port,
|
udp_port: other.udp_port,
|
||||||
|
@ -53,8 +53,10 @@ const MAINTENANCE_TIMEOUT: u64 = 1000;
|
|||||||
#[derive(Debug, PartialEq, Clone)]
|
#[derive(Debug, PartialEq, Clone)]
|
||||||
/// Network service configuration
|
/// Network service configuration
|
||||||
pub struct NetworkConfiguration {
|
pub struct NetworkConfiguration {
|
||||||
/// Directory path to store network configuration. None means nothing will be saved
|
/// Directory path to store general network configuration. None means nothing will be saved
|
||||||
pub config_path: Option<String>,
|
pub config_path: Option<String>,
|
||||||
|
/// Directory path to store network-specific configuration. None means nothing will be saved
|
||||||
|
pub net_config_path: Option<String>,
|
||||||
/// IP address to listen for incoming connections. Listen to all connections by default
|
/// IP address to listen for incoming connections. Listen to all connections by default
|
||||||
pub listen_address: Option<SocketAddr>,
|
pub listen_address: Option<SocketAddr>,
|
||||||
/// IP address to advertise. Detected automatically if none.
|
/// IP address to advertise. Detected automatically if none.
|
||||||
@ -90,6 +92,7 @@ impl NetworkConfiguration {
|
|||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
NetworkConfiguration {
|
NetworkConfiguration {
|
||||||
config_path: None,
|
config_path: None,
|
||||||
|
net_config_path: None,
|
||||||
listen_address: None,
|
listen_address: None,
|
||||||
public_address: None,
|
public_address: None,
|
||||||
udp_port: None,
|
udp_port: None,
|
||||||
@ -367,7 +370,7 @@ impl Host {
|
|||||||
},
|
},
|
||||||
|s| KeyPair::from_secret(s).expect("Error creating node secret key"))
|
|s| KeyPair::from_secret(s).expect("Error creating node secret key"))
|
||||||
};
|
};
|
||||||
let path = config.config_path.clone();
|
let path = config.net_config_path.clone();
|
||||||
// Setup the server socket
|
// Setup the server socket
|
||||||
let tcp_listener = try!(TcpListener::bind(&listen_address));
|
let tcp_listener = try!(TcpListener::bind(&listen_address));
|
||||||
listen_address = SocketAddr::new(listen_address.ip(), try!(tcp_listener.local_addr()).port());
|
listen_address = SocketAddr::new(listen_address.ip(), try!(tcp_listener.local_addr()).port());
|
||||||
|
Loading…
Reference in New Issue
Block a user