From ad8e3f023064e7ae4ef827fde9fa96d966a61199 Mon Sep 17 00:00:00 2001 From: maciejhirsz Date: Thu, 16 Feb 2017 14:41:33 +0100 Subject: [PATCH] Added CLI flags --- ipfs/src/lib.rs | 5 +++-- parity/cli/config.full.toml | 2 +- parity/cli/config.toml | 2 +- parity/cli/mod.rs | 14 +++++++------- parity/cli/usage.txt | 6 +++--- parity/configuration.rs | 11 +++++++++++ parity/ipfs.rs | 16 ++++++++++++++++ parity/main.rs | 3 ++- parity/run.rs | 6 +++++- 9 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 parity/ipfs.rs diff --git a/ipfs/src/lib.rs b/ipfs/src/lib.rs index 5c95fe88e..e497faed7 100644 --- a/ipfs/src/lib.rs +++ b/ipfs/src/lib.rs @@ -29,6 +29,7 @@ mod handler; use std::io::Write; use std::sync::Arc; +use std::net::{SocketAddr, IpAddr, Ipv4Addr}; use error::ServerError; use handler::{IpfsHandler, Out}; use hyper::server::{Listening, Handler, Request, Response}; @@ -128,8 +129,8 @@ fn write_chunk(transport: &mut W, progress: &mut usize, data: &[u8]) - } } -pub fn start_server(client: Arc) -> Result { - let addr = "0.0.0.0:5001".parse().expect("can't fail on static input; qed"); +pub fn start_server(port: u16, client: Arc) -> Result { + let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), port); Ok( hyper::Server::http(&addr)? diff --git a/parity/cli/config.full.toml b/parity/cli/config.full.toml index b527a9b65..0983bf792 100644 --- a/parity/cli/config.full.toml +++ b/parity/cli/config.full.toml @@ -68,7 +68,7 @@ user = "test_user" pass = "test_pass" [ipfs] -disable = true +enable = false port = 5001 [mining] diff --git a/parity/cli/config.toml b/parity/cli/config.toml index 66886e71e..288f3b2ed 100644 --- a/parity/cli/config.toml +++ b/parity/cli/config.toml @@ -39,7 +39,7 @@ user = "username" pass = "password" [ipfs] -disable = true +enable = false port = 5001 [mining] diff --git a/parity/cli/mod.rs b/parity/cli/mod.rs index 4cb7ff4e5..a416aa4ce 100644 --- a/parity/cli/mod.rs +++ b/parity/cli/mod.rs @@ -190,9 +190,9 @@ usage! { flag_dapps_apis_all: bool = false, or |_| None, // IPFS - flag_ipfs_off: bool = true, - or |c: &Config| otry!(c.ipfs).disable.clone(), - flag_ipfs_port: u16 = 5001u16, + flag_ipfs_api: bool = false, + or |c: &Config| otry!(c.ipfs).enable.clone(), + flag_ipfs_api_port: u16 = 5001u16, or |c: &Config| otry!(c.ipfs).port.clone(), // -- Sealing/Mining Options @@ -418,7 +418,7 @@ struct Dapps { #[derive(Default, Debug, PartialEq, RustcDecodable)] struct Ipfs { - disable: Option, + enable: Option, port: Option, } @@ -651,8 +651,8 @@ mod tests { flag_dapps_apis_all: false, // IPFS - flag_ipfs_off: true, - flag_ipfs_port: 5001u16, + flag_ipfs_api: false, + flag_ipfs_api_port: 5001u16, // -- Sealing/Mining Options flag_author: Some("0xdeadbeefcafe0000000000000000000000000001".into()), @@ -840,7 +840,7 @@ mod tests { pass: Some("password".into()) }), ipfs: Some(Ipfs { - disable: Some(true), + enable: Some(false), port: Some(5001) }), mining: Some(Mining { diff --git a/parity/cli/usage.txt b/parity/cli/usage.txt index c13e0dee7..fd19a8004 100644 --- a/parity/cli/usage.txt +++ b/parity/cli/usage.txt @@ -175,9 +175,9 @@ API and Console Options: --dapps-apis-all Expose all possible RPC APIs on Dapps port. WARNING: INSECURE. Used only for development. (default: {flag_dapps_apis_all}) - --no-ipfs Disable IPFS-compatible HTTP API. (default: {flag_ipfs_off}) - --ipfs-port PORT Configure on which port the IPFS HTTP API should listen. - (default: {flag_ipfs_port}) + --ipfs-api Enable IPFS-compatible HTTP API. (default: {flag_ipfs_api}) + --ipfs-api-port PORT Configure on which port the IPFS HTTP API should listen. + (default: {flag_ipfs_api_port}) Sealing/Mining Options: --author ADDRESS Specify the block author (aka "coinbase") address diff --git a/parity/configuration.rs b/parity/configuration.rs index 349e57679..34fea453d 100644 --- a/parity/configuration.rs +++ b/parity/configuration.rs @@ -37,6 +37,7 @@ use params::{ResealPolicy, AccountsConfig, GasPricerConfig, MinerExtras}; use ethcore_logger::Config as LogConfig; use dir::{self, Directories, default_hypervisor_path, default_local_path, default_data_path}; use dapps::Configuration as DappsConfiguration; +use ipfs::Configuration as IpfsConfiguration; use signer::{Configuration as SignerConfiguration}; use updater::{UpdatePolicy, UpdateFilter, ReleaseTrack}; use run::RunCmd; @@ -118,6 +119,7 @@ impl Configuration { let geth_compatibility = self.args.flag_geth; let ui_address = self.ui_port().map(|port| (self.ui_interface(), port)); let dapps_conf = self.dapps_config(); + let ipfs_conf = self.ipfs_config(); let signer_conf = self.signer_config(); let format = self.format()?; @@ -342,6 +344,7 @@ impl Configuration { ui_address: ui_address, net_settings: self.network_settings(), dapps_conf: dapps_conf, + ipfs_conf: ipfs_conf, signer_conf: signer_conf, dapp: self.dapp_to_open()?, ui: self.args.cmd_ui, @@ -539,6 +542,13 @@ impl Configuration { } } + fn ipfs_config(&self) -> IpfsConfiguration { + IpfsConfiguration { + enabled: self.args.flag_ipfs_api, + port: self.args.flag_ipfs_api_port, + } + } + fn dapp_to_open(&self) -> Result, String> { if !self.args.cmd_dapp { return Ok(None); @@ -1101,6 +1111,7 @@ mod tests { ui_address: Some(("127.0.0.1".into(), 8180)), net_settings: Default::default(), dapps_conf: Default::default(), + ipfs_conf: Default::default(), signer_conf: Default::default(), ui: false, dapp: None, diff --git a/parity/ipfs.rs b/parity/ipfs.rs new file mode 100644 index 000000000..ed7b59450 --- /dev/null +++ b/parity/ipfs.rs @@ -0,0 +1,16 @@ +pub use parity_ipfs::start_server; + +#[derive(Debug, PartialEq, Clone)] +pub struct Configuration { + pub enabled: bool, + pub port: u16, +} + +impl Default for Configuration { + fn default() -> Self { + Configuration { + enabled: false, + port: 5001, + } + } +} diff --git a/parity/main.rs b/parity/main.rs index 199dff4b4..b9ec46136 100644 --- a/parity/main.rs +++ b/parity/main.rs @@ -56,7 +56,7 @@ extern crate ethcore_signer; extern crate ethcore_util as util; extern crate ethsync; extern crate parity_hash_fetch as hash_fetch; -extern crate parity_ipfs as ipfs; +extern crate parity_ipfs; extern crate parity_reactor; extern crate parity_updater as updater; extern crate rpc_cli; @@ -88,6 +88,7 @@ mod cache; mod cli; mod configuration; mod dapps; +mod ipfs; mod deprecated; mod dir; mod helpers; diff --git a/parity/run.rs b/parity/run.rs index ac6f0dcf9..df9fc7384 100644 --- a/parity/run.rs +++ b/parity/run.rs @@ -94,6 +94,7 @@ pub struct RunCmd { pub ui_address: Option<(String, u16)>, pub net_settings: NetworkSettings, pub dapps_conf: dapps::Configuration, + pub ipfs_conf: ipfs::Configuration, pub signer_conf: signer::Configuration, pub dapp: Option, pub ui: bool, @@ -422,7 +423,10 @@ pub fn execute(cmd: RunCmd, can_restart: bool, logger: Arc) -> R let signer_server = signer::start(cmd.signer_conf.clone(), signer_deps)?; // the ipfs server - let ipfs_server = ipfs::start_server(client.clone())?; + let ipfs_server = match cmd.ipfs_conf.enabled { + true => Some(ipfs::start_server(cmd.ipfs_conf.port, client.clone())?), + false => None, + }; // the informant let informant = Arc::new(Informant::new(