Rebased on master
This commit is contained in:
parent
6552319074
commit
0e516162c3
78
Cargo.lock
generated
78
Cargo.lock
generated
@ -31,9 +31,11 @@ dependencies = [
|
|||||||
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num_cpus 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num_cpus 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"number_prefix 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"number_prefix 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"parity-rpc-client 1.4.0",
|
||||||
"regex 0.1.68 (registry+https://github.com/rust-lang/crates.io-index)",
|
"regex 0.1.68 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rlp 0.1.0",
|
"rlp 0.1.0",
|
||||||
"rpassword 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rpassword 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rpc-cli 1.4.0",
|
||||||
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"semver 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"semver 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -711,6 +713,14 @@ dependencies = [
|
|||||||
"miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures"
|
||||||
|
version = "0.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gcc"
|
name = "gcc"
|
||||||
version = "0.3.35"
|
version = "0.3.35"
|
||||||
@ -1254,6 +1264,26 @@ dependencies = [
|
|||||||
"syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "parity-rpc-client"
|
||||||
|
version = "1.4.0"
|
||||||
|
dependencies = [
|
||||||
|
"ethcore-rpc 1.5.0",
|
||||||
|
"ethcore-signer 1.5.0",
|
||||||
|
"ethcore-util 1.5.0",
|
||||||
|
"futures 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"jsonrpc-core 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"serde_json 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"ws 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parity-ui"
|
name = "parity-ui"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
@ -1533,6 +1563,29 @@ dependencies = [
|
|||||||
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rpassword"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"termios 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rpc-cli"
|
||||||
|
version = "1.4.0"
|
||||||
|
dependencies = [
|
||||||
|
"ethcore-bigint 0.1.2",
|
||||||
|
"ethcore-rpc 1.5.0",
|
||||||
|
"ethcore-util 1.5.0",
|
||||||
|
"futures 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"parity-rpc-client 1.4.0",
|
||||||
|
"rpassword 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rust-crypto"
|
name = "rust-crypto"
|
||||||
version = "0.2.36"
|
version = "0.2.36"
|
||||||
@ -1763,6 +1816,14 @@ name = "target_info"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tempdir"
|
||||||
|
version = "0.3.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "term"
|
name = "term"
|
||||||
version = "0.2.14"
|
version = "0.2.14"
|
||||||
@ -1963,6 +2024,19 @@ dependencies = [
|
|||||||
"url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ws"
|
||||||
|
version = "0.5.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"httparse 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"mio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"url 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ws2_32-sys"
|
name = "ws2_32-sys"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
@ -2032,6 +2106,7 @@ dependencies = [
|
|||||||
"checksum ethabi 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0c53453517f620847be51943db329276ae52f2e210cfc659e81182864be2f"
|
"checksum ethabi 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0c53453517f620847be51943db329276ae52f2e210cfc659e81182864be2f"
|
||||||
"checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa"
|
"checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa"
|
||||||
"checksum flate2 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "3eeb481e957304178d2e782f2da1257f1434dfecbae883bafb61ada2a9fea3bb"
|
"checksum flate2 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "3eeb481e957304178d2e782f2da1257f1434dfecbae883bafb61ada2a9fea3bb"
|
||||||
|
"checksum futures 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd89497091f8c5d3a65c6b4baf6d2f0731937a7c9217d2f89141b21437a9d96"
|
||||||
"checksum gcc 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "91ecd03771effb0c968fd6950b37e89476a578aaf1c70297d8e92b6516ec3312"
|
"checksum gcc 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "91ecd03771effb0c968fd6950b37e89476a578aaf1c70297d8e92b6516ec3312"
|
||||||
"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"
|
"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"
|
||||||
"checksum hamming 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65043da274378d68241eb9a8f8f8aa54e349136f7b8e12f63e3ef44043cc30e1"
|
"checksum hamming 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65043da274378d68241eb9a8f8f8aa54e349136f7b8e12f63e3ef44043cc30e1"
|
||||||
@ -2118,6 +2193,7 @@ dependencies = [
|
|||||||
"checksum rocksdb-sys 0.3.0 (git+https://github.com/ethcore/rust-rocksdb)" = "<none>"
|
"checksum rocksdb-sys 0.3.0 (git+https://github.com/ethcore/rust-rocksdb)" = "<none>"
|
||||||
"checksum rotor 0.6.3 (git+https://github.com/ethcore/rotor)" = "<none>"
|
"checksum rotor 0.6.3 (git+https://github.com/ethcore/rotor)" = "<none>"
|
||||||
"checksum rpassword 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5d3a99497c5c544e629cc8b359ae5ede321eba5fa8e5a8078f3ced727a976c3f"
|
"checksum rpassword 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5d3a99497c5c544e629cc8b359ae5ede321eba5fa8e5a8078f3ced727a976c3f"
|
||||||
|
"checksum rpassword 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab6e42be826e215f30ff830904f8f4a0933c6e2ae890e1af8b408f5bae60081e"
|
||||||
"checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a"
|
"checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a"
|
||||||
"checksum rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "6159e4e6e559c81bd706afe9c8fd68f547d3e851ce12e76b1de7914bab61691b"
|
"checksum rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "6159e4e6e559c81bd706afe9c8fd68f547d3e851ce12e76b1de7914bab61691b"
|
||||||
"checksum rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084"
|
"checksum rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084"
|
||||||
@ -2146,6 +2222,7 @@ dependencies = [
|
|||||||
"checksum syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44bded3cabafc65c90b663b1071bd2d198a9ab7515e6ce729e4570aaf53c407e"
|
"checksum syntex_syntax 0.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44bded3cabafc65c90b663b1071bd2d198a9ab7515e6ce729e4570aaf53c407e"
|
||||||
"checksum syntex_syntax 0.42.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7628a0506e8f9666fdabb5f265d0059b059edac9a3f810bda077abb5d826bd8d"
|
"checksum syntex_syntax 0.42.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7628a0506e8f9666fdabb5f265d0059b059edac9a3f810bda077abb5d826bd8d"
|
||||||
"checksum target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe"
|
"checksum target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe"
|
||||||
|
"checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"
|
||||||
"checksum term 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "f2077e54d38055cf1ca0fd7933a2e00cd3ec8f6fed352b2a377f06dcdaaf3281"
|
"checksum term 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "f2077e54d38055cf1ca0fd7933a2e00cd3ec8f6fed352b2a377f06dcdaaf3281"
|
||||||
"checksum term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3deff8a2b3b6607d6d7cc32ac25c0b33709453ca9cceac006caac51e963cf94a"
|
"checksum term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3deff8a2b3b6607d6d7cc32ac25c0b33709453ca9cceac006caac51e963cf94a"
|
||||||
"checksum termios 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d5d9cf598a6d7ce700a4e6a9199da127e6819a61e64b68609683cc9a01b5683a"
|
"checksum termios 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d5d9cf598a6d7ce700a4e6a9199da127e6819a61e64b68609683cc9a01b5683a"
|
||||||
@ -2172,6 +2249,7 @@ dependencies = [
|
|||||||
"checksum winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4dfaaa8fbdaa618fa6914b59b2769d690dd7521920a18d84b42d254678dd5fd4"
|
"checksum winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4dfaaa8fbdaa618fa6914b59b2769d690dd7521920a18d84b42d254678dd5fd4"
|
||||||
"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
|
"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
|
||||||
"checksum ws 0.5.3 (git+https://github.com/ethcore/ws-rs.git?branch=mio-upstream-stable)" = "<none>"
|
"checksum ws 0.5.3 (git+https://github.com/ethcore/ws-rs.git?branch=mio-upstream-stable)" = "<none>"
|
||||||
|
"checksum ws 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7c47e9ca2f5c47d27f731b1bb9bb50cc05f9886bb84fbd52afa0ff97f4f61b06"
|
||||||
"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
|
"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
|
||||||
"checksum xml-rs 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "65e74b96bd3179209dc70a980da6df843dff09e46eee103a0376c0949257e3ef"
|
"checksum xml-rs 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "65e74b96bd3179209dc70a980da6df843dff09e46eee103a0376c0949257e3ef"
|
||||||
"checksum xmltree 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "472a9d37c7c53ab2391161df5b89b1f3bf76dab6ab150d7941ecbdd832282082"
|
"checksum xmltree 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "472a9d37c7c53ab2391161df5b89b1f3bf76dab6ab150d7941ecbdd832282082"
|
||||||
|
@ -47,6 +47,8 @@ rlp = { path = "util/rlp" }
|
|||||||
ethcore-stratum = { path = "stratum" }
|
ethcore-stratum = { path = "stratum" }
|
||||||
ethcore-dapps = { path = "dapps", optional = true }
|
ethcore-dapps = { path = "dapps", optional = true }
|
||||||
clippy = { version = "0.0.103", optional = true}
|
clippy = { version = "0.0.103", optional = true}
|
||||||
|
rpc-cli = { path = "rpc_cli" }
|
||||||
|
parity-rpc-client = { path = "rpc_client" }
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
winapi = "0.2"
|
winapi = "0.2"
|
||||||
|
@ -120,16 +120,12 @@ impl Configuration {
|
|||||||
|
|
||||||
let cmd = if self.args.flag_version {
|
let cmd = if self.args.flag_version {
|
||||||
Cmd::Version
|
Cmd::Version
|
||||||
<<<<<<< HEAD
|
|
||||||
} else if self.args.cmd_signer && self.args.cmd_new_token {
|
|
||||||
Cmd::SignerToken(signer_conf)
|
|
||||||
=======
|
|
||||||
} else if self.args.cmd_signer {
|
} else if self.args.cmd_signer {
|
||||||
let mut authfile = PathBuf::from(signer_conf.signer_path);
|
let mut authfile = PathBuf::from(signer_conf.signer_path.clone());
|
||||||
authfile.push(AUTHCODE_FILENAME);
|
authfile.push(AUTHCODE_FILENAME);
|
||||||
|
|
||||||
if self.args.cmd_new_token {
|
if self.args.cmd_new_token {
|
||||||
Cmd::SignerToken(dirs.signer)
|
Cmd::SignerToken(signer_conf)
|
||||||
} 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)
|
||||||
@ -154,7 +150,6 @@ impl Configuration {
|
|||||||
} else {
|
} else {
|
||||||
unreachable!();
|
unreachable!();
|
||||||
}
|
}
|
||||||
>>>>>>> Add Ws Json rpc client and command line utils
|
|
||||||
} else if self.args.cmd_tools && self.args.cmd_hash {
|
} else if self.args.cmd_tools && self.args.cmd_hash {
|
||||||
Cmd::Hash(self.args.arg_file)
|
Cmd::Hash(self.args.arg_file)
|
||||||
} else if self.args.cmd_account {
|
} else if self.args.cmd_account {
|
||||||
|
@ -48,10 +48,11 @@ impl fmt::Display for ConfirmationRequest {
|
|||||||
impl fmt::Display for ConfirmationPayload {
|
impl fmt::Display for ConfirmationPayload {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
match *self {
|
match *self {
|
||||||
ConfirmationPayload::Transaction(ref transaction)
|
ConfirmationPayload::SendTransaction(ref transaction)
|
||||||
=> write!(f, "{}", transaction),
|
=> write!(f, "{}", transaction),
|
||||||
ConfirmationPayload::Sign(_) => write!(f, "TODO: data"),
|
ConfirmationPayload::SignTransaction(_) => write!(f, "TODO: data"),
|
||||||
ConfirmationPayload::Decrypt(_) => write!(f, "TODO: decrypt"),
|
ConfirmationPayload::Decrypt(_) => write!(f, "TODO: decrypt"),
|
||||||
|
ConfirmationPayload::Signature(_) => write!(f, "TODO: signature"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@ use futures::Future;
|
|||||||
fn sign_interactive(
|
fn sign_interactive(
|
||||||
signer: &mut SignerRpc,
|
signer: &mut SignerRpc,
|
||||||
password: &str,
|
password: &str,
|
||||||
request: ConfirmationRequest)
|
request: ConfirmationRequest
|
||||||
{
|
) {
|
||||||
print!("\n{}\nSign this transaction? (y)es/(N)o/(r)eject: ", request);
|
print!("\n{}\nSign this transaction? (y)es/(N)o/(r)eject: ", request);
|
||||||
let _ = stdout().flush();
|
let _ = stdout().flush();
|
||||||
match BufReader::new(stdin()).lines().next() {
|
match BufReader::new(stdin()).lines().next() {
|
||||||
@ -43,7 +43,8 @@ fn sign_interactive(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn sign_transactions(
|
fn sign_transactions(
|
||||||
signer: &mut SignerRpc, password: String
|
signer: &mut SignerRpc,
|
||||||
|
password: String
|
||||||
) -> Result<String, String> {
|
) -> Result<String, String> {
|
||||||
try!(signer.requests_to_confirm().map(|reqs| {
|
try!(signer.requests_to_confirm().map(|reqs| {
|
||||||
match reqs {
|
match reqs {
|
||||||
@ -120,8 +121,7 @@ pub fn cmd_signer_list(
|
|||||||
signerport: u16, authfile: PathBuf
|
signerport: u16, authfile: PathBuf
|
||||||
) -> Result<String, String> {
|
) -> Result<String, String> {
|
||||||
let addr = &format!("ws://127.0.0.1:{}", signerport);
|
let addr = &format!("ws://127.0.0.1:{}", signerport);
|
||||||
let mut signer = try!(SignerRpc::new(addr, &authfile));
|
let mut signer = try!(SignerRpc::new(addr, &authfile).map_err(|err| {
|
||||||
signer.map_err(|err| {
|
|
||||||
format!("{:?}", err)
|
format!("{:?}", err)
|
||||||
}));
|
}));
|
||||||
list_transactions(&mut signer)
|
list_transactions(&mut signer)
|
||||||
@ -154,7 +154,8 @@ pub fn cmd_signer_sign(
|
|||||||
_ => return Err(format!("No password in file"))
|
_ => return Err(format!("No password in file"))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Err(e) => return Err(format!("Could not open password file: {}", e))
|
Err(e) =>
|
||||||
|
return Err(format!("Could not open password file: {}", e))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
@ -165,7 +166,8 @@ pub fn cmd_signer_sign(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut signer = try!(SignerRpc::new(&format!("ws://127.0.0.1:{}", signerport), &authfile).map_err(|err| {
|
let addr = &format!("ws://127.0.0.1:{}", signerport);
|
||||||
|
let mut signer = try!(SignerRpc::new(addr, &authfile).map_err(|err| {
|
||||||
format!("{:?}", err)
|
format!("{:?}", err)
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -13,7 +13,8 @@ use util::{Hashable, Mutex};
|
|||||||
use url::Url;
|
use url::Url;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
|
|
||||||
use ws::{self,
|
use ws::{
|
||||||
|
self,
|
||||||
Request,
|
Request,
|
||||||
Handler,
|
Handler,
|
||||||
Sender,
|
Sender,
|
||||||
@ -21,7 +22,8 @@ use ws::{self,
|
|||||||
Error as WsError,
|
Error as WsError,
|
||||||
ErrorKind as WsErrorKind,
|
ErrorKind as WsErrorKind,
|
||||||
Message,
|
Message,
|
||||||
Result as WsResult};
|
Result as WsResult
|
||||||
|
};
|
||||||
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_json::{self as json,
|
use serde_json::{self as json,
|
||||||
@ -73,7 +75,8 @@ impl Handler for RpcHandler {
|
|||||||
r.add_protocol(&proto);
|
r.add_protocol(&proto);
|
||||||
Ok(r)
|
Ok(r)
|
||||||
},
|
},
|
||||||
Err(e) => Err(WsError::new(WsErrorKind::Internal, format!("{}", e))),
|
Err(e) =>
|
||||||
|
Err(WsError::new(WsErrorKind::Internal, format!("{}", e))),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn on_error(&mut self, err: WsError) {
|
fn on_error(&mut self, err: WsError) {
|
||||||
@ -93,7 +96,8 @@ impl Handler for RpcHandler {
|
|||||||
Ok(())
|
Ok(())
|
||||||
},
|
},
|
||||||
_ => {
|
_ => {
|
||||||
Err(WsError::new(WsErrorKind::Internal, format!("on_open called twice")))
|
let msg = format!("on_open called twice");
|
||||||
|
Err(WsError::new(WsErrorKind::Internal, msg))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -102,7 +106,8 @@ impl Handler for RpcHandler {
|
|||||||
let response_id;
|
let response_id;
|
||||||
let string = &msg.to_string();
|
let string = &msg.to_string();
|
||||||
match json::from_str::<SyncOutput>(&string) {
|
match json::from_str::<SyncOutput>(&string) {
|
||||||
Ok(SyncOutput::Success(Success { result, id: Id::Num(id), .. })) => {
|
Ok(SyncOutput::Success(Success { result, id: Id::Num(id), .. })) =>
|
||||||
|
{
|
||||||
ret = Ok(result);
|
ret = Ok(result);
|
||||||
response_id = id as usize;
|
response_id = id as usize;
|
||||||
}
|
}
|
||||||
@ -111,11 +116,20 @@ impl Handler for RpcHandler {
|
|||||||
response_id = id as usize;
|
response_id = id as usize;
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
warn!(target: "rpc-client", "recieved invalid message: {}\n {:?}", string, e);
|
warn!(
|
||||||
|
target: "rpc-client",
|
||||||
|
"recieved invalid message: {}\n {:?}",
|
||||||
|
string,
|
||||||
|
e
|
||||||
|
);
|
||||||
return Ok(())
|
return Ok(())
|
||||||
},
|
},
|
||||||
_ => {
|
_ => {
|
||||||
warn!(target: "rpc-client", "recieved invalid message: {}", string);
|
warn!(
|
||||||
|
target: "rpc-client",
|
||||||
|
"recieved invalid message: {}",
|
||||||
|
string
|
||||||
|
);
|
||||||
return Ok(())
|
return Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -124,7 +138,11 @@ impl Handler for RpcHandler {
|
|||||||
Some(c) => c.complete(ret.map_err(|err| {
|
Some(c) => c.complete(ret.map_err(|err| {
|
||||||
RpcError::JsonRpc(err)
|
RpcError::JsonRpc(err)
|
||||||
})),
|
})),
|
||||||
None => warn!(target: "rpc-client", "warning: unexpected id: {}", response_id),
|
None => warn!(
|
||||||
|
target: "rpc-client",
|
||||||
|
"warning: unexpected id: {}",
|
||||||
|
response_id
|
||||||
|
),
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@ -132,7 +150,9 @@ impl Handler for RpcHandler {
|
|||||||
|
|
||||||
/// Keeping track of issued requests to be matched up with responses
|
/// Keeping track of issued requests to be matched up with responses
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
struct Pending(Arc<Mutex<BTreeMap<usize, Complete<Result<JsonValue, RpcError>>>>>);
|
struct Pending(
|
||||||
|
Arc<Mutex<BTreeMap<usize, Complete<Result<JsonValue, RpcError>>>>>
|
||||||
|
);
|
||||||
|
|
||||||
impl Pending {
|
impl Pending {
|
||||||
fn new() -> Self {
|
fn new() -> Self {
|
||||||
@ -141,7 +161,10 @@ impl Pending {
|
|||||||
fn insert(&mut self, k: usize, v: Complete<Result<JsonValue, RpcError>>) {
|
fn insert(&mut self, k: usize, v: Complete<Result<JsonValue, RpcError>>) {
|
||||||
self.0.lock().insert(k, v);
|
self.0.lock().insert(k, v);
|
||||||
}
|
}
|
||||||
fn remove(&mut self, k: usize) -> Option<Complete<Result<JsonValue, RpcError>>> {
|
fn remove(
|
||||||
|
&mut self,
|
||||||
|
k: usize
|
||||||
|
) -> Option<Complete<Result<JsonValue, RpcError>>> {
|
||||||
self.0.lock().remove(&k)
|
self.0.lock().remove(&k)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -178,22 +201,24 @@ impl Rpc {
|
|||||||
Err(e) => return done(Ok(Err(e))).boxed(),
|
Err(e) => return done(Ok(Err(e))).boxed(),
|
||||||
Ok(code) => {
|
Ok(code) => {
|
||||||
let url = String::from(url);
|
let url = String::from(url);
|
||||||
// The ws::connect takes a FnMut closure, which means c cannot be
|
// The ws::connect takes a FnMut closure, which means c cannot
|
||||||
// moved into it, since it's consumed on complete.
|
// be moved into it, since it's consumed on complete.
|
||||||
// Therefore we wrap it in an option and pick it out once.
|
// Therefore we wrap it in an option and pick it out once.
|
||||||
let mut once = Some(c);
|
let mut once = Some(c);
|
||||||
thread::spawn(move || {
|
thread::spawn(move || {
|
||||||
let conn = ws::connect(url, |out| {
|
let conn = ws::connect(url, |out| {
|
||||||
// this will panic if the closure is called twice,
|
// this will panic if the closure is called twice,
|
||||||
// which it should never be.
|
// which it should never be.
|
||||||
let c = once.take().expect("connection closure called only once");
|
let c = once.take()
|
||||||
|
.expect("connection closure called only once");
|
||||||
RpcHandler::new(out, code.clone(), c)
|
RpcHandler::new(out, code.clone(), c)
|
||||||
});
|
});
|
||||||
match conn {
|
match conn {
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
// since ws::connect is only called once, it cannot
|
// since ws::connect is only called once, it cannot
|
||||||
// both fail and succeed.
|
// both fail and succeed.
|
||||||
let c = once.take().expect("connection closure called only once");
|
let c = once.take()
|
||||||
|
.expect("connection closure called only once");
|
||||||
c.complete(Err(RpcError::WsError(err)));
|
c.complete(Err(RpcError::WsError(err)));
|
||||||
},
|
},
|
||||||
// c will complete on the `on_open` event in the Handler
|
// c will complete on the `on_open` event in the Handler
|
||||||
@ -222,7 +247,8 @@ impl Rpc {
|
|||||||
id: Id::Num(id as u64),
|
id: Id::Num(id as u64),
|
||||||
};
|
};
|
||||||
|
|
||||||
let serialized = json::to_string(&request).expect("request is serializable");
|
let serialized = json::to_string(&request)
|
||||||
|
.expect("request is serializable");
|
||||||
let _ = self.out.send(serialized);
|
let _ = self.out.send(serialized);
|
||||||
|
|
||||||
p.map(|result| {
|
p.map(|result| {
|
||||||
|
Loading…
Reference in New Issue
Block a user