* fix #6052. honor --no-color for signer command * replace call to paint closure with the body, apply to generate_new_token too
This commit is contained in:
parent
b5f1524e78
commit
f212ae6322
@ -57,7 +57,7 @@ pub enum Cmd {
|
|||||||
Account(AccountCmd),
|
Account(AccountCmd),
|
||||||
ImportPresaleWallet(ImportWallet),
|
ImportPresaleWallet(ImportWallet),
|
||||||
Blockchain(BlockchainCmd),
|
Blockchain(BlockchainCmd),
|
||||||
SignerToken(WsConfiguration, UiConfiguration),
|
SignerToken(WsConfiguration, UiConfiguration, LogConfig),
|
||||||
SignerSign {
|
SignerSign {
|
||||||
id: Option<usize>,
|
id: Option<usize>,
|
||||||
pwfile: Option<PathBuf>,
|
pwfile: Option<PathBuf>,
|
||||||
@ -149,7 +149,7 @@ impl Configuration {
|
|||||||
let authfile = ::signer::codes_path(&ws_conf.signer_path);
|
let authfile = ::signer::codes_path(&ws_conf.signer_path);
|
||||||
|
|
||||||
if self.args.cmd_new_token {
|
if self.args.cmd_new_token {
|
||||||
Cmd::SignerToken(ws_conf, ui_conf)
|
Cmd::SignerToken(ws_conf, ui_conf, logger_config.clone())
|
||||||
} else if self.args.cmd_sign {
|
} else if self.args.cmd_sign {
|
||||||
let pwfile = self.args.flag_password.get(0).map(|pwfile| {
|
let pwfile = self.args.flag_password.get(0).map(|pwfile| {
|
||||||
PathBuf::from(pwfile)
|
PathBuf::from(pwfile)
|
||||||
@ -1285,7 +1285,11 @@ mod tests {
|
|||||||
interface: "127.0.0.1".into(),
|
interface: "127.0.0.1".into(),
|
||||||
port: 8180,
|
port: 8180,
|
||||||
hosts: Some(vec![]),
|
hosts: Some(vec![]),
|
||||||
}));
|
}, LogConfig {
|
||||||
|
color: true,
|
||||||
|
mode: None,
|
||||||
|
file: None,
|
||||||
|
} ));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -164,7 +164,7 @@ fn execute(command: Execute, can_restart: bool) -> Result<PostExecutionAction, S
|
|||||||
Cmd::Account(account_cmd) => account::execute(account_cmd).map(|s| PostExecutionAction::Print(s)),
|
Cmd::Account(account_cmd) => account::execute(account_cmd).map(|s| PostExecutionAction::Print(s)),
|
||||||
Cmd::ImportPresaleWallet(presale_cmd) => presale::execute(presale_cmd).map(|s| PostExecutionAction::Print(s)),
|
Cmd::ImportPresaleWallet(presale_cmd) => presale::execute(presale_cmd).map(|s| PostExecutionAction::Print(s)),
|
||||||
Cmd::Blockchain(blockchain_cmd) => blockchain::execute(blockchain_cmd).map(|_| PostExecutionAction::Quit),
|
Cmd::Blockchain(blockchain_cmd) => blockchain::execute(blockchain_cmd).map(|_| PostExecutionAction::Quit),
|
||||||
Cmd::SignerToken(ws_conf, ui_conf) => signer::execute(ws_conf, ui_conf).map(|s| PostExecutionAction::Print(s)),
|
Cmd::SignerToken(ws_conf, ui_conf, logger_config) => signer::execute(ws_conf, ui_conf, logger_config).map(|s| PostExecutionAction::Print(s)),
|
||||||
Cmd::SignerSign { id, pwfile, port, authfile } => rpc_cli::signer_sign(id, pwfile, port, authfile).map(|s| PostExecutionAction::Print(s)),
|
Cmd::SignerSign { id, pwfile, port, authfile } => rpc_cli::signer_sign(id, pwfile, port, authfile).map(|s| PostExecutionAction::Print(s)),
|
||||||
Cmd::SignerList { port, authfile } => rpc_cli::signer_list(port, authfile).map(|s| PostExecutionAction::Print(s)),
|
Cmd::SignerList { port, authfile } => rpc_cli::signer_list(port, authfile).map(|s| PostExecutionAction::Print(s)),
|
||||||
Cmd::SignerReject { id, port, authfile } => rpc_cli::signer_reject(id, port, authfile).map(|s| PostExecutionAction::Print(s)),
|
Cmd::SignerReject { id, port, authfile } => rpc_cli::signer_reject(id, port, authfile).map(|s| PostExecutionAction::Print(s)),
|
||||||
|
@ -118,12 +118,12 @@ pub struct RunCmd {
|
|||||||
pub whisper: ::whisper::Config
|
pub whisper: ::whisper::Config
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn open_ui(ws_conf: &rpc::WsConfiguration, ui_conf: &rpc::UiConfiguration) -> Result<(), String> {
|
pub fn open_ui(ws_conf: &rpc::WsConfiguration, ui_conf: &rpc::UiConfiguration, logger_config: &LogConfig) -> Result<(), String> {
|
||||||
if !ui_conf.enabled {
|
if !ui_conf.enabled {
|
||||||
return Err("Cannot use UI command with UI turned off.".into())
|
return Err("Cannot use UI command with UI turned off.".into())
|
||||||
}
|
}
|
||||||
|
|
||||||
let token = signer::generate_token_and_url(ws_conf, ui_conf)?;
|
let token = signer::generate_token_and_url(ws_conf, ui_conf, logger_config)?;
|
||||||
// Open a browser
|
// Open a browser
|
||||||
url::open(&token.url);
|
url::open(&token.url);
|
||||||
// Print a message
|
// Print a message
|
||||||
@ -282,7 +282,7 @@ fn execute_light(cmd: RunCmd, can_restart: bool, logger: Arc<RotatingLogger>) ->
|
|||||||
let rpc_stats = Arc::new(informant::RpcStats::default());
|
let rpc_stats = Arc::new(informant::RpcStats::default());
|
||||||
|
|
||||||
// the dapps server
|
// the dapps server
|
||||||
let signer_service = Arc::new(signer::new_service(&cmd.ws_conf, &cmd.ui_conf));
|
let signer_service = Arc::new(signer::new_service(&cmd.ws_conf, &cmd.ui_conf, &cmd.logger_config));
|
||||||
let dapps_deps = {
|
let dapps_deps = {
|
||||||
let contract_client = Arc::new(::dapps::LightRegistrar {
|
let contract_client = Arc::new(::dapps::LightRegistrar {
|
||||||
client: service.client().clone(),
|
client: service.client().clone(),
|
||||||
@ -378,7 +378,7 @@ pub fn execute(cmd: RunCmd, can_restart: bool, logger: Arc<RotatingLogger>) -> R
|
|||||||
// Check if Parity is already running
|
// Check if Parity is already running
|
||||||
let addr = format!("{}:{}", cmd.ui_conf.interface, cmd.ui_conf.port);
|
let addr = format!("{}:{}", cmd.ui_conf.interface, cmd.ui_conf.port);
|
||||||
if !TcpListener::bind(&addr as &str).is_ok() {
|
if !TcpListener::bind(&addr as &str).is_ok() {
|
||||||
return open_ui(&cmd.ws_conf, &cmd.ui_conf).map(|_| (false, None));
|
return open_ui(&cmd.ws_conf, &cmd.ui_conf, &cmd.logger_config).map(|_| (false, None));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -658,7 +658,7 @@ pub fn execute(cmd: RunCmd, can_restart: bool, logger: Arc<RotatingLogger>) -> R
|
|||||||
false => Some(account_provider.clone())
|
false => Some(account_provider.clone())
|
||||||
};
|
};
|
||||||
|
|
||||||
let signer_service = Arc::new(signer::new_service(&cmd.ws_conf, &cmd.ui_conf));
|
let signer_service = Arc::new(signer::new_service(&cmd.ws_conf, &cmd.ui_conf, &cmd.logger_config));
|
||||||
|
|
||||||
// the dapps server
|
// the dapps server
|
||||||
let dapps_deps = {
|
let dapps_deps = {
|
||||||
@ -791,7 +791,7 @@ pub fn execute(cmd: RunCmd, can_restart: bool, logger: Arc<RotatingLogger>) -> R
|
|||||||
|
|
||||||
// start ui
|
// start ui
|
||||||
if cmd.ui {
|
if cmd.ui {
|
||||||
open_ui(&cmd.ws_conf, &cmd.ui_conf)?;
|
open_ui(&cmd.ws_conf, &cmd.ui_conf, &cmd.logger_config)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(dapp) = cmd.dapp {
|
if let Some(dapp) = cmd.dapp {
|
||||||
|
@ -17,13 +17,13 @@
|
|||||||
use std::io;
|
use std::io;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
use ansi_term::Colour;
|
use ansi_term::Colour::White;
|
||||||
|
use ethcore_logger::Config as LogConfig;
|
||||||
use rpc;
|
use rpc;
|
||||||
use rpc_apis;
|
use rpc_apis;
|
||||||
use parity_rpc;
|
use parity_rpc;
|
||||||
use path::restrict_permissions_owner;
|
use path::restrict_permissions_owner;
|
||||||
|
|
||||||
|
|
||||||
pub const CODES_FILENAME: &'static str = "authcodes";
|
pub const CODES_FILENAME: &'static str = "authcodes";
|
||||||
|
|
||||||
pub struct NewToken {
|
pub struct NewToken {
|
||||||
@ -32,12 +32,13 @@ pub struct NewToken {
|
|||||||
pub message: String,
|
pub message: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_service(ws_conf: &rpc::WsConfiguration, ui_conf: &rpc::UiConfiguration) -> rpc_apis::SignerService {
|
pub fn new_service(ws_conf: &rpc::WsConfiguration, ui_conf: &rpc::UiConfiguration, logger_config: &LogConfig) -> rpc_apis::SignerService {
|
||||||
let signer_path = ws_conf.signer_path.clone();
|
let signer_path = ws_conf.signer_path.clone();
|
||||||
|
let logger_config_color = logger_config.color;
|
||||||
let signer_enabled = ui_conf.enabled;
|
let signer_enabled = ui_conf.enabled;
|
||||||
|
|
||||||
rpc_apis::SignerService::new(move || {
|
rpc_apis::SignerService::new(move || {
|
||||||
generate_new_token(&signer_path).map_err(|e| format!("{:?}", e))
|
generate_new_token(&signer_path, logger_config_color).map_err(|e| format!("{:?}", e))
|
||||||
}, signer_enabled)
|
}, signer_enabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,13 +49,14 @@ pub fn codes_path(path: &Path) -> PathBuf {
|
|||||||
p
|
p
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn execute(ws_conf: rpc::WsConfiguration, ui_conf: rpc::UiConfiguration) -> Result<String, String> {
|
pub fn execute(ws_conf: rpc::WsConfiguration, ui_conf: rpc::UiConfiguration, logger_config: LogConfig) -> Result<String, String> {
|
||||||
Ok(generate_token_and_url(&ws_conf, &ui_conf)?.message)
|
Ok(generate_token_and_url(&ws_conf, &ui_conf, &logger_config)?.message)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn generate_token_and_url(ws_conf: &rpc::WsConfiguration, ui_conf: &rpc::UiConfiguration) -> Result<NewToken, String> {
|
pub fn generate_token_and_url(ws_conf: &rpc::WsConfiguration, ui_conf: &rpc::UiConfiguration, logger_config: &LogConfig) -> Result<NewToken, String> {
|
||||||
let code = generate_new_token(&ws_conf.signer_path).map_err(|err| format!("Error generating token: {:?}", err))?;
|
let code = generate_new_token(&ws_conf.signer_path, logger_config.color).map_err(|err| format!("Error generating token: {:?}", err))?;
|
||||||
let auth_url = format!("http://{}:{}/#/auth?token={}", ui_conf.interface, ui_conf.port, code);
|
let auth_url = format!("http://{}:{}/#/auth?token={}", ui_conf.interface, ui_conf.port, code);
|
||||||
|
|
||||||
// And print in to the console
|
// And print in to the console
|
||||||
Ok(NewToken {
|
Ok(NewToken {
|
||||||
token: code.clone(),
|
token: code.clone(),
|
||||||
@ -65,18 +67,24 @@ Open: {}
|
|||||||
to authorize your browser.
|
to authorize your browser.
|
||||||
Or use the generated token:
|
Or use the generated token:
|
||||||
{}"#,
|
{}"#,
|
||||||
Colour::White.bold().paint(auth_url),
|
match logger_config.color {
|
||||||
|
true => format!("{}", White.bold().paint(auth_url)),
|
||||||
|
false => auth_url
|
||||||
|
},
|
||||||
code
|
code
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_new_token(path: &Path) -> io::Result<String> {
|
fn generate_new_token(path: &Path, logger_config_color: bool) -> io::Result<String> {
|
||||||
let path = codes_path(path);
|
let path = codes_path(path);
|
||||||
let mut codes = parity_rpc::AuthCodes::from_file(&path)?;
|
let mut codes = parity_rpc::AuthCodes::from_file(&path)?;
|
||||||
codes.clear_garbage();
|
codes.clear_garbage();
|
||||||
let code = codes.generate_new()?;
|
let code = codes.generate_new()?;
|
||||||
codes.to_file(&path)?;
|
codes.to_file(&path)?;
|
||||||
trace!("New key code created: {}", Colour::White.bold().paint(&code[..]));
|
trace!("New key code created: {}", match logger_config_color {
|
||||||
|
true => format!("{}", White.bold().paint(&code[..])),
|
||||||
|
false => format!("{}", &code[..])
|
||||||
|
});
|
||||||
Ok(code)
|
Ok(code)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user